Fix unorderedMatches for poorly ordered input (#74)

Fixes #73

Reimplements the unordered matcher using a recursive search assuming
that matchers can match multiple values in the input rather than a
greedy algorithm which allows a matcher to "consume" a value that is
needed for some other matcher.

User visible differences:
- May match inputs that would have previously been (incorrectly)
  rejected.
- The failure description may include a number of unmatched
  expectations if more than 1 is unmatched.
4 files changed
tree: 34eb59bfe452c980dac669cb3f061e18b6bb0d0e
  1. .gitignore
  2. .test_config
  3. .travis.yml
  4. CHANGELOG.md
  5. LICENSE
  6. README.md
  7. analysis_options.yaml
  8. codereview.settings
  9. lib/
  10. pubspec.yaml
  11. test/
README.md

Support for specifying test expectations, such as for unit tests.

The matcher library provides a third-generation assertion mechanism, drawing inspiration from Hamcrest.

For more information, see Unit Testing with Dart.