Index: test/cctest/compiler/test-node-algorithm.cc |
diff --git a/test/cctest/compiler/test-node-algorithm.cc b/test/cctest/compiler/test-node-algorithm.cc |
index 0cb77011aaefb6c63d0343aa2acbcc5169ce2c7e..842d18272e00b62584ad16d255909af544821193 100644 |
--- a/test/cctest/compiler/test-node-algorithm.cc |
+++ b/test/cctest/compiler/test-node-algorithm.cc |
@@ -9,6 +9,7 @@ |
#include "graph-tester.h" |
#include "src/compiler/common-operator.h" |
#include "src/compiler/graph.h" |
+#include "src/compiler/graph-inl.h" |
#include "src/compiler/graph-visualizer.h" |
#include "src/compiler/node.h" |
#include "src/compiler/operator.h" |
@@ -18,6 +19,45 @@ |
static Operator dummy_operator(IrOpcode::kParameter, Operator::kNoWrite, |
"dummy", 0, 0, 0, 1, 0, 0); |
+ |
+class PreNodeVisitor : public NullNodeVisitor { |
+ public: |
+ void Pre(Node* node) { |
+ printf("NODE ID: %d\n", node->id()); |
+ nodes_.push_back(node); |
+ } |
+ std::vector<Node*> nodes_; |
+}; |
+ |
+ |
+class PostNodeVisitor : public NullNodeVisitor { |
+ public: |
+ void Post(Node* node) { |
+ printf("NODE ID: %d\n", node->id()); |
+ nodes_.push_back(node); |
+ } |
+ std::vector<Node*> nodes_; |
+}; |
+ |
+ |
+TEST(TestInputNodePreOrderVisitSimple) { |
+ GraphWithStartNodeTester graph; |
+ Node* n2 = graph.NewNode(&dummy_operator, graph.start()); |
+ Node* n3 = graph.NewNode(&dummy_operator, n2); |
+ Node* n4 = graph.NewNode(&dummy_operator, n2, n3); |
+ Node* n5 = graph.NewNode(&dummy_operator, n4, n2); |
+ graph.SetEnd(n5); |
+ |
+ PreNodeVisitor node_visitor; |
+ graph.VisitNodeInputsFromEnd(&node_visitor); |
+ CHECK_EQ(5, static_cast<int>(node_visitor.nodes_.size())); |
+ CHECK(n5->id() == node_visitor.nodes_[0]->id()); |
+ CHECK(n4->id() == node_visitor.nodes_[1]->id()); |
+ CHECK(n2->id() == node_visitor.nodes_[2]->id()); |
+ CHECK(graph.start()->id() == node_visitor.nodes_[3]->id()); |
+ CHECK(n3->id() == node_visitor.nodes_[4]->id()); |
+} |
+ |
TEST(TestPrintNodeGraphToNodeGraphviz) { |
GraphWithStartNodeTester graph; |