def test_compare_greater(): a = datetime.datetime(2012,3,4,3,2,3) if not PY2: a = localize(a) b = datetime_tz.datetime_tz(2012,3,4,1,2,3) assert a > b assert a >= b a = datetime.datetime(2012,3,3,3,2,3) if not PY2: a = localize(a) assert b > a assert b >= a
def test_compare_less(): a = datetime.datetime(2012,3,4,3,2,3) if not PY2: a = localize(a) b = datetime_tz.datetime_tz(2012,3,4,1,2,3) assert b < a assert b <= a a = datetime.datetime(2012,3,3,3,2,3) if not PY2: a = localize(a) assert a < b assert a <= b
def assert_dicts_equal(dict1,dict2, datetimes_to_naive=False): """tests equality of two dicts""" k1, k2 = list(dict1.keys()), list(dict2.keys()) k1.sort() k2.sort() assert k1 == k2 for key in k1: if datetimes_to_naive and isinstance(dict1[key], datetime.datetime) and isinstance(dict2[key], datetime.datetime): assert datetime_tz assert (datetime_tz.localize(dict1[key]), key) == (datetime_tz.localize(dict2[key]), key) else: # this assert means we get the key if the assert fails assert (dict1[key], key) == (dict2[key], key)
def assert_dicts_equal(dict1,dict2, datetimes_to_naive=False): """tests equality of two dicts""" k1, k2 = dict1.keys(), dict2.keys() k1.sort() k2.sort() assert k1 == k2 for key in k1: if datetimes_to_naive and isinstance(dict1[key], datetime.datetime) and isinstance(dict2[key], datetime.datetime): assert datetime_tz assert (datetime_tz.localize(dict1[key]), key) == (datetime_tz.localize(dict2[key]), key) else: # this assert means we get the key if the assert fails assert (dict1[key], key) == (dict2[key], key)
def test_fast_forward_datetime_style(self): """Test that fast forwarding the time works properly when using datetime-style objects""" event = threading.Event() virtualtime.notify_on_change(event) offsets = [] msg_dict = {'offsets': offsets} catcher_thread = threading.Thread(target=self.fast_forward_catcher, args=(event, msg_dict)) catcher_thread.start() start_time = virtualtime._original_datetime_now() utc_start_time = datetime_tz.localize(start_time).astimezone(pytz.utc) virtualtime.fast_forward_timedelta(datetime.timedelta(seconds=1)) assert virtualtime._time_offset == 1 virtualtime.fast_forward_timedelta(datetime.timedelta(seconds=2.5)) assert virtualtime._time_offset == 3.5 virtualtime.fast_forward_local_datetime(target=start_time + datetime.timedelta(seconds=9.1), step_size=datetime.timedelta(seconds=2.0)) assert 9 <= virtualtime._time_offset <= 9.2 virtualtime.fast_forward_utc_datetime(target=utc_start_time + datetime.timedelta(seconds=18.2), step_size=datetime.timedelta(seconds=20.0)) assert 18 <= virtualtime._time_offset <= 18.3 virtualtime.restore_time() virtualtime.fast_forward_timedelta(datetime.timedelta(seconds=-1.3), step_size=datetime.timedelta(seconds=0.9)) virtualtime.restore_time() msg_dict['stop'] = True event.set() catcher_thread.join() assert offsets[:6] == [1.0, 2.0, 3.0, 3.5, 5.5, 7.5] assert 9 <= offsets[6] <= 9.2 assert 18 <= offsets[7] <= 18.3 assert offsets[8:12] == [0, -0.9, -1.3, 0] # depends on how long the stop event takes? assert (not offsets[12:]) or offsets[12:] == [0]
def test_switching_values(self): now = datetime_tz.datetime_tz.now() assert isinstance(now, datetime.datetime) assert isinstance(now, datetime_tz.datetime_tz) later = now + datetime.timedelta(hours=1) assert isinstance(later, datetime.datetime) assert isinstance(later, datetime_tz.datetime_tz) start = datetime.datetime.combine(now.date(), now.time()) assert isinstance(start, datetime.datetime) local_start = datetime_tz.localize(start) assert local_start == now assert isinstance(local_start, datetime_tz.datetime_tz) start_tz = datetime_tz.datetime_tz.combine(now.date(), now.time(), datetime_tz.localtz()) assert isinstance(start_tz, datetime_tz.datetime_tz) local_start_tz = datetime_tz.localize(start_tz) assert local_start_tz == now assert isinstance(local_start_tz, datetime_tz.datetime_tz) assert isinstance(datetime_tz.datetime_tz.min, datetime_tz.datetime_tz) assert isinstance(datetime_tz.datetime_tz.max, datetime_tz.datetime_tz) virtualtime.enable() now = datetime_tz.datetime_tz.now() assert isinstance(now, datetime.datetime) assert isinstance(now, datetime_tz.datetime_tz) later = now + datetime.timedelta(hours=1) assert isinstance(later, datetime.datetime) assert isinstance(later, datetime_tz.datetime_tz) start = datetime.datetime.combine(now.date(), now.time()) assert isinstance(start, datetime.datetime) local_start = datetime_tz.localize(start) assert local_start == now assert isinstance(local_start, datetime_tz.datetime_tz) start_tz = datetime_tz.datetime_tz.combine(now.date(), now.time(), datetime_tz.localtz()) assert isinstance(start_tz, datetime_tz.datetime_tz) local_start_tz = datetime_tz.localize(start_tz) assert local_start_tz == now assert isinstance(local_start_tz, datetime_tz.datetime_tz) assert isinstance(datetime_tz.datetime_tz.min, datetime_tz.datetime_tz) assert isinstance(datetime_tz.datetime_tz.max, datetime_tz.datetime_tz)
def test_fast_forward_datetime_style(self): """Test that fast forwarding the time works properly when using datetime-style objects""" event = threading.Event() virtualtime.notify_on_change(event) offsets = [] msg_dict = {'offsets': offsets} catcher_thread = threading.Thread(target=self.fast_forward_catcher, args=(event, msg_dict)) catcher_thread.start() start_time = virtualtime._original_datetime_now() utc_start_time = datetime_tz.localize(start_time).astimezone(pytz.utc) virtualtime.fast_forward_timedelta(datetime.timedelta(seconds=1)) assert virtualtime._time_offset == 1 virtualtime.fast_forward_timedelta(datetime.timedelta(seconds=2.5)) assert virtualtime._time_offset == 3.5 virtualtime.fast_forward_local_datetime( target=start_time + datetime.timedelta(seconds=9.1), step_size=datetime.timedelta(seconds=2.0)) assert 9 <= virtualtime._time_offset <= 9.2 virtualtime.fast_forward_utc_datetime( target=utc_start_time + datetime.timedelta(seconds=18.2), step_size=datetime.timedelta(seconds=20.0)) assert 18 <= virtualtime._time_offset <= 18.3 virtualtime.restore_time() virtualtime.fast_forward_timedelta( datetime.timedelta(seconds=-1.3), step_size=datetime.timedelta(seconds=0.9)) virtualtime.restore_time() msg_dict['stop'] = True event.set() catcher_thread.join() assert offsets[:6] == [1.0, 2.0, 3.0, 3.5, 5.5, 7.5] assert 9 <= offsets[6] <= 9.2 assert 18 <= offsets[7] <= 18.3 assert offsets[8:12] == [0, -0.9, -1.3, 0] # depends on how long the stop event takes? assert (not offsets[12:]) or offsets[12:] == [0]
def test_compare_tz_second(): a = datetime.datetime(2012,3,4,1,2,3) if not PY2: a = localize(a) b = datetime_tz.datetime_tz(2012,3,4,1,2,3) assert b == a
def test_compare_tz_first(): a = datetime.datetime(2012,3,4,1,2,3) if not PY2: a = localize(a) b = datetime_tz.datetime_tz(2012,3,4,1,2,3) assert a == b