1
0
Fork 0

Adding upstream version 1.2+20240521.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-05 14:24:15 +01:00
parent 6b2864e4b9
commit 8512f66c5a
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
229 changed files with 19561 additions and 0 deletions

View file

@ -0,0 +1,82 @@
from datetime import (
datetime,
timedelta,
timezone,
)
import pytest
from tests.output_aristaproto.timestamp_dict_encode import Test
# Current World Timezone range (UTC-12 to UTC+14)
MIN_UTC_OFFSET_MIN = -12 * 60
MAX_UTC_OFFSET_MIN = 14 * 60
# Generate all timezones in range in 15 min increments
timezones = [
timezone(timedelta(minutes=x))
for x in range(MIN_UTC_OFFSET_MIN, MAX_UTC_OFFSET_MIN + 1, 15)
]
@pytest.mark.parametrize("tz", timezones)
def test_timezone_aware_datetime_dict_encode(tz: timezone):
original_time = datetime.now(tz=tz)
original_message = Test()
original_message.ts = original_time
encoded = original_message.to_dict()
decoded_message = Test()
decoded_message.from_dict(encoded)
# check that the timestamps are equal after decoding from dict
assert original_message.ts.tzinfo is not None
assert decoded_message.ts.tzinfo is not None
assert original_message.ts == decoded_message.ts
def test_naive_datetime_dict_encode():
# make suer naive datetime objects are still treated as utc
original_time = datetime.now()
assert original_time.tzinfo is None
original_message = Test()
original_message.ts = original_time
original_time_utc = original_time.replace(tzinfo=timezone.utc)
encoded = original_message.to_dict()
decoded_message = Test()
decoded_message.from_dict(encoded)
# check that the timestamps are equal after decoding from dict
assert decoded_message.ts.tzinfo is not None
assert original_time_utc == decoded_message.ts
@pytest.mark.parametrize("tz", timezones)
def test_timezone_aware_json_serialize(tz: timezone):
original_time = datetime.now(tz=tz)
original_message = Test()
original_message.ts = original_time
json_serialized = original_message.to_json()
decoded_message = Test()
decoded_message.from_json(json_serialized)
# check that the timestamps are equal after decoding from dict
assert original_message.ts.tzinfo is not None
assert decoded_message.ts.tzinfo is not None
assert original_message.ts == decoded_message.ts
def test_naive_datetime_json_serialize():
# make suer naive datetime objects are still treated as utc
original_time = datetime.now()
assert original_time.tzinfo is None
original_message = Test()
original_message.ts = original_time
original_time_utc = original_time.replace(tzinfo=timezone.utc)
json_serialized = original_message.to_json()
decoded_message = Test()
decoded_message.from_json(json_serialized)
# check that the timestamps are equal after decoding from dict
assert decoded_message.ts.tzinfo is not None
assert original_time_utc == decoded_message.ts