1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
"""
Unittests for date helpers
"""
from logilab.common.testlib import TestCase, unittest_main
from logilab.common.date import date_range
try:
from mx.DateTime import Date, RelativeDate, now
from logilab.common.date import endOfMonth, add_days_worked, nb_open_days
except ImportError:
from datetime import date as Date
endOfMonth = add_days_worked = nb_open_days = None
class DateTC(TestCase):
def test_day(self):
"""enumerate days"""
r = list(date_range(Date(2000,1,1), Date(2000,1,4)))
expected = [Date(2000,1,1), Date(2000,1,2), Date(2000,1,3)]
self.assertListEquals(r, expected)
r = list(date_range(Date(2000,1,31), Date(2000,2,3)))
expected = [Date(2000,1,31), Date(2000,2,1), Date(2000,2,2)]
self.assertListEquals(r, expected)
def test_month(self):
"""enumerate months"""
if endOfMonth is None:
self.skip('mx.DateTime is not installed')
r = list(date_range(Date(2000,1,2), Date(2000,4,4), endOfMonth))
expected = [Date(2000,1,2), Date(2000,2,29), Date(2000,3,31)]
self.assertListEquals(r, expected)
r = list(date_range(Date(2000,11,30), Date(2001,2,3), endOfMonth))
expected = [Date(2000,11,30), Date(2000,12,31), Date(2001,1,31)]
self.assertListEquals(r, expected)
def test_add_days_worked(self):
if add_days_worked is None:
self.skip('mx.DateTime is not installed')
add = add_days_worked
# normal
self.assertEquals(add(Date(2008, 1, 3), 1), Date(2008, 1, 4))
# skip week-end
self.assertEquals(add(Date(2008, 1, 3), 2), Date(2008, 1, 7))
# skip 2 week-ends
self.assertEquals(add(Date(2008, 1, 3), 8), Date(2008, 1, 15))
# skip holiday + week-end
self.assertEquals(add(Date(2008, 4, 30), 2), Date(2008, 5, 4))
def test_nb_open_days(self):
if nb_open_days is None:
self.skip('mx.DateTime is not installed')
nb = nb_open_days
self.assertEquals(nb(Date(2008, 3, 4), Date(2008, 3, 7)), 3)
self.assertEquals(nb(Date(2008, 3, 4), Date(2008, 3, 5)), 1)
self.assertEquals(nb(Date(2008, 3, 7), Date(2008, 3, 10)), 1)
self.assertEquals(nb(Date(2008, 3, 7), Date(2008, 3, 17)), 6)
self.assertEquals(nb(Date(2008, 3, 18), Date(2008, 3, 26)), 5)
self.assertEquals(nb(Date(2008, 3, 7), Date(2008, 3, 8)), 1)
self.assertEquals(nb(Date(2008, 3, 7), Date(2008, 3, 9)), 1)
self.assertEquals(nb(Date(2008, 3, 8), Date(2008, 3, 9)), 0)
self.assertEquals(nb(Date(2008, 3, 8), Date(2008, 3, 10)), 0)
self.assertEquals(nb(Date(2008, 3, 8), Date(2008, 3, 11)), 1)
x = now()
self.assertEquals(nb(x,x), 0)
self.assertEquals(nb(x,x+0.5), 1)
self.assertRaises(AssertionError, nb, x, x-1)
if __name__ == '__main__':
unittest_main()
|