예제 #1
0
 def test_non_zeros(self):
     for length in xrange(1, 1000):
         test_string = non_zero_bytes(length)
         encoded = cobs.encode(test_string)
         expected_encoded = self.simple_encode_non_zeros_only(test_string)
         self.assertEqual(encoded, expected_encoded,
                          "encoded != expected_encoded for length %d\nencoded: %s\nexpected_encoded: %s" %
                          (length, repr(encoded), repr(expected_encoded)))
예제 #2
0
 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)
예제 #3
0
 def test_non_zeros_and_trailing_zero(self):
     for length in xrange(1, 1000):
         non_zeros_string = non_zero_bytes(length)
         test_string = non_zeros_string + '\x00'
         encoded = cobs.encode(test_string)
         if (len(non_zeros_string) % 254) == 0:
             expected_encoded = self.simple_encode_non_zeros_only(non_zeros_string) + '\x01\x01'
         else:
             expected_encoded = self.simple_encode_non_zeros_only(non_zeros_string) + '\x01'
         self.assertEqual(encoded, expected_encoded,
                          "encoded != expected_encoded for length %d\nencoded: %s\nexpected_encoded: %s" %
                          (length, repr(encoded), repr(expected_encoded)))
예제 #4
0
 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
예제 #5
0
 def test_predefined_encodings(self):
     for (test_string, expected_encoded_string) in self.predefined_encodings:
         encoded = cobs.encode(test_string)
         self.assertEqual(encoded, expected_encoded_string)