| // 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; |
| } |
| } |
| |