v
Зеркало из https://github.com/vlang/v
1module hex
2
3fn test_decode() {
4assert decode('')! == []
5assert decode('0')! == [u8(0x0)]
6assert decode('f')! == [u8(0xf)]
7assert decode('0f')! == [u8(0x0f)]
8assert decode('ff')! == [u8(0xff)]
9assert decode('123')! == [u8(0x1), 0x23]
10assert decode('1234')! == [u8(0x12), 0x34]
11assert decode('12345')! == [u8(0x1), 0x23, 0x45]
12assert decode('0123456789abcdef')! == [u8(0x01), 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef]
13assert decode('123456789ABCDEF')! == [u8(0x01), 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef]
14}
15
16fn test_decode_fails() ! {
17if x := decode('foo') {
18return error('expected decode to fail, got ${x}')
19}
20if x := decode('g') {
21return error('expected decode to fail, got ${x}')
22}
23if x := decode('000000000g') {
24return error('expected decode to fail, got ${x}')
25}
26if x := decode('_') {
27return error('expected decode to fail, got ${x}')
28}
29if x := decode('!') {
30return error('expected decode to fail, got ${x}')
31}
32}
33
34fn test_encode() {
35assert encode(decode('')!) == ''
36assert encode(decode('0')!) == '00'
37assert encode(decode('f')!) == '0f'
38assert encode(decode('0f')!) == '0f'
39assert encode(decode('ff')!) == 'ff'
40assert encode(decode('123')!) == '0123'
41assert encode(decode('1234')!) == '1234'
42assert encode(decode('12345')!) == '012345'
43assert encode(decode('abcdef')!) == 'abcdef'
44assert encode(decode('ABCDEF')!) == 'abcdef'
45}
46
47fn test_decode_0x() {
48assert decode('0x')! == []
49assert decode('0x0')! == [u8(0x0)]
50assert decode('0X1234')! == [u8(0x12), 0x34]
51assert decode('0x12345')! == [u8(0x1), 0x23, 0x45]
52assert decode('0x0123456789abcdef')! == [u8(0x01), 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef]
53assert decode('0X123456789ABCDEF')! == [u8(0x01), 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef]
54}
55