Chromium Code Reviews| 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..53bf1d916df61596cc96f5cf3a93b573943a71e0 |
| --- /dev/null |
| +++ b/tests/utils/dependency_graph_test.dart |
| @@ -0,0 +1,63 @@ |
| +// 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((List<graph.GraphEvent> events) { |
| + for (var i=0; i<events.length; i++) { |
|
ricow1
2013/08/01 18:23:52
could we indent this for loop 4 more spaces, this
kustermann
2013/08/05 07:29:17
Moved it one line up.
|
| + eventAssertions[i](events[i]); |
| + } |
| + }); |
| +} |