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
« prev ^ index » next coverage.py v6.5.0, created at 2023-12-13 15:12 +0000
1import unittest
3from zserio.builtin import isset, numbits
5class BuiltinOperatorsTest(unittest.TestCase):
7 def test_isset(self):
8 class DummyBitmask:
9 def __init__(self):
10 self._value = 0
12 @classmethod
13 def from_value(cls: 'DummyBitmask', value: int) -> 'DummyBitmask':
14 instance = cls()
15 instance._value = value
16 return instance
18 class Values:
19 READ: 'DummyBitmask' = None
20 WRITE: 'DummyBitmask' = None
21 CREATE: 'DummyBitmask' = None
23 def __eq__(self, other: object) -> bool:
24 return self._value == other._value
26 def __and__(self, other: object) -> object:
27 return DummyBitmask.from_value(self._value & other._value)
29 def __or__(self, other: object) -> object:
30 return DummyBitmask.from_value(self._value | other._value)
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)
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))
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))