blob: 45a42c6c20767b6d77226ec8725246476f2dd699 [file] [log] [blame]
// 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)';
}