add unit test to timegen weekdays
This commit is contained in:
parent
a154350b1b
commit
d0cd97aea0
2 changed files with 35 additions and 3 deletions
|
@ -30,12 +30,23 @@ def onehour(now, request):
|
||||||
'interval': intervals[request.param],
|
'interval': intervals[request.param],
|
||||||
'end': now + days(1)})
|
'end': now + days(1)})
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(params=[1, '1'])
|
@pytest.fixture(params=[1, '1'])
|
||||||
def onehour_monday(request):
|
def onehour_monday(request):
|
||||||
monday = request.param
|
weekday = request.param
|
||||||
yield FrequencyAlarm({
|
yield FrequencyAlarm({
|
||||||
'interval': 3600*12,
|
'interval': 3600*12,
|
||||||
'weekdays': [monday], # mondays only
|
'weekdays': [weekday],
|
||||||
|
'start': 0
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(params=[7, '7'])
|
||||||
|
def onehour_sunday(request):
|
||||||
|
weekday = request.param
|
||||||
|
yield FrequencyAlarm({
|
||||||
|
'interval': 3600*12,
|
||||||
|
'weekdays': [weekday],
|
||||||
'start': 0
|
'start': 0
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -124,10 +135,26 @@ def test_weekday_skip(onehour_monday):
|
||||||
t = datetime.fromtimestamp(0)
|
t = datetime.fromtimestamp(0)
|
||||||
for _ in range(20): # 20 is an arbitrary number
|
for _ in range(20): # 20 is an arbitrary number
|
||||||
t = onehour_monday.next_ring(t)
|
t = onehour_monday.next_ring(t)
|
||||||
print(_, t, t.isoweekday())
|
|
||||||
assert t.isoweekday() == 1 # monday; don't get confused by .weekday()
|
assert t.isoweekday() == 1 # monday; don't get confused by .weekday()
|
||||||
|
|
||||||
|
|
||||||
|
def test_weekday_skip_2(onehour_sunday):
|
||||||
|
t = datetime.fromtimestamp(0)
|
||||||
|
for _ in range(20): # 20 is an arbitrary number
|
||||||
|
t = onehour_sunday.next_ring(t)
|
||||||
|
assert t.isoweekday() == 7 # monday; don't get confused by .weekday()
|
||||||
|
|
||||||
|
|
||||||
|
def test_sunday_is_not_0():
|
||||||
|
with pytest.raises(ValueError) as excinfo:
|
||||||
|
FrequencyAlarm({
|
||||||
|
'interval': 3600*12,
|
||||||
|
'weekdays': [0],
|
||||||
|
'start': 0
|
||||||
|
})
|
||||||
|
assert 'Not a valid weekday:' in excinfo.value.args[0]
|
||||||
|
|
||||||
|
|
||||||
def test_single_registered():
|
def test_single_registered():
|
||||||
timegenerate({
|
timegenerate({
|
||||||
'kind': 'single',
|
'kind': 'single',
|
||||||
|
|
|
@ -77,6 +77,11 @@ class FrequencyAlarm(Alarm):
|
||||||
self.end = getdate(obj['end']) if 'end' in obj else None
|
self.end = getdate(obj['end']) if 'end' in obj else None
|
||||||
self.weekdays = [int(x) for x in obj['weekdays']] if \
|
self.weekdays = [int(x) for x in obj['weekdays']] if \
|
||||||
'weekdays' in obj else None
|
'weekdays' in obj else None
|
||||||
|
if self.weekdays is not None:
|
||||||
|
for weekday in self.weekdays:
|
||||||
|
if not 1 <= weekday <= 7:
|
||||||
|
raise ValueError('Not a valid weekday: {}'
|
||||||
|
.format(weekday))
|
||||||
|
|
||||||
def next_ring(self, current_time=None):
|
def next_ring(self, current_time=None):
|
||||||
'''if current_time is None, it is now()'''
|
'''if current_time is None, it is now()'''
|
||||||
|
|
Loading…
Reference in a new issue