1
2 """
3 Test parsing of strings with multiple chunks
4 """
5
6 import unittest, time, datetime
7 import parsedatetime as pdt
8
9 -class test(unittest.TestCase):
10
11 @pdt.tests.assertEqualWithComparator
14
16 self.cal = pdt.Calendar()
17 self.yr, self.mth, self.dy, self.hr, self.mn, self.sec, self.wd, self.yd, self.isdst = time.localtime()
18
20 s = datetime.datetime.now()
21 t = self.cal.inc(s, year=3) + datetime.timedelta(days=5, weeks=2)
22
23 start = s.timetuple()
24 target = t.timetuple()
25
26 self.assertExpectedResult(self.cal.parse('3 years 2 weeks 5 days', start), (target, 1))
27 self.assertExpectedResult(self.cal.parse('3years 2weeks 5days', start), (target, 1))
28
30 s = datetime.datetime.now()
31 t = self.cal.inc(s, year=3) + datetime.timedelta(days=5, weeks=2)
32
33 start = s.timetuple()
34 target = t.timetuple()
35
36 self.assertExpectedResult(self.cal.parse('3 y 2 w 5 d', start), (target, 1))
37 self.assertExpectedResult(self.cal.parse('3y 2w 5d', start), (target, 1))
38
39 t = self.cal.inc(s, year=3) + datetime.timedelta(hours=5, minutes=50)
40 target = t.timetuple()
41
42 self.assertExpectedResult(self.cal.parse('3y 5h 50m', start), (target, 3))
43
45 s = datetime.datetime.now()
46 t = self.cal.inc(s, year=3) + datetime.timedelta(days=5, weeks=2)
47
48 start = s.timetuple()
49 target = t.timetuple()
50
51 self.assertExpectedResult(self.cal.parse('3 years, 2 weeks, 5 days', start), (target, 1))
52 self.assertExpectedResult(self.cal.parse('3 years, 2 weeks and 5 days', start), (target, 1))
53 self.assertExpectedResult(self.cal.parse('3y, 2w, 5d ', start), (target, 1))
54
56 s = datetime.datetime.now()
57 t = s + datetime.timedelta(days=3)
58
59 t = t.replace(hour=16, minute=0, second=0)
60
61 start = s.timetuple()
62 target = t.timetuple()
63
64 self.assertExpectedResult(self.cal.parse('4pm + 3 days', start), (target, 3))
65 self.assertExpectedResult(self.cal.parse('4pm +3 days', start), (target, 3))
66
68 s = datetime.datetime.now()
69 t = s + datetime.timedelta(days=-3)
70
71 t = t.replace(hour=16, minute=0, second=0)
72
73 start = s.timetuple()
74 target = t.timetuple()
75
76 self.assertExpectedResult(self.cal.parse('4pm - 3 days', start), (target, 3))
77 self.assertExpectedResult(self.cal.parse('4pm -3 days', start), (target, 3))
78
79
80 if __name__ == "__main__":
81 unittest.main()
82