code: def test_edge_conv_bi(g, idtype, out_dim):
      g = g.astype(idtype).to(F.ctx())
      ctx = F.ctx()
      edge_conv = nn.EdgeConv(5, out_dim)
      edge_conv.initialize(ctx=ctx)
      print(edge_conv)
      # test #1: basic
      h0 = F.randn((g.number_of_src_nodes(), 5))
      x0 = F.randn((g.number_of_dst_nodes(), 5))
      h1 = edge_conv(g, (h0, x0))
      assert h1.shape == (g.number_of_dst_nodes(), out_dim)
  
imports: import backend
  import dgl
  import dgl.function
  import dgl.nn.mxnet
  import mxnet
  import networkx
  import numpy
  import pytest
  import scipy
  from mxnet import autograd, gluon, nd
  from utils import parametrize_idtype
  from utils.graph_cases import get_cases, random_bipartite, random_dglgraph, random_graph
label_desc: Use image node_id 22 for calling a global function with example usage: test_edge_conv_bi(g, idtype, out_dim) without return types