def test_case_two(self): x = 0b111000111 middleish_bits = BitField(6, 7) all_bits = BitField(0, 9) self.assertEqual(middleish_bits.extract(x), 3) self.assertEqual( all_bits.extract(x), 0b111000111) # check to see if x is altered from extraction
def test_case_one(self): x = 0b111000111 bitfield_low = BitField(0, 3) bitfield_mid = BitField(4, 5) bitfield_low.insert(x, 1) self.assertEqual(bitfield_low.extract(x), 0b111) # 7 self.assertEqual(bitfield_mid.extract(x), 0) # middle should still == 0 after insertion
def test_invert(self): lowpart = BitField(0, 3) midpart = BitField(4, 6) highpart = BitField(7, 9) for v in range(8): packed = 0 packed = lowpart.insert(v, packed) packed = midpart.insert(v, packed) packed = highpart.insert(v, packed) self.assertEqual(lowpart.extract(packed), v) self.assertEqual(midpart.extract(packed), v) self.assertEqual(highpart.extract(packed), v)
def test_low_order(self): low_4 = BitField(0, 3) # A value that fits snugly in the first 4 bits self.assertEqual(low_4.insert(13, 0), 13) # A value that doesn't fit; some high bits lost self.assertEqual(low_4.insert(21, 0), 5) # Extract unsigned self.assertEqual(low_4.extract(15), 15) # Or convert negative numbers self.assertEqual(low_4.extract_signed(15), -1) # Doesn't clobber other bits higher = 15 << 4 self.assertEqual(low_4.insert(13, higher), 13 + higher) # Extraction is masked packed = low_4.insert(13, higher) self.assertEqual(low_4.extract(packed), 13)
def test_middle_bits(self): mid_4 = BitField(4, 7) # A value that fits snugly in4 bits self.assertEqual(mid_4.insert(13, 0), 13 << 4) # A value that doesn't fit; some high bits lost self.assertEqual(mid_4.insert(21, 0), 5 << 4) # Extract unsigned self.assertEqual(mid_4.extract(15 << 4), 15) # Or convert negative numbers self.assertEqual(mid_4.extract_signed(15 << 4), -1)
def test_middle_bits(self): """Extract 5 bits from the middle of a word""" middle_bits = BitField(5, 9) self.assertEqual(middle_bits.extract(0b1010101101101011), 0b11011)
def test_extract_low(self): """Extract low 3 bits""" low_bits = BitField(0, 3) self.assertEqual(low_bits.extract(0b10101010101), 0b0101)
def test_extract_case(self): All_Bits = BitField(0,5) self.assertEqual(All_Bits.extract(0b110011), 0b110011)