code: def test_auto_close_before_start(self):
      contract_sids = array([8, 9, 10, 11], dtype=int64)
      contracts = self.asset_finder.retrieve_all(contract_sids)
      oc = OrderedContracts("BZ", deque(contracts))
  
      # The OrderedContracts chain should omit BZF16 and start with BZG16.
      self.assertEqual(oc.start_date, contracts[1].start_date)
      self.assertEqual(oc.end_date, contracts[-1].end_date)
      self.assertEqual(
          oc.contract_before_auto_close(oc.start_date.value), 9
      )
  
      # The OrderedContracts chain should end on the last contract even
      # though there is a gap between the auto close date of BZG16 and the
      # start date of BZH16. During this period, BZH16 should be considered
      # the center contract, as a placeholder of sorts.
      self.assertEqual(
          oc.contract_before_auto_close(contracts[1].notice_date.value),
          10,
      )
      self.assertEqual(
          oc.contract_before_auto_close(contracts[2].start_date.value),
          10,
      )
  
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 6 for calling the OrderedContractsTestCase obj's underlying member method code with example usage: obj.test_auto_close_before_start() without return types