| 2585 | |
| 2586 | @parametrize_idtype |
| 2587 | def test_reverse(idtype): |
| 2588 | g = dgl.heterograph( |
| 2589 | { |
| 2590 | ("user", "follows", "user"): ( |
| 2591 | [0, 1, 2, 4, 3, 1, 3], |
| 2592 | [1, 2, 3, 2, 0, 0, 1], |
| 2593 | ) |
| 2594 | }, |
| 2595 | idtype=idtype, |
| 2596 | device=F.ctx(), |
| 2597 | ) |
| 2598 | gidx = g._graph |
| 2599 | r_gidx = gidx.reverse() |
| 2600 | |
| 2601 | assert gidx.num_nodes(0) == r_gidx.num_nodes(0) |
| 2602 | assert gidx.num_edges(0) == r_gidx.num_edges(0) |
| 2603 | g_s, g_d, _ = gidx.edges(0) |
| 2604 | rg_s, rg_d, _ = r_gidx.edges(0) |
| 2605 | assert F.array_equal(g_s, rg_d) |
| 2606 | assert F.array_equal(g_d, rg_s) |
| 2607 | |
| 2608 | # force to start with 'csr' |
| 2609 | gidx = gidx.formats("csr") |
| 2610 | gidx = gidx.formats(["coo", "csr", "csc"]) |
| 2611 | r_gidx = gidx.reverse() |
| 2612 | assert "csr" in gidx.formats()["created"] |
| 2613 | assert "csc" in r_gidx.formats()["created"] |
| 2614 | assert gidx.num_nodes(0) == r_gidx.num_nodes(0) |
| 2615 | assert gidx.num_edges(0) == r_gidx.num_edges(0) |
| 2616 | g_s, g_d, _ = gidx.edges(0) |
| 2617 | rg_s, rg_d, _ = r_gidx.edges(0) |
| 2618 | assert F.array_equal(g_s, rg_d) |
| 2619 | assert F.array_equal(g_d, rg_s) |
| 2620 | |
| 2621 | # force to start with 'csc' |
| 2622 | gidx = gidx.formats("csc") |
| 2623 | gidx = gidx.formats(["coo", "csr", "csc"]) |
| 2624 | r_gidx = gidx.reverse() |
| 2625 | assert "csc" in gidx.formats()["created"] |
| 2626 | assert "csr" in r_gidx.formats()["created"] |
| 2627 | assert gidx.num_nodes(0) == r_gidx.num_nodes(0) |
| 2628 | assert gidx.num_edges(0) == r_gidx.num_edges(0) |
| 2629 | g_s, g_d, _ = gidx.edges(0) |
| 2630 | rg_s, rg_d, _ = r_gidx.edges(0) |
| 2631 | assert F.array_equal(g_s, rg_d) |
| 2632 | assert F.array_equal(g_d, rg_s) |
| 2633 | |
| 2634 | g = dgl.heterograph( |
| 2635 | { |
| 2636 | ("user", "follows", "user"): ( |
| 2637 | [0, 1, 2, 4, 3, 1, 3], |
| 2638 | [1, 2, 3, 2, 0, 0, 1], |
| 2639 | ), |
| 2640 | ("user", "plays", "game"): ( |
| 2641 | [0, 0, 2, 3, 3, 4, 1], |
| 2642 | [1, 0, 1, 0, 1, 0, 0], |
| 2643 | ), |
| 2644 | ("developer", "develops", "game"): ([0, 1, 1, 2], [0, 0, 1, 1]), |