| 86 | namespace paddle::framework { |
| 87 | |
| 88 | TEST(GraphTest, Basic) { |
| 89 | ProgramDesc prog; |
| 90 | auto *op = prog.MutableBlock(0)->AppendOp(); |
| 91 | op->SetType("fake_sum"); |
| 92 | op->SetInput("X", {"test_a", "test_b", "test_c"}); |
| 93 | op->SetOutput("Out", {"test_out"}); |
| 94 | op->SetAttr("op_role", 1); |
| 95 | |
| 96 | prog.MutableBlock(0)->Var("test_a")->SetType(proto::VarType::SELECTED_ROWS); |
| 97 | prog.MutableBlock(0)->Var("test_b")->SetType(proto::VarType::SELECTED_ROWS); |
| 98 | prog.MutableBlock(0)->Var("test_c")->SetType(proto::VarType::SELECTED_ROWS); |
| 99 | prog.MutableBlock(0)->Var("test_out"); |
| 100 | |
| 101 | op->InferVarType(prog.MutableBlock(0)); |
| 102 | |
| 103 | ASSERT_EQ(proto::VarType::SELECTED_ROWS, |
| 104 | prog.MutableBlock(0)->Var("test_out")->GetType()); |
| 105 | |
| 106 | prog.MutableBlock(0)->Var("test_b")->SetType(proto::VarType::DENSE_TENSOR); |
| 107 | op->InferVarType(prog.MutableBlock(0)); |
| 108 | ASSERT_EQ(proto::VarType::DENSE_TENSOR, |
| 109 | prog.MutableBlock(0)->Var("test_out")->GetType()); |
| 110 | |
| 111 | std::unique_ptr<ir::Graph> g(new ir::Graph(prog)); |
| 112 | std::vector<ir::Node *> nodes(g->Nodes().begin(), g->Nodes().end()); |
| 113 | for (ir::Node *n : nodes) { |
| 114 | if (n->Name() == "fake_sum") { |
| 115 | ASSERT_EQ(n->inputs.size(), 3UL); |
| 116 | ASSERT_EQ(n->outputs.size(), 1UL); |
| 117 | } else if (n->Name() == "test_a" || n->Name() == "test_b" || |
| 118 | n->Name() == "test_c") { |
| 119 | ASSERT_EQ(n->inputs.size(), 0UL); |
| 120 | ASSERT_EQ(n->outputs.size(), 1UL); |
| 121 | } else if (n->Name() == "test_out") { |
| 122 | ASSERT_EQ(n->inputs.size(), 1UL); |
| 123 | ASSERT_EQ(n->outputs.size(), 0UL); |
| 124 | } |
| 125 | } |
| 126 | ASSERT_EQ(nodes.size(), 5UL); |
| 127 | } |
| 128 | |
| 129 | TEST(GraphTest, TestException) { |
| 130 | ProgramDesc prog; |
nothing calls this directly
no test coverage detected