code: def test_fake_hetero_dataset(num_graphs, edge_dim, task):
      dataset = FakeHeteroDataset(
          num_graphs, edge_dim=edge_dim, task=task, global_features=3
      )
  
      if num_graphs > 1:
          assert str(dataset) == f"FakeHeteroDataset({num_graphs})"
      else:
          assert str(dataset) == "FakeHeteroDataset()"
  
      assert len(dataset) == num_graphs
  
      data = dataset[0]
  
      for store in data.node_stores:
          assert store.num_features > 0
  
          if task == "node" or (task == "auto" and num_graphs == 1):
              if store._key == "v0":
                  assert store.y.min() >= 0 and store.y.max() < 10
                  assert store.y.size() == (store.num_nodes,)
  
      for store in data.edge_stores:
          if edge_dim == 0:
              assert len(data) == 4
          elif edge_dim == 1:
              assert len(data) == 5
              assert store.edge_weight.size() == (store.num_edges,)
              assert (
                  store.edge_weight.min() >= 0
                  and store.edge_weight.max() < 1
              )
          else:
              assert len(data) == 5
              assert store.edge_attr.size() == (
                  store.num_edges,
                  edge_dim,
              )
              assert (
                  store.edge_attr.min() >= 0
                  and store.edge_attr.max() < 1
              )
  
      if task == "graph" or (task == "auto" and num_graphs > 1):
          assert data.y.min() >= 0 and data.y.max() < 10
          assert data.y.size() == (1,)
  
      assert data.global_features.size() == (3,)
  
label_desc: Use image node_id 2 for calling a global function with example usage: test_fake_hetero_dataset(num_graphs, edge_dim, task) without return types