blob: f7660022af555ce35c46a7c13cce4cbb4f6274f2 [file] [log] [blame]
// Copyright (c) 2012, 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.
library matcher.core_matchers_test;
import 'package:matcher/matcher.dart';
import 'package:unittest/unittest.dart' show test, group;
import 'test_utils.dart';
void main() {
initUtils();
test('throws', () {
shouldFail(doesNotThrow, throws, matches(r"Expected: throws"
r" Actual: <Closure(: \(\) => dynamic "
r"from Function 'doesNotThrow': static\.)?>"
r" Which: did not throw"));
shouldPass(doesThrow, throws);
shouldFail(true, throws, "Expected: throws"
" Actual: <true>"
" Which: is not a Function or Future");
});
test('throwsA', () {
shouldPass(doesThrow, throwsA(equals('X')));
shouldFail(doesThrow, throwsA(equals('Y')), matches(r"Expected: throws 'Y'"
r" Actual: <Closure(: \(\) => dynamic "
r"from Function 'doesThrow': static\.)?>"
r" Which: threw 'X'"));
});
test('throwsA', () {
shouldPass(doesThrow, throwsA(equals('X')));
shouldFail(doesThrow, throwsA(equals('Y')), matches("Expected: throws 'Y'.*"
"Actual: <Closure.*"
"Which: threw 'X'"));
});
group('exception/error matchers', () {
test('throwsCyclicInitializationError', () {
expect(() => _Bicycle.foo, throwsCyclicInitializationError);
});
test('throwsConcurrentModificationError', () {
expect(() {
var a = {'foo': 'bar'};
for (var k in a.keys) {
a.remove(k);
}
}, throwsConcurrentModificationError);
});
test('throwsNullThrownError', () {
expect(() => throw null, throwsNullThrownError);
});
});
}
class _Bicycle {
static final foo = bar();
static bar() {
return foo + 1;
}
}