def test_interval_nth_no_off_duty(self): clnd = tb_12_days() ivl = Interval(clnd, (4, 4), clnd.default_schedule) with pytest.raises(OutOfBoundsError): ivl.first(duty='off') with pytest.raises(OutOfBoundsError): ivl.last(duty='off') with pytest.raises(OutOfBoundsError): ivl.nth(0, duty='off')
def test_interval_nth_single(self): clnd = tb_12_days() for loc, duty in ((0, 'off'), (3, 'any'), (4, 'on'), (7, 'any'), (12, 'off')): ivl = Interval(clnd, (loc, loc), clnd.default_schedule) wsf = ivl.first(duty=duty) wsl = ivl.last(duty=duty) ws2 = ivl.nth(0, duty=duty) assert isinstance(wsf, Workshift) assert isinstance(wsl, Workshift) assert isinstance(ws2, Workshift) assert wsf._loc == loc assert wsl._loc == loc assert ws2._loc == loc
def test_interval_nth_any(self): clnd = tb_12_days() ivl = Interval(clnd, (2, 10), clnd.default_schedule) wsf = ivl.first(duty='any') wsl = ivl.last(duty='any') ws2 = ivl.nth(1, duty='any') wsneg = ivl.nth(-2, duty='any') assert isinstance(wsf, Workshift) assert isinstance(wsl, Workshift) assert isinstance(ws2, Workshift) assert isinstance(wsneg, Workshift) assert wsf._loc == 2 assert wsl._loc == 10 assert ws2._loc == 3 assert wsneg._loc == 9
def test_interval_nth_on(self): clnd = tb_12_days() for locs in ((2, 11), (4, 11), (2, 10), (4, 10)): ivl = Interval(clnd, locs, clnd.default_schedule) wsf = ivl.first() wsl = ivl.last() ws2 = ivl.nth(1) wsneg = ivl.nth(-2) assert isinstance(wsf, Workshift) assert isinstance(wsl, Workshift) assert isinstance(ws2, Workshift) assert isinstance(wsneg, Workshift) assert wsf._loc == 4 assert wsl._loc == 10 assert ws2._loc == 7 assert wsneg._loc == 7
def test_interval_nth_off(self): clnd = tb_12_days() for locs in ((1, 10), (2, 10), (1, 9), (2, 9)): ivl = Interval(clnd, locs, clnd.default_schedule) wsf = ivl.first(duty='off') wsl = ivl.last(duty='off') ws2 = ivl.nth(1, duty='off') wsneg = ivl.nth(-2, duty='off') assert isinstance(wsf, Workshift) assert isinstance(wsl, Workshift) assert isinstance(ws2, Workshift) assert isinstance(wsneg, Workshift) assert wsf._loc == 2 assert wsl._loc == 9 assert ws2._loc == 3 assert wsneg._loc == 8