| Index: tests/utils/dependency_graph_test.dart
|
| diff --git a/tests/utils/dependency_graph_test.dart b/tests/utils/dependency_graph_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..edc94350f67e56c8f0490c25195b1fe25b9def84
|
| --- /dev/null
|
| +++ b/tests/utils/dependency_graph_test.dart
|
| @@ -0,0 +1,62 @@
|
| +// Copyright (c) 2013, 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.
|
| +
|
| +import 'package:expect/expect.dart';
|
| +
|
| +import '../../tools/testing/dart/dependency_graph.dart' as graph;
|
| +
|
| +main() {
|
| + var dgraph = new graph.Graph();
|
| + var numberOfEvents = 0;
|
| + var eventAssertions = [];
|
| +
|
| + graph.Node newNode(int i, List deps) {
|
| + graph.Node node = dgraph.newNode(i, deps);
|
| + Expect.isTrue(node.userData == i);
|
| + Expect.isTrue(dgraph.nodes.contains(node));
|
| + for (var dep in deps) {
|
| + Expect.isTrue(node.dependencies.contains(dep));
|
| + Expect.isTrue(dep.neededFor.contains(node));
|
| + }
|
| +
|
| + numberOfEvents++;
|
| + eventAssertions.add((event) {
|
| + Expect.isTrue(event is graph.NodeAddedEvent);
|
| + Expect.isTrue(event.node == node);
|
| + });
|
| +
|
| + return node;
|
| + }
|
| +
|
| + changeState(graph.Node node, graph.NodeState newState) {
|
| + var oldState = node.state;
|
| +
|
| + dgraph.changeState(node, newState);
|
| + Expect.isTrue(node.state == newState);
|
| +
|
| + numberOfEvents++;
|
| + eventAssertions.add((event) {
|
| + Expect.isTrue(event is graph.StateChangedEvent);
|
| + Expect.isTrue(event.node == node);
|
| + Expect.isTrue(event.from == oldState);
|
| + Expect.isTrue(event.to == newState);
|
| + });
|
| + }
|
| +
|
| + var node1, node2, node3;
|
| +
|
| + node1 = newNode(1, []);
|
| + changeState(node1, graph.NodeState.Processing);
|
| + node2 = newNode(2, [node1]);
|
| + changeState(node1, graph.NodeState.Successful);
|
| + node3 = newNode(3, [node1, node2]);
|
| + changeState(node2, graph.NodeState.Failed);
|
| + changeState(node3, graph.NodeState.UnableToRun);
|
| +
|
| + dgraph.events.take(numberOfEvents).toList().then((events) {
|
| + for (var i=0; i<events.length; i++) {
|
| + eventAssertions[i](events[i]);
|
| + }
|
| + });
|
| +}
|
|
|