def test_no_stop_time(self): # It may decide that January 13 is next year. expected_year = _guess_year(1, 13, PYTZ_TIME_ZONE, self.now) self.assertIn(expected_year, [self.now.year, self.now.year + 1]) starts_at, ends_at = parse_single_event('january 13 9:45pm') self.assertEqual(datetime(expected_year, 1, 13, 21, 45), starts_at) self.assertEqual(None, ends_at)
def test_start_end_without_year(self): s = 'June 25 5:00PM — 8:00PM' starts_at, ends_at = parse_single_event(s, now=datetime( 2019, 5, 1, 13, 30)) self.assertEqual(datetime(2019, 6, 25, 17, 0), starts_at) self.assertEqual(datetime(2019, 6, 25, 20, 0), ends_at)
def test(self): starts_at, ends_at = parse_single_event('january 13 9-11pm') # It may decide that January 13 is next year. expected_year = _guess_year(1, 13, PYTZ_TIME_ZONE, self.now) self.assertIn(expected_year, [self.now.year, self.now.year + 1]) self.assertEqual(datetime(expected_year, 1, 13, 21, 0), starts_at) self.assertEqual(datetime(expected_year, 1, 13, 23, 0), ends_at) not_now = self.now.replace(year=2015, month=1, day=1) starts_at, ends_at = parse_single_event('january 13 9-11pm', now=not_now, local_tz=PYTZ_TIME_ZONE) self.assertEqual( PYTZ_TIME_ZONE.localize(datetime(not_now.year, 1, 13, 21, 0)), starts_at) self.assertEqual( PYTZ_TIME_ZONE.localize(datetime(not_now.year, 1, 13, 23, 0)), ends_at)
def test_late_last_year(self): month = 1 day = 1 year = 2018 starts_at, ends_at = parse_single_event('december 31 9-11:30pm', now=datetime( year, month, day, 13, 30)) self.assertEqual(datetime(year - 1, 12, 31, 21, 0), starts_at) self.assertEqual(datetime(year - 1, 12, 31, 23, 30), ends_at)
def test_early_next_year(self): month = 12 day = 31 year = 2017 starts_at, ends_at = parse_single_event('january 1 9-11:30pm', now=datetime( year, month, day, 13, 30)) self.assertEqual(datetime(year + 1, 1, 1, 21, 0), starts_at) self.assertEqual(datetime(year + 1, 1, 1, 23, 30), ends_at)
def test_start_time_with_year(self): month = 1 day = 1 year = 2018 for s in ('december 31, 2016 9pm', 'december 31 2016 9pm'): starts_at, ends_at = parse_single_event(s, now=datetime( year, month, day, 13, 30)) self.assertEqual(datetime(2016, 12, 31, 21, 0), starts_at) self.assertEqual(None, ends_at)
def test_range_with_year(self): month = 1 day = 1 year = 2018 # note that one has '9pm' instead of just '9', and one has comma before year for s in ('december 31, 2016 9pm-11:30pm', 'december 31 2016 9-11:30pm'): starts_at, ends_at = parse_single_event(s, now=datetime( year, month, day, 13, 30)) self.assertEqual(datetime(2016, 12, 31, 21, 0), starts_at) self.assertEqual(datetime(2016, 12, 31, 23, 30), ends_at)
def test_bad_string(self): with self.assertRaises(ValueError): parse_single_event('1 december 31 2017 9-11:30pm')