code: def test_interp_basic(self, using_copy_on_write):
      df = DataFrame(
          {
              "A": [1, 2, np.nan, 4],
              "B": [1, 4, 9, np.nan],
              "C": [1, 2, 3, 5],
              "D": list("abcd"),
          }
      )
      expected = DataFrame(
          {
              "A": [1.0, 2.0, 3.0, 4.0],
              "B": [1.0, 4.0, 9.0, 9.0],
              "C": [1, 2, 3, 5],
              "D": list("abcd"),
          }
      )
      msg = "DataFrame.interpolate with object dtype"
      with tm.assert_produces_warning(FutureWarning, match=msg):
          result = df.interpolate()
      tm.assert_frame_equal(result, expected)
  
      # check we didn't operate inplace GH#45791
      cvalues = df["C"]._values
      dvalues = df["D"].values
      if using_copy_on_write:
          assert np.shares_memory(cvalues, result["C"]._values)
          assert np.shares_memory(dvalues, result["D"]._values)
      else:
          assert not np.shares_memory(cvalues, result["C"]._values)
          assert not np.shares_memory(dvalues, result["D"]._values)
  
      with tm.assert_produces_warning(FutureWarning, match=msg):
          res = df.interpolate(inplace=True)
      assert res is None
      tm.assert_frame_equal(df, expected)
  
      # check we DID operate inplace
      assert np.shares_memory(df["C"]._values, cvalues)
      assert np.shares_memory(df["D"]._values, dvalues)
  
imports: import numpy
  import pytest
  from pandas._config import using_pyarrow_string_dtype
  from pandas.errors import ChainedAssignmentError
  import pandas.util._test_decorators
  from pandas import DataFrame, NaT, Series, date_range
  import pandas._testing
label_desc: Use image node_id 4 for calling the TestDataFrameInterpolate obj's underlying member method code with example usage: obj.test_interp_basic(using_copy_on_write) without return types