Skip to content

Commit 1c8c249

Browse files
committed
adding pytests modules for list
1 parent ceaad49 commit 1c8c249

File tree

3 files changed

+643
-0
lines changed

3 files changed

+643
-0
lines changed
Lines changed: 195 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,195 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
Unit tests for mathics.builtins.list.constructing
4+
"""
5+
from test.helper import check_evaluation
6+
7+
import pytest
8+
9+
10+
@pytest.mark.parametrize(
11+
("str_expr", "expected_messages", "str_expected", "assert_message"),
12+
[
13+
(
14+
"assoc=<|a -> x, b -> y, c -> <|d -> t|>|>",
15+
None,
16+
"<|a -> x, b -> y, c -> <|d -> t|>|>",
17+
None,
18+
),
19+
('assoc["s"]', None, "Missing[KeyAbsent, s]", None),
20+
(
21+
"assoc=<|a -> x, b + c -> y, {<|{}|>, a -> {z}}|>",
22+
None,
23+
"<|a -> {z}, b + c -> y|>",
24+
None,
25+
),
26+
("assoc[a]", None, "{z}", None),
27+
('assoc=<|"x" -> 1, {y} -> 1|>', None, "<|x -> 1, {y} -> 1|>", None),
28+
('assoc["x"]', None, "1", None),
29+
(
30+
"<|<|a -> v|> -> x, <|b -> y, a -> <|c -> z|>, {}, <||>|>, {d}|>[c]",
31+
None,
32+
"Association[Association[a -> v] -> x, Association[b -> y, a -> Association[c -> z], {}, Association[]], {d}][c]",
33+
None,
34+
),
35+
(
36+
"<|<|a -> v|> -> x, <|b -> y, a -> <|c -> z|>, {d}|>, {}, <||>|>[a]",
37+
None,
38+
"Association[Association[a -> v] -> x, Association[b -> y, a -> Association[c -> z], {d}], {}, Association[]][a]",
39+
None,
40+
),
41+
(
42+
"assoc=<|<|a -> v|> -> x, <|b -> y, a -> <|c -> z, {d}|>, {}, <||>|>, {}, <||>|>",
43+
None,
44+
"<|<|a -> v|> -> x, b -> y, a -> Association[c -> z, {d}]|>",
45+
None,
46+
),
47+
("assoc[a]", None, "Association[c -> z, {d}]", None),
48+
# (
49+
# "<|a -> x, b -> y, c -> <|d -> t|>|> // ToBoxes",
50+
# None,
51+
# "RowBox[{<|, RowBox[{RowBox[{a, ->, x}], ,, RowBox[{b, ->, y}], ,, RowBox[{c, ->, RowBox[{<|, RowBox[{d, ->, t}], |>}]}]}], |>}]",
52+
# None,
53+
# ),
54+
# (
55+
# "Association[a -> x, b -> y, c -> Association[d -> t, Association[e -> u]]] // ToBoxes",
56+
# None,
57+
# "RowBox[{<|, RowBox[{RowBox[{a, ->, x}], ,, RowBox[{b, ->, y}], ,, RowBox[{c, ->, RowBox[{<|, RowBox[{RowBox[{d, ->, t}], ,, RowBox[{e, ->, u}]}], |>}]}]}], |>}]",
58+
# None,
59+
# ),
60+
("Keys[a -> x]", None, "a", None),
61+
(
62+
"Keys[{a -> x, a -> y, {a -> z, <|b -> t|>, <||>, {}}}]",
63+
None,
64+
"{a, a, {a, {b}, {}, {}}}",
65+
None,
66+
),
67+
(
68+
"Keys[{a -> x, a -> y, <|a -> z, {b -> t}, <||>, {}|>}]",
69+
None,
70+
"{a, a, {a, b}}",
71+
None,
72+
),
73+
(
74+
"Keys[<|a -> x, a -> y, <|a -> z, <|b -> t|>, <||>, {}|>|>]",
75+
None,
76+
"{a, b}",
77+
None,
78+
),
79+
(
80+
"Keys[<|a -> x, a -> y, {a -> z, {b -> t}, <||>, {}}|>]",
81+
None,
82+
"{a, b}",
83+
None,
84+
),
85+
(
86+
"Keys[<|a -> x, <|a -> y, b|>|>]",
87+
(
88+
"The argument Association[a -> x, Association[a -> y, b]] is not a valid Association or a list of rules.",
89+
),
90+
"Keys[Association[a -> x, Association[a -> y, b]]]",
91+
None,
92+
),
93+
(
94+
"Keys[<|a -> x, {a -> y, b}|>]",
95+
(
96+
"The argument Association[a -> x, {a -> y, b}] is not a valid Association or a list of rules.",
97+
),
98+
"Keys[Association[a -> x, {a -> y, b}]]",
99+
None,
100+
),
101+
(
102+
"Keys[{a -> x, <|a -> y, b|>}]",
103+
(
104+
"The argument Association[a -> y, b] is not a valid Association or a list of rules.",
105+
),
106+
"Keys[{a -> x, Association[a -> y, b]}]",
107+
None,
108+
),
109+
(
110+
"Keys[{a -> x, {a -> y, b}}]",
111+
("The argument b is not a valid Association or a list of rules.",),
112+
"Keys[{a -> x, {a -> y, b}}]",
113+
None,
114+
),
115+
(
116+
"Keys[a -> x, b -> y]",
117+
("Keys called with 2 arguments; 1 argument is expected.",),
118+
"Keys[a -> x, b -> y]",
119+
None,
120+
),
121+
("Values[a -> x]", None, "x", None),
122+
(
123+
"Values[{a -> x, a -> y, {a -> z, <|b -> t|>, <||>, {}}}]",
124+
None,
125+
"{x, y, {z, {t}, {}, {}}}",
126+
None,
127+
),
128+
(
129+
"Values[{a -> x, a -> y, <|a -> z, {b -> t}, <||>, {}|>}]",
130+
None,
131+
"{x, y, {z, t}}",
132+
None,
133+
),
134+
(
135+
"Values[<|a -> x, a -> y, <|a -> z, <|b -> t|>, <||>, {}|>|>]",
136+
None,
137+
"{z, t}",
138+
None,
139+
),
140+
(
141+
"Values[<|a -> x, a -> y, {a -> z, {b -> t}, <||>, {}}|>]",
142+
None,
143+
"{z, t}",
144+
None,
145+
),
146+
(
147+
"Values[<|a -> x, <|a -> y, b|>|>]",
148+
(
149+
"The argument Association[a -> x, Association[a -> y, b]] is not a valid Association or a list of rules.",
150+
),
151+
"Values[Association[a -> x, Association[a -> y, b]]]",
152+
None,
153+
),
154+
(
155+
"Values[<|a -> x, {a -> y, b}|>]",
156+
(
157+
"The argument Association[a -> x, {a -> y, b}] is not a valid Association or a list of rules.",
158+
),
159+
"Values[Association[a -> x, {a -> y, b}]]",
160+
None,
161+
),
162+
(
163+
"Values[{a -> x, <|a -> y, b|>}]",
164+
(
165+
"The argument {a -> x, Association[a -> y, b]} is not a valid Association or a list of rules.",
166+
),
167+
"Values[{a -> x, Association[a -> y, b]}]",
168+
None,
169+
),
170+
(
171+
"Values[{a -> x, {a -> y, b}}]",
172+
(
173+
"The argument {a -> x, {a -> y, b}} is not a valid Association or a list of rules.",
174+
),
175+
"Values[{a -> x, {a -> y, b}}]",
176+
None,
177+
),
178+
(
179+
"Values[a -> x, b -> y]",
180+
("Values called with 2 arguments; 1 argument is expected.",),
181+
"Values[a -> x, b -> y]",
182+
None,
183+
),
184+
("assoc=.;subassoc=.;", None, "Null", None),
185+
],
186+
)
187+
def test_associations_private_doctests(
188+
str_expr, expected_messages, str_expected, assert_message
189+
):
190+
check_evaluation(
191+
str_expr,
192+
str_expected,
193+
failure_message=assert_message,
194+
expected_messages=expected_messages,
195+
)

0 commit comments

Comments
 (0)