def test_finding_no_language_when_enabled_should_redetect(self): dp = DateParser(allow_redetect_language=True) self.assertEqual(datetime(2014, 8, 13).date(), dp.parse('13 Ago, 2014').date()) self.assertEqual(datetime(2014, 8, 11).date(), dp.parse(u'11 Ağustos, 2014').date())
def test_finding_no_language_when_not_seen_before_should_raise_error(self): dp = DateParser() self.assertEqual(datetime(2014, 8, 13).date(), dp.parse('13 Ago, 2014').date()) with self.assertRaises(LanguageWasNotSeenBeforeError): dp.parse(u'11 Ağustos, 2014')
def test_finding_no_language_should_work_for_numeric_dates(self): dp = DateParser() self.assertEqual(datetime(2014, 8, 13).date(), dp.parse('13 Ago, 2014').date()) parsed_date = dp.parse(u'13/08/2014') self.assertEqual(datetime(2014, 8, 13).date(), parsed_date.date())
def test_finding_no_language_when_not_seen_before_should_raise_error(self): dp = DateParser() self.assertEqual( datetime(2014, 8, 13).date(), dp.parse('13 Ago, 2014').date()) with self.assertRaises(LanguageWasNotSeenBeforeError): dp.parse(u'11 Ağustos, 2014')
def test_finding_no_language_when_not_seen_before_should_raise_error(self): """ This test depends on the defined order of the languages and needs to be rewritten """ dp = DateParser() self.assertEqual(datetime(2014, 8, 13).date(), dp.parse("13 Srpen, 2014").date()) with self.assertRaises(ValueError): dp.parse('11 Ağustos, 2014')
def test_should_not_allow_multiple_languages_by_default(self): dates_in_spanish = [ (u'13 Ago, 2014', datetime(2014, 8, 13)), (u'11 Marzo, 2014', datetime(2014, 3, 11)), (u'13 Septiembre, 2014', datetime(2014, 9, 13)), ] dp = DateParser() for date_string, correct_date in dates_in_spanish: parsed_date = dp.parse(date_string, None) self.assertEqual(correct_date.date(), parsed_date.date()) with self.assertRaisesRegexp(ValueError, 'Invalid date'): portuguese_date = u'13 Setembro, 2014' dp.parse(portuguese_date, None)
def test_should_not_allow_multiple_languages_by_default(self): dates_in_spanish = [ (u'13 Ago, 2014', datetime(2014, 8, 13)), (u'11 Marzo, 2014', datetime(2014, 3, 11)), (u'13 Septiembre, 2014', datetime(2014, 9, 13)), ] dp = DateParser() for date_string, correct_date in dates_in_spanish: parsed_date = dp.parse(date_string) self.assertEqual(correct_date.date(), parsed_date.date()) with self.assertRaisesRegexp(ValueError, 'Invalid date'): portuguese_date = u'13 Setembro, 2014' dp.parse(portuguese_date)
def test_it_dates_with_format(self): parser = DateParser() date = parser.parse('14 giu 13', date_format='%y %B %d') self.assertEqual(date.year, 2014) self.assertEqual(date.month, 6) self.assertEqual(date.day, 13) date = parser.parse('14_luglio_15', date_format='%y_%b_%d') self.assertEqual(date.year, 2014) self.assertEqual(date.month, 7) self.assertEqual(date.day, 15) date = parser.parse('14_LUGLIO_15', date_format='%y_%b_%d') self.assertEqual(date.year, 2014) self.assertEqual(date.month, 7) self.assertEqual(date.day, 15)
def test_ro_dates(self): parser = DateParser() date_fixtures = [ ('13 iunie 2013', datetime(2013, 6, 13)), ('14 aprilie 2014', datetime(2014, 4, 14)), ('18 martie 2012', datetime(2012, 3, 18)), ] for dt_string, correct_date in date_fixtures: parsed = parser.parse(dt_string) self.assertEquals(correct_date.date(), parsed.date())
def test_should_not_assume_language_prematurely(self): dp = DateParser() date_fixtures = [ (u'07/07/2014', datetime(2014, 7, 7)), (u'07.ago.2014 | 12:52', datetime(2014, 8, 7)), (u'07.jul.2014 | 12:52', datetime(2014, 7, 7)), (u'07.feb.2014 | 12:52', datetime(2014, 2, 7)), (u'07.ene.2014 | 12:52', datetime(2014, 1, 7)), ] for date_string, correct_date in date_fixtures: self.assertEqual(correct_date.date(), dp.parse(date_string).date())
def test_should_enable_redetection_for_multiple_languages(self): dates_fixture = [ (u'13 Ago, 2014', datetime(2014, 8, 13)), (u'11 Marzo, 2014', datetime(2014, 3, 11)), (u'13 Septiembre, 2014', datetime(2014, 9, 13)), (u'13 Setembro, 2014', datetime(2014, 9, 13)), (u'13 Março, 2014', datetime(2014, 3, 13)), ] dp = DateParser(allow_redetect_language=True) for date_string, correct_date in dates_fixture: parsed_date = dp.parse(date_string) self.assertEqual(correct_date.date(), parsed_date.date())
def test_de_dates(self): parser = DateParser() date_fixtures = [ ('21. Dezember 2013', datetime(2013, 12, 21)), ('19. Februar 2012', datetime(2012, 2, 19)), ('26. Juli 2014', datetime(2014, 7, 26)), ] for dt_string, correct_date in date_fixtures: parsed = parser.parse(dt_string) self.assertEquals(correct_date.date(), parsed.date()) date = DateParser().parse('18.10.14 um 22:56 Uhr') self.assertEqual(date.year, 2014) self.assertEqual(date.month, 10) self.assertEqual(date.day, 18) self.assertEqual(date.hour, 22) self.assertEqual(date.minute, 56)
def test_parsing_with_time_zones(self, date_string, expected_datetime): self.given_local_tz_offset(+1) parser = DateParser() self.assertEqual(expected_datetime, parser.parse(date_string))
def test_should_reject_empty_string(self): dp = DateParser() with self.assertRaisesRegexp(ValueError, 'Empty string'): dp.parse('')