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)]
|