#include #include #include #include #include #include "../../src/graph/unit_graph.h" #include "./common.h" using namespace dgl; using namespace dgl::aten; using namespace dmlc; TEST(Serialize, UnitGraph) { aten::CSRMatrix csr_matrix; auto src = VecToIdArray({1, 2, 5, 3}); auto dst = VecToIdArray({1, 6, 2, 6}); auto mg = dgl::UnitGraph::CreateFromCOO(2, 9, 8, src, dst); UnitGraph* ug = dynamic_cast(mg.get()); std::string blob; dmlc::MemoryStringStream ifs(&blob); static_cast(&ifs)->Write(*ug); dmlc::MemoryStringStream ofs(&blob); src = NewIdArray(0); dst = NewIdArray(0); auto mg2 = dgl::UnitGraph::CreateFromCOO( 1, 0, 0, src, dst); // Any way to construct Empty UnitGraph? UnitGraph* ug2 = dynamic_cast(mg2.get()); static_cast(&ofs)->Read(ug2); EXPECT_EQ(ug2->NumVertices(0), 8); EXPECT_EQ(ug2->NumVertices(1), 9); EXPECT_EQ(ug2->NumEdges(0), 4); }