| // 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. |
| |
| // This file is for matcher tests that rely on the names of various Dart types. |
| // These tests will fail when run in minified dart2js, since the names will be |
| // mangled. A version of this file that works in minified dart2js is in |
| // matchers_minified_test.dart. |
| |
| library matcher.unminified_test; |
| |
| import 'package:matcher/matcher.dart'; |
| import 'package:unittest/unittest.dart' show group, test; |
| |
| import 'test_common.dart'; |
| import 'test_utils.dart'; |
| |
| void main() { |
| initUtils(); |
| |
| group('Core matchers', () { |
| test('throwsFormatException', () { |
| shouldPass(() { |
| throw new FormatException(''); |
| }, throwsFormatException); |
| shouldFail(() { |
| throw new Exception(); |
| }, throwsFormatException, matches(r"Expected: throws FormatException +" |
| r"Actual: <Closure(: \(\) => dynamic)?> +" |
| r"Which: threw \?:<Exception>")); |
| }); |
| |
| test('throwsArgumentError', () { |
| shouldPass(() { |
| throw new ArgumentError(''); |
| }, throwsArgumentError); |
| shouldFail(() { |
| throw new Exception(); |
| }, throwsArgumentError, matches(r"Expected: throws ArgumentError +" |
| r"Actual: <Closure(: \(\) => dynamic)?> +" |
| r"Which: threw \?:<Exception>")); |
| }); |
| |
| test('throwsRangeError', () { |
| shouldPass(() { |
| throw new RangeError(0); |
| }, throwsRangeError); |
| shouldFail(() { |
| throw new Exception(); |
| }, throwsRangeError, matches(r"Expected: throws RangeError +" |
| r"Actual: <Closure(: \(\) => dynamic)?> +" |
| r"Which: threw \?:<Exception>")); |
| }); |
| |
| test('throwsNoSuchMethodError', () { |
| shouldPass(() { |
| throw new NoSuchMethodError(null, const Symbol(''), null, null); |
| }, throwsNoSuchMethodError); |
| shouldFail(() { |
| throw new Exception(); |
| }, throwsNoSuchMethodError, matches( |
| r"Expected: throws NoSuchMethodError +" |
| r"Actual: <Closure(: \(\) => dynamic)?> +" |
| r"Which: threw \?:<Exception>")); |
| }); |
| |
| test('throwsUnimplementedError', () { |
| shouldPass(() { |
| throw new UnimplementedError(''); |
| }, throwsUnimplementedError); |
| shouldFail(() { |
| throw new Exception(); |
| }, throwsUnimplementedError, matches( |
| r"Expected: throws UnimplementedError +" |
| r"Actual: <Closure(: \(\) => dynamic)?> +" |
| r"Which: threw \?:<Exception>")); |
| }); |
| |
| test('throwsUnsupportedError', () { |
| shouldPass(() { |
| throw new UnsupportedError(''); |
| }, throwsUnsupportedError); |
| shouldFail(() { |
| throw new Exception(); |
| }, throwsUnsupportedError, matches(r"Expected: throws UnsupportedError +" |
| r"Actual: <Closure(: \(\) => dynamic)?> +" |
| r"Which: threw \?:<Exception>")); |
| }); |
| |
| test('throwsStateError', () { |
| shouldPass(() { |
| throw new StateError(''); |
| }, throwsStateError); |
| shouldFail(() { |
| throw new Exception(); |
| }, throwsStateError, matches(r"Expected: throws StateError +" |
| r"Actual: <Closure(: \(\) => dynamic)?> +" |
| r"Which: threw \?:<Exception>")); |
| }); |
| }); |
| |
| group('Iterable Matchers', () { |
| test('isEmpty', () { |
| var d = new SimpleIterable(0); |
| var e = new SimpleIterable(1); |
| shouldPass(d, isEmpty); |
| shouldFail(e, isEmpty, "Expected: empty " |
| "Actual: SimpleIterable:[1]"); |
| }); |
| |
| test('isNotEmpty', () { |
| var d = new SimpleIterable(0); |
| var e = new SimpleIterable(1); |
| shouldPass(e, isNotEmpty); |
| shouldFail(d, isNotEmpty, "Expected: non-empty " |
| "Actual: SimpleIterable:[]"); |
| }); |
| |
| test('contains', () { |
| var d = new SimpleIterable(3); |
| shouldPass(d, contains(2)); |
| shouldFail(d, contains(5), "Expected: contains <5> " |
| "Actual: SimpleIterable:[3, 2, 1]"); |
| }); |
| }); |
| |
| group('Feature Matchers', () { |
| test("Feature Matcher", () { |
| var w = new Widget(); |
| w.price = 10; |
| shouldPass(w, new HasPrice(10)); |
| shouldPass(w, new HasPrice(greaterThan(0))); |
| shouldFail(w, new HasPrice(greaterThan(10)), |
| "Expected: Widget with a price that is a value greater than <10> " |
| "Actual: <Instance of 'Widget'> " |
| "Which: has price with value <10> which is not " |
| "a value greater than <10>"); |
| }); |
| }); |
| } |