コード例 #1
0
    def tests_bits_to_bytearray(self):
        # 1 byte
        ba = BaseDiscretizer.bits_to_bytearray('0b11111111')
        self.assertIsInstance(ba, bytearray)
        self.assertEqual(len(ba), 1)
        self.assertEqual(ba[0], 255)

        # 1 byte, shortened
        ba = BaseDiscretizer.bits_to_bytearray('0b10')
        self.assertEqual(len(ba), 1)
        self.assertEqual(ba[0], 2)

        # 4 bytes
        ba = BaseDiscretizer.bits_to_bytearray('0b'+'11111111'+'00000000'+'01111111'+'00000011')
        self.assertEqual(len(ba), 4)
        self.assertEqual(ba, bytearray([255, 0, 127, 3]))

        # 4 bytes (zero first)
        ba = BaseDiscretizer.bits_to_bytearray('0b'+'00000000'+'11111111'+'01111111'+'00000011')
        self.assertEqual(len(ba), 4)
        self.assertEqual(ba, bytearray([0, 255, 127, 3]))

        # 4 bytes, shortened
        ba = BaseDiscretizer.bits_to_bytearray('0b'+'00'+'11111111'+'01111111'+'00000011')
        self.assertEqual(len(ba), 4)
        self.assertEqual(ba, bytearray([0, 255, 127, 3]))

        # not a string
        self.assertRaises(DiscretizerException,
                          BaseDiscretizer.bits_to_bytearray,
                          1101)

        # empty string
        self.assertRaises(DiscretizerException,
                          BaseDiscretizer.bits_to_bytearray,
                          '')

        # not a string of bits (should begin with '0b')
        self.assertRaises(DiscretizerException,
                          BaseDiscretizer.bits_to_bytearray,
                          '11111111')

        # no bits
        self.assertRaises(DiscretizerException,
                          BaseDiscretizer.bits_to_bytearray,
                          '0b')

        # invalid bits
        self.assertRaises(ValueError,
                          BaseDiscretizer.bits_to_bytearray,
                          '0b123')