code: def test_round_int64(self, start, index_freq, periods, round_freq):
      dt = date_range(start=start, freq=index_freq, periods=periods)
      unit = to_offset(round_freq).nanos
  
      # test floor
      result = dt.floor(round_freq)
      diff = dt.asi8 - result.asi8
      mod = result.asi8 % unit
      assert (mod == 0).all(), f"floor not a {round_freq} multiple"
      assert (0 <= diff).all() and (diff < unit).all(), "floor error"
  
      # test ceil
      result = dt.ceil(round_freq)
      diff = result.asi8 - dt.asi8
      mod = result.asi8 % unit
      assert (mod == 0).all(), f"ceil not a {round_freq} multiple"
      assert (0 <= diff).all() and (diff < unit).all(), "ceil error"
  
      # test round
      result = dt.round(round_freq)
      diff = abs(result.asi8 - dt.asi8)
      mod = result.asi8 % unit
      assert (mod == 0).all(), f"round not a {round_freq} multiple"
      assert (diff <= unit // 2).all(), "round error"
      if unit % 2 == 0:
          assert (
              result.asi8[diff == unit // 2] % 2 == 0
          ).all(), "round half to even error"
  
file_path: pandas/pandas/tests/indexes/datetimes/methods/test_round.py
imports: import pytest
  from pandas._libs.tslibs import to_offset
  from pandas._libs.tslibs.offsets import INVALID_FREQ_ERR_MSG
  from pandas import DatetimeIndex, Timestamp, date_range
  import pandas._testing
label_desc: Use image node_id 9 for calling the TestDatetimeIndexRound obj's underlying member method code with example usage: obj.test_round_int64(start, index_freq, periods, round_freq) without return types