def test_zeros(self): for length in xrange(520): test_string = '\x00' * length encoded = cobs.encode(test_string) expected_encoded = '\x01' * (length + 1) self.assertEqual(encoded, expected_encoded, "encoding zeros failed for length %d" % length) decoded = cobs.decode(encoded) self.assertEqual(decoded, test_string, "decoding zeros failed for length %d" % length)
def test_random(self): try: for _test_num in xrange(self.NUM_TESTS): length = random.randint(0, self.MAX_LENGTH) test_string = ''.join(chr(random.randint(0,255)) for x in xrange(length)) encoded = cobs.encode(test_string) self.assertTrue('\x00' not in encoded, "encoding contains zero byte(s):\noriginal: %s\nencoded: %s" % (repr(test_string), repr(encoded))) self.assertTrue(len(encoded) <= len(test_string) + 1 + (len(test_string) // 254), "encoding too big:\noriginal: %s\nencoded: %s" % (repr(test_string), repr(encoded))) decoded = cobs.decode(encoded) self.assertEqual(decoded, test_string, "encoding and decoding random data failed:\noriginal: %s\ndecoded: %s" % (repr(test_string), repr(decoded))) except KeyboardInterrupt: pass
def test_decode_predefined_encodings(self): for (test_string, expected_encoded_string) in self.predefined_encodings: decoded = cobs.decode(expected_encoded_string) self.assertEqual(test_string, decoded)