Files
2022-10-08 20:32:00 +02:00

92 lines
2.5 KiB
Python

from .dictmapper import DictMapper
class TestDictMapper():
def test_dict_mapper_basic_set(self):
d = {}
DictMapper.set(d, ["a", "b", "c"], 1)
assert d == {"a": {"b": {"c": 1}}}
def test_dict_mapper_basic_get(self):
d = {"a": {"b": {"c": 1}}}
assert DictMapper.get(d, ["a", "b", "c"]) == 1
def test_get_variations(self):
d = {"a": {"b": {"c": 1}}}
assert DictMapper.get(d, ["a", "b", "c"]) == DictMapper.get(d["a"], ["b", "c"])
assert DictMapper.get(d, ["a", "b", "c"]) == DictMapper.get(d["a"]["b"], ["c"])
assert DictMapper.get(d, ["a", "b", "c"]) == d["a"]["b"]["c"]
def test_get_sub_dictionaries(self):
d = {"a": {"b": {"c": 1}}}
assert DictMapper.get(d, ["a", "b"]) == d["a"]["b"]
assert DictMapper.get(d["a"], ["b"]) == DictMapper.get(d["a"], ["b"])
def test_set_variation(self):
d = {"a": {"b": {"c": 1}}}
d1 = {}
d2 = {}
DictMapper.set(d1, ["a", "b"], {"c": 1})
assert d1 == d
DictMapper.set(d2, ["a"], {"b": {"c": 1}})
assert d2 == d
def test_multiple_paths(self):
d = {}
DictMapper.set(d, ["a", "b1", "c"], 1)
DictMapper.set(d, ["a", "b1", "d"], 2)
DictMapper.set(d, ["a", "b2", "c"], 3)
DictMapper.set(d, ["a", "b2", "d"], 4)
expected = {
"a": {
"b1": {
"c": 1,
"d": 2,
},
"b2": {
"c": 3,
"d": 4,
}
}
}
assert d == expected
def test_overwrite(self):
d = {}
DictMapper.set(d, ["a", "b1", "c"], 1)
DictMapper.set(d, ["a", "b1", "d"], 2)
DictMapper.set(d, ["a", "b2", "c"], 3)
DictMapper.set(d, ["a", "b2", "d"], 4)
expected = {
"a": {
"b1": {
"c": 1,
"d": 2,
},
"b2": {
"c": 3,
"d": 4,
}
}
}
assert d == expected
DictMapper.set(d, ["a", "b2"], 4)
expected = {
"a": {
"b1": {
"c": 1,
"d": 2,
},
"b2": 4,
}
}
assert d == expected