Index: tests/lib/async/async_await_zones_test.dart |
diff --git a/tests/lib/async/async_await_zones_test.dart b/tests/lib/async/async_await_zones_test.dart |
deleted file mode 100644 |
index 210b05dee778929c0d7d3f3757afd3146e927214..0000000000000000000000000000000000000000 |
--- a/tests/lib/async/async_await_zones_test.dart |
+++ /dev/null |
@@ -1,142 +0,0 @@ |
-// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-// Test that async functions don't zone-register their callbacks for each |
-// await. Async functions should register their callback once in the beginning |
-// and then reuse it for all awaits in their body. |
-// This has two advantages: it is faster, when there are several awaits (on |
-// the Future class from dart:async), and it avoids zone-nesting when tracing |
-// stacktraces. |
-// See http://dartbug.com/23394 for more information. |
- |
-import 'dart:async'; |
-import 'package:expect/expect.dart'; |
-import 'package:async_helper/async_helper.dart'; |
- |
-gee(i) async { |
- return await i; |
-} |
- |
-bar() async* { |
- var i = 0; |
- while (true) yield await gee(i++); |
-} |
- |
- |
-awaitForTest() async { |
- var sum = 0; |
- await for (var x in bar().take(100)) { |
- sum += x; |
- } |
- Expect.equals(4950, sum); |
-} |
- |
-awaitTest() async { |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- await null; |
- return await 499; |
-} |
- |
-runTests() async { |
- await awaitTest(); |
- await awaitForTest(); |
-} |
- |
-var depth = 0; |
- |
-var depthIncreases = 0; |
- |
-increaseDepth() { |
- depthIncreases++; |
- depth++; |
- // The async/await code should not register callbacks recursively in the |
- // then-calls. As such the depth should never grow too much. We don't want |
- // to commit to a specific value, since implementations still have some |
- // room in how async/await is implemented, but 20 should be safe. |
- Expect.isTrue(depth < 20); |
-} |
- |
-registerCallback(Zone self, ZoneDelegate parent, Zone zone, f) { |
- var oldDepth = depth; |
- increaseDepth(); |
- return parent.registerCallback(zone, () { |
- depth = oldDepth; |
- return f(); |
- }); |
-} |
-registerUnaryCallback(Zone self, ZoneDelegate parent, Zone zone, f) { |
- var oldDepth = depth; |
- increaseDepth(); |
- return parent.registerUnaryCallback(zone, (x) { |
- depth = oldDepth; |
- return f(x); |
- }); |
-} |
-registerBinaryCallback(Zone self, ZoneDelegate parent, Zone zone, f) { |
- var oldDepth = depth; |
- increaseDepth(); |
- return parent.registerBinaryCallback(zone, (x, y) { |
- depth = oldDepth; |
- return f(x, y); |
- }); |
-} |
- |
-sm(Zone self, ZoneDelegate parent, Zone zone, f) { |
- var oldDepth = depth; |
- increaseDepth(); |
- return parent.scheduleMicrotask(zone, () { |
- depth = oldDepth; |
- return f(); |
- }); |
-} |
- |
-main() { |
- asyncStart(); |
- var desc = new ZoneSpecification( |
- registerCallback: registerCallback, |
- registerUnaryCallback: registerUnaryCallback, |
- registerBinaryCallback: registerBinaryCallback, |
- scheduleMicrotask: sm |
- ); |
- var future = runZoned(runTests, zoneSpecification: desc); |
- future.then((_) => asyncEnd()); |
-} |