def test_special_values(self): self.assertEqual(str(utils.Timedelta(0)), '0s') self.assertEqual(str(utils.Timedelta(0.4)), '0s') self.assertEqual(str(utils.Timedelta(-0.4)), '0s') self.assertEqual(str(utils.Timedelta(utils.Timedelta.NOT_APPLICABLE)), '') self.assertEqual(str(utils.Timedelta(utils.Timedelta.UNKNOWN)), '?')
def test_timedelta(self): self.assertIsInstance(utils.Timestamp(1234).timedelta, utils.Timedelta) self.assertIsInstance( utils.Timestamp(utils.Timestamp.NOW).timedelta, utils.Timedelta) self.assertIsInstance( utils.Timestamp(utils.Timestamp.SOON).timedelta, utils.Timedelta) self.assertIsInstance( utils.Timestamp(utils.Timestamp.UNKNOWN).timedelta, utils.Timedelta) self.assertIsInstance( utils.Timestamp(utils.Timestamp.NOT_APPLICABLE).timedelta, utils.Timedelta) self.assertIsInstance( utils.Timestamp(utils.Timestamp.NEVER).timedelta, utils.Timedelta) with mock_time(2000, 1, 1, 0, 0, 0): self.assertEqual( utils.Timestamp.from_string('00:00:00').timedelta, utils.Timedelta(0)) self.assertEqual( utils.Timestamp.from_string('00:00:01').timedelta, utils.Timedelta(1)) self.assertEqual( utils.Timestamp.from_string('00:05:00').timedelta, utils.Timedelta(300)) self.assertEqual( utils.Timestamp.from_string('01-02 00:00:00').timedelta, utils.Timedelta(3600 * 24)) self.assertEqual( utils.Timestamp.from_string('02-01 00:00:00').timedelta, utils.Timedelta(3600 * 24 * 31))
def test_bool(self): for td in (utils.Timedelta(random.randint(-1e5, 1e5) * MIN), utils.Timedelta(random.randint(-1e5, 1e5) * HOUR), utils.Timedelta(random.randint(-1e5, 1e5) * DAY)): self.assertEqual(bool(td), True) for td in (utils.Timedelta(utils.Timedelta.UNKNOWN), utils.Timedelta(utils.Timedelta.NOT_APPLICABLE)): self.assertEqual(bool(td), False)
def test_sorting(self): lst = [ utils.Timedelta(-2 * HOUR), utils.Timedelta(2 * MIN), utils.Timedelta(3 * MIN), utils.Timedelta(1 * DAY), utils.Timedelta(2.5 * YEAR), utils.Timedelta(utils.Timedelta.UNKNOWN), utils.Timedelta(utils.Timedelta.NOT_APPLICABLE) ] def shuffle(lst): return random.sample(lst, k=len(lst)) for _ in range(10): self.assertEqual(sorted(shuffle(lst)), lst)
def test_preposition_string(self): self.assertEqual(utils.Timedelta(6 * DAY).with_preposition, 'in 6d') self.assertEqual(utils.Timedelta(-6 * DAY).with_preposition, '6d ago') self.assertEqual(utils.Timedelta(0.3).with_preposition, 'now') self.assertEqual(utils.Timedelta(-0.3).with_preposition, 'now')
def test_negative_delta(self): self.assertEqual(str(utils.Timedelta(-10)), '-10s') self.assertEqual(str(utils.Timedelta(-1 * 60 - 45)), '-1m45s') self.assertEqual(str(utils.Timedelta(-3 * DAY - 2 * HOUR)), '-3d2h')
def test_added_subunits_for_small_numbers(self): self.assertEqual(str(utils.Timedelta(9 * HOUR + 59 * MIN + 59)), '9h59m') self.assertEqual(str(utils.Timedelta(10 * HOUR + 59 * MIN + 59)), '10h')