code: def test_categorical_df_concat_value_error(self):
      mismatched_dtypes = [
          pd.DataFrame(
              {
                  "A": pd.Series(["a", "b", "c"], dtype="category"),
                  "B": pd.Series([100, 102, 103], dtype="int64"),
              }
          ),
          pd.DataFrame(
              {
                  "A": pd.Series(["c", "b", "d"], dtype="category"),
                  "B": pd.Series([103, 102, 104], dtype="float64"),
              }
          ),
      ]
      mismatched_column_names = [
          pd.DataFrame(
              {
                  "A": pd.Series(["a", "b", "c"], dtype="category"),
                  "B": pd.Series([100, 102, 103], dtype="int64"),
              }
          ),
          pd.DataFrame(
              {
                  "A": pd.Series(["c", "b", "d"], dtype="category"),
                  "X": pd.Series([103, 102, 104], dtype="int64"),
              }
          ),
      ]
  
      with self.assertRaises(ValueError) as cm:
          categorical_df_concat(mismatched_dtypes)
      self.assertEqual(
          str(cm.exception),
          "Input DataFrames must have the same columns/dtypes.",
      )
  
      with self.assertRaises(ValueError) as cm:
          categorical_df_concat(mismatched_column_names)
      self.assertEqual(
          str(cm.exception),
          "Input DataFrames must have the same columns/dtypes.",
      )
  
file_path: zipline/tests/utils/test_pandas_utils.py
imports: from unittest import skipIf
  import pandas
  from zipline.testing import parameter_space, ZiplineTestCase
  from zipline.testing.predicates import assert_equal
  from zipline.utils.pandas_utils import categorical_df_concat, nearest_unequal_elements, new_pandas, skip_pipeline_new_pandas
label_desc: Use image node_id 2 for calling the TestCatDFConcat obj's underlying member method code with example usage: obj.test_categorical_df_concat_value_error() without return types