Skip to content

Commit cbd1305

Browse files
committed
test: add pytest test_initialization.py
1 parent 1762441 commit cbd1305

File tree

1 file changed

+270
-0
lines changed

1 file changed

+270
-0
lines changed

tests/test_initialization.py

Lines changed: 270 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,270 @@
1+
import pytest
2+
from MirrorDict import MirrorDict
3+
4+
5+
def test_empty_initialization():
6+
md = MirrorDict()
7+
assert len(md) == 0
8+
assert md == MirrorDict()
9+
10+
11+
def test_initialization():
12+
md = MirrorDict({"a": 1, "b": 2})
13+
assert md["a"] == 1
14+
assert md[1] == "a"
15+
assert md["b"] == 2
16+
assert md[2] == "b"
17+
18+
19+
def test_initialization_kwargs():
20+
md = MirrorDict(a=1, b=2, c=3) # = MirrorDict({'a': 1, 'b': 2, 'c': 3})
21+
22+
assert md["a"] == 1
23+
assert md["b"] == 2
24+
assert md["c"] == 3
25+
assert md[1] == "a"
26+
assert md[2] == "b"
27+
assert md[3] == "c"
28+
assert len(md) == 3
29+
assert md == MirrorDict(a=1, b=2, c=3)
30+
31+
32+
def test_initialization_zip_lists():
33+
md = MirrorDict(zip(["a", "b", "c"], [1, 2, 3]))
34+
35+
assert md["a"] == 1
36+
assert md["b"] == 2
37+
assert md["c"] == 3
38+
assert md[1] == "a"
39+
assert md[2] == "b"
40+
assert md[3] == "c"
41+
assert len(md) == 3
42+
assert md == MirrorDict(a=1, b=2, c=3)
43+
44+
45+
def test_initialization_dict():
46+
d = {"a": 1, "b": 2, "c": 3}
47+
md = MirrorDict(d)
48+
49+
assert md["a"] == 1
50+
assert md["b"] == 2
51+
assert md["c"] == 3
52+
assert md[1] == "a"
53+
assert md[2] == "b"
54+
assert md[3] == "c"
55+
assert len(md) == 3
56+
assert md == MirrorDict(a=1, b=2, c=3)
57+
58+
59+
def test_initialization_mirrordict():
60+
md1 = MirrorDict(a=1, b=2, c=3)
61+
md2 = MirrorDict(md1)
62+
63+
assert md2["a"] == 1
64+
assert md2["b"] == 2
65+
assert md2["c"] == 3
66+
assert md2[1] == "a"
67+
assert md2[2] == "b"
68+
assert md2[3] == "c"
69+
assert len(md1) == 3
70+
assert md1 == md2
71+
72+
73+
def test_initialization_list_of_tuples():
74+
# initialize 3 pairs as list of tuples.
75+
# keys = ['a','b','c']
76+
# values = [ 1, 2, 3 ]
77+
md = MirrorDict([("a", 1), ("b", 2), ("c", 3)]) # = MirrorDict({'a': 1, 'b': 2, 'c': 3})
78+
79+
assert md["a"] == 1
80+
assert md["b"] == 2
81+
assert md["c"] == 3
82+
assert md[1] == "a"
83+
assert md[2] == "b"
84+
assert md[3] == "c"
85+
assert len(md) == 3
86+
assert md == MirrorDict(a=1, b=2, c=3)
87+
88+
89+
def test_initialization_multiple_lists_of_tuples():
90+
md = MirrorDict([("a", 1), ("b", 2), ("c", 3)], [("d", 4), ("e", 5)], [("f", 6), ("g", 7)])
91+
92+
assert md["a"] == 1
93+
assert md["b"] == 2
94+
assert md["c"] == 3
95+
assert md["d"] == 4
96+
assert md["e"] == 5
97+
assert md["f"] == 6
98+
assert md["g"] == 7
99+
assert md[1] == "a"
100+
assert md[2] == "b"
101+
assert md[3] == "c"
102+
assert md[4] == "d"
103+
assert md[5] == "e"
104+
assert md[6] == "f"
105+
assert md[7] == "g"
106+
assert len(md) == 7
107+
assert md == MirrorDict(a=1, b=2, c=3, d=4, e=5, f=6, g=7)
108+
109+
110+
def test_initialization_multiple_zip_lists():
111+
md = MirrorDict(zip(["a", "b", "c"], [1, 2, 3]), zip(["d", "e", "f"], [4, 5, 6]))
112+
113+
assert md["a"] == 1
114+
assert md["b"] == 2
115+
assert md["c"] == 3
116+
assert md["d"] == 4
117+
assert md["e"] == 5
118+
assert md["f"] == 6
119+
assert md[1] == "a"
120+
assert md[2] == "b"
121+
assert md[3] == "c"
122+
assert md[4] == "d"
123+
assert md[5] == "e"
124+
assert md[6] == "f"
125+
assert len(md) == 6
126+
assert md == MirrorDict(a=1, b=2, c=3, d=4, e=5, f=6)
127+
128+
129+
def test_initialization_input_mixture1():
130+
md = MirrorDict(zip(["a", "b", "c"], [1, 2, 3]), [("d", 4), ("e", 5)], f=6, g=7)
131+
132+
assert md["a"] == 1
133+
assert md["b"] == 2
134+
assert md["c"] == 3
135+
assert md["d"] == 4
136+
assert md["e"] == 5
137+
assert md["f"] == 6
138+
assert md["g"] == 7
139+
assert md[1] == "a"
140+
assert md[2] == "b"
141+
assert md[3] == "c"
142+
assert md[4] == "d"
143+
assert md[5] == "e"
144+
assert md[6] == "f"
145+
assert md[7] == "g"
146+
assert len(md) == 7
147+
assert md == MirrorDict(a=1, b=2, c=3, d=4, e=5, f=6, g=7)
148+
149+
150+
def test_initialization_input_mixture2():
151+
d = {"f": 6, "g": 7, "h": 8}
152+
md = MirrorDict(zip(["a", "b", "c"], [1, 2, 3]), [("d", 4), ("e", 5)], d, i=9, j=10)
153+
154+
assert md["a"] == 1
155+
assert md["b"] == 2
156+
assert md["c"] == 3
157+
assert md["d"] == 4
158+
assert md["e"] == 5
159+
assert md["f"] == 6
160+
assert md["g"] == 7
161+
assert md["h"] == 8
162+
assert md["i"] == 9
163+
assert md["j"] == 10
164+
assert md[1] == "a"
165+
assert md[2] == "b"
166+
assert md[3] == "c"
167+
assert md[4] == "d"
168+
assert md[5] == "e"
169+
assert md[6] == "f"
170+
assert md[7] == "g"
171+
assert md[8] == "h"
172+
assert md[9] == "i"
173+
assert md[10] == "j"
174+
assert len(md) == 10
175+
assert md == MirrorDict(a=1, b=2, c=3, d=4, e=5, f=6, g=7, h=8, i=9, j=10)
176+
177+
178+
def test_initialization_input_mixture3():
179+
md1 = MirrorDict(zip(["a", "b", "c"], [1, 2, 3]))
180+
d = dict([("d", 4), ("e", 5)])
181+
md2 = dict([("f", 6), ("g", 7)])
182+
183+
md3 = MirrorDict(md1, d, md2, [("h", 8), ("i", 9)], j=10, k=11, l=12)
184+
185+
assert md3["a"] == 1
186+
assert md3["b"] == 2
187+
assert md3["c"] == 3
188+
assert md3["d"] == 4
189+
assert md3["e"] == 5
190+
assert md3["f"] == 6
191+
assert md3["g"] == 7
192+
assert md3["h"] == 8
193+
assert md3["i"] == 9
194+
assert md3["j"] == 10
195+
assert md3["k"] == 11
196+
assert md3["l"] == 12
197+
assert md3[1] == "a"
198+
assert md3[2] == "b"
199+
assert md3[3] == "c"
200+
assert md3[4] == "d"
201+
assert md3[5] == "e"
202+
assert md3[6] == "f"
203+
assert md3[7] == "g"
204+
assert md3[8] == "h"
205+
assert md3[9] == "i"
206+
assert md3[10] == "j"
207+
assert md3[11] == "k"
208+
assert md3[12] == "l"
209+
assert len(md3) == 12
210+
assert md3 == MirrorDict(a=1, b=2, c=3, d=4, e=5, f=6, g=7, h=8, i=9, j=10, k=11, l=12)
211+
212+
213+
def test_initialization_error():
214+
with pytest.raises(TypeError):
215+
MirrorDict("a", 1)
216+
217+
with pytest.raises(TypeError):
218+
MirrorDict(("a", 1))
219+
220+
with pytest.raises(TypeError):
221+
MirrorDict([("a", 1), "b", 2, ("c", 3)])
222+
223+
with pytest.raises(TypeError):
224+
MirrorDict([("a", 1), ("b", 2)], "c", 3)
225+
226+
227+
def test_initialization_str_error():
228+
with pytest.raises(TypeError):
229+
MirrorDict("ab", 1)
230+
231+
with pytest.raises(TypeError):
232+
MirrorDict(("ab", 1))
233+
234+
with pytest.raises(TypeError):
235+
MirrorDict([("a", 1), "ab", 2, ("c", 3)])
236+
237+
with pytest.raises(TypeError):
238+
MirrorDict([("a", 1), ("b", 2)], "cat", 3)
239+
240+
241+
def test_initialization_or():
242+
d1 = dict(zip(["a", "b", "c"], [1, 2, 3]))
243+
d2 = dict(zip(["d", "e", "f", "g"], [4, 5, 6, 7]))
244+
md1 = MirrorDict(d1)
245+
md2 = MirrorDict(d2)
246+
247+
md3 = md1 | md2
248+
md4 = d1 | md2
249+
md5 = md1 | d2
250+
md6 = d1 | d2
251+
252+
assert md3["a"] == 1
253+
assert md3["b"] == 2
254+
assert md3["c"] == 3
255+
assert md3["d"] == 4
256+
assert md3["e"] == 5
257+
assert md3["f"] == 6
258+
assert md3["g"] == 7
259+
assert md3[1] == "a"
260+
assert md3[2] == "b"
261+
assert md3[3] == "c"
262+
assert md3[4] == "d"
263+
assert md3[5] == "e"
264+
assert md3[6] == "f"
265+
assert md3[7] == "g"
266+
assert len(md3) == 7
267+
assert md3 == MirrorDict(a=1, b=2, c=3, d=4, e=5, f=6, g=7)
268+
assert md3 == md4
269+
assert md3 == md5
270+
assert md3 == md6

0 commit comments

Comments
 (0)