-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathtest_cantor.py
80 lines (52 loc) · 1.87 KB
/
test_cantor.py
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
# -*- coding: utf-8 -*-
import pytest
from pairing_functions.cantor import pair, unpair
class TestCantorPairing(object):
def test_pair(self) -> None:
assert pair(0, 0) == 0
assert pair(0, 1) == 2
assert pair(1, 0) == 1
assert pair(2, 2) == 12
assert pair(3, 4) == 32
assert pair(47, 32) == 3192
assert pair(92, 23) == 6693
def test_pair_multiple_numbers(self) -> None:
assert pair(1, 2, 3) == 69
assert pair(3, 4, 5) == 708
assert pair(1, 2, 3, 4) == 2705
assert pair(1, 2, 3, 4, 5) == 3673410
def test_pair_exceptions(self) -> None:
with pytest.raises(ValueError):
assert pair(1)
with pytest.raises(ValueError):
assert pair(1, -2)
with pytest.raises(ValueError):
assert pair(1,)
with pytest.raises(ValueError):
assert pair(1, -2)
class TestCantorUnpair(object):
def test_unpair(self) -> None:
assert unpair(0) == (0, 0)
assert unpair(1) == (1, 0)
assert unpair(2) == (0, 1)
assert unpair(32) == (3, 4)
assert unpair(1432) == (52, 1)
assert unpair(6693) == (92, 23)
assert unpair(69) == (8, 3)
assert unpair(69, n=3) == (1, 2, 3)
assert unpair(708) == (32, 5)
assert unpair(708, n=3) == (3, 4, 5)
assert unpair(2705) == (69, 4)
assert unpair(2705, n=3) == (8, 3, 4)
assert unpair(2705, n=4) == (1, 2, 3, 4)
def test_unpair_exceptions(self) -> None:
with pytest.raises(ValueError):
assert unpair(0.5)
with pytest.raises(ValueError):
assert unpair(-1)
class TestCantor(object):
def test_inverse_property(self) -> None:
n1, n2 = unpair(pair(1, 2))
assert n1 == 1 and n2 == 2
n1, n2 = unpair(33)
assert pair(n1, n2) == 33