| // Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| /// This library is supposed help to remove dependencies on package:test from |
| /// an existing test. |
| /// |
| /// Feel free to add more matchers, as long as they remain lite. Batteries |
| /// aren't included here. This is intended to be used in low-level platform |
| /// tests and shouldn't rely on advanced features such as reflection. Using |
| /// asynchronous code is acceptable, but only for testing code that is |
| /// *already* asynchronous, but try to avoid using "async" and other generators |
| /// (it's hard testing the implemention of generators if the test |
| /// infrastructure relies on them itself). |
| library expect.matchers_lite; |
| |
| import "expect.dart" show Expect; |
| |
| typedef Matcher = void Function(Object actual); |
| |
| void expect(dynamic actual, dynamic expected) { |
| if (expected is Matcher) { |
| expected(actual); |
| } else { |
| equals(expected)(actual); |
| } |
| } |
| |
| Matcher unorderedEquals(Iterable<Object> expected) { |
| return (Object actual) => |
| Expect.setEquals(expected, actual as Iterable<Object>); |
| } |
| |
| fail(String message) { |
| Expect.fail(message); |
| } |
| |
| Matcher same(Object expected) { |
| return (Object actual) => Expect.identical(expected, actual); |
| } |
| |
| Matcher equals(Object expected) { |
| if (expected is String) { |
| return (Object actual) => Expect.stringEquals(expected, actual as String); |
| } else if (expected is Iterable<Object>) { |
| return (dynamic actual) => |
| Expect.listEquals(expected.toList(), actual.toList()); |
| } else { |
| return (Object actual) => Expect.equals(expected, actual); |
| } |
| } |
| |
| final Matcher isEmpty = (dynamic actual) => Expect.isTrue(actual.isEmpty); |
| |
| final Matcher isNull = (Object actual) => Expect.isNull(actual); |