| Index: tests/lib/async/zone_task_test.dart
|
| diff --git a/tests/lib/async/zone_task_test.dart b/tests/lib/async/zone_task_test.dart
|
| deleted file mode 100644
|
| index aa9b008bad62e3d6ac89a2c3472a39b851a4a717..0000000000000000000000000000000000000000
|
| --- a/tests/lib/async/zone_task_test.dart
|
| +++ /dev/null
|
| @@ -1,310 +0,0 @@
|
| -// Copyright (c) 2016, 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.
|
| -
|
| -// Tests basic functionality of tasks in zones.
|
| -
|
| -import 'package:expect/expect.dart';
|
| -import 'package:async_helper/async_helper.dart';
|
| -import 'dart:async';
|
| -
|
| -List log = [];
|
| -
|
| -class MySpecification extends TaskSpecification {
|
| - final Function callback;
|
| - final bool isOneShot;
|
| - final int value;
|
| -
|
| - MySpecification(void this.callback(), this.isOneShot, this.value);
|
| -
|
| - String get name => "test.specification-name";
|
| -}
|
| -
|
| -class MyTask {
|
| - final Zone zone;
|
| - final Function callback;
|
| - final int id;
|
| - int invocationCount = 0;
|
| - bool shouldStop = false;
|
| -
|
| - MyTask(this.zone, void this.callback(), this.id);
|
| -}
|
| -
|
| -void runMyTask(MyTask task, int value) {
|
| - log.add("running "
|
| - "zone: ${Zone.current['name']} "
|
| - "task-id: ${task.id} "
|
| - "invocation-count: ${task.invocationCount} "
|
| - "value: $value");
|
| - task.callback();
|
| - task.invocationCount++;
|
| -}
|
| -
|
| -MyTask createMyTask(MySpecification spec, Zone zone) {
|
| - var task = new MyTask(zone, spec.callback, spec.value);
|
| - log.add("creating task: ${spec.value} oneshot?: ${spec.isOneShot}");
|
| - if (spec.isOneShot) {
|
| - Timer.run(() {
|
| - zone.runTask(runMyTask, task, task.id);
|
| - });
|
| - } else {
|
| - new Timer.periodic(const Duration(milliseconds: 10), (Timer timer) {
|
| - zone.runTask(runMyTask, task, task.id);
|
| - if (task.shouldStop) {
|
| - timer.cancel();
|
| - }
|
| - });
|
| - }
|
| - return task;
|
| -}
|
| -
|
| -MyTask startTask(f, bool oneShot, int value) {
|
| - var spec = new MySpecification(f, oneShot, value);
|
| - return Zone.current.createTask(createMyTask, spec);
|
| -}
|
| -
|
| -/// Makes sure things are working in a simple setting.
|
| -/// No interceptions, changes, ...
|
| -Future testCustomTask() {
|
| - var testCompleter = new Completer();
|
| - asyncStart();
|
| -
|
| - Object createTaskHandler(Zone self, ZoneDelegate parent, Zone zone,
|
| - TaskCreate create, TaskSpecification specification) {
|
| - if (specification is MySpecification) {
|
| - log.add("create enter "
|
| - "zone: ${self['name']} "
|
| - "spec-value: ${specification.value} "
|
| - "spec-oneshot?: ${specification.isOneShot}");
|
| - MyTask result = parent.createTask(zone, create, specification);
|
| - log.add("create leave");
|
| - return result;
|
| - }
|
| - return parent.createTask(zone, create, specification);
|
| - }
|
| -
|
| - void runTaskHandler(Zone self, ZoneDelegate parent, Zone zone, TaskRun run,
|
| - Object task, Object arg) {
|
| - if (task is MyTask) {
|
| - log.add("run enter "
|
| - "zone: ${self['name']} "
|
| - "task-id: ${task.id} "
|
| - "invocation-count: ${task.invocationCount} "
|
| - "arg: $arg");
|
| - parent.runTask(zone, run, task, arg);
|
| - log.add("run leave invocation-count: ${task.invocationCount}");
|
| - return;
|
| - }
|
| - parent.runTask(zone, run, task, arg);
|
| - }
|
| -
|
| - runZoned(() async {
|
| - var completer0 = new Completer();
|
| - startTask(() {
|
| - completer0.complete("done");
|
| - }, true, 0);
|
| - await completer0.future;
|
| -
|
| - Expect.listEquals([
|
| - 'create enter zone: custom zone spec-value: 0 spec-oneshot?: true',
|
| - 'creating task: 0 oneshot?: true',
|
| - 'create leave',
|
| - 'run enter zone: custom zone task-id: 0 invocation-count: 0 arg: 0',
|
| - 'running zone: custom zone task-id: 0 invocation-count: 0 value: 0',
|
| - 'run leave invocation-count: 1'
|
| - ], log);
|
| - log.clear();
|
| -
|
| - var completer1 = new Completer();
|
| - MyTask task1;
|
| - task1 = startTask(() {
|
| - if (task1.invocationCount == 1) {
|
| - task1.shouldStop = true;
|
| - completer1.complete("done");
|
| - }
|
| - }, false, 1);
|
| - await completer1.future;
|
| -
|
| - Expect.listEquals([
|
| - 'create enter zone: custom zone spec-value: 1 spec-oneshot?: false',
|
| - 'creating task: 1 oneshot?: false',
|
| - 'create leave',
|
| - 'run enter zone: custom zone task-id: 1 invocation-count: 0 arg: 1',
|
| - 'running zone: custom zone task-id: 1 invocation-count: 0 value: 1',
|
| - 'run leave invocation-count: 1',
|
| - 'run enter zone: custom zone task-id: 1 invocation-count: 1 arg: 1',
|
| - 'running zone: custom zone task-id: 1 invocation-count: 1 value: 1',
|
| - 'run leave invocation-count: 2',
|
| - ], log);
|
| - log.clear();
|
| -
|
| - testCompleter.complete("done");
|
| - asyncEnd();
|
| - },
|
| - zoneValues: {'name': 'custom zone'},
|
| - zoneSpecification: new ZoneSpecification(
|
| - createTask: createTaskHandler,
|
| - runTask: runTaskHandler));
|
| -
|
| - return testCompleter.future;
|
| -}
|
| -
|
| -/// More complicated zone, that intercepts...
|
| -Future testCustomTask2() {
|
| - var testCompleter = new Completer();
|
| - asyncStart();
|
| -
|
| - Object createTaskHandler(Zone self, ZoneDelegate parent, Zone zone,
|
| - TaskCreate create, TaskSpecification specification) {
|
| - if (specification is MySpecification) {
|
| - log.add("create enter "
|
| - "zone: ${self['name']} "
|
| - "spec-value: ${specification.value} "
|
| - "spec-oneshot?: ${specification.isOneShot}");
|
| - var replacement = new MySpecification(specification.callback,
|
| - specification.isOneShot, specification.value + 1);
|
| - MyTask result = parent.createTask(zone, create, replacement);
|
| - log.add("create leave");
|
| - return result;
|
| - }
|
| - return parent.createTask(zone, create, specification);
|
| - }
|
| -
|
| - void runTaskHandler(Zone self, ZoneDelegate parent, Zone zone, TaskRun run,
|
| - Object task, Object arg) {
|
| - if (task is MyTask) {
|
| - log.add("run enter "
|
| - "zone: ${self['name']} "
|
| - "task-id: ${task.id} "
|
| - "invocation-count: ${task.invocationCount} "
|
| - "arg: $arg");
|
| - int value = arg;
|
| - parent.runTask(zone, run, task, value + 101);
|
| - log.add("run leave invocation-count: ${task.invocationCount}");
|
| - return;
|
| - }
|
| - parent.runTask(zone, run, task, arg);
|
| - }
|
| -
|
| - runZoned(() async {
|
| - var completer0 = new Completer();
|
| - startTask(() {
|
| - completer0.complete("done");
|
| - }, true, 0);
|
| - await completer0.future;
|
| -
|
| - Expect.listEquals([
|
| - 'create enter zone: outer-zone spec-value: 0 spec-oneshot?: true',
|
| - 'creating task: 1 oneshot?: true',
|
| - 'create leave',
|
| - 'run enter zone: outer-zone task-id: 1 invocation-count: 0 arg: 1',
|
| - 'running zone: outer-zone task-id: 1 invocation-count: 0 value: 102',
|
| - 'run leave invocation-count: 1'
|
| - ], log);
|
| - log.clear();
|
| -
|
| - var completer1 = new Completer();
|
| - MyTask task1;
|
| - task1 = startTask(() {
|
| - if (task1.invocationCount == 1) {
|
| - task1.shouldStop = true;
|
| - completer1.complete("done");
|
| - }
|
| - }, false, 1);
|
| - await completer1.future;
|
| -
|
| - Expect.listEquals([
|
| - 'create enter zone: outer-zone spec-value: 1 spec-oneshot?: false',
|
| - 'creating task: 2 oneshot?: false',
|
| - 'create leave',
|
| - 'run enter zone: outer-zone task-id: 2 invocation-count: 0 arg: 2',
|
| - 'running zone: outer-zone task-id: 2 invocation-count: 0 value: 103',
|
| - 'run leave invocation-count: 1',
|
| - 'run enter zone: outer-zone task-id: 2 invocation-count: 1 arg: 2',
|
| - 'running zone: outer-zone task-id: 2 invocation-count: 1 value: 103',
|
| - 'run leave invocation-count: 2',
|
| - ], log);
|
| - log.clear();
|
| -
|
| - var nestedCompleter = new Completer();
|
| -
|
| - runZoned(() async {
|
| - var completer0 = new Completer();
|
| - startTask(() {
|
| - completer0.complete("done");
|
| - }, true, 0);
|
| - await completer0.future;
|
| -
|
| - Expect.listEquals([
|
| - 'create enter zone: inner-zone spec-value: 0 spec-oneshot?: true',
|
| - 'create enter zone: outer-zone spec-value: 1 spec-oneshot?: true',
|
| - 'creating task: 2 oneshot?: true',
|
| - 'create leave',
|
| - 'create leave',
|
| - 'run enter zone: inner-zone task-id: 2 invocation-count: 0 arg: 2',
|
| - 'run enter zone: outer-zone task-id: 2 invocation-count: 0 arg: 103',
|
| - 'running zone: inner-zone task-id: 2 invocation-count: 0 value: 204',
|
| - 'run leave invocation-count: 1',
|
| - 'run leave invocation-count: 1'
|
| - ], log);
|
| - log.clear();
|
| -
|
| - var completer1 = new Completer();
|
| - MyTask task1;
|
| - task1 = startTask(() {
|
| - if (task1.invocationCount == 1) {
|
| - task1.shouldStop = true;
|
| - completer1.complete("done");
|
| - }
|
| - }, false, 1);
|
| - await completer1.future;
|
| -
|
| - Expect.listEquals([
|
| - 'create enter zone: inner-zone spec-value: 1 spec-oneshot?: false',
|
| - 'create enter zone: outer-zone spec-value: 2 spec-oneshot?: false',
|
| - 'creating task: 3 oneshot?: false',
|
| - 'create leave',
|
| - 'create leave',
|
| - 'run enter zone: inner-zone task-id: 3 invocation-count: 0 arg: 3',
|
| - 'run enter zone: outer-zone task-id: 3 invocation-count: 0 arg: 104',
|
| - 'running zone: inner-zone task-id: 3 invocation-count: 0 value: 205',
|
| - 'run leave invocation-count: 1',
|
| - 'run leave invocation-count: 1',
|
| - 'run enter zone: inner-zone task-id: 3 invocation-count: 1 arg: 3',
|
| - 'run enter zone: outer-zone task-id: 3 invocation-count: 1 arg: 104',
|
| - 'running zone: inner-zone task-id: 3 invocation-count: 1 value: 205',
|
| - 'run leave invocation-count: 2',
|
| - 'run leave invocation-count: 2',
|
| - ], log);
|
| - log.clear();
|
| -
|
| - nestedCompleter.complete("done");
|
| - },
|
| - zoneValues: {'name': 'inner-zone'},
|
| - zoneSpecification: new ZoneSpecification(
|
| - createTask: createTaskHandler,
|
| - runTask: runTaskHandler));
|
| -
|
| - await nestedCompleter.future;
|
| - testCompleter.complete("done");
|
| - asyncEnd();
|
| - },
|
| - zoneValues: {'name': 'outer-zone'},
|
| - zoneSpecification: new ZoneSpecification(
|
| - createTask: createTaskHandler,
|
| - runTask: runTaskHandler));
|
| -
|
| - return testCompleter.future;
|
| -}
|
| -
|
| -runTests() async {
|
| - await testCustomTask();
|
| - await testCustomTask2();
|
| -}
|
| -
|
| -main() {
|
| - asyncStart();
|
| - runTests().then((_) {
|
| - asyncEnd();
|
| - });
|
| -}
|
|
|