qubed/tests/test_iteration.py
2025-05-29 17:09:17 +02:00

45 lines
1.1 KiB
Python

from frozendict import frozendict
from qubed import Qube
def test_iter_leaves_simple():
def make_hashable(list_like):
for d in list_like:
yield frozendict(d)
q = Qube.from_dict({"a=1/2": {"b=1/2": {}}})
entries = [
{"a": "1", "b": "1"},
{"a": "1", "b": "2"},
{"a": "2", "b": "1"},
{"a": "2", "b": "2"},
]
assert set(make_hashable(q.leaves())) == set(make_hashable(entries))
def test_datacubes():
q = Qube.from_tree("""
root, class=d1
├── date=19920101/19930101/19940101, params=1/2/3
└── date=19950101
├── level=1/2/3, params=1/2/3/4
└── params=1/2/3/4
""")
assert len(list(q.datacubes())) == 3
assert list(q.datacubes()) == [
{
"class": ["d1"],
"date": ["19920101", "19930101", "19940101"],
"params": ["1", "2", "3"],
},
{
"class": ["d1"],
"date": ["19950101"],
"level": ["1", "2", "3"],
"params": ["1", "2", "3", "4"],
},
{"class": ["d1"], "date": ["19950101"], "params": ["1", "2", "3", "4"]},
]