code: def test_fillna_downcast_noop(self, frame_or_series):
      # GH#45423
      # Two relevant paths:
      #  1) not _can_hold_na (e.g. integer)
      #  2) _can_hold_na + noop + not can_hold_element
  
      obj = frame_or_series([1, 2, 3], dtype=np.int64)
  
      msg = "The 'downcast' keyword in fillna"
      with tm.assert_produces_warning(FutureWarning, match=msg):
          # GH#40988
          res = obj.fillna("foo", downcast=np.dtype(np.int32))
      expected = obj.astype(np.int32)
      tm.assert_equal(res, expected)
  
      obj2 = obj.astype(np.float64)
      with tm.assert_produces_warning(FutureWarning, match=msg):
          res2 = obj2.fillna("foo", downcast="infer")
      expected2 = obj  # get back int64
      tm.assert_equal(res2, expected2)
  
      with tm.assert_produces_warning(FutureWarning, match=msg):
          # GH#40988
          res3 = obj2.fillna("foo", downcast=np.dtype(np.int32))
      tm.assert_equal(res3, expected)
  
imports: import numpy
  import pytest
  from pandas._config import using_pyarrow_string_dtype
  from pandas import Categorical, DataFrame, DatetimeIndex, NaT, PeriodIndex, Series, TimedeltaIndex, Timestamp, date_range, to_datetime
  import pandas._testing
  from pandas.tests.frame.common import _check_mixed_float
label_desc: Use image node_id 16 for calling the TestFillNA obj's underlying member method code with example usage: obj.test_fillna_downcast_noop(frame_or_series) without return types