1
2
3 """
4 Test parsing of simple date and times
5 """
6
7 import unittest, time, datetime
8 import parsedatetime.parsedatetime as pt
9
10
11
12
14 target, t_flag = result
15 value, v_flag = check
16
17 t_yr, t_mth, t_dy, t_hr, t_min, _, _, _, _ = target
18 v_yr, v_mth, v_dy, v_hr, v_min, _, _, _, _ = value
19
20 return ((t_yr == v_yr) and (t_mth == v_mth) and (t_dy == v_dy) and
21 (t_hr == v_hr) and (t_min == v_min)) and (t_flag == v_flag)
22
23
24 -class test(unittest.TestCase):
26 self.cal = pt.Calendar()
27 self.yr, self.mth, self.dy, self.hr, self.mn, self.sec, self.wd, self.yd, self.isdst = time.localtime()
28
29
31 s = datetime.datetime.now()
32 t = s + datetime.timedelta(days=1)
33
34 start = s.timetuple()
35 target = t.timetuple()
36
37 d = self.wd + 1
38
39 if d > 6:
40 d = 0
41
42 day = self.cal.ptc.Weekdays[d]
43
44 self.assertTrue(_compareResults(self.cal.parse(day, start), (target, 1)))
45
46 t = s + datetime.timedelta(days=6)
47
48 target = t.timetuple()
49
50 d = self.wd - 1
51
52 if d < 0:
53 d = 6
54
55 day = self.cal.ptc.Weekdays[d]
56
57 self.assertTrue(_compareResults(self.cal.parse(day, start), (target, 1)))
58
59
61 start = datetime.datetime(self.yr, self.mth, self.dy, self.hr, self.mn, self.sec).timetuple()
62 target = datetime.datetime(self.yr, self.mth, self.dy, 23, 0, 0).timetuple()
63
64 self.assertTrue(_compareResults(self.cal.parse('11:00:00 PM', start), (target, 2)))
65 self.assertTrue(_compareResults(self.cal.parse('11:00 PM', start), (target, 2)))
66 self.assertTrue(_compareResults(self.cal.parse('11 PM', start), (target, 2)))
67 self.assertTrue(_compareResults(self.cal.parse('11PM', start), (target, 2)))
68 self.assertTrue(_compareResults(self.cal.parse('2300', start), (target, 2)))
69 self.assertTrue(_compareResults(self.cal.parse('23:00', start), (target, 2)))
70 self.assertTrue(_compareResults(self.cal.parse('11p', start), (target, 2)))
71 self.assertTrue(_compareResults(self.cal.parse('11pm', start), (target, 2)))
72
73 target = datetime.datetime(self.yr, self.mth, self.dy, 11, 0, 0).timetuple()
74
75 self.assertTrue(_compareResults(self.cal.parse('11:00:00 AM', start), (target, 2)))
76 self.assertTrue(_compareResults(self.cal.parse('11:00 AM', start), (target, 2)))
77 self.assertTrue(_compareResults(self.cal.parse('11 AM', start), (target, 2)))
78 self.assertTrue(_compareResults(self.cal.parse('11AM', start), (target, 2)))
79 self.assertTrue(_compareResults(self.cal.parse('1100', start), (target, 2)))
80 self.assertTrue(_compareResults(self.cal.parse('11:00', start), (target, 2)))
81 self.assertTrue(_compareResults(self.cal.parse('11a', start), (target, 2)))
82 self.assertTrue(_compareResults(self.cal.parse('11am', start), (target, 2)))
83
84 target = datetime.datetime(self.yr, self.mth, self.dy, 7, 30, 0).timetuple()
85
86 self.assertTrue(_compareResults(self.cal.parse('730', start), (target, 2)))
87 self.assertTrue(_compareResults(self.cal.parse('0730', start), (target, 2)))
88
89 target = datetime.datetime(self.yr, self.mth, self.dy, 17, 30, 0).timetuple()
90
91 self.assertTrue(_compareResults(self.cal.parse('1730', start), (target, 2)))
92 self.assertTrue(_compareResults(self.cal.parse('173000', start), (target, 2)))
93
94
96 start = datetime.datetime(self.yr, self.mth, self.dy, self.hr, self.mn, self.sec).timetuple()
97 target = datetime.datetime(2006, 8, 25, self.hr, self.mn, self.sec).timetuple()
98
99 self.assertTrue(_compareResults(self.cal.parse('08/25/2006', start), (target, 1)))
100 self.assertTrue(_compareResults(self.cal.parse('08.25.2006', start), (target, 1)))
101 self.assertTrue(_compareResults(self.cal.parse('8/25/06', start), (target, 1)))
102 self.assertTrue(_compareResults(self.cal.parse('August 25, 2006', start), (target, 1)))
103 self.assertTrue(_compareResults(self.cal.parse('Aug 25, 2006', start), (target, 1)))
104 self.assertTrue(_compareResults(self.cal.parse('August 25 2006', start), (target, 1)))
105 self.assertTrue(_compareResults(self.cal.parse('Aug 25 2006', start), (target, 1)))
106
107 if self.mth > 8 or (self.mth == 8 and self.dy > 25):
108 target = datetime.datetime(self.yr + 1, 8, 25, self.hr, self.mn, self.sec).timetuple()
109 else:
110 target = datetime.datetime(self.yr, 8, 25, self.hr, self.mn, self.sec).timetuple()
111
112 self.assertTrue(_compareResults(self.cal.parse('8/25', start), (target, 1)))
113 self.assertTrue(_compareResults(self.cal.parse('8.25', start), (target, 1)))
114 self.assertTrue(_compareResults(self.cal.parse('08/25', start), (target, 1)))
115 self.assertTrue(_compareResults(self.cal.parse('August 25', start), (target, 1)))
116 self.assertTrue(_compareResults(self.cal.parse('Aug 25', start), (target, 1)))
117
118
120 start = datetime.datetime(self.yr, self.mth, self.dy, self.hr, self.mn, self.sec).timetuple()
121 target = datetime.datetime(2000, 2, 29, self.hr, self.mn, self.sec).timetuple()
122
123 self.assertTrue(_compareResults(self.cal.parse('02/29/2000', start), (target, 1)))
124
125 target = datetime.datetime(2004, 2, 29, self.hr, self.mn, self.sec).timetuple()
126
127 self.assertTrue(_compareResults(self.cal.parse('02/29/2004', start), (target, 1)))
128
129 target = datetime.datetime(2008, 2, 29, self.hr, self.mn, self.sec).timetuple()
130
131 self.assertTrue(_compareResults(self.cal.parse('02/29/2008', start), (target, 1)))
132
133 target = datetime.datetime(2012, 2, 29, self.hr, self.mn, self.sec).timetuple()
134
135 self.assertTrue(_compareResults(self.cal.parse('02/29/2012', start), (target, 1)))
136
137 dNormal = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
138 dLeap = (31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
139
140 for i in range(1,12):
141 self.assertTrue(self.cal.ptc.daysInMonth(i, 1999), dNormal[i - 1])
142 self.assertTrue(self.cal.ptc.daysInMonth(i, 2000), dLeap[i - 1])
143 self.assertTrue(self.cal.ptc.daysInMonth(i, 2001), dNormal[i - 1])
144 self.assertTrue(self.cal.ptc.daysInMonth(i, 2002), dNormal[i - 1])
145 self.assertTrue(self.cal.ptc.daysInMonth(i, 2003), dNormal[i - 1])
146 self.assertTrue(self.cal.ptc.daysInMonth(i, 2004), dLeap[i - 1])
147 self.assertTrue(self.cal.ptc.daysInMonth(i, 2005), dNormal[i - 1])
148
149
150
152 start = datetime.datetime(self.yr, self.mth, self.dy, self.hr, self.mn, self.sec).timetuple()
153 target = datetime.datetime(2008, 8, 22, self.hr, self.mn, self.sec).timetuple()
154
155 self.assertTrue(_compareResults(self.cal.parse('August 22nd, 2008', start), (target, 1)))
156 self.assertTrue(_compareResults(self.cal.parse('Aug 22nd, 2008', start), (target, 1)))
157 self.assertTrue(_compareResults(self.cal.parse('August 22nd 2008', start), (target, 1)))
158 self.assertTrue(_compareResults(self.cal.parse('Aug 22nd 2008', start), (target, 1)))
159
160 target = datetime.datetime(2008, 8, 23, self.hr, self.mn, self.sec).timetuple()
161
162 self.assertTrue(_compareResults(self.cal.parse('August 23rd, 2008', start), (target, 1)))
163 self.assertTrue(_compareResults(self.cal.parse('Aug 23rd, 2008', start), (target, 1)))
164 self.assertTrue(_compareResults(self.cal.parse('August 23rd 2008', start), (target, 1)))
165 self.assertTrue(_compareResults(self.cal.parse('Aug 23rd 2008', start), (target, 1)))
166
167 target = datetime.datetime(2008, 8, 25, self.hr, self.mn, self.sec).timetuple()
168
169 self.assertTrue(_compareResults(self.cal.parse('August 25th, 2008', start), (target, 1)))
170 self.assertTrue(_compareResults(self.cal.parse('Aug 25th, 2008', start), (target, 1)))
171 self.assertTrue(_compareResults(self.cal.parse('August 25th 2008', start), (target, 1)))
172 self.assertTrue(_compareResults(self.cal.parse('Aug 25th 2008', start), (target, 1)))
173
174
176 start = datetime.datetime(self.yr, self.mth, self.dy, self.hr, self.mn, self.sec).timetuple()
177 target = datetime.datetime(self.yr, self.mth, self.dy, 6, 0, 0).timetuple()
178
179 self.assertTrue(_compareResults(self.cal.parse('morning', start), (target, 2)))
180
181 target = datetime.datetime(self.yr, self.mth, self.dy, 8, 0, 0).timetuple()
182
183 self.assertTrue(_compareResults(self.cal.parse('breakfast', start), (target, 2)))
184
185 target = datetime.datetime(self.yr, self.mth, self.dy, 12, 0, 0).timetuple()
186
187 self.assertTrue(_compareResults(self.cal.parse('lunch', start), (target, 2)))
188
189 target = datetime.datetime(self.yr, self.mth, self.dy, 18, 0, 0).timetuple()
190
191 self.assertTrue(_compareResults(self.cal.parse('evening', start), (target, 2)))
192
193 target = datetime.datetime(self.yr, self.mth, self.dy, 19,0, 0).timetuple()
194
195 self.assertTrue(_compareResults(self.cal.parse('dinner', start), (target, 2)))
196
197 target = datetime.datetime(self.yr, self.mth, self.dy, 21, 0, 0).timetuple()
198
199 self.assertTrue(_compareResults(self.cal.parse('night', start), (target, 2)))
200 self.assertTrue(_compareResults(self.cal.parse('tonight', start), (target, 2)))
201
203 start = datetime.datetime(self.yr, self.mth, self.dy, self.hr, self.mn, self.sec).timetuple()
204 target = datetime.datetime(self.yr, self.mth, self.dy, 0, 0, 0).timetuple()
205
206 self.assertTrue(_compareResults(self.cal.parse('midnight', start), (target, 2)))
207 self.assertTrue(_compareResults(self.cal.parse('12:00:00 AM', start), (target, 2)))
208 self.assertTrue(_compareResults(self.cal.parse('12:00 AM', start), (target, 2)))
209 self.assertTrue(_compareResults(self.cal.parse('12 AM', start), (target, 2)))
210 self.assertTrue(_compareResults(self.cal.parse('12AM', start), (target, 2)))
211 self.assertTrue(_compareResults(self.cal.parse('12am', start), (target, 2)))
212 self.assertTrue(_compareResults(self.cal.parse('12a', start), (target, 2)))
213 self.assertTrue(_compareResults(self.cal.parse('0000', start), (target, 2)))
214 self.assertTrue(_compareResults(self.cal.parse('00:00', start), (target, 2)))
215
216
218 start = datetime.datetime(self.yr, self.mth, self.dy, self.hr, self.mn, self.sec).timetuple()
219 target = datetime.datetime(self.yr, self.mth, self.dy, 12, 0, 0).timetuple()
220
221 self.assertTrue(_compareResults(self.cal.parse('noon', start), (target, 2)))
222 self.assertTrue(_compareResults(self.cal.parse('12:00:00 PM', start), (target, 2)))
223 self.assertTrue(_compareResults(self.cal.parse('12:00 PM', start), (target, 2)))
224 self.assertTrue(_compareResults(self.cal.parse('12 PM', start), (target, 2)))
225 self.assertTrue(_compareResults(self.cal.parse('12PM', start), (target, 2)))
226 self.assertTrue(_compareResults(self.cal.parse('12pm', start), (target, 2)))
227 self.assertTrue(_compareResults(self.cal.parse('12p', start), (target, 2)))
228 self.assertTrue(_compareResults(self.cal.parse('1200', start), (target, 2)))
229 self.assertTrue(_compareResults(self.cal.parse('12:00', start), (target, 2)))
230
231
232 if __name__ == "__main__":
233 unittest.main()
234