157 lines
2.9 KiB
Python
157 lines
2.9 KiB
Python
from qubed import Qube
|
|
|
|
d = {
|
|
"class=od": {
|
|
"expver=0001": {"param=1": {}, "param=2": {}},
|
|
"expver=0002": {"param=1": {}, "param=2": {}},
|
|
},
|
|
"class=rd": {
|
|
"expver=0001": {"param=1": {}, "param=2": {}, "param=3": {}},
|
|
"expver=0002": {"param=1": {}, "param=2": {}},
|
|
},
|
|
}
|
|
q = Qube.from_dict(d)
|
|
|
|
|
|
def test_eq():
|
|
r = Qube.from_dict(d)
|
|
assert q == r
|
|
|
|
|
|
def test_getitem():
|
|
assert q["class", "od"] == Qube.from_dict(
|
|
{
|
|
"expver=0001": {"param=1": {}, "param=2": {}},
|
|
"expver=0002": {"param=1": {}, "param=2": {}},
|
|
}
|
|
)
|
|
assert q["class", "od"]["expver", "0001"] == Qube.from_dict(
|
|
{
|
|
"param=1": {},
|
|
"param=2": {},
|
|
}
|
|
)
|
|
|
|
|
|
def test_n_leaves():
|
|
q = Qube.from_dict(
|
|
{"a=1/2/3": {"b=1/2/3": {"c=1/2/3": {}}}, "a=5": {"b=4": {"c=4": {}}}}
|
|
)
|
|
|
|
# Size is 3*3*3 + 1*1*1 = 27 + 1
|
|
assert q.n_leaves == 27 + 1
|
|
|
|
|
|
def test_n_leaves_empty():
|
|
assert Qube.empty().n_leaves == 0
|
|
|
|
|
|
def test_n_nodes_empty():
|
|
assert Qube.empty().n_nodes == 0
|
|
|
|
|
|
def test_union():
|
|
q = Qube.from_dict(
|
|
{
|
|
"a=1/2/3": {"b=1": {}},
|
|
}
|
|
)
|
|
r = Qube.from_dict(
|
|
{
|
|
"a=2/3/4": {"b=2": {}},
|
|
}
|
|
)
|
|
|
|
u = Qube.from_dict(
|
|
{
|
|
"a=4": {"b=2": {}},
|
|
"a=1": {"b=1": {}},
|
|
"a=2/3": {"b=1/2": {}},
|
|
}
|
|
)
|
|
|
|
assert q | r == u
|
|
|
|
|
|
def test_union_with_empty():
|
|
q = Qube.from_dict(
|
|
{
|
|
"a=1/2/3": {"b=1": {}},
|
|
}
|
|
)
|
|
assert q | Qube.empty() == q
|
|
|
|
|
|
def test_union_2():
|
|
q = Qube.from_datacube(
|
|
{
|
|
"class": "d1",
|
|
"dataset": ["climate-dt", "another-value"],
|
|
"generation": ["1", "2", "3"],
|
|
}
|
|
)
|
|
|
|
r = Qube.from_datacube(
|
|
{
|
|
"class": "d1",
|
|
"dataset": ["weather-dt", "climate-dt"],
|
|
"generation": ["1", "2", "3", "4"],
|
|
}
|
|
)
|
|
|
|
u = Qube.from_dict(
|
|
{
|
|
"class=d1": {
|
|
"dataset=climate-dt/weather-dt": {
|
|
"generation=1/2/3/4": {},
|
|
},
|
|
"dataset=another-value": {
|
|
"generation=1/2/3": {},
|
|
},
|
|
}
|
|
}
|
|
)
|
|
|
|
assert q | r == u
|
|
|
|
|
|
def test_difference():
|
|
q = Qube.from_dict(
|
|
{
|
|
"a=1/2/3/5": {"b=1": {}},
|
|
}
|
|
)
|
|
r = Qube.from_dict(
|
|
{
|
|
"a=2/3/4": {"b=1": {}},
|
|
}
|
|
)
|
|
|
|
i = Qube.from_dict(
|
|
{
|
|
"a=1/5": {"b=1": {}},
|
|
}
|
|
)
|
|
|
|
assert q - r == i
|
|
|
|
|
|
def test_order_independence():
|
|
u = Qube.from_dict(
|
|
{
|
|
"a=4": {"b=2": {}},
|
|
"a=1": {"b=2": {}, "b=1": {}},
|
|
"a=2/3": {"b=1/2": {}},
|
|
}
|
|
)
|
|
|
|
v = Qube.from_dict(
|
|
{
|
|
"a=2/3": {"b=1/2": {}},
|
|
"a=4": {"b=2": {}},
|
|
"a=1": {"b=1": {}, "b=2": {}},
|
|
}
|
|
)
|
|
|
|
assert u == v
|