// Copyright (c) 2013, 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:path/path.dart' as p; import 'package:test/test.dart'; /// A matcher for a closure that throws a [p.PathException]. final throwsPathException = throwsA(const TypeMatcher()); void expectEquals(p.Context context, String path1, String path2) { expect(context.equals(path1, path2), isTrue, reason: 'Expected "$path1" to equal "$path2".'); expect(context.equals(path2, path1), isTrue, reason: 'Expected "$path2" to equal "$path1".'); expect(context.hash(path1), equals(context.hash(path2)), reason: 'Expected "$path1" to hash the same as "$path2".'); } void expectNotEquals(p.Context context, String path1, String path2, {bool allowSameHash = false}) { expect(context.equals(path1, path2), isFalse, reason: 'Expected "$path1" not to equal "$path2".'); expect(context.equals(path2, path1), isFalse, reason: 'Expected "$path2" not to equal "$path1".'); // Hash collisions are allowed, but the test author should be explicitly aware // when they occur. if (allowSameHash) return; expect(context.hash(path1), isNot(equals(context.hash(path2))), reason: 'Expected "$path1" not to hash the same as "$path2".'); }