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')