code: def test_summary_basic(gcn):
      expected = """
  +---------------------+--------------------+----------------+----------+
  | Layer               | Input Shape        | Output Shape   | #Param   |
  |---------------------+--------------------+----------------+----------|
  | GCN                 | [100, 32], [2, 20] | [100, 32]      | 1,072    |
  | ├─(dropout)Dropout  | [100, 16]          | [100, 16]      | --       |
  | ├─(act)ReLU         | [100, 16]          | [100, 16]      | --       |
  | ├─(convs)ModuleList | --                 | --             | 1,072    |
  | │    └─(0)GCNConv   | [100, 32], [2, 20] | [100, 16]      | 528      |
  | │    └─(1)GCNConv   | [100, 16], [2, 20] | [100, 32]      | 544      |
  | ├─(norms)ModuleList | --                 | --             | --       |
  | │    └─(0)Identity  | [100, 16]          | [100, 16]      | --       |
  | │    └─(1)Identity  | --                 | --             | --       |
  +---------------------+--------------------+----------------+----------+
  """
      assert (
          summary(gcn["model"], gcn["x"], gcn["edge_index"])
          == expected[1:-1]
      )
  
imports: from typing import Optional
  import pytest
  import torch
  from torch import Tensor, nn
  import torch_geometric.typing
  from torch_geometric.nn import Linear, SAGEConv, summary, to_hetero
  from torch_geometric.nn.models import GCN
  from torch_geometric.testing import withPackage
  from torch_geometric.typing import SparseTensor
label_desc: Use image node_id 2 for calling a global function with example usage: test_summary_basic(gcn) without return types