Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 library dart.pkg.isolate.isolaterunner_test; | 5 library dart.pkg.isolate.isolaterunner_test; |
| 6 | 6 |
| 7 import "package:isolate/ports.dart"; | 7 import "package:isolate/ports.dart"; |
| 8 import "package:unittest/unittest.dart"; | 8 import "package:unittest/unittest.dart"; |
| 9 import "dart:async"; | 9 import "dart:async"; |
| 10 import "dart:isolate"; | 10 import "dart:isolate"; |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 41 Completer completer = new Completer.sync(); | 41 Completer completer = new Completer.sync(); |
| 42 SendPort p = singleCallbackPort(completer.complete); | 42 SendPort p = singleCallbackPort(completer.complete); |
| 43 p.send(42); | 43 p.send(42); |
| 44 return completer.future.then((v) { | 44 return completer.future.then((v) { |
| 45 expect(v, 42); | 45 expect(v, 42); |
| 46 }); | 46 }); |
| 47 }); | 47 }); |
| 48 | 48 |
| 49 test("singleCallbackValueBeforeTimeout", () { | 49 test("singleCallbackValueBeforeTimeout", () { |
| 50 Completer completer = new Completer.sync(); | 50 Completer completer = new Completer.sync(); |
| 51 SendPort p = singleCallbackPort(completer.complete, | 51 SendPort p = singleCallbackPort(completer.complete, timeout: MS * 500); |
| 52 timeout: MS * 500); | |
| 53 p.send(42); | 52 p.send(42); |
| 54 return completer.future.then((v) { | 53 return completer.future.then((v) { |
| 55 expect(v, 42); | 54 expect(v, 42); |
| 56 }); | 55 }); |
| 57 }); | 56 }); |
| 58 | 57 |
| 59 test("singleCallbackTimeout", () { | 58 test("singleCallbackTimeout", () { |
| 60 Completer completer = new Completer.sync(); | 59 Completer completer = new Completer.sync(); |
| 61 singleCallbackPort(completer.complete, | 60 singleCallbackPort(completer.complete, timeout: MS * 100, timeoutValue: 37); |
| 62 timeout: MS * 100, | |
| 63 timeoutValue: 37); | |
| 64 return completer.future.then((v) { | 61 return completer.future.then((v) { |
| 65 expect(v, 37); | 62 expect(v, 37); |
| 66 }); | 63 }); |
| 67 }); | 64 }); |
| 68 | 65 |
| 69 test("singleCallbackTimeoutFirst", () { | 66 test("singleCallbackTimeoutFirst", () { |
| 70 Completer completer = new Completer.sync(); | 67 Completer completer = new Completer.sync(); |
| 71 SendPort p = singleCallbackPort(completer.complete, | 68 SendPort p = singleCallbackPort(completer.complete, |
| 72 timeout: MS * 100, | 69 timeout: MS * 100, timeoutValue: 37); |
|
Lasse Reichstein Nielsen
2015/02/26 10:59:15
Indent to after '(' or put completer.complete on n
| |
| 73 timeoutValue: 37); | |
| 74 new Timer(MS * 500, () => p.send(42)); | 70 new Timer(MS * 500, () => p.send(42)); |
| 75 return completer.future.then((v) { | 71 return completer.future.then((v) { |
| 76 expect(v, 37); | 72 expect(v, 37); |
| 77 }); | 73 }); |
| 78 }); | 74 }); |
| 79 } | 75 } |
| 80 | 76 |
| 81 | |
| 82 void testSingleCompletePort() { | 77 void testSingleCompletePort() { |
| 83 test("singleCompleteValue", () { | 78 test("singleCompleteValue", () { |
| 84 Completer completer = new Completer.sync(); | 79 Completer completer = new Completer.sync(); |
| 85 SendPort p = singleCompletePort(completer); | 80 SendPort p = singleCompletePort(completer); |
| 86 p.send(42); | 81 p.send(42); |
| 87 return completer.future.then((v) { | 82 return completer.future.then((v) { |
| 88 expect(v, 42); | 83 expect(v, 42); |
| 89 }); | 84 }); |
| 90 }); | 85 }); |
| 91 | 86 |
| 92 test("singleCompleteValueCallback", () { | 87 test("singleCompleteValueCallback", () { |
| 93 Completer completer = new Completer.sync(); | 88 Completer completer = new Completer.sync(); |
| 94 SendPort p = singleCompletePort(completer, | 89 SendPort p = singleCompletePort(completer, callback: (v) { |
| 95 callback: (v) { | 90 expect(42, v); |
| 96 expect(42, v); | 91 return 87; |
| 97 return 87; | 92 }); |
|
Lasse Reichstein Nielsen
2015/02/26 10:59:15
This is much better!
| |
| 98 }); | |
| 99 p.send(42); | 93 p.send(42); |
| 100 return completer.future.then((v) { | 94 return completer.future.then((v) { |
| 101 expect(v, 87); | 95 expect(v, 87); |
| 102 }); | 96 }); |
| 103 }); | 97 }); |
| 104 | 98 |
| 105 test("singleCompleteValueCallbackFuture", () { | 99 test("singleCompleteValueCallbackFuture", () { |
| 106 Completer completer = new Completer.sync(); | 100 Completer completer = new Completer.sync(); |
| 107 SendPort p = singleCompletePort(completer, | 101 SendPort p = singleCompletePort(completer, callback: (v) { |
| 108 callback: (v) { | 102 expect(42, v); |
| 109 expect(42, v); | 103 return new Future.delayed(MS * 500, () => 88); |
| 110 return new Future.delayed(MS * 500, | 104 }); |
| 111 () => 88); | |
| 112 }); | |
| 113 p.send(42); | 105 p.send(42); |
| 114 return completer.future.then((v) { | 106 return completer.future.then((v) { |
| 115 expect(v, 88); | 107 expect(v, 88); |
| 116 }); | 108 }); |
| 117 }); | 109 }); |
| 118 | 110 |
| 119 test("singleCompleteValueCallbackThrows", () { | 111 test("singleCompleteValueCallbackThrows", () { |
| 120 Completer completer = new Completer.sync(); | 112 Completer completer = new Completer.sync(); |
| 121 SendPort p = singleCompletePort(completer, | 113 SendPort p = singleCompletePort(completer, callback: (v) { |
| 122 callback: (v) { | 114 expect(42, v); |
| 123 expect(42, v); | 115 throw 89; |
| 124 throw 89; | 116 }); |
| 125 }); | |
| 126 p.send(42); | 117 p.send(42); |
| 127 return completer.future.then((v) { | 118 return completer.future.then((v) { |
| 128 fail("unreachable"); | 119 fail("unreachable"); |
| 129 }, onError: (e, s) { | 120 }, onError: (e, s) { |
| 130 expect(e, 89); | 121 expect(e, 89); |
| 131 }); | 122 }); |
| 132 }); | 123 }); |
| 133 | 124 |
| 134 test("singleCompleteValueCallbackThrowsFuture", () { | 125 test("singleCompleteValueCallbackThrowsFuture", () { |
| 135 Completer completer = new Completer.sync(); | 126 Completer completer = new Completer.sync(); |
| 136 SendPort p = singleCompletePort(completer, | 127 SendPort p = singleCompletePort(completer, callback: (v) { |
| 137 callback: (v) { | 128 expect(42, v); |
| 138 expect(42, v); | 129 return new Future.error(90); |
| 139 return new Future.error(90); | 130 }); |
| 140 }); | |
| 141 p.send(42); | 131 p.send(42); |
| 142 return completer.future.then((v) { | 132 return completer.future.then((v) { |
| 143 fail("unreachable"); | 133 fail("unreachable"); |
| 144 }, onError: (e, s) { | 134 }, onError: (e, s) { |
| 145 expect(e, 90); | 135 expect(e, 90); |
| 146 }); | 136 }); |
| 147 }); | 137 }); |
| 148 | 138 |
| 149 test("singleCompleteFirstValue", () { | 139 test("singleCompleteFirstValue", () { |
| 150 Completer completer = new Completer.sync(); | 140 Completer completer = new Completer.sync(); |
| 151 SendPort p = singleCompletePort(completer); | 141 SendPort p = singleCompletePort(completer); |
| 152 p.send(42); | 142 p.send(42); |
| 153 p.send(37); | 143 p.send(37); |
| 154 return completer.future.then((v) { | 144 return completer.future.then((v) { |
| 155 expect(v, 42); | 145 expect(v, 42); |
| 156 }); | 146 }); |
| 157 }); | 147 }); |
| 158 | 148 |
| 159 test("singleCompleteFirstValueCallback", () { | 149 test("singleCompleteFirstValueCallback", () { |
| 160 Completer completer = new Completer.sync(); | 150 Completer completer = new Completer.sync(); |
| 161 SendPort p = singleCompletePort(completer, callback: (v) { | 151 SendPort p = singleCompletePort(completer, callback: (v) { |
| 162 expect(v, 42); | 152 expect(v, 42); |
| 163 return 87; | 153 return 87; |
| 164 }); | 154 }); |
| 165 p.send(42); | 155 p.send(42); |
| 166 p.send(37); | 156 p.send(37); |
| 167 return completer.future.then((v) { | 157 return completer.future.then((v) { |
| 168 expect(v, 87); | 158 expect(v, 87); |
| 169 }); | 159 }); |
| 170 }); | 160 }); |
| 171 | 161 |
| 172 test("singleCompleteValueBeforeTimeout", () { | 162 test("singleCompleteValueBeforeTimeout", () { |
| 173 Completer completer = new Completer.sync(); | 163 Completer completer = new Completer.sync(); |
| 174 SendPort p = singleCompletePort(completer, | 164 SendPort p = singleCompletePort(completer, timeout: MS * 500); |
| 175 timeout: MS * 500); | |
| 176 p.send(42); | 165 p.send(42); |
| 177 return completer.future.then((v) { | 166 return completer.future.then((v) { |
| 178 expect(v, 42); | 167 expect(v, 42); |
| 179 }); | 168 }); |
| 180 }); | 169 }); |
| 181 | 170 |
| 182 test("singleCompleteTimeout", () { | 171 test("singleCompleteTimeout", () { |
| 183 Completer completer = new Completer.sync(); | 172 Completer completer = new Completer.sync(); |
| 184 singleCompletePort(completer, | 173 singleCompletePort(completer, timeout: MS * 100); |
| 185 timeout: MS * 100); | |
| 186 return completer.future.then((v) { | 174 return completer.future.then((v) { |
| 187 fail("unreachable"); | 175 fail("unreachable"); |
| 188 }, onError: (e, s) { | 176 }, onError: (e, s) { |
| 189 expect(e is TimeoutException, isTrue); | 177 expect(e is TimeoutException, isTrue); |
| 190 }); | 178 }); |
| 191 }); | 179 }); |
| 192 | 180 |
| 193 test("singleCompleteTimeoutCallback", () { | 181 test("singleCompleteTimeoutCallback", () { |
| 194 Completer completer = new Completer.sync(); | 182 Completer completer = new Completer.sync(); |
| 195 singleCompletePort(completer, | 183 singleCompletePort(completer, timeout: MS * 100, onTimeout: () => 87); |
| 196 timeout: MS * 100, | |
| 197 onTimeout: () => 87); | |
| 198 return completer.future.then((v) { | 184 return completer.future.then((v) { |
| 199 expect(v, 87); | 185 expect(v, 87); |
| 200 }); | 186 }); |
| 201 }); | 187 }); |
| 202 | 188 |
| 203 test("singleCompleteTimeoutCallbackThrows", () { | 189 test("singleCompleteTimeoutCallbackThrows", () { |
| 204 Completer completer = new Completer.sync(); | 190 Completer completer = new Completer.sync(); |
| 205 singleCompletePort(completer, | 191 singleCompletePort(completer, timeout: MS * 100, onTimeout: () => throw 91); |
| 206 timeout: MS * 100, | |
| 207 onTimeout: () => throw 91); | |
| 208 return completer.future.then((v) { | 192 return completer.future.then((v) { |
| 209 fail("unreachable"); | 193 fail("unreachable"); |
| 210 }, onError: (e, s) { | 194 }, onError: (e, s) { |
| 211 expect(e, 91); | 195 expect(e, 91); |
| 212 }); | 196 }); |
| 213 }); | 197 }); |
| 214 | 198 |
| 215 test("singleCompleteTimeoutCallbackFuture", () { | 199 test("singleCompleteTimeoutCallbackFuture", () { |
| 216 Completer completer = new Completer.sync(); | 200 Completer completer = new Completer.sync(); |
| 217 singleCompletePort(completer, | 201 singleCompletePort(completer, |
| 218 timeout: MS * 100, | 202 timeout: MS * 100, onTimeout: () => new Future.value(87)); |
| 219 onTimeout: () => new Future.value(87)); | |
| 220 return completer.future.then((v) { | 203 return completer.future.then((v) { |
| 221 expect(v, 87); | 204 expect(v, 87); |
| 222 }); | 205 }); |
| 223 }); | 206 }); |
| 224 | 207 |
| 225 test("singleCompleteTimeoutCallbackThrowsFuture", () { | 208 test("singleCompleteTimeoutCallbackThrowsFuture", () { |
| 226 Completer completer = new Completer.sync(); | 209 Completer completer = new Completer.sync(); |
| 227 singleCompletePort(completer, | 210 singleCompletePort(completer, |
| 228 timeout: MS * 100, | 211 timeout: MS * 100, onTimeout: () => new Future.error(92)); |
| 229 onTimeout: () => new Future.error(92)); | |
| 230 return completer.future.then((v) { | 212 return completer.future.then((v) { |
| 231 fail("unreachable"); | 213 fail("unreachable"); |
| 232 }, onError: (e, s) { | 214 }, onError: (e, s) { |
| 233 expect(e, 92); | 215 expect(e, 92); |
| 234 }); | 216 }); |
| 235 }); | 217 }); |
| 236 | 218 |
| 237 test("singleCompleteTimeoutCallbackSLow", () { | 219 test("singleCompleteTimeoutCallbackSLow", () { |
| 238 Completer completer = new Completer.sync(); | 220 Completer completer = new Completer.sync(); |
| 239 singleCompletePort( | 221 singleCompletePort(completer, |
| 240 completer, | |
| 241 timeout: MS * 100, | 222 timeout: MS * 100, |
| 242 onTimeout: () => new Future.delayed(MS * 500, () => 87)); | 223 onTimeout: () => new Future.delayed(MS * 500, () => 87)); |
| 243 return completer.future.then((v) { | 224 return completer.future.then((v) { |
| 244 expect(v, 87); | 225 expect(v, 87); |
| 245 }); | 226 }); |
| 246 }); | 227 }); |
| 247 | 228 |
| 248 test("singleCompleteTimeoutCallbackThrowsSlow", () { | 229 test("singleCompleteTimeoutCallbackThrowsSlow", () { |
| 249 Completer completer = new Completer.sync(); | 230 Completer completer = new Completer.sync(); |
| 250 singleCompletePort( | 231 singleCompletePort(completer, |
| 251 completer, | |
| 252 timeout: MS * 100, | 232 timeout: MS * 100, |
| 253 onTimeout: () => new Future.delayed(MS * 500, () => throw 87)); | 233 onTimeout: () => new Future.delayed(MS * 500, () => throw 87)); |
| 254 return completer.future.then((v) { | 234 return completer.future.then((v) { |
| 255 fail("unreachable"); | 235 fail("unreachable"); |
| 256 }, onError: (e, s) { | 236 }, onError: (e, s) { |
| 257 expect(e, 87); | 237 expect(e, 87); |
| 258 }); | 238 }); |
| 259 }); | 239 }); |
| 260 | 240 |
| 261 test("singleCompleteTimeoutFirst", () { | 241 test("singleCompleteTimeoutFirst", () { |
| 262 Completer completer = new Completer.sync(); | 242 Completer completer = new Completer.sync(); |
| 263 SendPort p = singleCompletePort(completer, | 243 SendPort p = |
| 264 timeout: MS * 100, | 244 singleCompletePort(completer, timeout: MS * 100, onTimeout: () => 37); |
| 265 onTimeout: () => 37); | |
| 266 new Timer(MS * 500, () => p.send(42)); | 245 new Timer(MS * 500, () => p.send(42)); |
| 267 return completer.future.then((v) { | 246 return completer.future.then((v) { |
| 268 expect(v, 37); | 247 expect(v, 37); |
| 269 }); | 248 }); |
| 270 }); | 249 }); |
| 271 } | 250 } |
| 272 | 251 |
| 273 void testSingleResponseFuture() { | 252 void testSingleResponseFuture() { |
| 274 test("singleResponseFutureValue", () { | 253 test("singleResponseFutureValue", () { |
| 275 return singleResponseFuture((SendPort p) { | 254 return singleResponseFuture((SendPort p) { |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 385 test("singleResultFutureTimeoutError", () { | 364 test("singleResultFutureTimeoutError", () { |
| 386 return singleResultFuture((SendPort p) { | 365 return singleResultFuture((SendPort p) { |
| 387 // no-op. | 366 // no-op. |
| 388 }, timeout: MS * 100, onTimeout: () => throw 97).then((v) { | 367 }, timeout: MS * 100, onTimeout: () => throw 97).then((v) { |
| 389 expect(v, 42); | 368 expect(v, 42); |
| 390 }, onError: (e, s) { | 369 }, onError: (e, s) { |
| 391 expect(e, 97); | 370 expect(e, 97); |
| 392 }); | 371 }); |
| 393 }); | 372 }); |
| 394 } | 373 } |
| OLD | NEW |