Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(719)

Side by Side Diff: test/result_test.dart

Issue 1218813011: Add handle method to ErrorResult. (Closed) Base URL: https://github.com/dart-lang/async@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « lib/result.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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 }
OLDNEW
« no previous file with comments | « lib/result.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698