def test_captured_pattern_has_pm(self): input_text = 'Your dental appointment at 4 pm in the evening.' parser = parsing.datetime_parsing(input_text) self.assertIn('4 pm', parser[0]) self.assertEqual(parser[0][1].strftime('%d'), datetime.today().strftime('%d')) self.assertEqual(parser[0][1].strftime('%H'), '16') self.assertEqual(len(parser), 1)
def test_captured_pattern_is_on_day(self): input_text = 'My birthday is on January 2nd.' parser = parsing.datetime_parsing(input_text) self.assertIn('January 2nd', parser[0]) self.assertEqual(parser[0][1].month, 1) self.assertEqual(parser[0][1].day, 2) self.assertEqual(len(parser), 1)
def test_captured_pattern_last_quarter_of_year(self): input_text = 'Last quarter of 2015' parser = parsing.datetime_parsing(input_text) self.assertIn(input_text, parser[0]) self.assertEqual(parser[0][1][0].strftime('%d-%m-%Y'), '01-09-2015') self.assertEqual(parser[0][1][1].strftime('%d-%m-%Y'), '31-12-2015') self.assertEqual(len(parser), 1)
def test_captured_pattern_has_pm_case_insensitive_3(self): input_text = '3Pm' parser = parsing.datetime_parsing(input_text) self.assertIn('3Pm', parser[0]) self.assertEqual(parser[0][1].strftime('%d'), datetime.today().strftime('%d')) self.assertEqual(parser[0][1].strftime('%H'), '15') self.assertEqual(len(parser), 1)
def test_captured_pattern_has_am(self): input_text = 'You have to woke up at 5 am in the morning' parser = parsing.datetime_parsing(input_text) self.assertIn('5 am', parser[0]) self.assertEqual(parser[0][1].strftime('%d'), datetime.today().strftime('%d')) self.assertEqual(parser[0][1].strftime('%H'), '05') self.assertEqual(len(parser), 1)
def test_captured_pattern_is_next_x_years_case_insensitive(self): input_text = 'next 43 Years' parser = parsing.datetime_parsing(input_text) self.assertIn('next 43 Year', parser[0]) self.assertEqual( parser[0][1].strftime('%d-%m-%Y'), (datetime.today() + timedelta(43 * 365)).strftime('%d-%m-%Y') ) self.assertEqual(len(parser), 1)
def test_captured_pattern_is_next_ten_years(self): input_text = 'Next 10 years' parser = parsing.datetime_parsing(input_text) self.assertIn('Next 10 year', parser[0]) self.assertEqual( parser[0][1].strftime('%d-%m-%Y'), (datetime.today() + timedelta(10 * 365)).strftime('%d-%m-%Y') ) self.assertEqual(len(parser), 1)
def test_captured_pattern_is_next_eight_days(self): input_text = 'Next 8 days' parser = parsing.datetime_parsing(input_text) self.assertIn(input_text, parser[0]) self.assertEqual( parser[0][1].strftime('%d-%m-%Y'), (datetime.today() + timedelta(days=8)).strftime('%d-%m-%Y') ) self.assertEqual(len(parser), 1)
def test_captured_pattern_tomorrow(self): input_text = 'tomorrow' parser = parsing.datetime_parsing(input_text) self.assertIn(input_text, parser[0]) self.assertEqual( parser[0][1].strftime('%d'), (datetime.today() + timedelta(days=1)).strftime('%d') ) self.assertEqual(len(parser), 1)
def test_captured_pattern_before_tomorrow(self): input_text = 'day before tomorrow' parser = parsing.datetime_parsing(input_text) self.assertIn(input_text, parser[0]) self.assertEqual( parser[0][1].strftime('%d'), (datetime.today() - timedelta(days=0)).strftime('%d') ) self.assertEqual(len(parser), 1) input_text = '2 days before' parser = parsing.datetime_parsing(input_text) self.assertIn(input_text, parser[0]) self.assertEqual( parser[0][1].strftime('%d'), (datetime.today() - timedelta(days=2)).strftime('%d') ) self.assertEqual(len(parser), 1)
def test_captured_pattern_days_later(self): input_text = '10 days later' parser = parsing.datetime_parsing(input_text) self.assertIn(input_text, parser[0]) self.assertEqual( parser[0][1].strftime('%d-%m-%y'), parsing.date_from_duration(self.base_date, 10, 'days', 'later').strftime('%d-%m-%y') ) self.assertEqual(len(parser), 1)
def test_captured_pattern_next_weekday(self): input_text = 'Next monday' parser = parsing.datetime_parsing(input_text) self.assertIn(input_text, parser[0]) self.assertEqual( parser[0][1].strftime('%d-%m-%y'), parsing.next_week_day(self.base_date, 0).strftime('%d-%m-%y') ) self.assertEqual(len(parser), 1)
def test_captured_pattern_minutes_from_now(self): input_text = '25 minutes from now' parser = parsing.datetime_parsing(input_text) self.assertIn(input_text, parser[0]) self.assertEqual( parser[0][1].strftime('%d-%m-%y'), parsing.date_from_duration( self.base_date, 25, 'minutes', 'from now' ).strftime('%d-%m-%y') ) self.assertEqual(len(parser), 1)
def test_captured_pattern_is_next_x_months_case_insensitive(self): import calendar input_text = 'next 55 Months' parser = parsing.datetime_parsing(input_text) relative_date = datetime.today() month = relative_date.month - 1 + 55 year = relative_date.year + month // 12 month = month % 12 + 1 day = min(relative_date.day, calendar.monthrange(year, month)[1]) self.assertIn('next 55 Month', parser[0]) self.assertEqual( parser[0][1].strftime('%d-%m-%Y'), datetime(year, month, day).strftime('%d-%m-%Y') ) self.assertEqual(len(parser), 1)
def test_captured_pattern_two_days(self): input_text = 'Monday and Friday' parser = parsing.datetime_parsing(input_text) self.assertIn('Monday', parser[0]) self.assertIn('Friday', parser[1]) self.assertEqual( parser[0][1].strftime('%d'), parsing.this_week_day(self.base_date, 0).strftime('%d') ) self.assertEqual( parser[1][1].strftime('%d'), parsing.this_week_day(self.base_date, 4).strftime('%d') ) self.assertEqual(len(parser), 2)
def test_captured_pattern_is_on_day_of_year_variation2(self): input_text = 'My birthday is on 2nd January 2014.' parser = parsing.datetime_parsing(input_text) self.assertIn('2nd January 2014', parser[0]) self.assertEqual(parser[0][1].strftime('%d-%m-%Y'), '02-01-2014') self.assertEqual(len(parser), 1)
def test_captured_pattern_today(self): input_text = 'today' parser = parsing.datetime_parsing(input_text) self.assertIn(input_text, parser[0]) self.assertEqual(parser[0][1].strftime('%d'), datetime.today().strftime('%d')) self.assertEqual(len(parser), 1)
def test_captured_pattern_year(self): input_text = '2010' parser = parsing.datetime_parsing(input_text) self.assertIn(input_text, parser[0]) self.assertEqual(parser[0][1].strftime('%Y'), input_text) self.assertEqual(len(parser), 1)
def test_captured_pattern_is_on_date(self): input_text = 'The event is on Monday 12 January 2012' parser = parsing.datetime_parsing(input_text) self.assertIn('Monday 12 January 2012', parser[0]) self.assertEqual(parser[0][1], datetime(2012, 1, 12)) self.assertEqual(len(parser), 1)