code: def test_allowed_asset_types(self):
      # Custom equities model.
      class MyEquitiesModel(EquitySlippageModel):
          def process_order(self, data, order):
              return 0, 0
  
      self.assertEqual(MyEquitiesModel.allowed_asset_types, (Equity,))
  
      # Custom futures model.
      class MyFuturesModel(FutureSlippageModel):
          def process_order(self, data, order):
              return 0, 0
  
      self.assertEqual(MyFuturesModel.allowed_asset_types, (Future,))
  
      # Custom model for both equities and futures.
      class MyMixedModel(EquitySlippageModel, FutureSlippageModel):
          def process_order(self, data, order):
              return 0, 0
  
      self.assertEqual(
          MyMixedModel.allowed_asset_types, (Equity, Future)
      )
  
      # Equivalent custom model for both equities and futures.
      class MyMixedModel(SlippageModel):
          def process_order(self, data, order):
              return 0, 0
  
      self.assertEqual(
          MyMixedModel.allowed_asset_types, (Equity, Future)
      )
  
      SomeType = type("SomeType", (object,), {})
  
      # A custom model that defines its own allowed types should take
      # precedence over the parent class definitions.
      class MyCustomModel(EquitySlippageModel, FutureSlippageModel):
          allowed_asset_types = (SomeType,)
  
          def process_order(self, data, order):
              return 0, 0
  
      self.assertEqual(MyCustomModel.allowed_asset_types, (SomeType,))
  
imports: from collections import namedtuple
  import datetime
  from math import sqrt
  from nose_parameterized import parameterized
  from pandas.tslib import normalize_date
  import numpy
  import pandas
  import pytz
  from catalyst.assets import Equity, Future
  from catalyst.data.data_portal import DataPortal
  from catalyst.finance.asset_restrictions import NoRestrictions
  from catalyst.finance.order import Order
  from catalyst.finance.slippage import EquitySlippageModel, fill_price_worse_than_limit_price, FutureSlippageModel, SlippageModel, VolatilityVolumeShare, VolumeShareSlippage
  from catalyst.protocol import DATASOURCE_TYPE, BarData
  from catalyst.testing import create_minute_bar_data, tmp_bcolz_equity_minute_bar_reader
  from catalyst.testing.fixtures import WithCreateBarData, WithDataPortal, WithSimParams, WithTradingEnvironment, CatalystTestCase
  from catalyst.utils.classproperty import classproperty
label_desc: Use image node_id 4 for calling the SlippageTestCase obj's underlying member method code with example usage: obj.test_allowed_asset_types() and returns: int,  int, int,  int, int,  int, int,  int, int,  int