OLD | NEW |
| (Empty) |
1 // Copyright (c) 2014, 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 import 'dart:async'; | |
6 | |
7 import 'package:unittest/unittest.dart'; | |
8 | |
9 import '../utils.dart'; | |
10 | |
11 void main() { | |
12 group("synchronous", () { | |
13 test("passes with an expected print", () { | |
14 expect(() => print("Hello, world!"), prints("Hello, world!\n")); | |
15 }); | |
16 | |
17 test("combines multiple prints", () { | |
18 expect(() { | |
19 print("Hello"); | |
20 print("World!"); | |
21 }, prints("Hello\nWorld!\n")); | |
22 }); | |
23 | |
24 test("works with a Matcher", () { | |
25 expect(() => print("Hello, world!"), prints(contains("Hello"))); | |
26 }); | |
27 | |
28 test("describes a failure nicely", () { | |
29 return runTest(() { | |
30 expect(() => print("Hello, world!"), prints("Goodbye, world!\n")); | |
31 }).then((liveTest) { | |
32 expectTestFailed(liveTest, | |
33 "Expected: prints 'Goodbye, world!\\n'\n" | |
34 " ''\n" | |
35 " Actual: <Closure: () => dynamic>\n" | |
36 " Which: printed 'Hello, world!\\n'\n" | |
37 " ''\n" | |
38 " Which: is different.\n" | |
39 "Expected: Goodbye, w ...\n" | |
40 " Actual: Hello, wor ...\n" | |
41 " ^\n" | |
42 " Differ at offset 0\n"); | |
43 }); | |
44 }); | |
45 | |
46 test("describes a failure with a non-descriptive Matcher nicely", () { | |
47 return runTest(() { | |
48 expect(() => print("Hello, world!"), prints(contains("Goodbye"))); | |
49 }).then((liveTest) { | |
50 expectTestFailed(liveTest, | |
51 "Expected: prints contains 'Goodbye'\n" | |
52 " Actual: <Closure: () => dynamic>\n" | |
53 " Which: printed 'Hello, world!\\n'\n" | |
54 " ''\n"); | |
55 }); | |
56 }); | |
57 | |
58 test("describes a failure with no text nicely", () { | |
59 return runTest(() { | |
60 expect(() {}, prints(contains("Goodbye"))); | |
61 }).then((liveTest) { | |
62 expectTestFailed(liveTest, | |
63 "Expected: prints contains 'Goodbye'\n" | |
64 " Actual: <Closure: () => dynamic>\n" | |
65 " Which: printed nothing.\n"); | |
66 }); | |
67 }); | |
68 | |
69 test("with a non-function", () { | |
70 return runTest(() { | |
71 expect(10, prints(contains("Goodbye"))); | |
72 }).then((liveTest) { | |
73 expectTestFailed(liveTest, | |
74 "Expected: prints contains 'Goodbye'\n" | |
75 " Actual: <10>\n"); | |
76 }); | |
77 }); | |
78 }); | |
79 | |
80 group('asynchronous', () { | |
81 test("passes with an expected print", () { | |
82 expect(() => new Future(() => print("Hello, world!")), | |
83 prints("Hello, world!\n")); | |
84 }); | |
85 | |
86 test("combines multiple prints", () { | |
87 expect(() => new Future(() { | |
88 print("Hello"); | |
89 print("World!"); | |
90 }), prints("Hello\nWorld!\n")); | |
91 }); | |
92 | |
93 test("works with a Matcher", () { | |
94 expect(() => new Future(() => print("Hello, world!")), | |
95 prints(contains("Hello"))); | |
96 }); | |
97 | |
98 test("describes a failure nicely", () { | |
99 return runTest(() { | |
100 expect(() => new Future(() => print("Hello, world!")), | |
101 prints("Goodbye, world!\n")); | |
102 }).then((liveTest) { | |
103 expectTestFailed(liveTest, startsWith( | |
104 "Expected: prints 'Goodbye, world!\\n'\n" | |
105 " ''\n" | |
106 " Actual: <Closure: () => dynamic>\n" | |
107 " Which: printed 'Hello, world!\\n'\n" | |
108 " ''\n" | |
109 " Which: is different.\n" | |
110 "Expected: Goodbye, w ...\n" | |
111 " Actual: Hello, wor ...\n" | |
112 " ^\n" | |
113 " Differ at offset 0")); | |
114 }); | |
115 }); | |
116 | |
117 test("describes a failure with a non-descriptive Matcher nicely", () { | |
118 return runTest(() { | |
119 expect(() => new Future(() => print("Hello, world!")), | |
120 prints(contains("Goodbye"))); | |
121 }).then((liveTest) { | |
122 expectTestFailed(liveTest, startsWith( | |
123 "Expected: prints contains 'Goodbye'\n" | |
124 " Actual: <Closure: () => dynamic>\n" | |
125 " Which: printed 'Hello, world!\\n'\n" | |
126 " ''")); | |
127 }); | |
128 }); | |
129 | |
130 test("describes a failure with no text nicely", () { | |
131 return runTest(() { | |
132 expect(() => new Future.value(), prints(contains("Goodbye"))); | |
133 }).then((liveTest) { | |
134 expectTestFailed(liveTest, startsWith( | |
135 "Expected: prints contains 'Goodbye'\n" | |
136 " Actual: <Closure: () => dynamic>\n" | |
137 " Which: printed nothing.")); | |
138 }); | |
139 }); | |
140 | |
141 test("won't let the test end until the Future completes", () { | |
142 return expectTestBlocks(() { | |
143 var completer = new Completer(); | |
144 expect(() => completer.future, prints(isEmpty)); | |
145 return completer; | |
146 }, (completer) => completer.complete()); | |
147 }); | |
148 }); | |
149 } | |
OLD | NEW |