ENH: Makes schedule_function work in daily mode.

This commit is contained in:
Joe Jevnik
2014-11-04 11:48:52 -05:00
parent 93429d69f5
commit ca59abcc43
5 changed files with 95 additions and 61 deletions
+36
View File
@@ -69,6 +69,7 @@ from zipline.test_algorithms import (
record_variables,
)
import zipline.utils.events
from zipline.utils.test_utils import (
assert_single_position,
drain_zipline,
@@ -224,6 +225,41 @@ class TestMiscellaneousAPI(TestCase):
self.assertEqual(algo.func_called, algo.days)
@parameterized.expand([
('daily',),
('minute'),
])
def test_schedule_funtion_rule_creation(self, mode):
nop = lambda *args, **kwargs: None
self.sim_params.data_frequency = mode
algo = TradingAlgorithm(
initialize=nop, handle_data=nop, sim_params=self.sim_params,
)
# Schedule something for NOT Always.
algo.schedule_function(nop, time_rule=zipline.utils.events.Never())
event_rule = algo.event_manager._events[1].rule
self.assertIsInstance(event_rule, zipline.utils.events.OncePerDay)
inner_rule = event_rule.rule
self.assertIsInstance(inner_rule, zipline.utils.events.ComposedRule)
first = inner_rule.first
second = inner_rule.second
composer = inner_rule.composer
self.assertIsInstance(first, zipline.utils.events.Always)
if mode == 'daily':
self.assertIsInstance(second, zipline.utils.events.Always)
else:
self.assertIsInstance(second, zipline.utils.events.Never)
self.assertIs(composer, zipline.utils.events.ComposedRule.lazy_and)
class TestTransformAlgorithm(TestCase):
def setUp(self):