code: def test_concat_dataframe(index, nulls, axis):
      if index == "y" and nulls in ("some", "all"):
          pytest.skip("nulls in columns, dont index")
      df, df2, gdf, gdf2 = make_frames(index, nulls=nulls)
      # Make empty frame
      gdf_empty1 = gdf2[:0]
      assert len(gdf_empty1) == 0
      df_empty1 = gdf_empty1.to_pandas()
  
      # DataFrame
      res = gd.concat(
          [gdf, gdf2, gdf, gdf_empty1], axis=axis
      ).to_pandas()
      sol = pd.concat([df, df2, df, df_empty1], axis=axis)
      assert_eq(
          res,
          sol,
          check_names=False,
          check_categorical=False,
          check_index_type=True,
      )
  
      # Series
      for c in [i for i in ("x", "y", "z") if i != index]:
          res = gd.concat(
              [gdf[c], gdf2[c], gdf[c]], axis=axis
          ).to_pandas()
          sol = pd.concat([df[c], df2[c], df[c]], axis=axis)
          assert_eq(
              res,
              sol,
              check_names=False,
              check_categorical=False,
              check_index_type=True,
          )
  
      # Index
      res = gd.concat([gdf.index, gdf2.index], axis=axis).to_pandas()
      sol = df.index.append(df2.index)
      assert_eq(res, sol, check_names=False, check_categorical=False)
  
imports: from decimal import Decimal
  import numpy
  import pandas
  import pytest
  import cudf
  from cudf.api.types import is_categorical_dtype
  from cudf.core._compat import PANDAS_GE_150, PANDAS_LT_140
  from cudf.core.dtypes import Decimal32Dtype, Decimal64Dtype, Decimal128Dtype
  from cudf.testing._utils import assert_eq, assert_exceptions_equal
label_desc: Use image node_id 2 for calling a global function with example usage: test_concat_dataframe(index, nulls, axis) without return types