code: def test_contract_at_offset(self):
      contract_sids = array([1, 2, 3, 4], dtype=int64)
      start_dates = pd.date_range("2015-01-01", periods=4, tz="UTC")
  
      contracts = deque(self.asset_finder.retrieve_all(contract_sids))
  
      oc = OrderedContracts("FO", contracts)
  
      self.assertEquals(
          1,
          oc.contract_at_offset(1, 0, start_dates[-1].value),
          "Offset of 0 should return provided sid",
      )
  
      self.assertEquals(
          2,
          oc.contract_at_offset(1, 1, start_dates[-1].value),
          "Offset of 1 should return next sid in chain.",
      )
  
      self.assertEquals(
          None,
          oc.contract_at_offset(4, 1, start_dates[-1].value),
          "Offset at end of chain should not crash.",
      )
  
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 3 for calling the OrderedContractsTestCase obj's underlying member method code with example usage: obj.test_contract_at_offset() without return types