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 | 7 |
8 import "package:async/result.dart"; | 8 import "package:async/result.dart"; |
9 import "package:stack_trace/stack_trace.dart"; | 9 import "package:stack_trace/stack_trace.dart"; |
10 import "package:test/test.dart"; | 10 import "package:test/test.dart"; |
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
250 Result<Result<int>> result = new Result<Result<int>>.value(error); | 250 Result<Result<int>> result = new Result<Result<int>>.value(error); |
251 Result<int> flattened = Result.flatten(result); | 251 Result<int> flattened = Result.flatten(result); |
252 expectResult(flattened, error); | 252 expectResult(flattened, error); |
253 }); | 253 }); |
254 | 254 |
255 test("flatten value", () { | 255 test("flatten value", () { |
256 Result<Result<int>> result = | 256 Result<Result<int>> result = |
257 new Result<Result<int>>.value(new Result<int>.value(42)); | 257 new Result<Result<int>>.value(new Result<int>.value(42)); |
258 expectResult(Result.flatten(result), new Result<int>.value(42)); | 258 expectResult(Result.flatten(result), new Result<int>.value(42)); |
259 }); | 259 }); |
| 260 |
| 261 test("handle unary", () { |
| 262 var result = new Result.error("error", stack); |
| 263 bool called = false; |
| 264 result.handle((error) { |
| 265 called = true; |
| 266 expect(error, "error"); |
| 267 }); |
| 268 expect(called, isTrue); |
| 269 }); |
| 270 |
| 271 test("handle binary", () { |
| 272 var result = new Result.error("error", stack); |
| 273 bool called = false; |
| 274 result.handle((error, stackTrace) { |
| 275 called = true; |
| 276 expect(error, "error"); |
| 277 expect(stackTrace, same(stack)); |
| 278 }); |
| 279 expect(called, isTrue); |
| 280 }); |
| 281 |
| 282 test("handle unary and binary", () { |
| 283 var result = new Result.error("error", stack); |
| 284 bool called = false; |
| 285 result.handle((error, [stackTrace]) { |
| 286 called = true; |
| 287 expect(error, "error"); |
| 288 expect(stackTrace, same(stack)); |
| 289 }); |
| 290 expect(called, isTrue); |
| 291 }); |
| 292 |
| 293 test("handle neither unary nor binary", () { |
| 294 var result = new Result.error("error", stack); |
| 295 expect(() => result.handle(() => fail("unreachable")), |
| 296 throws); |
| 297 expect(() => result.handle((a, b, c) => fail("unreachable")), |
| 298 throws); |
| 299 expect(() => result.handle((a, b, {c}) => fail("unreachable")), |
| 300 throws); |
| 301 expect(() => result.handle((a, {b}) => fail("unreachable")), |
| 302 throws); |
| 303 expect(() => result.handle(({a, b}) => fail("unreachable")), |
| 304 throws); |
| 305 expect(() => result.handle(({a}) => fail("unreachable")), |
| 306 throws); |
| 307 }); |
260 } | 308 } |
261 | 309 |
262 void expectResult(Result actual, Result expected) { | 310 void expectResult(Result actual, Result expected) { |
263 expect(actual.isValue, equals(expected.isValue)); | 311 expect(actual.isValue, equals(expected.isValue)); |
264 expect(actual.isError, equals(expected.isError)); | 312 expect(actual.isError, equals(expected.isError)); |
265 if (actual.isValue) { | 313 if (actual.isValue) { |
266 expect(actual.asValue.value, equals(expected.asValue.value)); | 314 expect(actual.asValue.value, equals(expected.asValue.value)); |
267 } else { | 315 } else { |
268 expect(actual.asError.error, equals(expected.asError.error)); | 316 expect(actual.asError.error, equals(expected.asError.error)); |
269 expect(actual.asError.stackTrace, same(expected.asError.stackTrace)); | 317 expect(actual.asError.stackTrace, same(expected.asError.stackTrace)); |
(...skipping 12 matching lines...) Expand all Loading... |
282 void add(T value) { onData(value); } | 330 void add(T value) { onData(value); } |
283 void addError(error, [StackTrace stack]) { onError(error, stack); } | 331 void addError(error, [StackTrace stack]) { onError(error, stack); } |
284 void close() { onDone(); } | 332 void close() { onDone(); } |
285 | 333 |
286 static void _nullData(value) { fail("Unexpected sink add: $value"); } | 334 static void _nullData(value) { fail("Unexpected sink add: $value"); } |
287 static void _nullError(e, StackTrace s) { | 335 static void _nullError(e, StackTrace s) { |
288 fail("Unexpected sink addError: $e"); | 336 fail("Unexpected sink addError: $e"); |
289 } | 337 } |
290 static void _nullDone() { fail("Unepxected sink close"); } | 338 static void _nullDone() { fail("Unepxected sink close"); } |
291 } | 339 } |
OLD | NEW |