containsAll function
Matches Iterables which contain an element matching every value in
expected
in any order, and may contain additional values.
For example: [0, 1, 0, 2, 0]
matches containsAll([1, 2])
and
containsAll([2, 1])
but not containsAll([1, 2, 3])
.
Will only match values which implement Iterable.
Each element in the value will only be considered a match for a single
matcher in expected
even if it could satisfy more than one. For instance
containsAll([greaterThan(1), greaterThan(2)])
will not be satisfied by
[3]
. To check that all matchers are satisfied within an iterable and allow
the same element to satisfy multiple matchers use
allOf(matchers.map(contains))
.
Note that this is worst case O(n^2) runtime and memory usage so it should only be used on small iterables.
Implementation
Matcher containsAll(Iterable expected) => new _ContainsAll(expected);