def test_asset_comparisons(self): s_23 = Asset(23) s_24 = Asset(24) self.assertEqual(s_23, s_23) self.assertEqual(s_23, 23) self.assertEqual(23, s_23) self.assertEqual(int32(23), s_23) self.assertEqual(int64(23), s_23) self.assertEqual(s_23, int32(23)) self.assertEqual(s_23, int64(23)) # Check all int types (includes long on py2): for int_type in integer_types: self.assertEqual(int_type(23), s_23) self.assertEqual(s_23, int_type(23)) self.assertNotEqual(s_23, s_24) self.assertNotEqual(s_23, 24) self.assertNotEqual(s_23, "23") self.assertNotEqual(s_23, 23.5) self.assertNotEqual(s_23, []) self.assertNotEqual(s_23, None) # Compare to a value that doesn't fit into a platform int: self.assertNotEqual(s_23, sys.maxsize + 1) self.assertLess(s_23, s_24) self.assertLess(s_23, 24) self.assertGreater(24, s_23) self.assertGreater(s_24, s_23)
def test_type_mismatch(self): if sys.version_info.major < 3: self.assertIsNotNone(Asset(3) < 'a') self.assertIsNotNone('a' < Asset(3)) else: with self.assertRaises(TypeError): Asset(3) < 'a' with self.assertRaises(TypeError): 'a' < Asset(3)
def test_to_and_from_dict(self): asset_from_dict = Asset.from_dict(self.asset.to_dict()) for attr in self.asset_attrs: self.assertEqual( getattr(self.asset, attr), getattr(asset_from_dict, attr), )
def test_asset_is_pickleable(self): # Very wow s = Asset( 1337, symbol="DOGE", asset_name="DOGECOIN", start_date=pd.Timestamp('2013-12-08 9:31AM', tz='UTC'), end_date=pd.Timestamp('2014-06-25 11:21AM', tz='UTC'), first_traded=pd.Timestamp('2013-12-08 9:31AM', tz='UTC'), exchange='THE MOON', ) s_unpickled = pickle.loads(pickle.dumps(s)) attrs_to_check = ['end_date', 'exchange', 'first_traded', 'end_date', 'asset_name', 'start_date', 'sid', 'start_date', 'symbol'] for attr in attrs_to_check: self.assertEqual(getattr(s, attr), getattr(s_unpickled, attr))
def test_non_existent_asset(self): """ Test that indexing into a term with a non-existent asset raises the proper exception. """ my_asset = Asset( 0, exchange_info=ExchangeInfo('TEST FULL', 'TEST', 'US'), ) returns = Returns(window_length=2, inputs=[self.col]) returns_slice = returns[my_asset] class UsesSlicedInput(CustomFactor): window_length = 2 inputs = [returns_slice] def compute(self, today, assets, out, returns_slice): pass with self.assertRaises(NonExistentAssetInTimeFrame): self.run_pipeline( Pipeline(columns={'uses_sliced_input': UsesSlicedInput()}), self.pipeline_start_date, self.pipeline_end_date, )
def test_asset_object(self): self.assertEquals({5061: 'foo'}[Asset(5061)], 'foo') self.assertEquals(Asset(5061), 5061) self.assertEquals(5061, Asset(5061)) self.assertEquals(Asset(5061), Asset(5061)) self.assertEquals(int(Asset(5061)), 5061) self.assertEquals(str(Asset(5061)), 'Asset(5061)')
def test_asset_object(self): the_asset = Asset(5061, exchange="bar") self.assertEquals({5061: 'foo'}[the_asset], 'foo') self.assertEquals(the_asset, 5061) self.assertEquals(5061, the_asset) self.assertEquals(the_asset, the_asset) self.assertEquals(int(the_asset), 5061) self.assertEquals(str(the_asset), 'Asset(5061)')
def test_asset_comparisons(self): s_23 = Asset(23) s_24 = Asset(24) self.assertEqual(s_23, s_23) self.assertEqual(s_23, 23) self.assertEqual(23, s_23) self.assertNotEqual(s_23, s_24) self.assertNotEqual(s_23, 24) self.assertNotEqual(s_23, "23") self.assertNotEqual(s_23, 23.5) self.assertNotEqual(s_23, []) self.assertNotEqual(s_23, None) self.assertLess(s_23, s_24) self.assertLess(s_23, 24) self.assertGreater(24, s_23) self.assertGreater(s_24, s_23)
def test_instance_caching_of_slices(self): my_asset = Asset(1, exchange="TEST") f = GenericCustomFactor() f_slice = f[my_asset] self.assertIs(f_slice, Slice(GenericCustomFactor(), my_asset)) f = GenericFilter() f_slice = f[my_asset] self.assertIs(f_slice, Slice(GenericFilter(), my_asset)) c = GenericClassifier() c_slice = c[my_asset] self.assertIs(c_slice, Slice(GenericClassifier(), my_asset))
def test_asset_object(self): the_asset = Asset(5061, real_sid='5061', exchange_info=ExchangeInfo('bar', 'bar', '??'), currency='USD') self.assertEqual({5061: 'foo'}[the_asset], 'foo') self.assertEqual(the_asset, 5061) self.assertEqual(5061, the_asset) self.assertEqual(the_asset, the_asset) self.assertEqual(int(the_asset), 5061) self.assertEqual(str(the_asset), 'Asset(5061)')
def test_asset_comparisons(self): s_23 = Asset(23, real_sid='23', exchange_info=self.test_exchange, currency='USD') s_24 = Asset(24, real_sid='24', exchange_info=self.test_exchange, currency='USD') self.assertEqual(s_23, s_23) self.assertEqual(s_23, 23) self.assertEqual(23, s_23) self.assertEqual(int32(23), s_23) self.assertEqual(int64(23), s_23) self.assertEqual(s_23, int32(23)) self.assertEqual(s_23, int64(23)) # Check all int types: for int_type in integer_types: self.assertEqual(int_type(23), s_23) self.assertEqual(s_23, int_type(23)) self.assertNotEqual(s_23, s_24) self.assertNotEqual(s_23, 24) self.assertNotEqual(s_23, "23") self.assertNotEqual(s_23, 23.5) self.assertNotEqual(s_23, []) self.assertNotEqual(s_23, None) # Compare to a value that doesn't fit into a platform int: self.assertNotEqual(s_23, sys.maxsize + 1) self.assertLess(s_23, s_24) self.assertLess(s_23, 24) self.assertGreater(24, s_23) self.assertGreater(s_24, s_23)
def test_instance_caching_of_slices(self): my_asset = Asset( 1, exchange_info=ExchangeInfo("TEST FULL", "TEST", "US"), ) f = GenericCustomFactor() f_slice = f[my_asset] self.assertIs(f_slice, type(f_slice)(GenericCustomFactor(), my_asset)) filt = GenericFilter() filt_slice = filt[my_asset] self.assertIs(filt_slice, type(filt_slice)(GenericFilter(), my_asset)) c = GenericClassifier() c_slice = c[my_asset] self.assertIs(c_slice, type(c_slice)(GenericClassifier(), my_asset))
def test_instance_caching_of_slices(self): my_asset = Asset(1, real_sid='1', exchange_info=ExchangeInfo('TEST FULL', 'TEST', 'US'), currency='USD') f = GenericCustomFactor() f_slice = f[my_asset] self.assertIs(f_slice, type(f_slice)(GenericCustomFactor(), my_asset)) filt = GenericFilter() filt_slice = filt[my_asset] self.assertIs(filt_slice, type(filt_slice)(GenericFilter(), my_asset)) c = GenericClassifier() c_slice = c[my_asset] self.assertIs(c_slice, type(c_slice)(GenericClassifier(), my_asset))
def test_instance_caching_of_slices(self): my_asset = Asset( 1, exchange_info=ExchangeInfo('TEST FULL', 'TEST', 'US'), ) f = GenericCustomFactor() f_slice = f[my_asset] self.assertIs(f_slice, Slice(GenericCustomFactor(), my_asset)) f = GenericFilter() f_slice = f[my_asset] self.assertIs(f_slice, Slice(GenericFilter(), my_asset)) c = GenericClassifier() c_slice = c[my_asset] self.assertIs(c_slice, Slice(GenericClassifier(), my_asset))
def test_to_and_from_dict(self): asset_from_dict = Asset.from_dict(self.asset.to_dict()) for attr in self.asset_attrs: self.assertEqual( getattr(self.asset, attr), getattr(asset_from_dict, attr), )
def test_gt(self): self.assertFalse(Asset(3) > Asset(4)) self.assertFalse(Asset(4) > Asset(4)) self.assertTrue(Asset(5) > Asset(4))
def test_eq(self): self.assertFalse(Asset(3) == Asset(4)) self.assertTrue(Asset(4) == Asset(4)) self.assertFalse(Asset(5) == Asset(4))
def test_le(self): self.assertTrue(Asset(3) <= Asset(4)) self.assertTrue(Asset(4) <= Asset(4)) self.assertFalse(Asset(5) <= Asset(4))
class AssetTestCase(TestCase): # Dynamically list the Asset properties we want to test. asset_attrs = [ name for name, value in vars(Asset).items() if isinstance(value, GetSetDescriptorType) ] # Very wow asset = Asset( 1337, real_sid='1337', exchange_info=ExchangeInfo('THE MOON', 'MOON', '??'), currency='USD', symbol="DOGE", asset_name="DOGECOIN", start_date=pd.Timestamp('2013-12-08 9:31', tz='UTC'), end_date=pd.Timestamp('2014-06-25 11:21', tz='UTC'), first_traded=pd.Timestamp('2013-12-08 9:31', tz='UTC'), auto_close_date=pd.Timestamp('2014-06-26 11:21', tz='UTC'), ) test_exchange = ExchangeInfo('test full', 'test', '??') asset3 = Asset(3, real_sid='3', exchange_info=test_exchange, currency='USD') asset4 = Asset(4, real_sid='4', exchange_info=test_exchange, currency='USD') asset5 = Asset(5, real_sid='5', exchange_info=ExchangeInfo('still testing', 'still testing', '??'), currency='USD') def test_asset_object(self): the_asset = Asset(5061, real_sid='5061', exchange_info=ExchangeInfo('bar', 'bar', '??'), currency='USD') self.assertEqual({5061: 'foo'}[the_asset], 'foo') self.assertEqual(the_asset, 5061) self.assertEqual(5061, the_asset) self.assertEqual(the_asset, the_asset) self.assertEqual(int(the_asset), 5061) self.assertEqual(str(the_asset), 'Asset(5061)') def test_to_and_from_dict(self): asset_from_dict = Asset.from_dict(self.asset.to_dict()) for attr in self.asset_attrs: self.assertEqual( getattr(self.asset, attr), getattr(asset_from_dict, attr), ) def test_asset_is_pickleable(self): asset_unpickled = pickle.loads(pickle.dumps(self.asset)) for attr in self.asset_attrs: self.assertEqual( getattr(self.asset, attr), getattr(asset_unpickled, attr), ) def test_asset_comparisons(self): s_23 = Asset(23, real_sid='23', exchange_info=self.test_exchange, currency='USD') s_24 = Asset(24, real_sid='24', exchange_info=self.test_exchange, currency='USD') self.assertEqual(s_23, s_23) self.assertEqual(s_23, 23) self.assertEqual(23, s_23) self.assertEqual(int32(23), s_23) self.assertEqual(int64(23), s_23) self.assertEqual(s_23, int32(23)) self.assertEqual(s_23, int64(23)) # Check all int types: for int_type in integer_types: self.assertEqual(int_type(23), s_23) self.assertEqual(s_23, int_type(23)) self.assertNotEqual(s_23, s_24) self.assertNotEqual(s_23, 24) self.assertNotEqual(s_23, "23") self.assertNotEqual(s_23, 23.5) self.assertNotEqual(s_23, []) self.assertNotEqual(s_23, None) # Compare to a value that doesn't fit into a platform int: self.assertNotEqual(s_23, sys.maxsize + 1) self.assertLess(s_23, s_24) self.assertLess(s_23, 24) self.assertGreater(24, s_23) self.assertGreater(s_24, s_23) def test_lt(self): self.assertTrue(self.asset3 < self.asset4) self.assertFalse(self.asset4 < self.asset4) self.assertFalse(self.asset5 < self.asset4) def test_le(self): self.assertTrue(self.asset3 <= self.asset4) self.assertTrue(self.asset4 <= self.asset4) self.assertFalse(self.asset5 <= self.asset4) def test_eq(self): self.assertFalse(self.asset3 == self.asset4) self.assertTrue(self.asset4 == self.asset4) self.assertFalse(self.asset5 == self.asset4) def test_ge(self): self.assertFalse(self.asset3 >= self.asset4) self.assertTrue(self.asset4 >= self.asset4) self.assertTrue(self.asset5 >= self.asset4) def test_gt(self): self.assertFalse(self.asset3 > self.asset4) self.assertFalse(self.asset4 > self.asset4) self.assertTrue(self.asset5 > self.asset4) def test_type_mismatch(self): if sys.version_info.major < 3: self.assertIsNotNone(self.asset3 < 'a') self.assertIsNotNone('a' < self.asset3) else: with self.assertRaises(TypeError): self.asset3 < 'a' with self.assertRaises(TypeError): 'a' < self.asset3
class AssetTestCase(TestCase): # Dynamically list the Asset properties we want to test. asset_attrs = [ name for name, value in vars(Asset).items() if isinstance(value, GetSetDescriptorType) ] # Very wow asset = Asset( 1337, symbol="DOGE", asset_name="DOGECOIN", start_date=pd.Timestamp('2013-12-08 9:31AM', tz='UTC'), end_date=pd.Timestamp('2014-06-25 11:21AM', tz='UTC'), first_traded=pd.Timestamp('2013-12-08 9:31AM', tz='UTC'), auto_close_date=pd.Timestamp('2014-06-26 11:21AM', tz='UTC'), exchange='THE MOON', ) def test_asset_object(self): self.assertEquals({5061: 'foo'}[Asset(5061)], 'foo') self.assertEquals(Asset(5061), 5061) self.assertEquals(5061, Asset(5061)) self.assertEquals(Asset(5061), Asset(5061)) self.assertEquals(int(Asset(5061)), 5061) self.assertEquals(str(Asset(5061)), 'Asset(5061)') def test_to_and_from_dict(self): asset_from_dict = Asset.from_dict(self.asset.to_dict()) for attr in self.asset_attrs: self.assertEqual( getattr(self.asset, attr), getattr(asset_from_dict, attr), ) def test_asset_is_pickleable(self): asset_unpickled = pickle.loads(pickle.dumps(self.asset)) for attr in self.asset_attrs: self.assertEqual( getattr(self.asset, attr), getattr(asset_unpickled, attr), ) def test_asset_comparisons(self): s_23 = Asset(23) s_24 = Asset(24) self.assertEqual(s_23, s_23) self.assertEqual(s_23, 23) self.assertEqual(23, s_23) self.assertEqual(int32(23), s_23) self.assertEqual(int64(23), s_23) self.assertEqual(s_23, int32(23)) self.assertEqual(s_23, int64(23)) # Check all int types (includes long on py2): for int_type in integer_types: self.assertEqual(int_type(23), s_23) self.assertEqual(s_23, int_type(23)) self.assertNotEqual(s_23, s_24) self.assertNotEqual(s_23, 24) self.assertNotEqual(s_23, "23") self.assertNotEqual(s_23, 23.5) self.assertNotEqual(s_23, []) self.assertNotEqual(s_23, None) # Compare to a value that doesn't fit into a platform int: self.assertNotEqual(s_23, sys.maxsize + 1) self.assertLess(s_23, s_24) self.assertLess(s_23, 24) self.assertGreater(24, s_23) self.assertGreater(s_24, s_23) def test_lt(self): self.assertTrue(Asset(3) < Asset(4)) self.assertFalse(Asset(4) < Asset(4)) self.assertFalse(Asset(5) < Asset(4)) def test_le(self): self.assertTrue(Asset(3) <= Asset(4)) self.assertTrue(Asset(4) <= Asset(4)) self.assertFalse(Asset(5) <= Asset(4)) def test_eq(self): self.assertFalse(Asset(3) == Asset(4)) self.assertTrue(Asset(4) == Asset(4)) self.assertFalse(Asset(5) == Asset(4)) def test_ge(self): self.assertFalse(Asset(3) >= Asset(4)) self.assertTrue(Asset(4) >= Asset(4)) self.assertTrue(Asset(5) >= Asset(4)) def test_gt(self): self.assertFalse(Asset(3) > Asset(4)) self.assertFalse(Asset(4) > Asset(4)) self.assertTrue(Asset(5) > Asset(4)) def test_type_mismatch(self): if sys.version_info.major < 3: self.assertIsNotNone(Asset(3) < 'a') self.assertIsNotNone('a' < Asset(3)) else: with self.assertRaises(TypeError): Asset(3) < 'a' with self.assertRaises(TypeError): 'a' < Asset(3)