1import unittest 2from util import * 3 4class HexTests(unittest.TestCase): 5 6 def test_hex_to_bytes(self): 7 LEN = 4 8 buf, buf_len = make_cbuffer('00' * LEN) 9 10 for i in range(256): 11 for s in ("%02X" % i, "%02x" % i): # Upper/Lower 12 ret, written = wally_hex_to_bytes(utf8(s * LEN), buf, buf_len) 13 self.assertEqual((ret, written), (WALLY_OK, LEN)) 14 15 # Bad inputs 16 for (s, b, l) in [(None, buf, buf_len), 17 (utf8('00'), None, buf_len), 18 (utf8('000'), buf, buf_len), 19 (utf8('00'), buf, 0)]: 20 ret, written = wally_hex_to_bytes(s, b, l) 21 self.assertEqual((ret, written), (WALLY_EINVAL, 0)) 22 23 for l in (1, # Too small, returns the required length 24 LEN): # Too large, returns length written 25 ret, written = wally_hex_to_bytes(utf8('0000'), buf, l) 26 self.assertEqual((ret, written), (WALLY_OK, 2)) 27 28 # Empty string 29 ret, written = wally_hex_to_bytes(utf8(''), buf, buf_len) 30 self.assertEqual((ret, written), (WALLY_OK, 0)) 31 32 33 def test_hex_from_bytes(self): 34 LEN = 4 35 36 for i in range(256): 37 s = "%02x" % i * LEN 38 buf, buf_len = make_cbuffer(s) 39 ret, retstr = wally_hex_from_bytes(buf, buf_len) 40 self.assertEqual((ret, retstr), (WALLY_OK, s)) 41 42 # Bad input 43 ret, written = wally_hex_from_bytes(None, buf_len) 44 self.assertEqual((ret, written), (WALLY_EINVAL, None)) 45 46 # Empty buffer 47 ret, written = wally_hex_from_bytes(buf, 0) 48 self.assertEqual((ret, written), (WALLY_OK, '')) 49 50 51if __name__ == '__main__': 52 unittest.main() 53