Completed
Pull Request — master (#881)
by
unknown
01:24
created

tests.pipeline.DateLoaderTestCase   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 29
Duplicated Lines 0 %
Metric Value
dl 0
loc 29
rs 10
wmc 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A setUpClass() 0 14 2
A tearDownClass() 0 3 1
A test_compute_latest() 0 5 1
1
"""
2
Tests for the reference loader for EarningsCalendar.
3
"""
4
from unittest import TestCase
5
6
from contextlib2 import ExitStack
7
import pandas as pd
8
9
from zipline.pipeline import Pipeline
10
from zipline.pipeline.data import EarningsCalendar
11
from zipline.pipeline.engine import SimplePipelineEngine
12
from zipline.pipeline.loaders import EarningsCalendarLoader
13
from zipline.utils.test_utils import tmp_asset_finder
14
15
16
class DateLoaderTestCase(TestCase):
17
    """
18
    Tests for loading adjusted_arrays with datetime data.
19
    """
20
21
    @classmethod
22
    def setUpClass(cls):
23
        cls._cleanup_stack = stack = ExitStack()
24
        finder = stack.enter_context(tmp_asset_finder())
25
        A, B, C = finder.sids
26
        calendar = pd.date_range('2014', '2014-01-31')
27
        announcement_dates = {
28
            A: pd.DatetimeIndex(['2014-01-01', '2014-01-15', '2014-02-01']),
29
            # Last 10 entries for B are trailing NaTs.
30
            B: pd.DatetimeIndex(['2014-01-10', '2014-01-15', '2014-01-20']),
31
            C: pd.DatetimeIndex(['2014-01-10', '2014-01-20', '2014-02-01']),
32
        }
33
        loader = EarningsCalendarLoader(calendar, announcement_dates)
34
        cls.engine = SimplePipelineEngine(lambda _: loader, calendar, finder)
35
36
    @classmethod
37
    def tearDownClass(cls):
38
        cls._cleanup_stack.close()
39
40
    def test_compute_latest(self):
41
        p = Pipeline(
42
            columns={
43
                'next': EarningsCalendar.next_announcement,
44
                'previous': EarningsCalendar.previous_announcement,
45
            }
46
        )
47