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
8 from datetime import date, datetime, timedelta
9
10 try:
11 from mx.DateTime import Date as mxDate, DateTime as mxDateTime, \
12 now as mxNow, RelativeDateTime, RelativeDate
13 from logilab.common.date import add_days_worked, nb_open_days, \
14 get_national_holidays
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 asdasd
37 self.assertEquals(add(self.datecls(2008, 1, 3), 1), self.datecls(2008, 1, 4))
38 self.assertEquals(add(self.datecls(2009, 6, 3), 1), self.datecls(2009, 6, 4))
39
40 self.assertEquals(add(self.datecls(2008, 1, 3), 2), self.datecls(2008, 1, 7))
41 self.assertEquals(add(self.datecls(2009, 6, 5), 2), self.datecls(2009, 6, 9))
42
43 self.assertEquals(add(self.datecls(2008, 1, 3), 8), self.datecls(2008, 1, 15))
44 self.assertEquals(add(self.datecls(2009, 6, 4), 9), self.datecls(2009, 6, 15))
45
46 self.assertEquals(add(self.datecls(2008, 4, 30), 2), self.datecls(2008, 5, 5))
47 self.assertEquals(add(self.datecls(2009, 6, 4), 9), self.datecls(2009, 6, 15))
48
50 holidays = get_national_holidays
51 yield self.assertEquals, holidays(self.datecls(2008, 4, 29), self.datecls(2008, 5, 2)), \
52 [self.datecls(2008, 5, 1)]
53 yield self.assertEquals, holidays(self.datecls(2008, 5, 7), self.datecls(2008, 5, 8)), []
54 x = self.datetimecls(2008, 5, 7, 12, 12, 12)
55 yield self.assertEquals, holidays(x, x + self.timedeltacls(days=1)), []
56
62
66
69
72
75
78
82
85
88
91
94
97
101
104
107
110
111
113 datecls = mxDate
114 datetimecls = mxDateTime
115 timedeltacls = RelativeDateTime
116 now = mxNow
117
119 if mxDate is None:
120 self.skip('mx.DateTime is not installed')
121
124
126 """enumerate months"""
127 r = list(date_range(self.datecls(2000,1,2), self.datecls(2000,4,4), endOfMonth))
128 expected = [self.datecls(2000,1,2), self.datecls(2000,2,29), self.datecls(2000,3,31)]
129 self.assertListEquals(r, expected)
130 r = list(date_range(self.datecls(2000,11,30), self.datecls(2001,2,3), endOfMonth))
131 expected = [self.datecls(2000,11,30), self.datecls(2000,12,31), self.datecls(2001,1,31)]
132 self.assertListEquals(r, expected)
133
134 if __name__ == '__main__':
135 unittest_main()
136