1 """
2 Unittests for date helpers
3 """
4 from logilab.common.testlib import TestCase, unittest_main
5
6 from logilab.common.date import date_range, endOfMonth
7 from logilab.common.date import add_days_worked, nb_open_days, \
8 get_national_holidays
9
10 from datetime import date, datetime, timedelta
11
12 try:
13 from mx.DateTime import Date as mxDate, DateTime as mxDateTime, \
14 now as mxNow, RelativeDateTime, RelativeDate
15 except ImportError:
16 mxDate = mxDateTime = RelativeDateTime = mxNow = None
17
19 datecls = date
20 datetimecls = datetime
21 timedeltacls = timedelta
22 now = datetime.now
23
25 """enumerate days"""
26 r = list(date_range(self.datecls(2000,1,1), self.datecls(2000,1,4)))
27 expected = [self.datecls(2000,1,1), self.datecls(2000,1,2), self.datecls(2000,1,3)]
28 self.assertListEquals(r, expected)
29 r = list(date_range(self.datecls(2000,1,31), self.datecls(2000,2,3)))
30 expected = [self.datecls(2000,1,31), self.datecls(2000,2,1), self.datecls(2000,2,2)]
31 self.assertListEquals(r, expected)
32
34 add = add_days_worked
35
36 self.assertEquals(add(self.datecls(2008, 1, 3), 1), self.datecls(2008, 1, 4))
37
38 self.assertEquals(add(self.datecls(2008, 1, 3), 2), self.datecls(2008, 1, 7))
39
40 self.assertEquals(add(self.datecls(2008, 1, 3), 8), self.datecls(2008, 1, 15))
41
42 self.assertEquals(add(self.datecls(2008, 4, 30), 2), self.datecls(2008, 5, 5))
43
45 holidays = get_national_holidays
46 yield self.assertEquals, holidays(self.datecls(2008, 4, 29), self.datecls(2008, 5, 2)), \
47 [self.datecls(2008, 5, 1)]
48 yield self.assertEquals, holidays(self.datecls(2008, 5, 7), self.datecls(2008, 5, 8)), []
49 x = self.datetimecls(2008, 5, 7, 12, 12, 12)
50 yield self.assertEquals, holidays(x, x + self.timedeltacls(days=1)), []
51
57
61
64
67
70
73
77
80
83
86
89
92
96
99
102
105
106
108 datecls = mxDate
109 datetimecls = mxDateTime
110 timedeltacls = RelativeDateTime
111 now = mxNow
112
114 if mxDate is None:
115 self.skip('mx.DateTime is not installed')
116
119
121 """enumerate months"""
122 r = list(date_range(self.datecls(2000,1,2), self.datecls(2000,4,4), endOfMonth))
123 expected = [self.datecls(2000,1,2), self.datecls(2000,2,29), self.datecls(2000,3,31)]
124 self.assertListEquals(r, expected)
125 r = list(date_range(self.datecls(2000,11,30), self.datecls(2001,2,3), endOfMonth))
126 expected = [self.datecls(2000,11,30), self.datecls(2000,12,31), self.datecls(2001,1,31)]
127 self.assertListEquals(r, expected)
128
129 if __name__ == '__main__':
130 unittest_main()
131