def test_date(self): with mock_time(1954, 2, 3, 0, 0, 0): self.assertEqual( ttypes.Timestamp.from_string('00:00:00').date, '1954-02-03') self.assertEqual( ttypes.Timestamp.from_string('08:09:10').date, '1954-02-03') self.assertEqual( ttypes.Timestamp.from_string('23:59:59').date, '1954-02-03') self.assertEqual( ttypes.Timestamp.from_string('1954').date, '1954-01-01') self.assertEqual( ttypes.Timestamp.from_string('1954-08').date, '1954-08-01') self.assertEqual( ttypes.Timestamp.from_string('1954-08-09').date, '1954-08-09') self.assertEqual( ttypes.Timestamp.from_string('1954-08-09 23:59:59').date, '1954-08-09') self.assertEqual( ttypes.Timestamp.from_string('1954-08-10 00:00:00').date, '1954-08-10') self.assertEqual( ttypes.Timestamp.from_string('1954-08-10 11:12:13').date, '1954-08-10') self.assertEqual(ttypes.Timestamp(ttypes.Timestamp.NOW).date, 'now') self.assertEqual(ttypes.Timestamp(ttypes.Timestamp.SOON).date, 'soon') self.assertEqual( ttypes.Timestamp(ttypes.Timestamp.UNKNOWN).date, 'unknown') self.assertEqual( ttypes.Timestamp(ttypes.Timestamp.NOT_APPLICABLE).date, 'not applicable') self.assertEqual( ttypes.Timestamp(ttypes.Timestamp.NEVER).date, 'never')
def test_bool(self): import random for td in (ttypes.Timestamp(random.randint(-1e10, 1e10) * MIN), ttypes.Timestamp(random.randint(-1e10, 1e10) * HOUR), ttypes.Timestamp(random.randint(-1e10, 1e10) * DAY)): self.assertEqual(bool(td), True) for td in (ttypes.Timestamp(ttypes.Timestamp.UNKNOWN), ttypes.Timestamp(ttypes.Timestamp.NOT_APPLICABLE)): self.assertEqual(bool(td), False)
def test_string(self): dt = datetime(year=2000, month=1, day=1) now = dt.timestamp() self.mock_time(now) self.assertEqual(str(ttypes.Timestamp(now)), self.strftime('%H:%M:%S', now)) soon = now + 60 self.assertEqual(str(ttypes.Timestamp(soon)), self.strftime('%H:%M:%S', soon)) later_today = now + 3*60*60 self.assertEqual(str(ttypes.Timestamp(later_today)), self.strftime('%H:%M', later_today)) next_week = now + 7*24*60*60 self.assertEqual(str(ttypes.Timestamp(next_week)), self.strftime('%Y-%m-%d', next_week))
def test_bool(self): for td in (ttypes.Timestamp(random.randint(-1000, 1000) * MIN), ttypes.Timestamp(random.randint(-1000, 1000) * HOUR), ttypes.Timestamp(random.randint(-1000, 1000) * DAY), ttypes.Timestamp(random.randint(-1000, 1000) * MONTH), ttypes.Timestamp(random.randint(-1000, 1000) * YEAR)): self.assertIs(bool(td), True) for td in (ttypes.Timestamp(ttypes.Timestamp.UNKNOWN), ttypes.Timestamp(ttypes.Timestamp.NOT_APPLICABLE), ttypes.Timestamp(ttypes.Timestamp.NEVER)): self.assertIs(bool(td), False) for td in (ttypes.Timestamp(ttypes.Timestamp.NOW), ttypes.Timestamp(ttypes.Timestamp.SOON)): self.assertIs(bool(td), True)
def test_time(self): self.assertEqual(ttypes.Timestamp.from_string('1954').time, '00:00:00') self.assertEqual( ttypes.Timestamp.from_string('1954-08').time, '00:00:00') self.assertEqual( ttypes.Timestamp.from_string('1954-08-09').time, '00:00:00') self.assertEqual( ttypes.Timestamp.from_string('1954-08-09 23:59:59').time, '23:59:59') self.assertEqual( ttypes.Timestamp.from_string('1954-08-10 11:12:13').time, '11:12:13') self.assertEqual(ttypes.Timestamp(ttypes.Timestamp.NOW).time, 'now') self.assertEqual(ttypes.Timestamp(ttypes.Timestamp.SOON).time, 'soon') self.assertEqual( ttypes.Timestamp(ttypes.Timestamp.UNKNOWN).time, 'unknown') self.assertEqual( ttypes.Timestamp(ttypes.Timestamp.NOT_APPLICABLE).time, 'not applicable') self.assertEqual( ttypes.Timestamp(ttypes.Timestamp.NEVER).time, 'never')
def test_timedelta(self): self.assertIsInstance( ttypes.Timestamp(1234).timedelta, ttypes.Timedelta) self.assertIsInstance( ttypes.Timestamp(ttypes.Timestamp.NOW).timedelta, ttypes.Timedelta) self.assertIsInstance( ttypes.Timestamp(ttypes.Timestamp.SOON).timedelta, ttypes.Timedelta) self.assertIsInstance( ttypes.Timestamp(ttypes.Timestamp.UNKNOWN).timedelta, ttypes.Timedelta) self.assertIsInstance( ttypes.Timestamp(ttypes.Timestamp.NOT_APPLICABLE).timedelta, ttypes.Timedelta) self.assertIsInstance( ttypes.Timestamp(ttypes.Timestamp.NEVER).timedelta, ttypes.Timedelta) with mock_time(2000, 1, 1, 0, 0, 0): self.assertEqual( ttypes.Timestamp.from_string('00:00:00').timedelta, ttypes.Timedelta(0)) self.assertEqual( ttypes.Timestamp.from_string('00:00:01').timedelta, ttypes.Timedelta(1)) self.assertEqual( ttypes.Timestamp.from_string('00:05:00').timedelta, ttypes.Timedelta(300)) self.assertEqual( ttypes.Timestamp.from_string('01-02 00:00:00').timedelta, ttypes.Timedelta(3600 * 24)) self.assertEqual( ttypes.Timestamp.from_string('02-01 00:00:00').timedelta, ttypes.Timedelta(3600 * 24 * 31))
def test_sorting(self): now = 1e6 lst = [ttypes.Timestamp(ttypes.Timestamp.NOW), ttypes.Timestamp(ttypes.Timestamp.SOON), ttypes.Timestamp(now + (-2 * HOUR)), ttypes.Timestamp(now + (2 * MIN)), ttypes.Timestamp(now + (3 * MIN)), ttypes.Timestamp(now + (1 * DAY)), ttypes.Timestamp(now + (2.5 * YEAR)), ttypes.Timestamp(ttypes.Timestamp.UNKNOWN), ttypes.Timestamp(ttypes.Timestamp.NOT_APPLICABLE)] import random def shuffle(l): return random.sample(l, k=len(l)) for _ in range(10): self.assertEqual(sorted(shuffle(lst)), lst)
def test_full_property(self): with mock_time(1993, 2, 14, 5, 38, 12): self.assertEqual( ttypes.Timestamp(time.time()).full, '1993-02-14 05:38:12') self.assertEqual(ttypes.Timestamp(ttypes.Timestamp.NOW).full, 'now') self.assertEqual(ttypes.Timestamp(ttypes.Timestamp.SOON).full, 'soon') self.assertEqual( ttypes.Timestamp(ttypes.Timestamp.UNKNOWN).full, 'unknown') self.assertEqual( ttypes.Timestamp(ttypes.Timestamp.NOT_APPLICABLE).full, 'not applicable') self.assertEqual( ttypes.Timestamp(ttypes.Timestamp.NEVER).full, 'never')
def test_string_representation(self): with mock_time(1993, 2, 14, 5, 38, 12): self.assertEqual(str(ttypes.Timestamp(time.time())), '05:38:12') self.assertEqual(str(ttypes.Timestamp(time.time() - 60)), '05:37:12') self.assertEqual(str(ttypes.Timestamp(time.time() + 60)), '05:39:12') self.assertEqual(str(ttypes.Timestamp(time.time() - 3 * 60 * 60)), '02:38') self.assertEqual(str(ttypes.Timestamp(time.time() + 3 * 60 * 60)), '08:38') self.assertEqual( str(ttypes.Timestamp(time.time() - 7 * 24 * 60 * 60)), '1993-02-07') self.assertEqual( str(ttypes.Timestamp(time.time() + 7 * 24 * 60 * 60)), '1993-02-21') self.assertEqual(str(ttypes.Timestamp(ttypes.Timestamp.NOW)), 'now') self.assertEqual(str(ttypes.Timestamp(ttypes.Timestamp.SOON)), 'soon') self.assertEqual(str(ttypes.Timestamp(ttypes.Timestamp.UNKNOWN)), '?') self.assertEqual( str(ttypes.Timestamp(ttypes.Timestamp.NOT_APPLICABLE)), '') self.assertEqual(str(ttypes.Timestamp(ttypes.Timestamp.NEVER)), 'never')