v

Зеркало из https://github.com/vlang/v
Форк
0
/
base58_test.v 
82 строки · 2.3 Кб
1
module base58
2

3
fn test_encode_int() {
4
	a := 0x24 // should be 'd' in base58
5
	assert encode_int(a)! == 'd'
6

7
	test_encode_int_walpha()
8
}
9

10
fn test_encode_int_walpha() {
11
	// random alphabet
12
	abc := new_alphabet('abcdefghij\$lmnopqrstuvwxyz0123456789_ABCDEFGHIJLMNOPQRSTUV') or {
13
		panic(@MOD + '.' + @FN + ': this should never happen')
14
	}
15
	a := 0x24 // should be '_' in base58 with our custom alphabet
16
	assert encode_int_walpha(a, abc)! == '_'
17
}
18

19
fn test_decode_int() {
20
	a := 'd'
21
	assert decode_int(a)! == 0x24
22

23
	test_decode_int_walpha()
24
}
25

26
fn test_decode_int_walpha() {
27
	abc := new_alphabet('abcdefghij\$lmnopqrstuvwxyz0123456789_ABCDEFGHIJLMNOPQRSTUV') or {
28
		panic(@MOD + '.' + @FN + ': this should never happen')
29
	}
30
	a := '_'
31
	assert decode_int_walpha(a, abc)! == 0x24
32
}
33

34
fn test_encode_string() {
35
	// should be 'TtaR6twpTGu8VpY' in base58 and '0P7yfPSL0pQh2L5' with our custom alphabet
36
	a := 'lorem ipsum'
37
	assert encode(a) == 'TtaR6twpTGu8VpY'
38

39
	abc := new_alphabet('abcdefghij\$lmnopqrstuvwxyz0123456789_ABCDEFGHIJLMNOPQRSTUV') or {
40
		panic(@MOD + '.' + @FN + ': this should never happen')
41
	}
42
	assert encode_walpha(a, abc) == '0P7yfPSL0pQh2L5'
43
}
44

45
fn test_decode_string() {
46
	a := 'TtaR6twpTGu8VpY'
47
	assert decode(a)! == 'lorem ipsum'
48

49
	abc := new_alphabet('abcdefghij\$lmnopqrstuvwxyz0123456789_ABCDEFGHIJLMNOPQRSTUV') or {
50
		panic(@MOD + '.' + @FN + ': this should never happen')
51
	}
52
	b := '0P7yfPSL0pQh2L5'
53
	assert decode_walpha(b, abc)! == 'lorem ipsum'
54
}
55

56
fn test_fails() ! {
57
	a := -238
58
	b := 0
59
	if z := encode_int(a) {
60
		return error(@MOD + '.' + @FN + ': expected encode_int to fail, got ${z}')
61
	}
62
	if z := encode_int(b) {
63
		return error(@MOD + '.' + @FN + ': expected encode_int to fail, got ${z}')
64
	}
65

66
	c := '!'
67
	if z := decode_int(c) {
68
		return error(@MOD + '.' + @FN + ': expected decode_int to fail, got ${z}')
69
	}
70
	if z := decode(c) {
71
		return error(@MOD + '.' + @FN + ': expected decode to fail, got ${z}')
72
	}
73

74
	// repeating character
75
	if abc := new_alphabet('aaaaafghij\$lmnopqrstuvwxyz0123456789_ABCDEFGHIJLMNOPQRSTUV') {
76
		return error(@MOD + '.' + @FN + ': expected new_alphabet to fail, got ${abc}')
77
	}
78
	// more than 58 characters long
79
	if abc := new_alphabet('abcdefghij\$lmnopqrstuvwxyz0123456789_ABCDEFGHIJLMNOPQRSTUVWXYZ') {
80
		return error(@MOD + '.' + @FN + ': expected new_alphabet to fail, got ${abc}')
81
	}
82
}
83

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.