def test_parsetime(self):
     table = {
         '16:15'         : (16,15),
         '12:32:9'       : (12,32,9),
         '02:7:18.'      : (2,7,18),
         '21:23:39.91'   : (21,23,39,910000),
         '08:32:40 PM'   : (20,32,40),
         '11:59pm'       : (23,59),
         '12am'          : (12,),
         '0pm'           : (12,),
         '0am'           : (0,),
     }
     for USA in False,True:
         for expr,t_tuple in table.iteritems():
             self.assertEqualsDatetime(parseDateTime(expr,USA),
                                       datetime.time(*t_tuple))
     # imply current date
     today_date_tuple = datetime.date.today().timetuple()[:3]
     for USA in False,True:
         for expr,t_tuple in table.iteritems():
             self.assertEqualsDatetime(
                 parseDateTime(expr,USA,implyCurrentDate=True),
                 datetime.datetime(*(today_date_tuple+t_tuple)))
     # don't recognize a time just from a single number
     self.assertRaises(ValueError, parseDateTime, "11")
     # 12pm is midnight; should be given as 0am
     self.assertRaises(ValueError, parseDateTime, "12pm")
 def test_parsedate_ambiguous(self):
     exprs = ['01 05 2003', '9-4-92', '11/12']
     dates = [datetime.date(*d_tuple) for d_tuple in
              (2003,5,1), (1992,4,9), (_this_year(),12,11)]
     for e,d in zip(exprs,dates):
         self.assertEqualsDatetime(parseDateTime(e,USA=False), d)
         self.assertEqualsDatetime(parseDateTime(e,USA=True),
                                   _swap_month_day(d))
 def test_parsedatetime_ambiguous(self):
     exprs = ['07-02-2003 / 5:40',
              '12:32:09.32, 1 8 2003',
              '3:45pm 5.11.2001',
              '6 9 10pm',]
     datetimes = [datetime.datetime(*dt_tuple) for dt_tuple in
                  (2003,2,7,5,40),
                  (2003,8,1,12,32,9,320000),
                  (2001,11,5,15,45),
                  (_this_year(),9,6,22)]
     for e,dt in zip(exprs,datetimes):
         self.assertEqualsDatetime(parseDateTime(e,USA=False), dt)
         self.assertEqualsDatetime(parseDateTime(e,USA=True),
                                   _swap_month_day(dt))
 def test_parsedate_unambiguous(self):
     table = {
         '93/7/18'           : (1993,7,18),
         '15.6.2001'         : (2001,6,15),
         '6-15-2001'         : (2001,6,15),
         '1980, November 20' : (1980,11,20),
         '4 Mar 79'          : (1979,3,4),
         'July 4'            : (_this_year(),7,4),
         '15/08'             : (_this_year(),8,15),
     }
     for USA in False,True:
         for expr,datetuple in table.iteritems():
             self.assertEqualsDatetime(parseDateTime(expr,USA),
                                       datetime.date(*datetuple))
 def test_parsedatetime_unambiguous(self):
     table = {
         '93_7_18, 2:34'             : (1993,7,18,2,34),
         '9:12:18 15.6.2001'         : (2001,6,15,9,12,18),
         '3:37am / 1980,November 20' : (1980,11,20,3,37),
         '4 Mar 79 20:19:02.45'      : (1979,3,4,20,19,2,450000),
         '6-15-2001 4 pm'            : (2001,6,15,16),
         'July 4 12am'               : (_this_year(),7,4,12),
         '15/08 03:34:21'            : (_this_year(),8,15,3,34,21),
         '3 13 9:05'                 : (_this_year(),3,13,9,5),
     }
     today_date_tuple = datetime.date.today().timetuple()[:3]
     for USA in False,True:
         for expr,dt_tuple in table.iteritems():
             self.assertEqualsDatetime(parseDateTime(expr,USA),
                                       datetime.datetime(*dt_tuple))