Coverage for tests/test_market_data_factories.py: 87%

23 statements  

« prev     ^ index     » next       coverage.py v7.8.2, created at 2025-06-05 14:27 +0000

1import unittest 

2import rivapy.instruments as instruments 

3from rivapy.marketdata.factory import _factory, create 

4 

5 

6class FactoryTestsMeta(type): 

7 

8 def __new__(cls, name, bases, attrs): 

9 for k, v in _factory().items(): 

10 attrs["test_%s" % k] = cls.gen(v) 

11 return super(FactoryTestsMeta, cls).__new__(cls, name, bases, attrs) 

12 

13 @classmethod 

14 def gen(cls, target_class): 

15 # Return a testcase that tests the creation of an instrument from factory 

16 def fn(self): 

17 try: 

18 mkt = target_class._create_sample(4, seed=42) 

19 for i in range(len(mkt)): 

20 b = create(mkt[i].to_dict()) 

21 self.assertEqual(b.hash(), mkt[i].hash()) 

22 except AttributeError as e: 

23 self.assertEqual(0, 1, msg="_create_sample not implemented for class " + target_class.__name__) 

24 

25 return fn 

26 

27 

28class MarketDataTests(unittest.TestCase, metaclass=FactoryTestsMeta): 

29 pass 

30 

31 

32if __name__ == "__main__": 

33 unittest.main()