blob: d9ee582e4bab54229c06dee37bd4359c6c200d18 [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.
// This file is for matcher tests that rely on the names of various Dart types.
// These tests normally fail when run in minified dart2js, since the names will
// be mangled. This version of the file is modified to expect minified names.
library matcher.minified_test;
import 'package:matcher/matcher.dart';
import 'package:unittest/unittest.dart' show test, group;
import 'test_common.dart';
import 'test_utils.dart';
// A regexp fragment matching a minified name.
const _MINIFIED_NAME = r"[A-Za-z0-9]{1,3}";
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 " + _MINIFIED_NAME + r":<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 " + _MINIFIED_NAME + r":<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 " + _MINIFIED_NAME + r":<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 " + _MINIFIED_NAME + r":<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 " + _MINIFIED_NAME + r":<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 " + _MINIFIED_NAME + r":<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 " + _MINIFIED_NAME + r":<Exception>"));
});
});
group('Iterable Matchers', () {
test('isEmpty', () {
var d = new SimpleIterable(0);
var e = new SimpleIterable(1);
shouldPass(d, isEmpty);
shouldFail(e, isEmpty,
matches(r"Expected: empty +Actual: " + _MINIFIED_NAME + r":\[1\]"));
});
test('isNotEmpty', () {
var d = new SimpleIterable(0);
var e = new SimpleIterable(1);
shouldPass(e, isNotEmpty);
shouldFail(d, isNotEmpty, matches(
r"Expected: non-empty +Actual: " + _MINIFIED_NAME + r":\[\]"));
});
test('contains', () {
var d = new SimpleIterable(3);
shouldPass(d, contains(2));
shouldFail(d, contains(5), matches(r"Expected: contains <5> +"
r"Actual: " + _MINIFIED_NAME + r":\[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)), matches(
r"Expected: Widget with a price that is a value greater than "
r"<10> +"
r"Actual: <Instance of '" + _MINIFIED_NAME + r"'> +"
r"Which: has price with value <10> which is not "
r"a value greater than <10>"));
});
});
}