Пример #1
0
 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)
Пример #2
0
 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)
Пример #3
0
 def test_insert_neg(self):
     bitfield = BitField(3, 5)
     packed = bitfield.insert(-1, 0)
     self.assertEqual(packed, 0b000_111_000)
     unpacked = bitfield.extract_signed(packed)
     self.assertEqual(unpacked, -1)
Пример #4
0
 def test_extract_pos(self):
     bitfield = BitField(2, 4)
     field_bits = 0b_101_011_10  # the 011 part is what we want to extract
     self.assertEqual(bitfield.extract_signed(field_bits), 3)