6 #include <gtest/gtest.h>
12 TEST(TopDownTraverserTests, testInitialization)
30 bool unary_visited =
false;
31 bool binary_visited =
false;
32 bool constant_visited =
false;
38 constant_visited =
true;
39 if (node == binary && unary_visited)
40 binary_visited =
true;
43 EXPECT_TRUE(unary_visited);
44 EXPECT_TRUE(binary_visited);
45 EXPECT_TRUE(constant_visited);
48 TEST(TopDownTraverserTests, testBasicTraversal)
70 EXPECT_EQ(tmp,
nullptr);
74 TEST(TopDownTraverserTests, testOrderEnforcement)
97 EXPECT_EQ(tmp,
nullptr);
101 TEST(TopDownTraverserTests, testInsertion)
157 n3->input(0)->divert_to(n1->output(1));
160 n2->input(0)->divert_to(nX->output(0));
161 n2->input(1)->divert_to(nY->output(0));
163 graphExport.divert_to(n2->output(0));
172 EXPECT_EQ(node,
nullptr);
176 TEST(TopDownTraverserTests, testInsertingTopNode)
201 auto node = trav.
next();
205 n1->output(0)->divert_users(nX->output(0));
211 EXPECT_EQ(node,
nullptr);
214 TEST(TopDownTraverserTests, testMutating)
223 bool seen_n1 =
false;
224 bool seen_n2 =
false;
225 bool seen_n3 =
false;
229 seen_n1 = seen_n1 || (tmp == n1);
230 seen_n2 = seen_n2 || (tmp == n2);
231 seen_n3 = seen_n3 || (tmp == n3);
232 if (n3->input(0)->origin() == n1->output(0))
233 n3->input(0)->divert_to(n2->output(0));
235 n3->input(0)->divert_to(n1->output(0));
238 EXPECT_TRUE(seen_n1);
239 EXPECT_TRUE(seen_n2);
240 EXPECT_TRUE(seen_n3);
249 test(&graph, n1, n2, n3);
250 test(&graph, n1, n2, n3);
253 TEST(TopDownTraverserTests, testReplacement)
283 auto node = trav.
next();
290 n3->output(0)->divert_users(nY->output(0));
291 n5->input(0)->divert_to(nX->output(0));
293 auto next1 = trav.
next();
294 auto next2 = trav.
next();
295 auto next3 = trav.
next();
296 EXPECT_TRUE(n3 == next1 || n3 == next2 || n3 == next3);
297 EXPECT_TRUE(n4 == next1 || n4 == next2 || n4 == next3);
298 EXPECT_TRUE(n5 == next1 || n5 == next2 || n5 == next3);
300 auto next4 = trav.
next();
301 EXPECT_EQ(next4,
nullptr);
304 TEST(BottomUpTraverserTests, testInitialization)
315 bool n1_visited =
false;
316 bool n2_visited =
false;
325 EXPECT_TRUE(n1_visited);
326 EXPECT_TRUE(n2_visited);
329 TEST(BottomUpTraverserTests, testBasicTraversal)
349 EXPECT_EQ(tmp,
nullptr);
353 TEST(BottomUpTraverserTests, testOrderEnforcement)
375 EXPECT_EQ(tmp,
nullptr);
TEST(TopDownTraverserTests, testInitialization)
static GraphExport & Create(Output &origin, std::string name)
static GraphImport & Create(Graph &graph, std::shared_ptr< const rvsdg::Type > type, std::string name)
Region & GetRootRegion() const noexcept
static SimpleNode * createNode(Region *region, const std::vector< Output * > &operands, std::vector< std::shared_ptr< const Type >> resultTypes)
static std::shared_ptr< const TestType > createValueType()