| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 future_timeout_test; | 5 library future_timeout_test; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import '../../../pkg/unittest/lib/unittest.dart'; | 8 import '../../../pkg/unittest/lib/unittest.dart'; |
| 9 | 9 |
| 10 main() { | 10 main() { |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 135 const Duration(milliseconds: 5), onTimeout: () { | 135 const Duration(milliseconds: 5), onTimeout: () { |
| 136 result.completeError("EXN6"); | 136 result.completeError("EXN6"); |
| 137 return result.future; | 137 return result.future; |
| 138 }); | 138 }); |
| 139 timedOut.catchError(expectAsync2((e, s) { | 139 timedOut.catchError(expectAsync2((e, s) { |
| 140 expect(e, "EXN6"); | 140 expect(e, "EXN6"); |
| 141 })); | 141 })); |
| 142 }); | 142 }); |
| 143 | 143 |
| 144 test("timeoutZone", () { | 144 test("timeoutZone", () { |
| 145 var initialZone = Zone.current; | |
| 146 Zone forked; | 145 Zone forked; |
| 147 int registerCallDelta = 0; | 146 int registerCallDelta = 0; |
| 148 bool callbackCalled = false; | 147 bool callbackCalled = false; |
| 149 Function callback = () { | 148 Function callback = () { |
| 150 expect(callbackCalled, false); | 149 expect(callbackCalled, false); |
| 151 callbackCalled = true; | 150 callbackCalled = true; |
| 152 expect(Zone.current, forked); | 151 expect(Zone.current, forked); |
| 153 return 42; | 152 return 42; |
| 154 }; | 153 }; |
| 155 forked = Zone.current.fork(specification: new ZoneSpecification( | 154 forked = Zone.current.fork(specification: new ZoneSpecification( |
| 156 registerCallback: (Zone self, ZoneDelegate parent, Zone origin, f()) { | 155 registerCallback: (Zone self, ZoneDelegate parent, Zone origin, f()) { |
| 157 if (!identical(f, callback)) return f; | 156 if (!identical(f, callback)) return f; |
| 158 registerCallDelta++; // Increment calls to register. | 157 registerCallDelta++; // Increment calls to register. |
| 159 expect(origin, forked); | 158 expect(origin, forked); |
| 160 expect(self, forked); | 159 expect(self, forked); |
| 161 return expectAsync0(() { registerCallDelta--; return f(); }); | 160 return expectAsync0(() { registerCallDelta--; return f(); }); |
| 162 } | 161 } |
| 163 )); | 162 )); |
| 164 Completer completer = new Completer(); | 163 Completer completer = new Completer(); |
| 165 Future timedOut; | 164 Future timedOut; |
| 166 forked.run(() { | 165 forked.run(() { |
| 167 timedOut = completer.future.timeout(const Duration(milliseconds: 5), | 166 timedOut = completer.future.timeout(const Duration(milliseconds: 5), |
| 168 onTimeout: callback); | 167 onTimeout: callback); |
| 169 }); | 168 }); |
| 170 timedOut.then(expectAsync1((v) { | 169 timedOut.then(expectAsync1((v) { |
| 171 expect(callbackCalled, true); | 170 expect(callbackCalled, true); |
| 172 expect(registerCallDelta, 0); | 171 expect(registerCallDelta, 0); |
| 173 expect(Zone.current, initialZone); | 172 expect(Zone.current, Zone.ROOT); |
| 174 expect(v, 42); | 173 expect(v, 42); |
| 175 })); | 174 })); |
| 176 }); | 175 }); |
| 177 | 176 |
| 178 test("timeoutNoFunction", () { | 177 test("timeoutNoFunction", () { |
| 179 Completer completer = new Completer(); | 178 Completer completer = new Completer(); |
| 180 Future timedOut = completer.future.timeout( | 179 Future timedOut = completer.future.timeout( |
| 181 const Duration(milliseconds: 5)); | 180 const Duration(milliseconds: 5)); |
| 182 timedOut.catchError(expectAsync2((e, s) { | 181 timedOut.catchError(expectAsync2((e, s) { |
| 183 expect(e, new isInstanceOf<TimeoutException>()); | 182 expect(e, new isInstanceOf<TimeoutException>()); |
| 184 expect(e.duration, const Duration(milliseconds: 5)); | 183 expect(e.duration, const Duration(milliseconds: 5)); |
| 185 expect(s, null); | 184 expect(s, null); |
| 186 })); | 185 })); |
| 187 }); | 186 }); |
| 188 } | 187 } |
| OLD | NEW |