Coverage for /home/runner/work/zserio/zserio/compiler/extensions/python/runtime/tests/test_compare.py: 100%
40 statements
« prev ^ index » next coverage.py v6.5.0, created at 2026-10-19 14:18 +0000
« prev ^ index » next coverage.py v6.5.0, created at 2026-10-19 14:18 +0000
1import unittest
3from zserio.bitbuffer import BitBuffer
4from zserio.compare import compare
7class CompareTest(unittest.TestCase):
9 def test_none(self):
10 self.assertEqual(0, compare(None, None))
11 self.assertTrue(compare(None, 0) < 0)
12 self.assertTrue(compare(0, None) > 0)
14 def test_int(self):
15 self.assertEqual(0, compare(1, 1))
16 self.assertTrue(compare(1, 2) < 0)
17 self.assertTrue(compare(2, 1) > 0)
18 self.assertTrue(compare(False, True) < 0)
20 def test_float(self):
21 self.assertEqual(0, compare(1.5, 1.5))
22 self.assertTrue(compare(-1.5, 1.5) < 0)
23 self.assertTrue(compare(1.5, -1.5) > 0)
25 def test_string(self):
26 self.assertEqual(0, compare("a", "a"))
27 self.assertTrue(compare("a", "b") < 0)
28 self.assertTrue(compare("b", "a") > 0)
29 self.assertTrue(compare("z", "ä") < 0)
31 def test_bytes(self):
32 self.assertEqual(0, compare(bytearray([0x01, 0xFF]), bytearray([0x01, 0xFF])))
33 self.assertTrue(compare(bytearray([0x01]), bytearray([0xFF])) < 0)
34 self.assertTrue(compare(bytearray([0x01, 0x00]), bytearray([0x01])) > 0)
36 def test_bitbuffer(self):
37 self.assertEqual(0, compare(BitBuffer(bytes([0xAB, 0xE0]), 11), BitBuffer(bytes([0xAB, 0xF0]), 11)))
38 self.assertTrue(compare(BitBuffer(bytes([0xAB, 0x00]), 11), BitBuffer(bytes([0xAB, 0xE0]), 11)) < 0)
39 self.assertTrue(compare(BitBuffer(bytes([0xAB, 0xE0]), 11), BitBuffer(bytes([0xAB, 0x00]), 11)) > 0)
41 def test_three_way(self):
42 class Value: # without __lt__, compare() must use _zserio_cmp
43 def __init__(self, value):
44 self.value = value
46 def _zserio_cmp(self, other):
47 return self.value - other.value
49 self.assertEqual(0, compare(Value(1), Value(1)))
50 self.assertTrue(compare(Value(1), Value(2)) < 0)
51 self.assertTrue(compare(Value(2), Value(1)) > 0)
52 self.assertTrue(compare(None, Value(1)) < 0)