Skip to content

Commit 656cd71

Browse files
nezharJulian
authored andcommitted
Add test for list_equal and dict_equal
1 parent 36810ff commit 656cd71

File tree

1 file changed

+135
-0
lines changed

1 file changed

+135
-0
lines changed

jsonschema/tests/test_utils.py

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
from unittest import TestCase
2+
3+
from jsonschema._utils import dict_equal, list_equal
4+
5+
6+
class TestDictEqual(TestCase):
7+
8+
def test_equal_dictionaries(self):
9+
dict_1 = {"a": "b", "c": "d"}
10+
dict_2 = {"c": "d", "a": "b"}
11+
self.assertTrue(dict_equal(dict_1, dict_2))
12+
13+
def test_missing_key(self):
14+
dict_1 = {"a": "b", "c": "d"}
15+
dict_2 = {"c": "d", "x": "b"}
16+
self.assertFalse(dict_equal(dict_1, dict_2))
17+
18+
def test_additional_key(self):
19+
dict_1 = {"a": "b", "c": "d"}
20+
dict_2 = {"c": "d", "a": "b", "x": "x"}
21+
self.assertFalse(dict_equal(dict_1, dict_2))
22+
23+
def test_missing_value(self):
24+
dict_1 = {"a": "b", "c": "d"}
25+
dict_2 = {"c": "d", "a": "x"}
26+
self.assertFalse(dict_equal(dict_1, dict_2))
27+
28+
def test_empty_dictionaries(self):
29+
dict_1 = {}
30+
dict_2 = {}
31+
self.assertTrue(dict_equal(dict_1, dict_2))
32+
33+
def test_one_none(self):
34+
dict_1 = None
35+
dict_2 = {"a": "b", "c": "d"}
36+
with self.assertRaises(AttributeError):
37+
self.assertFalse(dict_equal(dict_1, dict_2))
38+
with self.assertRaises(AttributeError):
39+
self.assertFalse(dict_equal(dict_1, dict_2))
40+
41+
def test_both_none(self):
42+
with self.assertRaises(AttributeError):
43+
self.assertFalse(dict_equal(None, None))
44+
45+
def test_same_item(self):
46+
dict_1 = {"a": "b", "c": "d"}
47+
self.assertTrue(dict_equal(dict_1, dict_1))
48+
49+
def test_nested_dict_equal(self):
50+
dict_1 = {"a": {"a": "b", "c": "d"}, "c": "d"}
51+
dict_2 = {"c": "d", "a": {"a": "b", "c": "d"}}
52+
self.assertTrue(dict_equal(dict_1, dict_2))
53+
54+
def test_nested_dict_unequal(self):
55+
dict_1 = {"a": {"a": "b", "c": "d"}, "c": "d"}
56+
dict_2 = {"c": "d", "a": {"a": "b", "c": "x"}}
57+
self.assertFalse(dict_equal(dict_1, dict_2))
58+
59+
def test_nested_list_equal(self):
60+
dict_1 = {"a": ["a", "b", "c", "d"], "c": "d"}
61+
dict_2 = {"c": "d", "a": ["a", "b", "c", "d"]}
62+
self.assertTrue(dict_equal(dict_1, dict_2))
63+
64+
def test_nested_list_unequal(self):
65+
dict_1 = {"a": ["a", "b", "c", "d"], "c": "d"}
66+
dict_2 = {"c": "d", "a": ["b", "c", "d", "a"]}
67+
self.assertFalse(dict_equal(dict_1, dict_2))
68+
69+
70+
class TestListEqual(TestCase):
71+
72+
def test_equal_lists(self):
73+
list_1 = ["a", "b", "c"]
74+
list_2 = ["a", "b", "c"]
75+
self.assertTrue(list_equal(list_1, list_2))
76+
77+
def test_unsorted_lists(self):
78+
list_1 = ["a", "b", "c"]
79+
list_2 = ["b", "b", "a"]
80+
self.assertFalse(list_equal(list_1, list_2))
81+
82+
def test_first_list_larger(self):
83+
list_1 = ["a", "b", "c"]
84+
list_2 = ["a", "b"]
85+
self.assertFalse(list_equal(list_1, list_2))
86+
87+
def test_second_list_larger(self):
88+
list_1 = ["a", "b"]
89+
list_2 = ["a", "b", "c"]
90+
self.assertFalse(list_equal(list_1, list_2))
91+
92+
def test_list_with_none_unequal(self):
93+
list_1 = ["a", "b", None]
94+
list_2 = ["a", "b", "c"]
95+
self.assertFalse(list_equal(list_1, list_2))
96+
97+
list_1 = ["a", "b", None]
98+
list_2 = [None, "b", "c"]
99+
self.assertFalse(list_equal(list_1, list_2))
100+
101+
def test_list_with_none_equal(self):
102+
list_1 = ["a", None, "c"]
103+
list_2 = ["a", None, "c"]
104+
self.assertTrue(list_equal(list_1, list_2))
105+
106+
def test_empty_list(self):
107+
list_1 = []
108+
list_2 = []
109+
self.assertTrue(list_equal(list_1, list_2))
110+
111+
def test_one_none(self):
112+
list_1 = None
113+
list_2 = []
114+
with self.assertRaises(TypeError):
115+
self.assertTrue(list_equal(list_1, list_2))
116+
117+
def test_both_none(self):
118+
list_1 = None
119+
list_2 = None
120+
with self.assertRaises(TypeError):
121+
self.assertTrue(list_equal(list_1, list_2))
122+
123+
def test_same_list(self):
124+
list_1 = ["a", "b", "c"]
125+
self.assertTrue(list_equal(list_1, list_1))
126+
127+
def test_equal_nested_lists(self):
128+
list_1 = ["a", ["b", "c"], "d"]
129+
list_2 = ["a", ["b", "c"], "d"]
130+
self.assertTrue(list_equal(list_1, list_2))
131+
132+
def test_unequal_nested_lists(self):
133+
list_1 = ["a", ["b", "c"], "d"]
134+
list_2 = ["a", [], "c"]
135+
self.assertFalse(list_equal(list_1, list_2))

0 commit comments

Comments
 (0)