update Bits; tests passing

This commit is contained in:
2020-10-13 06:32:50 +00:00
parent 37782f4b8b
commit e8772e9931
3 changed files with 217 additions and 9 deletions

View File

@@ -90,7 +90,7 @@ class TestBits(TestCase):
with self.subTest("testcase[\"int\"]: " + str(testcase["int"]) \
+ " [without leading zeros]"):
self.assertEqual(testcase["bitsObject"].bin(pad=False),
testcase["bits"].strip("0"))
testcase["bits"].lstrip("0"))
def test_reverse(self):
"""
@@ -102,6 +102,48 @@ class TestBits(TestCase):
self.assertEqual(testcase["bitsObject"].bin(),
testcase["bits"][::-1])
def test_membership_operators(self):
"""
Test the membership operator (x in y)
"""
with self.subTest("should all be True"):
for i in range(1, 256):
self.assertTrue(i in Bits(255), f"Bits({i}) in Bits(255) fail")
with self.subTest("should all be False"):
for i in range(1, 256):
self.assertFalse(i in Bits(0), f"Bits({i}) in Bits(0) fail")
with self.subTest("should pass"):
self.assertIn(1, Bits("00100111"), "1 in Bits(39)")
self.assertIn(2, Bits(39), "2 in Bits(39)")
self.assertIn(4, Bits(39), "4 in Bits(39)")
self.assertNotIn(8, Bits(39), "8 in Bits(39)")
self.assertNotIn(16, Bits(39), "16 in Bits(39)")
self.assertIn(32, Bits(39), "32 in Bits(39)")
self.assertNotIn(64, Bits(39), "64 in Bits(39)")
self.assertNotIn(128, Bits(39), "128 in Bits(39)")
def test_binary_operations(self):
self.assertEqual((Bits("00000100") << 3), Bits("00100000"),
"Bits(4) << 3 == Bits(32)")
self.assertEqual((Bits("00100000") << 1), Bits("01000000"),
"Bits(32) << 1 == Bits(64)")
self.assertEqual((Bits(64) >> 2), Bits(16),
"Bits(64) >> 2 == Bits(16)")
self.assertEqual(( 2 << Bits(6)), Bits(128),
"2 << Bits(6) == Bits(128)")
self.assertEqual((Bits(255) & Bits(64)), Bits(64),
"Bits(255) and Bits(64) == Bits(64)")
self.assertNotEqual((Bits(32) & Bits(64)), Bits(64),
"Bits(32) and Bits(64) != Bits(64)")
self.assertEqual((Bits(2) | Bits(32)), 34,
"Bits(2) or Bits(32) == 34")
self.assertEqual((Bits(80) | Bits(64)), Bits(80),
"Bits(80) or Bits(64) == Bits(80)")
self.assertEqual((Bits(80) ^ Bits(64)), Bits(16),
"Bits(80) xor Bits(64) == Bits(16)")
self.assertEqual((Bits(80) & Bits(64)), Bits(64),
"Bits(80) and Bits(64) == Bits(64)")
def test_comparisons(self):
"""
Test the comparison operators