code: def test_gnn_block():
      """perception test"""
  
      # node and edge embedding
      run_gnn_config(
          node2node_aggr=True,
          edge2node_aggr=True,
          node2edge_aggr=True,
          edge2edge_aggr=True,
          with_node_embedding=True,
          with_edge_embedding=True,
      )
      run_gnn_config(
          node2node_aggr=True,
          edge2node_aggr=False,
          node2edge_aggr=False,
          edge2edge_aggr=True,
          with_node_embedding=True,
          with_edge_embedding=True,
      )
  
      # node only embedding
      run_gnn_config(
          node2node_aggr=True,
          edge2node_aggr=False,
          node2edge_aggr=False,
          edge2edge_aggr=False,
          with_node_embedding=True,
          with_edge_embedding=False,
      )
      run_gnn_config(
          node2node_aggr=True,
          edge2node_aggr=True,
          node2edge_aggr=True,
          edge2edge_aggr=True,
          with_node_embedding=True,
          with_edge_embedding=False,
      )
  
      # edge only embedding
      run_gnn_config(
          node2node_aggr=False,
          edge2node_aggr=False,
          node2edge_aggr=False,
          edge2edge_aggr=True,
          with_node_embedding=False,
          with_edge_embedding=True,
      )
      run_gnn_config(
          node2node_aggr=True,
          edge2node_aggr=True,
          node2edge_aggr=True,
          edge2edge_aggr=True,
          with_node_embedding=False,
          with_edge_embedding=True,
      )
  
file_path: maze/maze/test/perception/blocks/test_graph_nn.py
imports: from typing import Dict
  import numpy
  import torch.nn
  from maze.perception.blocks.feed_forward.graph_nn import GNNBlock
  from maze.test.perception.perception_test_utils import build_multi_input_dict
  from maze.train.utils.train_utils import compute_gradient_norm
label_desc: Use image node_id 2 for calling a global function with example usage: test_gnn_block() without return types