|
1 | 1 | import pytest |
2 | 2 |
|
3 | | -from functools import reduce |
4 | 3 | from itertools import chain, cycle |
5 | 4 | from collections import OrderedDict, UserList |
6 | 5 | from collections.abc import Iterator |
|
11 | 10 | from cons.core import ConsPair, MaybeCons, ConsNull, ConsError, NonCons |
12 | 11 |
|
13 | 12 |
|
14 | | -def assert_all_equal(*tests): |
15 | | - def _equal(x, y): |
16 | | - assert x, y |
17 | | - return y |
18 | | - |
19 | | - reduce(_equal, tests) |
20 | | - |
21 | | - |
22 | 13 | def test_noncons_type(): |
23 | 14 |
|
24 | 15 | with pytest.raises(TypeError): |
@@ -83,8 +74,7 @@ def test_cons_join(): |
83 | 74 | cons("a") |
84 | 75 |
|
85 | 76 | assert cons(1, 2, 3, 4) == cons(1, cons(2, cons(3, 4))) |
86 | | - |
87 | | - assert_all_equal(cons("a", None), cons("a", []), ["a"]) |
| 77 | + assert cons("a", None) == cons("a", []) == ["a"] |
88 | 78 | assert cons("a", ()) == ("a",) |
89 | 79 | assert cons("a", []) == ["a"] |
90 | 80 | assert cons(None, "a").car is None |
@@ -124,7 +114,9 @@ def __add__(self, a): |
124 | 114 | assert cons(1, CustomList([2, 3])) is clist_res |
125 | 115 |
|
126 | 116 |
|
127 | | -def test_cons_str(): |
| 117 | +def test_cons_class(): |
| 118 | + c = cons(1, 2) |
| 119 | + assert {c: 1}[c] == 1 |
128 | 120 | assert repr(cons(1, 2)) == "ConsPair(1, 2)" |
129 | 121 | assert str(cons(1, 2, 3)) == "(1 . (2 . 3))" |
130 | 122 |
|
@@ -257,6 +249,10 @@ def test_unification(): |
257 | 249 | assert res[car_lv] == 1 |
258 | 250 | assert list(res[cdr_lv]) == [] |
259 | 251 |
|
| 252 | + res = unify(cons(car_lv, cdr_lv), iter([1]), {}) |
| 253 | + assert res[car_lv] == 1 |
| 254 | + assert list(res[cdr_lv]) == [] |
| 255 | + |
260 | 256 | res = unify(OrderedDict([("a", 1), ("b", 2)]), cons(car_lv, cdr_lv), {}) |
261 | 257 | assert res[car_lv] == ("a", 1) |
262 | 258 | assert res[cdr_lv] == [("b", 2)] |
|
0 commit comments