Package parsedatetime :: Package tests :: Module TestMultiple
[hide private]
[frames] | no frames]

Source Code for Module parsedatetime.tests.TestMultiple

 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
12 - def assertExpectedResult(self, result, check, **kwargs):
13 return pdt.tests.compareResultByTimeTuplesAndFlags(result, check, **kwargs)
14
15 - def setUp(self):
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
19 - def testSimpleMultipleItems(self):
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
55 - def testUnixATStyle(self):
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
67 - def testUnixATStyleNegative(self):
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