## 0.12.17 * Require Dart 3.4 * Move to `dart-lang/test` monorepo. ## 0.12.16+1 * Require Dart 3.0 * Support latest version of `package:test_api`. ## 0.12.16 * Expand bounds on `test_api` dependency to allow the next breaking release which will remove the cyclic dependency on this package. ## 0.12.15 * Add `package:matcher/expect.dart` library. Copies the implementation of `expect` and the asynchronous matchers from `package:test`. ## 0.12.14 * Add `containsOnce` matcher. * Deprecate `isCyclicInitializationError` and `NullThrownError`. These errors will be removed from the SDK. Update them to catch more general errors. ## 0.12.13 * Require Dart 2.17 or greater. * Make `isCastError` no longer depend on the deprecated `CastError` type. * Annotate `TypeMatcher.having` with `useResult`. ## 0.12.12 * Add a best practices section to readme. * Populate the pubspec `repository` field. ## 0.12.11 * Change many argument types from `dynamic` to `Object?`. * Fix `stringContainsInOrder` to account for repetitions and empty strings. * **Note**: This may break some existing tests, as the behavior does change. ## 0.12.10 * Stable release for null safety. ## 0.12.10-nullsafety.3 * Update SDK constraints to `>=2.12.0-0 <3.0.0` based on beta release guidelines. ## 0.12.10-nullsafety.2 - Allow prerelease versions of the 2.12 sdk. ## 0.12.10-nullsafety.1 - Allow 2.10 stable and 2.11.0 dev SDK versions. ## 0.12.10-nullsafety - Migrate to NNBD. - Apis have been updated to express intent of the existing code and how it handled nulls. ## 0.12.9 - Improve mismatch descriptions for deep matches. Previously, if the user tried to do a deep match where the expectation included a complex matcher (such as a "having" matcher), the failure message would just say "failed to match ..."; it wouldn't call on the expectation's matcher to explain why the match failed. ## 0.12.8 - Add a mismatch description to `TypeMatcher`. ## 0.12.7 - Deprecate the `mirror_matchers.dart` library. ## 0.12.6 - Update minimum Dart SDK to `2.2.0`. - Consistently point to `isA` as a replacement for `instanceOf`. - Pretty print with private type names. ## 0.12.5 - Add `isA()` to create `TypeMatcher` instances in a more fluent way. - **Potentially breaking bug fix**. Ordering matchers no longer treat objects with a partial ordering (such as NaN for double values) as if they had a complete ordering. For instance `greaterThan` now compares with the `>` operator rather not `<` and not `=`. This could cause tests which relied on this bug to start failing. ## 0.12.4 - Add isCastError. ## 0.12.3+1 - Set max SDK version to <3.0.0, and adjusted other dependencies. ## 0.12.3 - Many improvements to `TypeMatcher` - Can now be used directly as `const TypeMatcher()`. - Added a type parameter to specify the target `Type`. - Made the `name` constructor parameter optional and marked it deprecated. It's redundant to the type parameter. - Migrated all `isType` matchers to `TypeMatcher`. - Added a `having` function that allows chained validations of specific features of the target type. ```dart /// Validates that the object is a [RangeError] with a message containing /// the string 'details' and `start` and `end` properties that are `null`. final _rangeMatcher = isRangeError .having((e) => e.message, 'message', contains('details')) .having((e) => e.start, 'start', isNull) .having((e) => e.end, 'end', isNull); ``` - Deprecated the `isInstanceOf` class. Use `TypeMatcher` instead. - Improved the output of `Matcher` instances that fail due to type errors. ## 0.12.2+1 - Updated SDK version to 2.0.0-dev.17.0 ## 0.12.2 * Fixed `unorderedMatches` in cases where the matchers may match more than one element and order of the elements doesn't line up with the order of the matchers. * Add containsAll matcher for Iterables. This Matcher checks that all values/matchers in an expected iterable are satisfied by an element in the value without allowing the same value to satisfy multiple matchers. ## 0.12.1+4 * Fixed SDK constraint to allow edge builds. ## 0.12.1+3 * Make `predicate` and `pairwiseCompare` generic methods to allow typed functions to be passed to them as arguments. * Make internal implementations take better advantage of type promotion to avoid dynamic call overhead. ## 0.12.1+2 * Fixed small documentation issues. * Fixed small issue in `StringEqualsMatcher`. * Update to support future Dart language changes. ## 0.12.1+1 * Produce a better error message when a `CustomMatcher`'s feature throws. ## 0.12.1 * Add containsAllInOrder matcher for Iterables ## 0.12.0+2 * Fix all strong-mode warnings. ## 0.12.0+1 * Fix test files to use `test` instead of `unittest` pkg. ## 0.12.0 * Moved a number of members to the [`unittest`](https://pub.dev/packages/unittest) package. * `TestFailure`, `ErrorFormatter`, `expect`, `fail`, and 'wrapAsync'. * `completes`, `completion`, `throws`, and `throwsA` Matchers. * The `Throws` class. * All of the `throws...Error` Matchers. * Removed `FailureHandler`, `DefaultFailureHandler`, `configureExpectFailureHandler`, and `getOrCreateExpectFailureHandler`. Now that `expect` is in the `unittest` package, these are no longer needed. * Removed the `name` parameter for `isInstanceOf`. This was previously deprecated, and is no longer necessary since all language implementations now support converting the type parameter to a string directly. ## 0.11.4+6 * Fix a bug introduced in 0.11.4+5 in which operator matchers broke when taking lists of matchers. ## 0.11.4+5 * Fix all strong-mode warnings. ## 0.11.4+4 * Deprecate the name parameter to `isInstanceOf`. All language implementations now support converting the type parameter to a string directly. ## 0.11.4+3 * Fix the examples for `equalsIgnoringWhitespace`. ## 0.11.4+2 * Improve the formatting of strings that contain unprintable ASCII characters. ## 0.11.4+1 * Correctly match and print `String`s containing characters that must be represented as escape sequences. ## 0.11.4 * Remove the type checks in the `isEmpty` and `isNotEmpty` matchers and simply access the `isEmpty` respectively `isNotEmpty` fields. This allows them to work with custom collections. See [Issue 21792](https://code.google.com/p/dart/issues/detail?id=21792) and [Issue 21562](https://code.google.com/p/dart/issues/detail?id=21562) ## 0.11.3+1 * Fix the `prints` matcher test on dart2js. ## 0.11.3 * Add a `prints` matcher that matches output a callback emits via `print`. ## 0.11.2 * Add an `isNotEmpty` matcher. ## 0.11.1+1 * Refactored libraries and tests. * Fixed spelling mistake. ## 0.11.1 * Added `isNaN` and `isNotNaN` matchers. ## 0.11.0 * Removed deprecated matchers. ## 0.10.1+1 * Get the tests passing when run on dart2js in minified mode. ## 0.10.1 * Compare sets order-independently when using `equals()`. ## 0.10.0+3 * Removed `@deprecated` annotation on matchers due to [Issue 19173](https://code.google.com/p/dart/issues/detail?id=19173) ## 0.10.0+2 * Added types to a number of constants. ## 0.10.0+1 * Matchers related to bad language use have been removed. These represent code structure that should rarely or never be validated in tests. * `isAbstractClassInstantiationError` * `throwsAbstractClassInstantiationError` * `isFallThroughError` * `throwsFallThroughError` * Added types to a number of method arguments. * The structure of the library and test code has been updated.