code: def test_batching_batched(idtype):
      """Test batching a DGLGraph and a batched DGLGraph."""
      g1 = dgl.heterograph(
          {
              ("user", "follows", "user"): ([0, 1], [1, 2]),
              ("user", "plays", "game"): ([0, 1], [0, 0]),
          },
          idtype=idtype,
          device=F.ctx(),
      )
      g2 = dgl.heterograph(
          {
              ("user", "follows", "user"): ([0, 1], [1, 2]),
              ("user", "plays", "game"): ([0, 1], [0, 0]),
          },
          idtype=idtype,
          device=F.ctx(),
      )
      bg1 = dgl.batch([g1, g2])
      g3 = dgl.heterograph(
          {
              ("user", "follows", "user"): ([0], [1]),
              ("user", "plays", "game"): ([1], [0]),
          },
          idtype=idtype,
          device=F.ctx(),
      )
      bg2 = dgl.batch([bg1, g3])
      assert bg2.idtype == idtype
      assert bg2.device == F.ctx()
      assert bg2.ntypes == g3.ntypes
      assert bg2.etypes == g3.etypes
      assert bg2.canonical_etypes == g3.canonical_etypes
      assert bg2.batch_size == 3
  
      # Test number of nodes
      for ntype in bg2.ntypes:
          assert F.asnumpy(bg2.batch_num_nodes(ntype)).tolist() == [
              g1.num_nodes(ntype),
              g2.num_nodes(ntype),
              g3.num_nodes(ntype),
          ]
          assert bg2.num_nodes(ntype) == (
              g1.num_nodes(ntype)
              + g2.num_nodes(ntype)
              + g3.num_nodes(ntype)
          )
  
      # Test number of edges
      for etype in bg2.canonical_etypes:
          assert F.asnumpy(bg2.batch_num_edges(etype)).tolist() == [
              g1.num_edges(etype),
              g2.num_edges(etype),
              g3.num_edges(etype),
          ]
          assert bg2.num_edges(etype) == (
              g1.num_edges(etype)
              + g2.num_edges(etype)
              + g3.num_edges(etype)
          )
  
      # Test relabeled nodes
      for ntype in bg2.ntypes:
          assert list(F.asnumpy(bg2.nodes(ntype))) == list(
              range(bg2.num_nodes(ntype))
          )
  
      # Test relabeled edges
      src, dst = bg2.edges(etype="follows")
      assert list(F.asnumpy(src)) == [0, 1, 3, 4, 6]
      assert list(F.asnumpy(dst)) == [1, 2, 4, 5, 7]
      src, dst = bg2.edges(etype="plays")
      assert list(F.asnumpy(src)) == [0, 1, 3, 4, 7]
      assert list(F.asnumpy(dst)) == [0, 0, 1, 1, 2]
  
      # Test unbatching graphs
      g4, g5, g6 = dgl.unbatch(bg2)
      check_equivalence_between_heterographs(g1, g4)
      check_equivalence_between_heterographs(g2, g5)
      check_equivalence_between_heterographs(g3, g6)
  
file_path: dgl/tests/python/common/test_batch-heterograph.py
imports: import unittest
  import backend
  import dgl
  import pytest
  from dgl.base import ALL
  from utils import check_graph_equal, get_cases, parametrize_idtype
label_desc: Use image node_id 3 for calling a global function with example usage: test_batching_batched(idtype) without return types