code: def test_cudf_dataframe_copy_then_insert(copy_fn, ncols, data_type):
      pdf = pd.DataFrame()
      for i in range(ncols):
          pdf[chr(i + ord("a"))] = pd.Series(
              np.random.randint(0, 1000, 20)
          ).astype(data_type)
      df = DataFrame.from_pandas(pdf)
      copy_df = copy_fn(df)
      copy_pdf = copy_fn(pdf)
      copy_df["aa"] = pd.Series(np.random.randint(0, 1000, 20)).astype(
          data_type
      )
      copy_pdf["aa"] = pd.Series(np.random.randint(0, 1000, 20)).astype(
          data_type
      )
      assert not copy_pdf.to_string().split() == pdf.to_string().split()
      assert not copy_df.to_string().split() == df.to_string().split()
  
file_path: cudf/python/cudf/cudf/tests/test_dataframe_copy.py
imports: from copy import copy, deepcopy
  import cupy
  import numpy
  import pandas
  import pytest
  from cudf.core.dataframe import DataFrame
  from cudf.testing._utils import ALL_TYPES, assert_eq, assert_neq
label_desc: Use image node_id 4 for calling a global function with example usage: test_cudf_dataframe_copy_then_insert(copy_fn, ncols, data_type) without return types