| 200 | } |
| 201 | |
| 202 | TEST(MutableGraphViewTest, DedupControlDependencies) { |
| 203 | GraphDef graph = GDef( |
| 204 | {NDef("a", kNoOp, {}), NDef("b", kNoOp, {}), NDef("c", kNoOp, {}), |
| 205 | NDef("d", kNoOp, {"a:2", "b:1", "^c", "^c", "^a", "^a", "^b", "^c"})}, |
| 206 | /*funcs=*/{}); |
| 207 | |
| 208 | Status s; |
| 209 | MutableGraphView graph_view(&graph, &s); |
| 210 | TF_ASSERT_OK(s); |
| 211 | EXPECT_EQ(graph_view.NumNodes(), 4); |
| 212 | |
| 213 | const auto* a_node = graph_view.GetNode("a"); |
| 214 | ASSERT_NE(a_node, nullptr); |
| 215 | const auto* b_node = graph_view.GetNode("b"); |
| 216 | ASSERT_NE(b_node, nullptr); |
| 217 | const auto* c_node = graph_view.GetNode("c"); |
| 218 | ASSERT_NE(c_node, nullptr); |
| 219 | const auto* d_node = graph_view.GetNode("d"); |
| 220 | ASSERT_NE(d_node, nullptr); |
| 221 | |
| 222 | EXPECT_EQ(d_node->NumRegularFanins(), 2); |
| 223 | ASSERT_NE(d_node->node(), nullptr); |
| 224 | ASSERT_EQ(d_node->node()->input_size(), 5); |
| 225 | EXPECT_EQ(d_node->node()->input(0), "a:2"); |
| 226 | EXPECT_EQ(d_node->node()->input(1), "b:1"); |
| 227 | EXPECT_EQ(d_node->node()->input(2), "^c"); |
| 228 | EXPECT_EQ(d_node->node()->input(3), "^b"); |
| 229 | EXPECT_EQ(d_node->node()->input(4), "^a"); |
| 230 | ASSERT_EQ(d_node->NumControllingFanins(), 3); |
| 231 | const auto& d_control_fanins = d_node->GetControllingFanins(); |
| 232 | ASSERT_EQ(d_control_fanins.size(), 3); |
| 233 | ASSERT_NE(d_control_fanins[0].node_view(), nullptr); |
| 234 | EXPECT_EQ(d_control_fanins[0].node_view()->GetName(), "c"); |
| 235 | ASSERT_NE(d_control_fanins[1].node_view(), nullptr); |
| 236 | EXPECT_EQ(d_control_fanins[1].node_view()->GetName(), "b"); |
| 237 | ASSERT_NE(d_control_fanins[2].node_view(), nullptr); |
| 238 | EXPECT_EQ(d_control_fanins[2].node_view()->GetName(), "a"); |
| 239 | } |
| 240 | |
| 241 | template <typename T> |
| 242 | class TypedNodeViewTest : public ::testing::Test {}; |
nothing calls this directly
no test coverage detected