code: def test_outer_concatenate_data_should_merge_2d_with_3d():
      # Given
      data_inputs_3d, expected_outputs_3d = _create_data_source(
          SHAPE_3D
      )
      data_inputs_2d, expected_outputs_2d = _create_data_source(
          SHAPE_2D
      )
      data_container_2d = DACT(
          data_inputs=data_inputs_2d,
          expected_outputs=expected_outputs_2d,
      )
      data_container = DACT(
          data_inputs=data_inputs_3d,
          expected_outputs=expected_outputs_3d,
      ).add_sub_data_container("2d", data_container_2d)
  
      # When
      p = Pipeline(
          [ZipBatchDataContainer(sub_data_container_names=["2d"])]
      )
  
      data_container = p.handle_transform(data_container, CX())
  
      # Then
      for i, (first_di, second_di) in enumerate(
          zip(data_inputs_3d, data_inputs_2d)
      ):
          assert np.array_equal(
              data_container.data_inputs[i][0], first_di
          )
          assert np.array_equal(
              data_container.data_inputs[i][1], second_di
          )
  
      for i, (first_eo, second_eo) in enumerate(
          zip(expected_outputs_3d, expected_outputs_2d)
      ):
          assert np.array_equal(
              data_container.expected_outputs[i][0], first_eo
          )
          assert np.array_equal(
              data_container.expected_outputs[i][1], second_eo
          )
  
file_path: Neuraxle/testing_neuraxle/steps/test_concatenate_data_container.py
imports: import numpy
  from neuraxle.base import ExecutionContext
  from neuraxle.data_container import DataContainer
  from neuraxle.pipeline import Pipeline
  from neuraxle.steps.data import InnerConcatenateDataContainer, ZipBatchDataContainer
label_desc: Use image node_id 5 for calling a global function with example usage: test_outer_concatenate_data_should_merge_2d_with_3d() without return types