- Added test case for the case above
This commit is contained in:
parent
bcfc503310
commit
acc137671e
|
@ -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):
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue