Пример #1
0
 def test_void_interval_schedules(self):
     clnd = tb_12_days()
     my_schedule = clnd.add_schedule('my_schedule', lambda x: True)
     ivl = _VoidInterval(clnd, (8, 2))
     assert ivl.schedule.name == clnd.default_schedule.name
     ivl = _VoidInterval(clnd, (8, 2), my_schedule)
     assert ivl.schedule.name == 'my_schedule'
Пример #2
0
    def test_void_ivl_overlap(self):
        clnd = tb_12_days()
        my_schedule = clnd.add_schedule('my_schedule', lambda x: True)
        void_ivl = _VoidInterval(clnd, (8, 2))
        ivl = Interval(clnd, (2, 8))
        overlap = void_ivl.overlap(ivl, schedule=my_schedule)
        assert isinstance(overlap, _VoidInterval)
        assert overlap._loc == (8, 2)
        assert len(overlap) == 0
        assert overlap.schedule.name == 'my_schedule'

        overlap = void_ivl * ivl
        assert overlap._loc == (8, 2)
        assert len(overlap) == 0
        assert overlap.schedule.name == clnd.default_schedule.name

        overlap = void_ivl.overlap(void_ivl)
        assert overlap._loc == (8, 2)
        assert len(overlap) == 0
        assert overlap.schedule.name == clnd.default_schedule.name

        void_ivl2 = _VoidInterval(clnd, (1, 0), schedule=my_schedule)
        overlap = void_ivl2.overlap(void_ivl)
        assert isinstance(overlap, _VoidInterval)
        assert overlap._loc == (1, 0)
        assert len(overlap) == 0
        assert overlap.schedule.name == 'my_schedule'
Пример #3
0
 def test_interval_direct_bad_args(self):
     clnd = tb_12_days()
     with pytest.raises(AttributeError):
         Interval('not a clnd', (2, 8), clnd.default_schedule)
     with pytest.raises(TypeError):
         Interval(clnd, (2, 8.5), clnd.default_schedule)
     with pytest.raises(TypeError):
         Interval(clnd, (2, '08 Jan 2017'), clnd.default_schedule)
     with pytest.raises(IndexError):
         Interval(clnd, (2, ), clnd.default_schedule)
     with pytest.raises(TypeError):
         Interval(clnd, 'not a tuple', clnd.default_schedule)
     # 'on_duty' is _Schedule.name but _Schedule is expected
     with pytest.raises(TypeError):
         _VoidInterval(clnd, (8, 2), 'on_duty')
Пример #4
0
 def test_void_ivl_iteration(self):
     clnd = tb_12_days()
     void_ivl = _VoidInterval(clnd, (8, 2))
     assert list(void_ivl) == []
     assert list(void_ivl.workshifts()) == []
     assert list(void_ivl.workshifts('no matter',
                                     what_args='are given')) == []
Пример #5
0
 def test_void_interval_with_locs(self):
     clnd = tb_12_days()
     ivl = _VoidInterval(clnd, (8, 2), clnd.default_schedule)
     assert pd.isnull(ivl.start_time)
     assert pd.isnull(ivl.end_time)
     assert ivl._loc == (8, 2)
     assert len(ivl) == 0
Пример #6
0
 def test_void_ivl_whatportion(self):
     clnd = tb_12_days()
     void_ivl = _VoidInterval(clnd, (8, 2))
     ivl = Interval(clnd, (2, 8))
     assert void_ivl.what_portion_of(ivl) == 0
     assert void_ivl / ivl == 0
     assert void_ivl.what_portion_of(void_ivl) == 0
Пример #7
0
 def test_void_interval_mixed_args(self):
     clnd = tb_12_days()
     ivl = _VoidInterval(clnd, (Workshift(clnd, 8), 2),
                         clnd.default_schedule)
     assert pd.isnull(ivl.start_time)
     assert pd.isnull(ivl.end_time)
     assert ivl._loc == (8, 2)
     assert len(ivl) == 0
Пример #8
0
 def test_voic_interval_OB_locs(self):
     clnd = tb_12_days()
     with pytest.raises(OutOfBoundsError):
         _VoidInterval(clnd, (2, -1), clnd.default_schedule)
     with pytest.raises(OutOfBoundsError):
         _VoidInterval(clnd, (13, 8), clnd.default_schedule)
     with pytest.raises(OutOfBoundsError):
         _VoidInterval(clnd, (13, -1), clnd.default_schedule)
     with pytest.raises(OutOfBoundsError):
         _VoidInterval(clnd, (25, 13), clnd.default_schedule)
Пример #9
0
 def test_void_ivl_misc_counts(self):
     clnd = tb_12_days()
     void_ivl = _VoidInterval(clnd, (8, 2))
     for method in [
             void_ivl.count, void_ivl.count_periods,
             void_ivl.total_duration, void_ivl.worktime
     ]:
         assert method() == 0
         assert method('no matter', what_args='are given') == 0
Пример #10
0
 def test_void_ivl_to_dataframe(self):
     clnd = tb_12_days()
     clnd.add_schedule('my_schedule', lambda x: True)
     ivl = Interval(clnd, (2, 8))
     void_ivl = _VoidInterval(clnd, (8, 2))
     ivl_df_columns = list(ivl.to_dataframe().columns)
     void_ivl_df = void_ivl.to_dataframe()
     assert void_ivl_df.empty
     assert list(void_ivl_df.columns) == ivl_df_columns
     assert 'my_schedule' in list(void_ivl_df.columns)
Пример #11
0
 def test_void_interval_fails_with_normal_locs(self):
     clnd = tb_12_days()
     with pytest.raises(VoidIntervalError):
         _VoidInterval(clnd, (2, 8), clnd.default_schedule)
Пример #12
0
 def test_void_ivl_nth(self):
     clnd = tb_12_days()
     void_ivl = _VoidInterval(clnd, (8, 2))
     for method in [void_ivl.nth, void_ivl.first, void_ivl.nth]:
         with pytest.raises(OutOfBoundsError):
             method()