def test_parse_time__only_seconds(self): times = ['88'] result = parse_time(times[0]) self.assertEqual(result, int(times[-1])) result = parse_time(times[0]) self.assertEqual(result, int(times[-1]))
def test_parse_time__all_three(self): times = ['4', '10', '54'] result = parse_time(':'.join(times)) self.assertEqual( result, int(times[-1]) + 60 * int(times[-2]) + 60 * 60 * int(times[-3]))
def execute(self, current_server, current_time, message, author): strings = message.lstrip().split(' ', 1) if len(strings) < 2: return "Sorry, I don't understand that formatting. I was expecting something like '!vtct hh:mm:ss'" parsed_time = parse_time(strings[1]) if parsed_time >= 0: update_succeeded = current_server.set_timeout(parsed_time) if not update_succeeded: return "Sorry, something went wrong and I couldn't update the delay. Make sure the delay is under 100 million seconds (~3 years)" formatted_time = format_seconds(parsed_time) return "Cool, from now on I'll wait at least {} between alerts.".format( formatted_time) else: return "Sorry, I don't understand that formatting. I was expecting something like '!vtct hh:mm:ss'"
def test_parse_time(self): when = '2016-05-04T15:32:18' # ISO extended without datetime, should default to UTC. result = parse_time(when) expected = datetime.datetime(2016, 5, 4, 15, 32, 18, tzinfo=pytz.utc) self.assertEqual(result, expected)
def test_parse_time__bad_number(self): times = ['4', '10as', '5'] result = parse_time(':'.join(times)) self.assertEqual(result, -1)
def test_parse_time__wrong_separator(self): times = ['4', '10', '5'] result = parse_time('!'.join(times)) self.assertEqual(result, -1)
def test_parse_time__too_many(self): times = ['4', '10', '5', '3'] result = parse_time(':'.join(times)) self.assertEqual(result, -1)
def test_parse_time__only_two(self): times = ['1230', '54'] result = parse_time(':'.join(times)) self.assertEqual(result, int(times[-1]) + 60 * int(times[-2]))