code: def test_concat_empty_dataframes(df, other, ignore_index):
      other_pd = [df] + other
  
      gdf = gd.from_pandas(df)
      other_gd = [gdf] + [gd.from_pandas(o) for o in other]
  
      expected = pd.concat(other_pd, ignore_index=ignore_index)
      actual = gd.concat(other_gd, ignore_index=ignore_index)
      if expected.shape != df.shape:
          for key, col in actual[actual.columns].items():
              if is_categorical_dtype(col.dtype):
                  if not is_categorical_dtype(expected[key].dtype):
                      # TODO: Pandas bug:
                      # https://github.com/pandas-dev/pandas/issues/42840
                      expected[key] = (
                          expected[key].fillna("-1").astype("str")
                      )
                  else:
                      expected[key] = (
                          expected[key]
                          .cat.add_categories(["-1"])
                          .fillna("-1")
                          .astype("str")
                      )
                  actual[key] = col.astype("str").fillna("-1")
              else:
                  expected[key] = expected[key].fillna(-1)
                  actual[key] = col.fillna(-1)
          assert_eq(
              expected, actual, check_dtype=False, check_index_type=True
          )
      else:
          assert_eq(expected, actual, check_index_type=not gdf.empty)
  
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 20 for calling a global function with example usage: test_concat_empty_dataframes(df, other, ignore_index) without return types