OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 import "dart:async"; | 5 import "dart:async"; |
6 import "dart:collection"; | 6 import "dart:collection"; |
7 import "package:async/result.dart"; | 7 import "package:async/result.dart"; |
8 import "package:unittest/unittest.dart"; | 8 import "package:unittest/unittest.dart"; |
9 | 9 |
10 void main() { | 10 void main() { |
(...skipping 19 matching lines...) Expand all Loading... |
30 test("create result error", () { | 30 test("create result error", () { |
31 Result<bool> result = new Result<bool>.error("BAD", stack); | 31 Result<bool> result = new Result<bool>.error("BAD", stack); |
32 expect(result.isValue, isFalse); | 32 expect(result.isValue, isFalse); |
33 expect(result.isError, isTrue); | 33 expect(result.isError, isTrue); |
34 ErrorResult error = result.asError; | 34 ErrorResult error = result.asError; |
35 expect(error.error, equals("BAD")); | 35 expect(error.error, equals("BAD")); |
36 expect(error.stackTrace, same(stack)); | 36 expect(error.stackTrace, same(stack)); |
37 }); | 37 }); |
38 | 38 |
39 test("create result error 2", () { | 39 test("create result error 2", () { |
40 Result<bool> result = new ErrorResult<bool>("BAD", stack); | 40 Result<bool> result = new ErrorResult("BAD", stack); |
41 expect(result.isValue, isFalse); | 41 expect(result.isValue, isFalse); |
42 expect(result.isError, isTrue); | 42 expect(result.isError, isTrue); |
43 ErrorResult error = result.asError; | 43 ErrorResult error = result.asError; |
44 expect(error.error, equals("BAD")); | 44 expect(error.error, equals("BAD")); |
45 expect(error.stackTrace, same(stack)); | 45 expect(error.stackTrace, same(stack)); |
46 }); | 46 }); |
47 | 47 |
48 test("create result error no stack", () { | 48 test("create result error no stack", () { |
49 Result<bool> result = new Result<bool>.error("BAD"); | 49 Result<bool> result = new Result<bool>.error("BAD"); |
50 expect(result.isValue, isFalse); | 50 expect(result.isValue, isFalse); |
51 expect(result.isError, isTrue); | 51 expect(result.isError, isTrue); |
52 ErrorResult error = result.asError; | 52 ErrorResult error = result.asError; |
53 expect(error.error, equals("BAD")); | 53 expect(error.error, equals("BAD")); |
54 expect(error.stackTrace, isNull); | 54 expect(error.stackTrace, isNull); |
55 }); | 55 }); |
56 | 56 |
57 test("complete with value", () { | 57 test("complete with value", () { |
58 Result<int> result = new ValueResult<int>(42); | 58 Result<int> result = new ValueResult<int>(42); |
59 Completer c = new Completer<int>(); | 59 Completer c = new Completer<int>(); |
60 c.future.then(expectAsync((int v) { expect(v, equals(42)); }), | 60 c.future.then(expectAsync((int v) { expect(v, equals(42)); }), |
61 onError: (e, s) { fail("Unexpected error"); }); | 61 onError: (e, s) { fail("Unexpected error"); }); |
62 result.complete(c); | 62 result.complete(c); |
63 }); | 63 }); |
64 | 64 |
65 test("complete with error", () { | 65 test("complete with error", () { |
66 Result<bool> result = new ErrorResult("BAD", stack); | 66 Result<bool> result = new ErrorResult("BAD", stack); |
67 Completer c = new Completer<bool>(); | 67 Completer c = new Completer<bool>(); |
68 c.future.then((bool v) { Expect.fail("Unexpected value $v"); }, | 68 c.future.then((bool v) { fail("Unexpected value $v"); }, |
69 onError: expectAsync((e, s) { | 69 onError: expectAsync((e, s) { |
70 expect(e, equals("BAD")); | 70 expect(e, equals("BAD")); |
71 expect(s, same(stack)); | 71 expect(s, same(stack)); |
72 })); | 72 })); |
73 result.complete(c); | 73 result.complete(c); |
74 }); | 74 }); |
75 | 75 |
76 test("add sink value", () { | 76 test("add sink value", () { |
77 Result<int> result = new ValueResult<int>(42); | 77 Result<int> result = new ValueResult<int>(42); |
78 EventSink<int> sink = new TestSink( | 78 EventSink<int> sink = new TestSink( |
(...skipping 14 matching lines...) Expand all Loading... |
93 }); | 93 }); |
94 | 94 |
95 test("value as future", () { | 95 test("value as future", () { |
96 Result<int> result = new ValueResult<int>(42); | 96 Result<int> result = new ValueResult<int>(42); |
97 result.asFuture.then(expectAsync((int v) { expect(v, equals(42)); }), | 97 result.asFuture.then(expectAsync((int v) { expect(v, equals(42)); }), |
98 onError: (e, s) { fail("Unexpected error"); }); | 98 onError: (e, s) { fail("Unexpected error"); }); |
99 }); | 99 }); |
100 | 100 |
101 test("error as future", () { | 101 test("error as future", () { |
102 Result<bool> result = new ErrorResult("BAD", stack); | 102 Result<bool> result = new ErrorResult("BAD", stack); |
103 result.asFuture.then((bool v) { Expect.fail("Unexpected value $v"); }, | 103 result.asFuture.then((bool v) { fail("Unexpected value $v"); }, |
104 onError: expectAsync((e, s) { | 104 onError: expectAsync((e, s) { |
105 expect(e, equals("BAD")); | 105 expect(e, equals("BAD")); |
106 expect(s, same(stack)); | 106 expect(s, same(stack)); |
107 })); | 107 })); |
108 }); | 108 }); |
109 | 109 |
110 test("capture future value", () { | 110 test("capture future value", () { |
111 Future<int> value = new Future<int>.value(42); | 111 Future<int> value = new Future<int>.value(42); |
112 Result.capture(value).then(expectAsync((Result result) { | 112 Result.capture(value).then(expectAsync((Result result) { |
113 expect(result.isValue, isTrue); | 113 expect(result.isValue, isTrue); |
114 expect(result.isError, isFalse); | 114 expect(result.isError, isFalse); |
115 ValueResult value = result.asValue; | 115 ValueResult value = result.asValue; |
116 expect(value.value, equals(42)); | 116 expect(value.value, equals(42)); |
117 }), onError: (e, s) { | 117 }), onError: (e, s) { |
118 Expect.fail("Unexpected error: $e"); | 118 fail("Unexpected error: $e"); |
119 }); | 119 }); |
120 }); | 120 }); |
121 | 121 |
122 test("capture future error", () { | 122 test("capture future error", () { |
123 Future<bool> value = new Future<bool>.error("BAD", stack); | 123 Future<bool> value = new Future<bool>.error("BAD", stack); |
124 Result.capture(value).then(expectAsync((Result result) { | 124 Result.capture(value).then(expectAsync((Result result) { |
125 expect(result.isValue, isFalse); | 125 expect(result.isValue, isFalse); |
126 expect(result.isError, isTrue); | 126 expect(result.isError, isTrue); |
127 ErrorResult error = result.asError; | 127 ErrorResult error = result.asError; |
128 expect(error.error, equals("BAD")); | 128 expect(error.error, equals("BAD")); |
129 expect(error.stackTrace, same(stack)); | 129 expect(error.stackTrace, same(stack)); |
130 }), onError: (e, s) { | 130 }), onError: (e, s) { |
131 Expect.fail("Unexpected error: $e"); | 131 fail("Unexpected error: $e"); |
132 }); | 132 }); |
133 }); | 133 }); |
134 | 134 |
135 test("release future value", () { | 135 test("release future value", () { |
136 Future<Result<int>> future = | 136 Future<Result<int>> future = |
137 new Future<Result<int>>.value(new Result<int>.value(42)); | 137 new Future<Result<int>>.value(new Result<int>.value(42)); |
138 Result.release(future).then(expectAsync((v) { | 138 Result.release(future).then(expectAsync((v) { |
139 expect(v, equals(42)); | 139 expect(v, equals(42)); |
140 }), onError: (e, s) { | 140 }), onError: (e, s) { |
141 Expect.fail("Unexpected error: $e"); | 141 fail("Unexpected error: $e"); |
142 }); | 142 }); |
143 }); | 143 }); |
144 | 144 |
145 test("release future error", () { | 145 test("release future error", () { |
146 // An error in the result is unwrapped and reified by release. | 146 // An error in the result is unwrapped and reified by release. |
147 Future<Result<bool>> future = | 147 Future<Result<bool>> future = |
148 new Future<Result<bool>>.value(new Result<bool>.error("BAD", stack)); | 148 new Future<Result<bool>>.value(new Result<bool>.error("BAD", stack)); |
149 Result.release(future).then((v) { | 149 Result.release(future).then((v) { |
150 Expect.fail("Unexpected value: $v"); | 150 fail("Unexpected value: $v"); |
151 }, onError: expectAsync((e, s) { | 151 }, onError: expectAsync((e, s) { |
152 expect(e, equals("BAD")); | 152 expect(e, equals("BAD")); |
153 expect(s, same(stack)); | 153 expect(s, same(stack)); |
154 })); | 154 })); |
155 }); | 155 }); |
156 | 156 |
157 test("release future real error", () { | 157 test("release future real error", () { |
158 // An error in the error lane is passed through by release. | 158 // An error in the error lane is passed through by release. |
159 Future<Result<bool>> future = new Future<Result<bool>>.error("BAD", stack); | 159 Future<Result<bool>> future = new Future<Result<bool>>.error("BAD", stack); |
160 Result.release(future).then((v) { | 160 Result.release(future).then((v) { |
161 Expect.fail("Unexpected value: $v"); | 161 fail("Unexpected value: $v"); |
162 }, onError: expectAsync((e, s) { | 162 }, onError: expectAsync((e, s) { |
163 expect(e, equals("BAD")); | 163 expect(e, equals("BAD")); |
164 expect(s, same(stack)); | 164 expect(s, same(stack)); |
165 })); | 165 })); |
166 }); | 166 }); |
167 | 167 |
168 test("capture stream", () { | 168 test("capture stream", () { |
169 StreamController<int> c = new StreamController<int>(); | 169 StreamController<int> c = new StreamController<int>(); |
170 Stream<Result> stream = Result.captureStream(c.stream); | 170 Stream<Result> stream = Result.captureStream(c.stream); |
171 var expectedList = new Queue.from([new Result.value(42), | 171 var expectedList = new Queue.from([new Result.value(42), |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
228 cancelOnError: true); | 228 cancelOnError: true); |
229 c.add(new Result.value(42)); | 229 c.add(new Result.value(42)); |
230 c.add(new Result.error("BAD", stack)); | 230 c.add(new Result.error("BAD", stack)); |
231 c.add(new Result.value(37)); | 231 c.add(new Result.value(37)); |
232 c.close(); | 232 c.close(); |
233 }); | 233 }); |
234 | 234 |
235 | 235 |
236 test("flatten error 1", () { | 236 test("flatten error 1", () { |
237 Result<int> error = new Result<int>.error("BAD", stack); | 237 Result<int> error = new Result<int>.error("BAD", stack); |
238 Result<int> flattened = Result.flatten(error); | 238 Result<int> flattened = |
| 239 Result.flatten(new Result<Result<int>>.error(error)); |
239 expectResult(flattened, error); | 240 expectResult(flattened, error); |
240 }); | 241 }); |
241 | 242 |
242 test("flatten error 2", () { | 243 test("flatten error 2", () { |
243 Result<int> error = new Result<int>.error("BAD", stack); | 244 Result<int> error = new Result<int>.error("BAD", stack); |
244 Result<Result<int>> result = new Result<Result<int>>.value(error); | 245 Result<Result<int>> result = new Result<Result<int>>.value(error); |
245 Result<int> flattened = Result.flatten(result); | 246 Result<int> flattened = Result.flatten(result); |
246 expectResult(flattened, error); | 247 expectResult(flattened, error); |
247 }); | 248 }); |
248 | 249 |
(...skipping 21 matching lines...) Expand all Loading... |
270 final Function onDone; | 271 final Function onDone; |
271 | 272 |
272 TestSink({void this.onData(T data) : _nullData, | 273 TestSink({void this.onData(T data) : _nullData, |
273 void this.onError(e, StackTrace s) : _nullError, | 274 void this.onError(e, StackTrace s) : _nullError, |
274 void this.onDone() : _nullDone }); | 275 void this.onDone() : _nullDone }); |
275 | 276 |
276 void add(T value) { onData(value); } | 277 void add(T value) { onData(value); } |
277 void addError(error, [StackTrace stack]) { onError(error, stack); } | 278 void addError(error, [StackTrace stack]) { onError(error, stack); } |
278 void close() { onDone(); } | 279 void close() { onDone(); } |
279 | 280 |
280 static void _nullData(value) { Expect.fail("Unexpected sink add: $value"); } | 281 static void _nullData(value) { fail("Unexpected sink add: $value"); } |
281 static void _nullError(e, StackTrace s) { | 282 static void _nullError(e, StackTrace s) { |
282 Expect.fail("Unexpected sink addError: $e"); | 283 fail("Unexpected sink addError: $e"); |
283 } | 284 } |
284 static void _nullDone() { Expect.fail("Unepxected sink close"); } | 285 static void _nullDone() { fail("Unepxected sink close"); } |
285 } | 286 } |
OLD | NEW |