Пример #1
0
    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)
Пример #2
0
    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)