- Added test case for the case above
This commit is contained in:
Matsumoto Taichi 2013-03-04 22:06:17 -05:00
parent bcfc503310
commit acc137671e
2 changed files with 42 additions and 15 deletions

View File

@ -249,20 +249,12 @@ class croniter(object):
d += relativedelta(second = 0)
return False, d
if is_prev:
procs = [proc_second,
proc_minute,
proc_hour,
proc_day_of_week,
proc_day_of_month,
proc_month]
else:
procs = [proc_month,
proc_day_of_month,
proc_day_of_week,
proc_hour,
proc_minute,
proc_second]
procs = [proc_month,
proc_day_of_month,
proc_day_of_week,
proc_hour,
proc_minute,
proc_second]
while abs(year - current_year) <= 1:
next = False
@ -303,7 +295,13 @@ class croniter(object):
for d in candidates:
if d <= x:
return d - x
return (candidates[0]) - x - range_val
candidate = candidates[0]
for c in candidates:
if c < range_val:
candidate = c
break
return (candidate - x - range_val)
def is_leap(self, year):
if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):

View File

@ -253,6 +253,35 @@ class CroniterTest(unittest.TestCase):
self.assertEqual(n3.hour, base.hour + 2)
self.assertEqual(n3.minute, base.minute)
def testBug3(self):
base = datetime(2013, 3, 1, 12, 17, 34, 257877)
c = croniter('00 03 16,30 * *', base)
n1 = c.get_next(datetime)
self.assertEqual(n1.month, 3)
self.assertEqual(n1.day, 16)
n2 = c.get_next(datetime)
self.assertEqual(n2.month, 3)
self.assertEqual(n2.day, 30)
n3 = c.get_next(datetime)
self.assertEqual(n3.month, 4)
self.assertEqual(n3.day, 16)
n4 = c.get_prev(datetime)
self.assertEqual(n4.month, 3)
self.assertEqual(n4.day, 30)
n5 = c.get_prev(datetime)
self.assertEqual(n5.month, 3)
self.assertEqual(n5.day, 16)
n6 = c.get_prev(datetime)
self.assertEqual(n6.month, 2)
self.assertEqual(n6.day, 16)
def test_rangeGenerator(self):
base = datetime(2013, 3, 4, 0, 0)
itr = croniter('1-9/2 0 1 * *', base)