def test_indefinite_length_bit_string(self): data = b'#\x80\x03\x02\x00\x01\x03\x02\x02\x04\x00\x00' a = core.BitString.load(data) self.assertEqual((0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1), a.native) self.assertEqual((0, 0), a.unused_bits) # Example from X.690 §8.6.4.2 prim = core.BitString.load(b'\x03\x07\x04\x0A\x3B\x5F\x29\x1C\xD0') self.assertEqual((0, 0, 0, 0), prim.unused_bits) indef = core.BitString.load( b'\x23\x80\x03\x03\x00\x0a\x3b\x03\x05\x04\x5f\x29\x1c\xd0\x00\x00' ) self.assertEqual(prim.native, indef.native) self.assertEqual(core._int_to_bit_tuple(0x0A3B5F291CD, 44), indef.native) self.assertEqual((0, 0, 0, 0), indef.unused_bits) unused = core.BitString.load( b'\x23\x80\x03\x03\x00\x0a\x3b\x03\x05\x04\x5f\x29\x1c\xdd\x00\x00' ) self.assertEqual(indef.native, unused.native) self.assertEqual((1, 1, 0, 1), unused.unused_bits) unused.set(indef.native) self.assertEqual(indef.native, unused.native) self.assertEqual((0, 0, 0, 0), unused.unused_bits)
def test_int_to_bit_tuple(self): self.assertEqual((), core._int_to_bit_tuple(0, 0)) self.assertEqual((0, ), core._int_to_bit_tuple(0, 1)) self.assertEqual((1, ), core._int_to_bit_tuple(1, 1)) self.assertEqual((0, 0), core._int_to_bit_tuple(0, 2)) self.assertEqual((0, 1), core._int_to_bit_tuple(1, 2)) self.assertEqual((0, 0, 1), core._int_to_bit_tuple(1, 3)) self.assertEqual((0, 1, 0), core._int_to_bit_tuple(2, 3)) self.assertEqual((1, 0, 1), core._int_to_bit_tuple(5, 3)) with self.assertRaises(ValueError): core._int_to_bit_tuple(9, 3) with self.assertRaises(ValueError): core._int_to_bit_tuple(-9, 5)