code: def test_get_contract_center(self):
      asset_finder = self.asset_finder
      get_contract_center = partial(
          self.volume_roll_finder.get_contract_center,
          offset=0,
      )
  
      # Test that the current contract adheres to the rolls.
      self.assertEqual(
          get_contract_center(
              "CL", dt=pd.Timestamp("2017-01-18", tz="UTC")
          ),
          asset_finder.retrieve_asset(1000),
      )
      self.assertEqual(
          get_contract_center(
              "CL", dt=pd.Timestamp("2017-01-19", tz="UTC")
          ),
          asset_finder.retrieve_asset(1001),
      )
  
      # Test that we still get the correct current contract close to or at
      # the max day boundary. Contracts 2000 and 2001 both have auto close
      # dates after `self.END_DATE` so 2000 should always be the current
      # contract. However, they do not have any volume data after this point
      # so this test ensures that we do not fail to calculate the forward
      # looking rolls required for `VolumeRollFinder.get_contract_center`.
      near_end = self.END_DATE - self.trading_calendar.day
      self.assertEqual(
          get_contract_center("FV", dt=near_end),
          asset_finder.retrieve_asset(2000),
      )
      self.assertEqual(
          get_contract_center("FV", dt=self.END_DATE),
          asset_finder.retrieve_asset(2000),
      )
  
imports: from collections import deque
  from functools import partial
  from textwrap import dedent
  from numpy import arange, array, int64, full, repeat, tile
  from numpy.testing import assert_almost_equal
  import pandas
  from pandas import Timestamp, DataFrame
  from zipline.assets.continuous_futures import OrderedContracts, delivery_predicate
  from zipline.assets.roll_finder import ROLL_DAYS_FOR_CURRENT_CONTRACT, VolumeRollFinder
  from zipline.data.minute_bars import FUTURES_MINUTES_PER_DAY
  from zipline.errors import SymbolNotFound
  import zipline.testing.fixtures
label_desc: Use image node_id 9 for calling the RollFinderTestCase obj's underlying member method code with example usage: obj.test_get_contract_center() without return types