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