MCPcopy
hub / github.com/dmlc/dgl / test_clone

Function test_clone

tests/python/common/test_heterograph.py:2732–2805  ·  view source on GitHub ↗
(idtype)

Source from the content-addressed store, hash-verified

2730
2731@parametrize_idtype
2732def test_clone(idtype):
2733 g = dgl.graph(([0, 1], [1, 2]), idtype=idtype, device=F.ctx())
2734 g.ndata["h"] = F.copy_to(F.tensor([1, 1, 1], dtype=idtype), ctx=F.ctx())
2735 g.edata["h"] = F.copy_to(F.tensor([1, 1], dtype=idtype), ctx=F.ctx())
2736
2737 new_g = g.clone()
2738 assert g.num_nodes() == new_g.num_nodes()
2739 assert g.num_edges() == new_g.num_edges()
2740 assert g.device == new_g.device
2741 assert g.idtype == new_g.idtype
2742 assert F.array_equal(g.ndata["h"], new_g.ndata["h"])
2743 assert F.array_equal(g.edata["h"], new_g.edata["h"])
2744 # data change
2745 new_g.ndata["h"] = F.copy_to(F.tensor([2, 2, 2], dtype=idtype), ctx=F.ctx())
2746 assert F.array_equal(g.ndata["h"], new_g.ndata["h"]) == False
2747 g.edata["h"] = F.copy_to(F.tensor([2, 2], dtype=idtype), ctx=F.ctx())
2748 assert F.array_equal(g.edata["h"], new_g.edata["h"]) == False
2749 # graph structure change
2750 g.add_nodes(1)
2751 assert g.num_nodes() != new_g.num_nodes()
2752 new_g.add_edges(1, 1)
2753 assert g.num_edges() != new_g.num_edges()
2754
2755 # zero data graph
2756 g = dgl.graph(([], []), num_nodes=0, idtype=idtype, device=F.ctx())
2757 new_g = g.clone()
2758 assert g.num_nodes() == new_g.num_nodes()
2759 assert g.num_edges() == new_g.num_edges()
2760
2761 # heterograph
2762 g = create_test_heterograph3(idtype)
2763 g.edges["plays"].data["h"] = F.copy_to(
2764 F.tensor([1, 2, 3, 4], dtype=idtype), ctx=F.ctx()
2765 )
2766 new_g = g.clone()
2767 assert g.num_nodes("user") == new_g.num_nodes("user")
2768 assert g.num_nodes("game") == new_g.num_nodes("game")
2769 assert g.num_nodes("developer") == new_g.num_nodes("developer")
2770 assert g.num_edges("plays") == new_g.num_edges("plays")
2771 assert g.num_edges("develops") == new_g.num_edges("develops")
2772 assert F.array_equal(
2773 g.nodes["user"].data["h"], new_g.nodes["user"].data["h"]
2774 )
2775 assert F.array_equal(
2776 g.nodes["game"].data["h"], new_g.nodes["game"].data["h"]
2777 )
2778 assert F.array_equal(
2779 g.edges["plays"].data["h"], new_g.edges["plays"].data["h"]
2780 )
2781 assert g.device == new_g.device
2782 assert g.idtype == new_g.idtype
2783 u, v = g.edges(form="uv", order="eid", etype="plays")
2784 nu, nv = new_g.edges(form="uv", order="eid", etype="plays")
2785 assert F.array_equal(u, nu)
2786 assert F.array_equal(v, nv)
2787 # graph structure change
2788 u = F.tensor([0, 4], dtype=idtype)
2789 v = F.tensor([2, 6], dtype=idtype)

Callers

nothing calls this directly

Calls 10

create_test_heterograph3Function · 0.70
graphMethod · 0.45
ctxMethod · 0.45
copy_toMethod · 0.45
cloneMethod · 0.45
num_nodesMethod · 0.45
num_edgesMethod · 0.45
add_nodesMethod · 0.45
add_edgesMethod · 0.45
edgesMethod · 0.45

Tested by

no test coverage detected