| // Copyright (c) 2018, 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. |
| |
| import 'package:graphs/graphs.dart'; |
| import 'package:test/test.dart'; |
| |
| bool xEquals(X a, X b) => a.value == b.value; |
| |
| int xHashCode(X a) => a.value.hashCode; |
| |
| /// Returns a matcher that verifies that a function throws a [CycleException<T>] |
| /// with the given [cycle]. |
| Matcher throwsCycleException<T>(List<T> cycle) => throwsA( |
| allOf([ |
| isA<CycleException<T>>(), |
| predicate((exception) { |
| expect((exception as CycleException<T>).cycle, equals(cycle)); |
| return true; |
| }), |
| ]), |
| ); |
| |
| class X { |
| final String value; |
| |
| X(this.value); |
| |
| @override |
| bool operator ==(Object other) => throw UnimplementedError(); |
| |
| @override |
| int get hashCode => 42; |
| |
| @override |
| String toString() => '($value)'; |
| } |