v
Зеркало из https://github.com/vlang/v
1module base58
2
3fn test_encode_int() {
4a := 0x24 // should be 'd' in base58
5assert encode_int(a)! == 'd'
6
7test_encode_int_walpha()
8}
9
10fn test_encode_int_walpha() {
11// random alphabet
12abc := new_alphabet('abcdefghij\$lmnopqrstuvwxyz0123456789_ABCDEFGHIJLMNOPQRSTUV') or {
13panic(@MOD + '.' + @FN + ': this should never happen')
14}
15a := 0x24 // should be '_' in base58 with our custom alphabet
16assert encode_int_walpha(a, abc)! == '_'
17}
18
19fn test_decode_int() {
20a := 'd'
21assert decode_int(a)! == 0x24
22
23test_decode_int_walpha()
24}
25
26fn test_decode_int_walpha() {
27abc := new_alphabet('abcdefghij\$lmnopqrstuvwxyz0123456789_ABCDEFGHIJLMNOPQRSTUV') or {
28panic(@MOD + '.' + @FN + ': this should never happen')
29}
30a := '_'
31assert decode_int_walpha(a, abc)! == 0x24
32}
33
34fn test_encode_string() {
35// should be 'TtaR6twpTGu8VpY' in base58 and '0P7yfPSL0pQh2L5' with our custom alphabet
36a := 'lorem ipsum'
37assert encode(a) == 'TtaR6twpTGu8VpY'
38
39abc := new_alphabet('abcdefghij\$lmnopqrstuvwxyz0123456789_ABCDEFGHIJLMNOPQRSTUV') or {
40panic(@MOD + '.' + @FN + ': this should never happen')
41}
42assert encode_walpha(a, abc) == '0P7yfPSL0pQh2L5'
43}
44
45fn test_decode_string() {
46a := 'TtaR6twpTGu8VpY'
47assert decode(a)! == 'lorem ipsum'
48
49abc := new_alphabet('abcdefghij\$lmnopqrstuvwxyz0123456789_ABCDEFGHIJLMNOPQRSTUV') or {
50panic(@MOD + '.' + @FN + ': this should never happen')
51}
52b := '0P7yfPSL0pQh2L5'
53assert decode_walpha(b, abc)! == 'lorem ipsum'
54}
55
56fn test_fails() ! {
57a := -238
58b := 0
59if z := encode_int(a) {
60return error(@MOD + '.' + @FN + ': expected encode_int to fail, got ${z}')
61}
62if z := encode_int(b) {
63return error(@MOD + '.' + @FN + ': expected encode_int to fail, got ${z}')
64}
65
66c := '!'
67if z := decode_int(c) {
68return error(@MOD + '.' + @FN + ': expected decode_int to fail, got ${z}')
69}
70if z := decode(c) {
71return error(@MOD + '.' + @FN + ': expected decode to fail, got ${z}')
72}
73
74// repeating character
75if abc := new_alphabet('aaaaafghij\$lmnopqrstuvwxyz0123456789_ABCDEFGHIJLMNOPQRSTUV') {
76return error(@MOD + '.' + @FN + ': expected new_alphabet to fail, got ${abc}')
77}
78// more than 58 characters long
79if abc := new_alphabet('abcdefghij\$lmnopqrstuvwxyz0123456789_ABCDEFGHIJLMNOPQRSTUVWXYZ') {
80return error(@MOD + '.' + @FN + ': expected new_alphabet to fail, got ${abc}')
81}
82}
83