#!/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))