def testParseDateTimePatternError(self): # Quote not closed try: parseDateTimePattern("HH' Uhr") except DateTimePatternParseError, err: self.assertEqual( str(err), 'The quote starting at character 2 is not closed.')
def testParseQuotesInPattern(self): self.assertEqual(parseDateTimePattern("HH''mm"), [('H', 2), "'", ('m', 2)]) self.assertEqual(parseDateTimePattern("HH'HHmm'mm"), [('H', 2), 'HHmm', ('m', 2)]) self.assertEqual(parseDateTimePattern("HH':'''':'mm"), [('H', 2), ":':", ('m', 2)]) self.assertEqual(parseDateTimePattern("HH':' ':'mm"), [('H', 2), ": :", ('m', 2)])
def testParseGermanTimePattern(self): # German full self.assertEqual(parseDateTimePattern("H:mm' Uhr 'z"), [('H', 1), ':', ('m', 2), ' Uhr ', ('z', 1)]) # German long self.assertEqual(parseDateTimePattern("HH:mm:ss z"), [('H', 2), ':', ('m', 2), ':', ('s', 2), ' ', ('z', 1)]) # German medium self.assertEqual(parseDateTimePattern("HH:mm:ss"), [('H', 2), ':', ('m', 2), ':', ('s', 2)]) # German short self.assertEqual(parseDateTimePattern("HH:mm"), [('H', 2), ':', ('m', 2)])
def testParseRealDate(self): # German full self.assertEqual(parseDateTimePattern("EEEE, d. MMMM yyyy"), [('E', 4), ', ', ('d', 1), '. ', ('M', 4), ' ', ('y', 4)]) # German long self.assertEqual(parseDateTimePattern("d. MMMM yyyy"), [('d', 1), '. ', ('M', 4), ' ', ('y', 4)]) # German medium self.assertEqual(parseDateTimePattern("dd.MM.yyyy"), [('d', 2), '.', ('M', 2), '.', ('y', 4)]) # German short self.assertEqual(parseDateTimePattern("dd.MM.yy"), [('d', 2), '.', ('M', 2), '.', ('y', 2)])
def testParseRealDateTime(self): # German full self.assertEqual( parseDateTimePattern("EEEE, d. MMMM yyyy H:mm' Uhr 'z"), [('E', 4), ', ', ('d', 1), '. ', ('M', 4), ' ', ('y', 4), ' ', ('H', 1), ':', ('m', 2), ' Uhr ', ('z', 1)]) # German long self.assertEqual(parseDateTimePattern("d. MMMM yyyy HH:mm:ss z"), [('d', 1), '. ', ('M', 4), ' ', ('y', 4), ' ', ('H', 2), ':', ('m', 2), ':', ('s', 2), ' ', ('z', 1)]) # German medium self.assertEqual(parseDateTimePattern("dd.MM.yyyy HH:mm:ss"), [('d', 2), '.', ('M', 2), '.', ('y', 4), ' ', ('H', 2), ':', ('m', 2), ':', ('s', 2)]) # German short self.assertEqual(parseDateTimePattern("dd.MM.yy HH:mm"), [('d', 2), '.', ('M', 2), '.', ('y', 2), ' ', ('H', 2), ':', ('m', 2)])
def testParseSimpleTimePattern(self): self.assertEqual(parseDateTimePattern('HH'), [('H', 2)]) self.assertEqual(parseDateTimePattern('HH:mm'), [('H', 2), ':', ('m', 2)]) self.assertEqual(parseDateTimePattern('HH:mm:ss'), [('H', 2), ':', ('m', 2), ':', ('s', 2)]) self.assertEqual(parseDateTimePattern('mm:ss'), [('m', 2), ':', ('s', 2)]) self.assertEqual(parseDateTimePattern('H:m:s'), [('H', 1), ':', ('m', 1), ':', ('s', 1)]) self.assertEqual(parseDateTimePattern('HHH:mmmm:sssss'), [('H', 3), ':', ('m', 4), ':', ('s', 5)])
def runTest(self): # Loading Locale object locale = LocaleFactory(self.__path)() # Making sure all number format patterns parse for category in (u'decimal', u'scientific', u'percent', u'currency'): for length in getattr(locale.numbers, category + 'Formats').values(): for format in length.formats.values(): self.assert_( parseNumberPattern(format.pattern) is not None) # Making sure all datetime patterns parse for calendar in locale.dates.calendars.values(): for category in ('date', 'time', 'dateTime'): for length in getattr(calendar, category + 'Formats').values(): for format in length.formats.values(): self.assert_( parseDateTimePattern(format.pattern) is not None)
class TestDateTimePatternParser(TestCase): """Extensive tests for the ICU-based-syntax datetime pattern parser.""" def testParseSimpleTimePattern(self): self.assertEqual(parseDateTimePattern('HH'), [('H', 2)]) self.assertEqual(parseDateTimePattern('HH:mm'), [('H', 2), ':', ('m', 2)]) self.assertEqual(parseDateTimePattern('HH:mm:ss'), [('H', 2), ':', ('m', 2), ':', ('s', 2)]) self.assertEqual(parseDateTimePattern('mm:ss'), [('m', 2), ':', ('s', 2)]) self.assertEqual(parseDateTimePattern('H:m:s'), [('H', 1), ':', ('m', 1), ':', ('s', 1)]) self.assertEqual(parseDateTimePattern('HHH:mmmm:sssss'), [('H', 3), ':', ('m', 4), ':', ('s', 5)]) def testParseGermanTimePattern(self): # German full self.assertEqual(parseDateTimePattern("H:mm' Uhr 'z"), [('H', 1), ':', ('m', 2), ' Uhr ', ('z', 1)]) # German long self.assertEqual(parseDateTimePattern("HH:mm:ss z"), [('H', 2), ':', ('m', 2), ':', ('s', 2), ' ', ('z', 1)]) # German medium self.assertEqual(parseDateTimePattern("HH:mm:ss"), [('H', 2), ':', ('m', 2), ':', ('s', 2)]) # German short self.assertEqual(parseDateTimePattern("HH:mm"), [('H', 2), ':', ('m', 2)]) def testParseRealDate(self): # German full self.assertEqual(parseDateTimePattern("EEEE, d. MMMM yyyy"), [('E', 4), ', ', ('d', 1), '. ', ('M', 4), ' ', ('y', 4)]) # German long self.assertEqual(parseDateTimePattern("d. MMMM yyyy"), [('d', 1), '. ', ('M', 4), ' ', ('y', 4)]) # German medium self.assertEqual(parseDateTimePattern("dd.MM.yyyy"), [('d', 2), '.', ('M', 2), '.', ('y', 4)]) # German short self.assertEqual(parseDateTimePattern("dd.MM.yy"), [('d', 2), '.', ('M', 2), '.', ('y', 2)]) def testParseRealDateTime(self): # German full self.assertEqual( parseDateTimePattern("EEEE, d. MMMM yyyy H:mm' Uhr 'z"), [('E', 4), ', ', ('d', 1), '. ', ('M', 4), ' ', ('y', 4), ' ', ('H', 1), ':', ('m', 2), ' Uhr ', ('z', 1)]) # German long self.assertEqual(parseDateTimePattern("d. MMMM yyyy HH:mm:ss z"), [('d', 1), '. ', ('M', 4), ' ', ('y', 4), ' ', ('H', 2), ':', ('m', 2), ':', ('s', 2), ' ', ('z', 1)]) # German medium self.assertEqual(parseDateTimePattern("dd.MM.yyyy HH:mm:ss"), [('d', 2), '.', ('M', 2), '.', ('y', 4), ' ', ('H', 2), ':', ('m', 2), ':', ('s', 2)]) # German short self.assertEqual(parseDateTimePattern("dd.MM.yy HH:mm"), [('d', 2), '.', ('M', 2), '.', ('y', 2), ' ', ('H', 2), ':', ('m', 2)]) def testParseQuotesInPattern(self): self.assertEqual(parseDateTimePattern("HH''mm"), [('H', 2), "'", ('m', 2)]) self.assertEqual(parseDateTimePattern("HH'HHmm'mm"), [('H', 2), 'HHmm', ('m', 2)]) self.assertEqual(parseDateTimePattern("HH':'''':'mm"), [('H', 2), ":':", ('m', 2)]) self.assertEqual(parseDateTimePattern("HH':' ':'mm"), [('H', 2), ": :", ('m', 2)]) def testParseDateTimePatternError(self): # Quote not closed try: parseDateTimePattern("HH' Uhr") except DateTimePatternParseError, err: self.assertEqual( str(err), 'The quote starting at character 2 is not closed.') # Test correct length of characters in datetime fields try: parseDateTimePattern("HHHHH") except DateTimePatternParseError, err: self.assert_(str(err).endswith('You have: 5'))