|
5 | 5 |
|
6 | 6 | from python_toolbox import sequence_tools |
7 | 7 |
|
| 8 | +from python_toolbox import combi |
8 | 9 | from python_toolbox.combi import * |
9 | 10 |
|
10 | 11 | infinity = float('inf') |
@@ -44,12 +45,21 @@ def test_perm_spaces(): |
44 | 45 | pure_perm_space_dict[pure_0c] == pure_perm_space_dict[pure_0d] == 'd' |
45 | 46 |
|
46 | 47 | assert None not in pure_0a # Because, damn. |
| 48 | + assert PermSpace('meow')[0] not in pure_0a |
47 | 49 |
|
48 | 50 | assert type(first_perm) == type(some_perm) == type(last_perm) == Perm |
49 | 51 | assert set(some_perm) == set(range(4)) |
50 | 52 | assert tuple(first_perm) == (0, 1, 2, 3) |
51 | 53 | assert tuple(last_perm) == (3, 2, 1, 0) |
52 | 54 |
|
| 55 | + assert isinstance(first_perm.items, combi.perm.PermItems) |
| 56 | + assert first_perm.items[2] == (2, 2) |
| 57 | + assert repr(first_perm.items) == '<PermItems: %s>' % repr(first_perm) |
| 58 | + assert isinstance(first_perm.as_dictoid, combi.perm.PermAsDictoid) |
| 59 | + assert first_perm.as_dictoid[2] == 2 |
| 60 | + assert dict(first_perm.as_dictoid) == {0: 0, 1: 1, 2: 2, 3: 3} |
| 61 | + |
| 62 | + |
53 | 63 | assert some_perm.inverse == ~ some_perm |
54 | 64 | assert ~ ~ some_perm == some_perm |
55 | 65 |
|
@@ -96,6 +106,10 @@ def test_perm_spaces(): |
96 | 106 | big_perm_space = PermSpace(range(150), fixed_map={1: 5, 70: 3,}, |
97 | 107 | degrees=(3, 5)) |
98 | 108 |
|
| 109 | + assert big_perm_space == PermSpace(range(150), |
| 110 | + fixed_map={1: 5, 70: 3,}.items(), |
| 111 | + degrees=(3, 5)) |
| 112 | + |
99 | 113 | for i in [10**10, 3*11**9-344, 4*12**8-5, 5*3**20+4]: |
100 | 114 | perm = big_perm_space[i] |
101 | 115 | perm.number # Just ensuring no exception |
@@ -200,6 +214,10 @@ def test_dapplied_perm_space(): |
200 | 214 | assert dapplied_perm['r'] == 3 |
201 | 215 | assert dapplied_perm['g'] == 4 |
202 | 216 |
|
| 217 | + assert dapplied_perm.as_dictoid['g'] == 4 |
| 218 | + assert dapplied_perm.items[0] == ('g', 4) |
| 219 | + |
| 220 | + |
203 | 221 | # `__contains__` works on the values, not the keys: |
204 | 222 | for char in 'growl': |
205 | 223 | assert char not in dapplied_perm |
@@ -251,6 +269,7 @@ def test_degreed_perm_space(): |
251 | 269 | funky_perm_space = PermSpace('isogram', domain='travels', |
252 | 270 | degrees=(1, 3, 5, 9), |
253 | 271 | fixed_map={'t': 'i', 'v': 'g',})[2:-2] |
| 272 | + assert funky_perm_space.purified == PermSpace(7) |
254 | 273 |
|
255 | 274 | assert funky_perm_space.is_rapplied |
256 | 275 | assert funky_perm_space.is_dapplied |
@@ -447,6 +466,7 @@ def test_infinite_perm_space(): |
447 | 466 | assert perm_space.length == infinity |
448 | 467 | assert perm_space == infinite_pure_perm_space |
449 | 468 | assert perm_space[100].length == infinity |
| 469 | + assert perm_space.index(perm_space[100]) == 100 |
450 | 470 |
|
451 | 471 |
|
452 | 472 |
|
|
0 commit comments