| 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 |