12TEST(ThetaTests, TestThetaCreation)
17 auto t = TestType::createValueType();
25 auto lv1 = theta->AddLoopVar(imp1);
26 auto lv2 = theta->AddLoopVar(imp2);
27 auto lv3 = theta->AddLoopVar(imp3);
29 lv2.post->divert_to(lv3.pre);
30 lv3.post->divert_to(lv3.pre);
31 theta->set_predicate(lv1.pre);
33 GraphExport::Create(*theta->output(0),
"exp");
36 { imp1, imp2, imp3 });
43 EXPECT_EQ(theta->predicate(), theta->subregion()->result(0));
44 EXPECT_EQ(theta->GetLoopVars().size(), 3u);
45 EXPECT_EQ(theta->GetLoopVars()[0].post, theta->subregion()->result(1));
50TEST(ThetaTests, TestThetaLoopVarRemoval)
56 auto valueType = TestType::createValueType();
64 auto lv0 = thetaNode->AddLoopVar(ctl);
65 auto lv1 = thetaNode->AddLoopVar(x);
66 auto lv2 = thetaNode->AddLoopVar(y);
67 thetaNode->set_predicate(lv0.pre);
69 GraphExport::Create(*lv0.output,
"");
72 thetaNode->RemoveLoopVars({ lv1 });
73 auto loopvars = thetaNode->GetLoopVars();
74 EXPECT_EQ(loopvars.size(), 2u);
75 EXPECT_EQ(loopvars[0].input, lv0.input);
76 EXPECT_EQ(loopvars[0].pre, lv0.pre);
77 EXPECT_EQ(loopvars[0].post, lv0.post);
78 EXPECT_EQ(loopvars[0].output, lv0.output);
79 EXPECT_EQ(loopvars[1].input, lv2.input);
80 EXPECT_EQ(loopvars[1].pre, lv2.pre);
81 EXPECT_EQ(loopvars[1].post, lv2.post);
82 EXPECT_EQ(loopvars[1].output, lv2.output);