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

Source Code for Module parsedatetime.tests.TestSimpleOffsets

  1   
  2  """ 
  3  Test parsing of 'simple' offsets 
  4  """ 
  5   
  6  import time 
  7  import datetime 
  8  import calendar 
  9  import unittest 
 10  import parsedatetime as pdt 
11 12 -def _truncateResult(result, trunc_seconds=True, trunc_hours=False):
13 try: 14 dt, flag = result 15 except ValueError: 16 # wtf?! 17 return result 18 if trunc_seconds: 19 dt = dt[:5] + (0,) * 4 20 if trunc_hours: 21 dt = dt[:3] + (0,) * 6 22 return dt, flag
23 24 _tr = _truncateResult
25 26 -class test(unittest.TestCase):
27 28 @pdt.tests.assertEqualWithComparator
29 - def assertExpectedResult(self, result, check, **kwargs):
30 return pdt.tests.compareResultByTimeTuplesAndFlags(result, check, **kwargs)
31
32 - def setUp(self):
33 self.cal = pdt.Calendar() 34 self.yr, self.mth, self.dy, self.hr, self.mn, self.sec, self.wd, self.yd, self.isdst = time.localtime()
35
36 - def testNow(self):
37 s = datetime.datetime.now() 38 39 start = s.timetuple() 40 target = s.timetuple() 41 42 self.assertExpectedResult(self.cal.parse('now', start), (target, 2))
43
44 - def testMinutesFromNow(self):
45 s = datetime.datetime.now() 46 t = s + datetime.timedelta(minutes=5) 47 48 start = s.timetuple() 49 target = t.timetuple() 50 51 self.assertExpectedResult(self.cal.parse('5 minutes from now', start), (target, 2)) 52 self.assertExpectedResult(self.cal.parse('5 min from now', start), (target, 2)) 53 self.assertExpectedResult(self.cal.parse('5m from now', start), (target, 2)) 54 self.assertExpectedResult(self.cal.parse('in 5 minutes', start), (target, 2)) 55 self.assertExpectedResult(self.cal.parse('in 5 min', start), (target, 2)) 56 self.assertExpectedResult(self.cal.parse('5 minutes', start), (target, 2)) 57 self.assertExpectedResult(self.cal.parse('5 min', start), (target, 2)) 58 self.assertExpectedResult(self.cal.parse('5m', start), (target, 2)) 59 60 self.assertExpectedResult(self.cal.parse('five minutes from now', start), (target, 2)) 61 self.assertExpectedResult(self.cal.parse('five min from now', start), (target, 2)) 62 self.assertExpectedResult(self.cal.parse('in five minutes', start), (target, 2)) 63 self.assertExpectedResult(self.cal.parse('in five min', start), (target, 2)) 64 self.assertExpectedResult(self.cal.parse('five minutes', start), (target, 2)) 65 self.assertExpectedResult(self.cal.parse('five min', start), (target, 2))
66
67 - def testMinutesBeforeNow(self):
68 s = datetime.datetime.now() 69 t = s + datetime.timedelta(minutes=-5) 70 71 start = s.timetuple() 72 target = t.timetuple() 73 74 self.assertExpectedResult(self.cal.parse('5 minutes before now', start), (target, 2)) 75 self.assertExpectedResult(self.cal.parse('5 min before now', start), (target, 2)) 76 self.assertExpectedResult(self.cal.parse('5m before now', start), (target, 2)) 77 self.assertExpectedResult(self.cal.parse('5 minutes ago', start), (target, 2)) 78 79 self.assertExpectedResult(self.cal.parse('five minutes before now', start), (target, 2)) 80 self.assertExpectedResult(self.cal.parse('five min before now', start), (target, 2))
81
82 - def testWeekFromNow(self):
83 s = datetime.datetime.now() 84 t = s + datetime.timedelta(weeks=1) 85 86 start = s.timetuple() 87 target = t.timetuple() 88 89 self.assertExpectedResult(self.cal.parse('in 1 week', start), (target, 1)) 90 self.assertExpectedResult(self.cal.parse('1 week from now', start), (target, 3)) 91 self.assertExpectedResult(self.cal.parse('in one week', start), (target, 1)) 92 self.assertExpectedResult(self.cal.parse('one week from now', start), (target, 3)) 93 self.assertExpectedResult(self.cal.parse('in a week', start), (target, 1)) 94 self.assertExpectedResult(self.cal.parse('a week from now', start), (target, 3)) 95 self.assertExpectedResult(self.cal.parse('in 7 days', start), (target, 1)) 96 self.assertExpectedResult(self.cal.parse('7 days from now', start), (target, 3)) 97 self.assertExpectedResult(self.cal.parse('in seven days', start), (target, 1)) 98 self.assertExpectedResult(self.cal.parse('seven days from now', start), (target, 3)) 99 self.assertEqual(_tr(self.cal.parse('next week', start), 100 trunc_hours=True), 101 _tr((target, 1), trunc_hours=True))
102
103 - def testNextWeekDay(self):
104 start = datetime.datetime.now() 105 target = start + datetime.timedelta(days=4 + 7 - start.weekday()) 106 start = start.timetuple() 107 target = target.timetuple() 108 109 self.assertExpectedResult(self.cal.parse('next friday', start), 110 (target, 1), dateOnly=True) 111 self.assertExpectedResult(self.cal.parse('next friday?', start), 112 (target, 1), dateOnly=True) 113 self.cal.ptc.StartTimeFromSourceTime = True 114 self.assertExpectedResult(self.cal.parse('next friday', start), 115 (target, 1))
116
117 - def testWeekBeforeNow(self):
118 s = datetime.datetime.now() 119 t = s + datetime.timedelta(weeks=-1) 120 121 start = s.timetuple() 122 target = t.timetuple() 123 124 self.assertEqual(_tr(self.cal.parse('1 week before now', start)), 125 _tr((target, 3))) 126 self.assertEqual(_tr(self.cal.parse('one week before now', start)), 127 _tr((target, 3))) 128 self.assertEqual(_tr(self.cal.parse('a week before now', start)), 129 _tr((target, 3))) 130 self.assertEqual(_tr(self.cal.parse('7 days before now', start)), 131 _tr((target, 3))) 132 self.assertEqual(_tr(self.cal.parse('seven days before now', start)), 133 _tr((target, 3))) 134 self.assertEqual(_tr(self.cal.parse('1 week ago', start)), 135 _tr((target, 1))) 136 self.assertEqual(_tr(self.cal.parse('a week ago', start)), 137 _tr((target, 1))) 138 self.assertEqual(_tr(self.cal.parse('last week', start), trunc_hours=True), 139 _tr((target, 1), trunc_hours=True))
140
141 - def testNextMonth(self):
142 s = datetime.datetime(self.yr, self.mth, self.dy, self.hr, self.mn, self.sec) + datetime.timedelta(days=1) 143 t = self.cal.inc(s, year=1) 144 145 start = s.timetuple() 146 target = t.timetuple() 147 148 phrase = 'next %s %s' % (calendar.month_name[t.month], t.day) 149 150 self.assertEqual(_tr(self.cal.parse(phrase, start)), 151 _tr((target, 1)))
152
153 - def testSpecials(self):
154 s = datetime.datetime.now() 155 t = datetime.datetime(self.yr, self.mth, self.dy, 9, 0, 0) + datetime.timedelta(days=1) 156 157 start = s.timetuple() 158 target = t.timetuple() 159 160 self.assertExpectedResult(self.cal.parse('tomorrow', start), (target, 1)) 161 self.assertExpectedResult(self.cal.parse('next day', start), (target, 1)) 162 163 t = datetime.datetime(self.yr, self.mth, self.dy, 9, 0, 0) + datetime.timedelta(days=-1) 164 target = t.timetuple() 165 166 self.assertExpectedResult(self.cal.parse('yesterday', start), (target, 1)) 167 168 t = datetime.datetime(self.yr, self.mth, self.dy, 9, 0, 0) 169 target = t.timetuple() 170 171 self.assertExpectedResult(self.cal.parse('today', start), (target, 1))
172 173 174 if __name__ == "__main__": 175 unittest.main() 176