Server : nginx/1.18.0 System : Linux localhost 6.14.3-x86_64-linode168 #1 SMP PREEMPT_DYNAMIC Mon Apr 21 19:47:55 EDT 2025 x86_64 User : www-data ( 33) PHP Version : 8.0.16 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /usr/lib/python3/dist-packages/croniter/tests/ |
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import absolute_import, print_function
from datetime import datetime
from croniter import croniter
from croniter.tests import base
class timerTest(object):
def __init__(self):
self.tests = tuple(getattr(self, m)
for m in dir(self)
if m.lower().startswith('test'))
def run(self):
for test in self.tests:
test()
class CroniterTest(timerTest):
def testMinute(self):
# minute asterisk
base = datetime(2010, 1, 23, 12, 18)
itr = croniter('*/1 * * * *', base)
n1 = itr.get_next(datetime) # 19
base.year == n1.year
base.month == n1.month
base.day == n1.day
base.hour == n1.hour
base.minute == n1.minute - 1
for i in range(39): # ~ 58
itr.get_next()
n2 = itr.get_next(datetime)
n2.minute == 59
n3 = itr.get_next(datetime)
n3.minute == 0
n3.hour == 13
itr = croniter('*/5 * * * *', base)
n4 = itr.get_next(datetime)
n4.minute == 20
for i in range(6):
itr.get_next()
n5 = itr.get_next(datetime)
n5.minute == 55
n6 = itr.get_next(datetime)
n6.minute == 0
n6.hour == 13
def testHour(self):
base = datetime(2010, 1, 24, 12, 2)
itr = croniter('0 */3 * * *', base)
n1 = itr.get_next(datetime)
n1.hour == 15
n1.minute == 0
for i in range(2):
itr.get_next()
n2 = itr.get_next(datetime)
n2.hour == 0
n2.day == 25
def testDay(self):
base = datetime(2010, 2, 24, 12, 9)
itr = croniter('0 0 */3 * *', base)
n1 = itr.get_next(datetime)
n1.day == 27
n2 = itr.get_next(datetime)
n2.day == 3
# test leap year
base = datetime(1996, 2, 27)
itr = croniter('0 0 * * *', base)
n1 = itr.get_next(datetime)
n1.day == 28
n1.month == 2
n2 = itr.get_next(datetime)
n2.day == 29
n2.month == 2
base2 = datetime(2000, 2, 27)
itr2 = croniter('0 0 * * *', base2)
n3 = itr2.get_next(datetime)
n3.day == 28
n3.month == 2
n4 = itr2.get_next(datetime)
n4.day == 29
n4.month == 2
def testWeekDay(self):
base = datetime(2010, 2, 25)
itr = croniter('0 0 * * sat', base)
n1 = itr.get_next(datetime)
n1.isoweekday() == 6
n1.day == 27
n2 = itr.get_next(datetime)
n2.isoweekday() == 6
n2.day == 6
n2.month == 3
base = datetime(2010, 1, 25)
itr = croniter('0 0 1 * wed', base)
n1 = itr.get_next(datetime)
n1.month == 1
n1.day == 27
n1.year == 2010
n2 = itr.get_next(datetime)
n2.month == 2
n2.day == 1
n2.year == 2010
n3 = itr.get_next(datetime)
n3.month == 2
n3.day == 3
n3.year == 2010
def testMonth(self):
base = datetime(2010, 1, 25)
itr = croniter('0 0 1 * *', base)
n1 = itr.get_next(datetime)
n1.month == 2
n1.day == 1
n2 = itr.get_next(datetime)
n2.month == 3
n2.day == 1
for i in range(8):
itr.get_next()
n3 = itr.get_next(datetime)
n3.month == 12
n3.year == 2010
n4 = itr.get_next(datetime)
n4.month == 1
n4.year == 2011
def testPrevMinute(self):
base = datetime(2010, 8, 25, 15, 56)
itr = croniter('*/1 * * * *', base)
prev = itr.get_prev(datetime)
base.year == prev.year
base.month == prev.month
base.day == prev.day
base.hour == prev.hour
base.minute, prev.minute + 1
base = datetime(2010, 8, 25, 15, 0)
itr = croniter('*/1 * * * *', base)
prev = itr.get_prev(datetime)
base.year == prev.year
base.month == prev.month
base.day == prev.day
base.hour == prev.hour + 1
59 == prev.minute
base = datetime(2010, 8, 25, 0, 0)
itr = croniter('*/1 * * * *', base)
prev = itr.get_prev(datetime)
base.year == prev.year
base.month == prev.month
base.day == prev.day + 1
23 == prev.hour
59 == prev.minute
def testPrevWeekDay(self):
base = datetime(2010, 8, 25, 15, 56)
itr = croniter('0 0 * * sat,sun', base)
prev1 = itr.get_prev(datetime)
prev1.year == base.year
prev1.month == base.month
prev1.day == 22
prev1.hour == 0
prev1.minute == 0
prev2 = itr.get_prev(datetime)
prev2.year == base.year
prev2.month == base.month
prev2.day == 21
prev2.hour == 0
prev2.minute == 0
prev3 = itr.get_prev(datetime)
prev3.year == base.year
prev3.month == base.month
prev3.day == 15
prev3.hour == 0
prev3.minute == 0
def testISOWeekday(self):
base = datetime(2010, 2, 25)
itr = croniter('0 0 * * 7', base)
n1 = itr.get_next(datetime)
n1.isoweekday() == 7
n1.day == 28
n2 = itr.get_next(datetime)
n2.isoweekday() == 7
n2.day == 7
n2.month == 3
class TestCase(base.TestCase):
"""make zope.testrunner happy"""
def test_Noop(self):
self.assertEqual(1, 1)
if __name__ == '__main__':
from timeit import Timer
t = Timer('c=CroniterTest();c.run()', 'from __main__ import CroniterTest')
print(t.timeit(200))