def test_tag_decode(self): obj = TimeDuration() self.assertEqual(obj.decode_time_tag('ms'), obj.DURATION_MSEC) self.assertEqual(obj.decode_time_tag('msec'), obj.DURATION_MSEC) self.assertEqual(obj.decode_time_tag('millisecond'), obj.DURATION_MSEC) self.assertEqual(obj.decode_time_tag('milliseconds'), obj.DURATION_MSEC) self.assertEqual(obj.get_tag_as_string(obj.DURATION_MSEC), 'ms') self.assertEqual(obj.decode_time_tag('sec'), obj.DURATION_SECOND) self.assertEqual(obj.decode_time_tag('second'), obj.DURATION_SECOND) self.assertEqual(obj.decode_time_tag('seconds'), obj.DURATION_SECOND) self.assertEqual(obj.get_tag_as_string(obj.DURATION_SECOND), 'sec') self.assertEqual(obj.get_tag_as_string(0), 'sec') self.assertEqual(obj.decode_time_tag('min'), obj.DURATION_MINUTE) self.assertEqual(obj.decode_time_tag('minute'), obj.DURATION_MINUTE) self.assertEqual(obj.decode_time_tag('minutes'), obj.DURATION_MINUTE) self.assertEqual(obj.get_tag_as_string(obj.DURATION_MINUTE), 'min') self.assertEqual(obj.decode_time_tag('hr'), obj.DURATION_HOUR) self.assertEqual(obj.decode_time_tag('hour'), obj.DURATION_HOUR) self.assertEqual(obj.decode_time_tag('hours'), obj.DURATION_HOUR) self.assertEqual(obj.get_tag_as_string(obj.DURATION_HOUR), 'hr') self.assertEqual(obj.decode_time_tag('dy'), obj.DURATION_DAY) self.assertEqual(obj.decode_time_tag('day'), obj.DURATION_DAY) self.assertEqual(obj.decode_time_tag('days'), obj.DURATION_DAY) self.assertEqual(obj.get_tag_as_string(obj.DURATION_DAY), 'day') self.assertEqual(obj.decode_time_tag('mon'), obj.DURATION_MONTH) self.assertEqual(obj.decode_time_tag('month'), obj.DURATION_MONTH) self.assertEqual(obj.decode_time_tag('months'), obj.DURATION_MONTH) self.assertEqual(obj.get_tag_as_string(obj.DURATION_MONTH), 'mon') self.assertEqual(obj.decode_time_tag('yr'), obj.DURATION_YEAR) self.assertEqual(obj.decode_time_tag('year'), obj.DURATION_YEAR) self.assertEqual(obj.decode_time_tag('years'), obj.DURATION_YEAR) self.assertEqual(obj.get_tag_as_string(obj.DURATION_YEAR), 'yr') obj.reset() with self.assertRaises(ValueError): obj.get_tag_as_string(-1) obj.get_tag_as_string(7) obj.decode_time_tag('homey') with self.assertRaises(TypeError): obj.get_tag_as_string('hello') obj.decode_time_tag(None) obj.decode_time_tag(3) return
def test_parse_time_duration(self): obj = TimeDuration() self.assertEqual(obj.parse_time_duration_to_seconds(1), 1.0) self.assertEqual(obj.get_period_as_string(), "1 sec") obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('1'), 1.0) self.assertEqual(obj.get_period_as_string(), "1 sec") obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('01'), 1.0) self.assertEqual(obj.get_period_as_string(), "1 sec") obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('0x01'), 1.0) self.assertEqual(obj.get_period_as_string(), "1 sec") obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('1 ms'), 0.001) self.assertEqual(obj.get_period_as_string(), '1 ms') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('1 msec'), 0.001) self.assertEqual(obj.get_period_as_string(), '1 ms') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('1 sec'), 1.0) self.assertEqual(obj.get_period_as_string(), '1 sec') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds(b'1 sec'), 1.0) self.assertEqual(obj.get_period_as_string(), '1 sec') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('1 second'), 1.0) self.assertEqual(obj.get_period_as_string(), '1 sec') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('1 min'), 60.0) self.assertEqual(obj.get_period_as_string(), '1 min') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('1 minute'), 60.0) self.assertEqual(obj.get_period_as_string(), '1 min') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('1 minutes'), 60.0) self.assertEqual(obj.get_period_as_string(), '1 min') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('1 hr'), 3600.0) self.assertEqual(obj.get_period_as_string(), '1 hr') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('1 HR'), 3600.0) self.assertEqual(obj.get_period_as_string(), '1 hr') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('1 Hours'), 3600.0) self.assertEqual(obj.get_period_as_string(), '1 hr') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('1 day'), 86400.0) self.assertEqual(obj.get_period_as_string(), '1 day') # note: these handled, but have NO 'seconds' result obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('1 month'), None) self.assertEqual(obj.get_period_as_string(), '1 mon') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('1 year'), None) self.assertEqual(obj.get_period_as_string(), '1 yr') # repeat with more than 1 - a random value seed = random.randint(101, 999) source = "{0} ms".format(seed) expect_sec = seed * 0.001 obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds(source), expect_sec) self.assertEqual(obj.get_period_as_string(), source) seed = random.randint(2, 59) source = "{0} sec".format(seed) expect_sec = seed * 1.0 obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds(source), expect_sec) self.assertEqual(obj.get_period_as_string(), source) seed = random.randint(2, 59) source = "{0} min".format(seed) expect_sec = seed * 60.0 obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds(source), expect_sec) self.assertEqual(obj.get_period_as_string(), source) seed = random.randint(2, 23) source = "{0} hr".format(seed) expect_sec = seed * 3600.0 obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds(source), expect_sec) self.assertEqual(obj.get_period_as_string(), source) seed = random.randint(2, 9) source = "{0} day".format(seed) expect_sec = seed * 86400.0 obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds(source), expect_sec) self.assertEqual(obj.get_period_as_string(), source) # note: these handled, but have NO 'seconds' result seed = random.randint(2, 9) source = "{0} mon".format(seed) expect_sec = None obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds(source), expect_sec) self.assertEqual(obj.get_period_as_string(), source) seed = random.randint(2, 9) source = "{0} yr".format(seed) expect_sec = None obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds(source), expect_sec) self.assertEqual(obj.get_period_as_string(), source) return
def test_parse_time_duration_plus_minus(self): obj = TimeDuration() # check the signs - +/- to allow things like "do 5 minutes before X" obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('+1 ms'), 0.001) self.assertEqual(obj.get_period_as_string(), '1 ms') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('-1 ms'), -0.001) self.assertEqual(obj.get_period_as_string(), '-1 ms') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('+1 sec'), 1.0) self.assertEqual(obj.get_period_as_string(), '1 sec') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds(b'-1 sec'), -1.0) self.assertEqual(obj.get_period_as_string(), '-1 sec') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('+1 min'), 60.0) self.assertEqual(obj.get_period_as_string(), '1 min') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('-5 min'), -300.0) self.assertEqual(obj.get_period_as_string(), '-5 min') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('+2 hr'), 7200.0) self.assertEqual(obj.get_period_as_string(), '2 hr') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('-3 hr'), -10800.0) self.assertEqual(obj.get_period_as_string(), '-3 hr') # confirm the UTC 'decoration' is ignored, # including ('z', 'zulu', 'gm', 'utc', 'uct') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('+1 ms utc'), 0.001) self.assertEqual(obj.get_period_as_string(), '1 ms') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('-1 ms UTC'), -0.001) self.assertEqual(obj.get_period_as_string(), '-1 ms') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('+1 sec z'), 1.0) self.assertEqual(obj.get_period_as_string(), '1 sec') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds(b'-1 sec Z'), -1.0) self.assertEqual(obj.get_period_as_string(), '-1 sec') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('+1 min gm'), 60.0) self.assertEqual(obj.get_period_as_string(), '1 min') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('-5 min GM'), -300.0) self.assertEqual(obj.get_period_as_string(), '-5 min') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('+2 hr uct'), 7200.0) self.assertEqual(obj.get_period_as_string(), '2 hr') obj.reset() self.assertEqual(obj.parse_time_duration_to_seconds('-3 hr zulu'), -10800.0) self.assertEqual(obj.get_period_as_string(), '-3 hr') return