docstr: Tests a scenario where we merge two models, where the inputs/outputs connected
  are named exactly the same
code: def test_case_connect_same_input_output_name(self) -> None:
      """Tests a scenario where we merge two models, where the inputs/outputs connected
      are named exactly the same
      """
      m1_def = """
              <
                  ir_version: 7,
                  opset_import: [ "": 10]
              >
              agraph (float[N, M] A) => (float[N, M] B)
              {
                  B = Add(A, A)
              }
              """
      m2_def = """
              <
                  ir_version: 7,
                  opset_import: [ "": 10]
              >
              agraph (float[N, M] B) => (float[N, M] C)
              {
                  C = Add(B, B)
              }
              """
      io_map = [("B", "B")]
  
      def check_expectations(
          g1: GraphProto, g2: GraphProto, g3: GraphProto
      ) -> None:
          del g1, g2  # Unused
  
          self.assertEqual(["A"], [elem.name for elem in g3.input])
          self.assertEqual(["C"], [elem.name for elem in g3.output])
  
      self._test_merge_models(
          m1_def, m2_def, io_map, check_expectations
      )
  
imports: import unittest
  from typing import Callable, List, Optional, Sequence, Tuple
  import numpy
  from onnx import FunctionProto, GraphProto, ModelProto, NodeProto, SparseTensorProto, TensorProto, ValueInfoProto, checker, compose, helper, parser, version_converter
label_desc: Use image node_id 5 for calling the TestComposeFunctions obj's underlying member method code with example usage: obj.test_case_connect_same_input_output_name() without return types