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 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
224 expect(e, equals("BAD")); | 224 expect(e, equals("BAD")); |
225 expect(s, same(stack)); | 225 expect(s, same(stack)); |
226 }), | 226 }), |
227 onDone: () { fail("Unexpected done event"); }, | 227 onDone: () { fail("Unexpected done event"); }, |
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 |
| 235 |
| 236 test("flatten error 1", () { |
| 237 Result<int> error = new Result<int>.error("BAD", stack); |
| 238 Result<int> flattened = Result.flatten(error); |
| 239 expectResult(flattened, error); |
| 240 }); |
| 241 |
| 242 test("flatten error 2", () { |
| 243 Result<int> error = new Result<int>.error("BAD", stack); |
| 244 Result<Result<int>> result = new Result<Result<int>>.value(error); |
| 245 Result<int> flattened = Result.flatten(result); |
| 246 expectResult(flattened, error); |
| 247 }); |
| 248 |
| 249 test("flatten value", () { |
| 250 Result<Result<int>> result = |
| 251 new Result<Result<int>>.value(new Result<int>.value(42)); |
| 252 expectResult(Result.flatten(result), new Result<int>.value(42)); |
| 253 }); |
234 } | 254 } |
235 | 255 |
236 void expectResult(Result actual, Result expected) { | 256 void expectResult(Result actual, Result expected) { |
237 expect(actual.isValue, equals(expected.isValue)); | 257 expect(actual.isValue, equals(expected.isValue)); |
238 expect(actual.isError, equals(expected.isError)); | 258 expect(actual.isError, equals(expected.isError)); |
239 if (actual.isValue) { | 259 if (actual.isValue) { |
240 expect(actual.asValue.value, equals(expected.asValue.value)); | 260 expect(actual.asValue.value, equals(expected.asValue.value)); |
241 } else { | 261 } else { |
242 expect(actual.asError.error, equals(expected.asError.error)); | 262 expect(actual.asError.error, equals(expected.asError.error)); |
243 expect(actual.asError.stackTrace, same(expected.asError.stackTrace)); | 263 expect(actual.asError.stackTrace, same(expected.asError.stackTrace)); |
(...skipping 12 matching lines...) Expand all Loading... |
256 void add(T value) { onData(value); } | 276 void add(T value) { onData(value); } |
257 void addError(error, [StackTrace stack]) { onError(error, stack); } | 277 void addError(error, [StackTrace stack]) { onError(error, stack); } |
258 void close() { onDone(); } | 278 void close() { onDone(); } |
259 | 279 |
260 static void _nullData(value) { Expect.fail("Unexpected sink add: $value"); } | 280 static void _nullData(value) { Expect.fail("Unexpected sink add: $value"); } |
261 static void _nullError(e, StackTrace s) { | 281 static void _nullError(e, StackTrace s) { |
262 Expect.fail("Unexpected sink addError: $e"); | 282 Expect.fail("Unexpected sink addError: $e"); |
263 } | 283 } |
264 static void _nullDone() { Expect.fail("Unepxected sink close"); } | 284 static void _nullDone() { Expect.fail("Unepxected sink close"); } |
265 } | 285 } |
OLD | NEW |