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

1import unittest 

2 

3from zserio.bitbuffer import BitBuffer 

4from zserio.compare import compare 

5 

6 

7class CompareTest(unittest.TestCase): 

8 

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) 

13 

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) 

19 

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) 

24 

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) 

30 

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) 

35 

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) 

40 

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 

45 

46 def _zserio_cmp(self, other): 

47 return self.value - other.value 

48 

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)