diff options
Diffstat (limited to 'tests/common/bitfield.py')
-rw-r--r-- | tests/common/bitfield.py | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/tests/common/bitfield.py b/tests/common/bitfield.py new file mode 100644 index 0000000..ec61291 --- /dev/null +++ b/tests/common/bitfield.py @@ -0,0 +1,106 @@ +#!/usr/bin/python3-dbg +# -*- coding: utf-8 -*- + + +# Tests minimalistes pour valider la construction de chemins relatifs et absolus. + + +from chrysacase import ChrysalideTestCase +from pychrysalide.common import bitfield + + +class TestBitfields(ChrysalideTestCase): + """TestCase for common.bitfield*""" + + def testDuplicateBitfield(self): + """Check duplicated bitfield value.""" + + bf = bitfield(10, 0) + + bf2 = bf.dup() + + self.assertEqual(bf, bf2) + + + def testBitfieldValues(self): + """Evaluate bitfields basic values.""" + + bf_a = bitfield(75, 1) + + bf_b = bitfield(75, 0) + + self.assertNotEqual(bf_a, bf_b) + + bf_a = bitfield(75, 1) + + bf_b = bitfield(75, 0) + bf_b.set_all() + + self.assertEqual(bf_a, bf_b) + + bf_a = bitfield(75, 1) + bf_a.reset_all() + + bf_b = bitfield(75, 0) + + self.assertEqual(bf_a, bf_b) + + + def testBitfieldLogicalOperations(self): + """Perform logical operations on bitfields.""" + + bf_a = bitfield(75, 1) + + bf_b = bitfield(75, 0) + + bf_f = bf_a & bf_b + + self.assertEqual(bf_f, bf_b) + + bf_f = bf_a | bf_b + + self.assertEqual(bf_f, bf_a) + + + def testBitfieldSwitch(self): + """Switch various bits in bitfields.""" + + bf_1 = bitfield(75, 1) + + bf_0 = bitfield(75, 0) + + bf_t = bitfield(75, 0) + + for i in range(75): + bf_t.set(i, 1) + + self.assertEqual(bf_t, bf_1) + + for i in range(75): + bf_t.reset(i, 1) + + self.assertEqual(bf_t, bf_0) + + + def testBitfieldBits(self): + """Test bits in bitfields.""" + + bf = bitfield(54, 1) + + self.assertTrue(bf.test(0)) + + self.assertTrue(bf.test(53)) + + self.assertTrue(bf.test_all(0, 54)) + + self.assertFalse(bf.test_none(0, 54)) + + bf = bitfield(54, 0) + + self.assertFalse(bf.test(0)) + + self.assertFalse(bf.test(53)) + + self.assertFalse(bf.test_all(0, 54)) + + self.assertTrue(bf.test_none(0, 54)) |