caellion-python-commons
test_serializers_datetime_serializer.py
Go to the documentation of this file.
1 # test framework
2 import unittest
3 from nose2.tools import params
4 import datetime
5 
6 # package
7 from caellion.pycommons.serializers.datetime_serializer import DateTimeUnixSerializer
8 from caellion.pycommons.serializers.datetime_serializer import DateTimeUnixMillisSerializer
9 from caellion.pycommons.serializers.datetime_serializer import DateTimeUnixMicrosSerializer
10 from caellion.pycommons.serializers.datetime_serializer import DateTimeIsoTimeSerializer
11 
12 
13 # test cases
14 class TestSerializersDateTimeSerializer(unittest.TestCase):
15  @params(
16  ("2022-01-01T00:00:00+00:00", "2022-01-01T00:00:00+00:00"), ("2022-01-01T00:00:00-01:00", "2022-01-01T01:00:00+00:00"),
17  )
18  def test_serialize_isoformat(self, input, expected):
19  input = datetime.datetime.fromisoformat(input)
20  self.assertEqual(DateTimeIsoTimeSerializer.serialize(input), expected)
21 
22  @params(
23  ("2022-01-01T00:00:00.000000+00:00", 1640995200), ("2022-01-01T00:00:00.000000-01:00", 1640998800),
24  )
25  def test_serialize_unixseconds(self, input, expected):
26  input = datetime.datetime.fromisoformat(input)
27  self.assertEqual(DateTimeUnixSerializer.serialize(input), expected)
28 
29  @params(
30  ("2022-01-01T00:00:00.000000+00:00", 1640995200000), ("2022-01-01T00:00:00.000000-01:00", 1640998800000),
31  )
32  def test_serialize_unixmillis(self, input, expected):
33  input = datetime.datetime.fromisoformat(input)
34  self.assertEqual(DateTimeUnixMillisSerializer.serialize(input), expected)
35 
36  @params(
37  ("2022-01-01T00:00:00.000000+00:00", 1640995200000000), ("2022-01-01T00:00:00.000000-01:00", 1640998800000000),
38  )
39  def test_serialize_unixmicros(self, input, expected):
40  input = datetime.datetime.fromisoformat(input)
41  self.assertEqual(DateTimeUnixMicrosSerializer.serialize(input), expected)
42 
43  @params(
44  ("2022-01-01T00:00:00+00:00", "2022-01-01T00:00:00+00:00"), ("2022-01-01T01:00:00+00:00", "2022-01-01T01:00:00+00:00"),
45  )
46  def test_deserialize_isoformat(self, input, expected):
47  self.assertEqual(DateTimeIsoTimeSerializer.deserialize(input), datetime.datetime.fromisoformat(expected))
48 
49  @params(
50  (1640995200, "2022-01-01T00:00:00+00:00"), (1640998800, "2022-01-01T01:00:00+00:00"),
51  )
52  def test_deserialize_unixseconds(self, input, expected):
53  self.assertEqual(DateTimeUnixSerializer.deserialize(input).isoformat(), expected)
54 
55  @params(
56  (1640995200001, "2022-01-01T00:00:00.001000+00:00"), (1640998800001, "2022-01-01T01:00:00.001000+00:00"),
57  )
58  def test_deserialize_unixmillis(self, input, expected):
59  self.assertEqual(DateTimeUnixMillisSerializer.deserialize(input).isoformat(), expected)
60 
61  @params(
62  (1640995200000001, "2022-01-01T00:00:00.000001+00:00"), (1640998800000001, "2022-01-01T01:00:00.000001+00:00"),
63  )
64  def test_deserialize_unixmicros(self, input, expected):
65  self.assertEqual(DateTimeUnixMicrosSerializer.deserialize(input).isoformat(), expected)
66 
67 
68 if __name__ == "__main__":
69  unittest.main()
This module provides various serializers for datetime.datetime object.