-
Notifications
You must be signed in to change notification settings - Fork 46
/
Copy pathtest_util_iterators.py
88 lines (71 loc) · 2.3 KB
/
test_util_iterators.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
"""Test suite for prance.util.iterators ."""
__author__ = "Jens Finkhaeuser"
__copyright__ = "Copyright (c) 2016-2021 Jens Finkhaeuser"
__license__ = "MIT"
__all__ = ()
from prance.util import iterators
def test_item_iterator():
tester = {
"foo": 42,
"bar": {
"some": "dict",
},
"baz": [
{1: 2},
{3: 4},
],
}
frozen = tuple(iterators.item_iterator(tester))
assert len(frozen) == 9, "Iterator did not yield the correct number of items!"
# Test for a few paths
assert ((), tester) in frozen
assert (("bar", "some"), "dict") in frozen
assert (("baz", 0, 1), 2) in frozen
assert (("baz", 1), {3: 4}) in frozen
def test_item_iterator_empty():
frozen = tuple(iterators.item_iterator({}))
assert len(frozen) == 1, "Must return at least the item itself!"
assert ((), {}) in frozen
frozen = tuple(iterators.item_iterator([]))
assert len(frozen) == 1, "Must return at least the item itself!"
assert ((), []) in frozen
def test_reference_iterator_empty_dict():
tester = {}
frozen = tuple(iterators.reference_iterator(tester))
assert len(frozen) == 0, "Found items when it should not have!"
def test_reference_iterator_dict_without_references():
tester = {
"foo": 42,
"bar": "baz",
"baz": {
"quux": {
"fnord": False,
},
},
}
frozen = tuple(iterators.reference_iterator(tester))
assert len(frozen) == 0, "Found items when it should not have!"
def test_reference_iterator_dict_with_references():
tester = {
"foo": 42,
"bar": "baz",
"$ref": "root",
"baz": {
"$ref": "branch",
"quux": {
"fnord": False,
"$ref": "leaf",
},
},
}
frozen = tuple(iterators.reference_iterator(tester))
assert len(frozen) == 3, "Found a different item count than expected!"
# We have three references with their paths here, but we don't know which
# order the tuple has them in. Let's go through them all:
expectations = {
0: "root",
1: "branch",
2: "leaf",
}
for key, value, path in iterators.reference_iterator(tester):
assert value == expectations[len(path)]