-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathtest_encoding.py
More file actions
110 lines (90 loc) · 2.39 KB
/
test_encoding.py
File metadata and controls
110 lines (90 loc) · 2.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import pytest
import sys
from sqids import Sqids
def test_simple():
sqids = Sqids()
numbers = [1, 2, 3]
id_str = "86Rf07"
assert sqids.encode(numbers) == id_str
assert sqids.decode(id_str) == numbers
def test_different_inputs():
sqids = Sqids()
numbers = [0, 0, 0, 1, 2, 3, 100, 1_000, 100_000, 1_000_000, sys.maxsize]
assert sqids.decode(sqids.encode(numbers)) == numbers
@pytest.mark.parametrize(
"id_str, numbers",
(
("bM", [0]),
("Uk", [1]),
("gb", [2]),
("Ef", [3]),
("Vq", [4]),
("uw", [5]),
("OI", [6]),
("AX", [7]),
("p6", [8]),
("nJ", [9]),
)
)
def test_incremental_numbers(id_str, numbers):
sqids = Sqids()
assert sqids.encode(numbers) == id_str
assert sqids.decode(id_str) == numbers
@pytest.mark.parametrize(
"id_str, numbers",
(
("SvIz", [0, 0]),
("n3qa", [0, 1]),
("tryF", [0, 2]),
("eg6q", [0, 3]),
("rSCF", [0, 4]),
("sR8x", [0, 5]),
("uY2M", [0, 6]),
("74dI", [0, 7]),
("30WX", [0, 8]),
("moxr", [0, 9]),
)
)
def test_incremental_numbers_same_index_0(id_str, numbers):
sqids = Sqids()
assert sqids.encode(numbers) == id_str
assert sqids.decode(id_str) == numbers
@pytest.mark.parametrize(
"id_str, numbers",
(
("SvIz", [0, 0]),
("nWqP", [1, 0]),
("tSyw", [2, 0]),
("eX68", [3, 0]),
("rxCY", [4, 0]),
("sV8a", [5, 0]),
("uf2K", [6, 0]),
("7Cdk", [7, 0]),
("3aWP", [8, 0]),
("m2xn", [9, 0]),
)
)
def test_incremental_numbers_same_index_1(id_str, numbers):
sqids = Sqids()
assert sqids.encode(numbers) == id_str
assert sqids.decode(id_str) == numbers
def test_multi_input():
sqids = Sqids()
numbers = list(range(100))
output = sqids.decode(sqids.encode(numbers))
assert numbers == output
def test_encoding_no_numbers():
sqids = Sqids()
assert sqids.encode([]) == ""
def test_decoding_empty_string():
sqids = Sqids()
assert sqids.decode("") == []
def test_decoding_invalid_character():
sqids = Sqids()
assert sqids.decode("*") == []
def test_encode_out_of_range_numbers():
sqids = Sqids()
with pytest.raises(ValueError):
sqids.encode([-1])
with pytest.raises(ValueError):
sqids.encode([sys.maxsize + 1])