v / vlib / encoding / hex / hex_test.v
75 lines · 68 sloc · 2.25 KB · 7a7cf783a49229063175710d18385cb357b19b92
Raw
1module hex
2
3fn test_decode() {
4 assert decode('')! == []
5 assert decode('0')! == [u8(0x0)]
6 assert decode('f')! == [u8(0xf)]
7 assert decode('0f')! == [u8(0x0f)]
8 assert decode('ff')! == [u8(0xff)]
9 assert decode('123')! == [u8(0x1), 0x23]
10 assert decode('1234')! == [u8(0x12), 0x34]
11 assert decode('12345')! == [u8(0x1), 0x23, 0x45]
12 assert decode('0123456789abcdef')! == [u8(0x01), 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef]
13 assert decode('123456789ABCDEF')! == [u8(0x01), 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef]
14}
15
16fn test_decode_fails() ! {
17 if x := decode('foo') {
18 return error('expected decode to fail, got ${x}')
19 }
20 if x := decode('g') {
21 return error('expected decode to fail, got ${x}')
22 }
23 if x := decode('000000000g') {
24 return error('expected decode to fail, got ${x}')
25 }
26 if x := decode('_') {
27 return error('expected decode to fail, got ${x}')
28 }
29 if x := decode('!') {
30 return error('expected decode to fail, got ${x}')
31 }
32}
33
34fn test_encode() {
35 assert encode(decode('')!) == ''
36 assert encode(decode('0')!) == '00'
37 assert encode(decode('f')!) == '0f'
38 assert encode(decode('0f')!) == '0f'
39 assert encode(decode('ff')!) == 'ff'
40 assert encode(decode('123')!) == '0123'
41 assert encode(decode('1234')!) == '1234'
42 assert encode(decode('12345')!) == '012345'
43 assert encode(decode('abcdef')!) == 'abcdef'
44 assert encode(decode('ABCDEF')!) == 'abcdef'
45}
46
47fn test_encode_params() {
48 assert encode([u8(0xab), 0xcd], uppercase: true) == 'ABCD'
49 assert encode([u8(0xab), 0xcd], with_prefix: '0x') == '0xabcd'
50 assert encode([u8(0xab), 0xcd], uppercase: true, with_prefix: '0X') == '0XABCD'
51 assert encode([u8(0xab), 0xcd], with_prefix: 'hex:') == 'hex:abcd'
52}
53
54fn test_decode_0x() {
55 assert decode('0x') or { []u8{} } == []u8{}
56 assert decode('0x0')! == [u8(0x0)]
57 assert decode('0X1234')! == [u8(0x12), 0x34]
58 assert decode('0x12345')! == [u8(0x1), 0x23, 0x45]
59 assert decode('0x0123456789abcdef')! == [u8(0x01), 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef]
60 assert decode('0X123456789ABCDEF')! == [u8(0x01), 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef]
61}
62
63fn test_decode_error_indexes() {
64 decode('g') or {
65 assert err.msg() == 'invalid hex char g at index 0'
66 return
67 }
68 assert false
69
70 decode('0xg') or {
71 assert err.msg() == 'invalid hex char g at index 2'
72 return
73 }
74 assert false
75}
76