from qubed import Qube def test_eq(): 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) r = Qube.from_dict(d) assert q == r 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