File: test_util_iterators.py

package info (click to toggle)
python-prance 25.4.8.0%2Bds1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,144 kB
  • sloc: python: 3,381; makefile: 205
file content (88 lines) | stat: -rw-r--r-- 2,352 bytes parent folder | download
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)]