Esempio n. 1
0
    def write(self, writer: BitStreamWriter, value: int) -> None:
        """
        Writes signed fixed integer Zserio type to the bit stream.

        :param writer: Bit stream where to write.
        :param value: Signed fixed integer Zserio type to write.
        """

        writer.writeSignedBits(value, self._numBits)
Esempio n. 2
0
    def testWriteSignedBits(self):
        writer = BitStreamWriter()
        writer.writeSignedBits(0, 1)
        writer.writeSignedBits(-1, 2)
        writer.writeSignedBits(-1, 5)
        self.assertEqual(b'\x7f', writer.getByteArray())
        self.assertEqual(8, writer.getBitPosition())
        writer.writeSignedBits(-1, 1)
        writer.writeSignedBits(-1, 7)
        self.assertEqual(b'\x7f\xff', writer.getByteArray())
        self.assertEqual(16, writer.getBitPosition())

        with self.assertRaises(PythonRuntimeException):
            writer.writeSignedBits(1, 0) # zero bits!

        with self.assertRaises(PythonRuntimeException):
            writer.writeSignedBits(1, 1) # above the upper bound

        with self.assertRaises(PythonRuntimeException):
            writer.writeSignedBits(128, 8) # above the upper bound

        with self.assertRaises(PythonRuntimeException):
            writer.writeSignedBits(-129, 8) # below the lower bound