OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | |
2 // for details. All rights reserved. Use of this source code is governed by a | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 | |
5 library test_utils; | |
6 | |
7 import 'package:unittest/unittest.dart'; | |
8 | |
9 import 'dart:async'; | |
10 | |
11 int errorCount; | |
12 String errorString; | |
13 var _testHandler = null; | |
14 | |
15 class MyFailureHandler extends DefaultFailureHandler { | |
16 void fail(String reason) { | |
17 ++errorCount; | |
18 errorString = reason; | |
19 } | |
20 } | |
21 | |
22 void initUtils() { | |
23 if (_testHandler == null) { | |
24 _testHandler = new MyFailureHandler(); | |
25 } | |
26 } | |
27 | |
28 void shouldFail(value, Matcher matcher, expected, {bool isAsync: false}) { | |
29 configureExpectFailureHandler(_testHandler); | |
30 errorCount = 0; | |
31 errorString = ''; | |
32 expect(value, matcher); | |
33 afterTest() { | |
34 configureExpectFailureHandler(null); | |
35 expect(errorCount, equals(1)); | |
36 if (expected is String) { | |
37 expect(errorString, equalsIgnoringWhitespace(expected)); | |
38 } else { | |
39 expect(errorString.replaceAll('\n', ''), expected); | |
40 } | |
41 } | |
42 | |
43 if (isAsync) { | |
44 Timer.run(expectAsync(afterTest)); | |
45 } else { | |
46 afterTest(); | |
47 } | |
48 } | |
49 | |
50 void shouldPass(value, Matcher matcher, {bool isAsync: false}) { | |
51 configureExpectFailureHandler(_testHandler); | |
52 errorCount = 0; | |
53 errorString = ''; | |
54 expect(value, matcher); | |
55 afterTest() { | |
56 configureExpectFailureHandler(null); | |
57 expect(errorCount, equals(0)); | |
58 } | |
59 if (isAsync) { | |
60 Timer.run(expectAsync(afterTest)); | |
61 } else { | |
62 afterTest(); | |
63 } | |
64 } | |
65 | |
66 doesNotThrow() {} | |
67 doesThrow() { throw 'X'; } | |
68 | |
69 class PrefixMatcher extends Matcher { | |
70 final String _prefix; | |
71 const PrefixMatcher(this._prefix); | |
72 bool matches(item, Map matchState) { | |
73 return item is String && | |
74 (collapseWhitespace(item)).startsWith(collapseWhitespace(_prefix)); | |
75 } | |
76 | |
77 Description describe(Description description) => | |
78 description.add('a string starting with '). | |
79 addDescriptionOf(collapseWhitespace(_prefix)). | |
80 add(' ignoring whitespace'); | |
81 } | |
OLD | NEW |