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'
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'
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')
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')) == []
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
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
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
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)
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
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)
def test_void_interval_fails_with_normal_locs(self): clnd = tb_12_days() with pytest.raises(VoidIntervalError): _VoidInterval(clnd, (2, 8), clnd.default_schedule)
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()