code: def test_concat_2d(self, data):
      left = type(data)._concat_same_type([data, data]).reshape(-1, 2)
      right = left.copy()
  
      # axis=0
      result = left._concat_same_type([left, right], axis=0)
      expected = data._concat_same_type([data] * 4).reshape(-1, 2)
      tm.assert_extension_array_equal(result, expected)
  
      # axis=1
      result = left._concat_same_type([left, right], axis=1)
      assert result.shape == (len(data), 4)
      tm.assert_extension_array_equal(result[:, :2], left)
      tm.assert_extension_array_equal(result[:, 2:], right)
  
      # axis > 1 -> invalid
      msg = "axis 2 is out of bounds for array of dimension 2"
      with pytest.raises(ValueError, match=msg):
          left._concat_same_type([left, right], axis=2)
  
imports: import numpy
  import pytest
  from pandas._libs.missing import is_matching_na
  from pandas.core.dtypes.common import is_bool_dtype, is_integer_dtype
  import pandas
  import pandas._testing
  from pandas.core.arrays.integer import NUMPY_INT_TO_DTYPE
label_desc: Use image node_id 12 for calling the Dim2CompatTests obj's underlying member method code with example usage: obj.test_concat_2d(data) without return types