Coverage for /home/jenkins/workspace/NDS/Zserio/NDS_ZSERIO-linux-build/compiler/extensions/python/runtime/tests/test_builtin.py: 100%

61 statements  

« prev     ^ index     » next       coverage.py v6.5.0, created at 2023-12-13 15:12 +0000

1import unittest 

2 

3from zserio.builtin import isset, numbits 

4 

5class BuiltinOperatorsTest(unittest.TestCase): 

6 

7 def test_isset(self): 

8 class DummyBitmask: 

9 def __init__(self): 

10 self._value = 0 

11 

12 @classmethod 

13 def from_value(cls: 'DummyBitmask', value: int) -> 'DummyBitmask': 

14 instance = cls() 

15 instance._value = value 

16 return instance 

17 

18 class Values: 

19 READ: 'DummyBitmask' = None 

20 WRITE: 'DummyBitmask' = None 

21 CREATE: 'DummyBitmask' = None 

22 

23 def __eq__(self, other: object) -> bool: 

24 return self._value == other._value 

25 

26 def __and__(self, other: object) -> object: 

27 return DummyBitmask.from_value(self._value & other._value) 

28 

29 def __or__(self, other: object) -> object: 

30 return DummyBitmask.from_value(self._value | other._value) 

31 

32 DummyBitmask.Values.READ = DummyBitmask.from_value(1) 

33 DummyBitmask.Values.WRITE = DummyBitmask.from_value(2) 

34 DummyBitmask.Values.CREATE = DummyBitmask.from_value(1 | 2) 

35 

36 self.assertTrue(isset(DummyBitmask.Values.READ, DummyBitmask.Values.READ)) 

37 self.assertTrue(isset(DummyBitmask.Values.CREATE, DummyBitmask.Values.READ)) 

38 self.assertTrue(isset(DummyBitmask.Values.CREATE, DummyBitmask.Values.WRITE)) 

39 self.assertTrue(isset(DummyBitmask.Values.CREATE, DummyBitmask.Values.CREATE)) 

40 self.assertTrue(isset(DummyBitmask.Values.CREATE, DummyBitmask.Values.READ | DummyBitmask.Values.WRITE)) 

41 self.assertFalse(isset(DummyBitmask.Values.READ, DummyBitmask.Values.WRITE)) 

42 self.assertFalse(isset(DummyBitmask.Values.READ, DummyBitmask.Values.CREATE)) 

43 

44 def test_numbits(self): 

45 self.assertEqual(0, numbits(0)) 

46 self.assertEqual(1, numbits(1)) 

47 self.assertEqual(1, numbits(2)) 

48 self.assertEqual(2, numbits(3)) 

49 self.assertEqual(2, numbits(4)) 

50 self.assertEqual(3, numbits(5)) 

51 self.assertEqual(3, numbits(6)) 

52 self.assertEqual(3, numbits(7)) 

53 self.assertEqual(3, numbits(8)) 

54 self.assertEqual(4, numbits(16)) 

55 self.assertEqual(5, numbits(32)) 

56 self.assertEqual(6, numbits(64)) 

57 self.assertEqual(7, numbits(128)) 

58 self.assertEqual(8, numbits(256)) 

59 self.assertEqual(9, numbits(512)) 

60 self.assertEqual(10, numbits(1024)) 

61 self.assertEqual(11, numbits(2048)) 

62 self.assertEqual(12, numbits(4096)) 

63 self.assertEqual(13, numbits(8192)) 

64 self.assertEqual(14, numbits(16384)) 

65 self.assertEqual(15, numbits(32768)) 

66 self.assertEqual(16, numbits(65536)) 

67 self.assertEqual(24, numbits(1 << 24)) 

68 self.assertEqual(25, numbits((1 << 24) + 1)) 

69 self.assertEqual(32, numbits(1 << 32)) 

70 self.assertEqual(33, numbits((1 << 32) + 1)) 

71 self.assertEqual(63, numbits(1 << 63)) 

72 self.assertEqual(64, numbits((1 << 63) + 1))