def test_multi_level(self): obj = MapWrapper({ "a": MapWrapper({"b": "c"}, None), "d": MapWrapper({"e": "f"}, None), }, None) assert obj.dig("a", "b") == "c" assert obj.dig("d", "e") == "f"
def test_visit(self): obj1 = Base(None, None) obj1.called = Mock() obj2 = Base(None, None) obj2.not_called = Mock() MapWrapper({"a": obj1, "b": obj2}, None).visit( "called", "with", keyword="args", ) obj1.called.assert_called_once_with("with", keyword="args") obj2.not_called.assert_not_called()
def test_duplicated_key(self): with pytest.raises(ParseError, match="twice"): MapWrapper({"twice": 0}, None).merge( MapWrapper({"twice": 1}, None), )
def test_merge(self): testmap = MapWrapper({"a": 0}, None) testmap.merge(MapWrapper({"b": 1}, None)) assert testmap.data == dict(a=0, b=1)
def test_bad_index_type(self): assert MapWrapper({}, None).dig(1) is None
def test_bad_index(self): assert MapWrapper({}, None).dig("a") is None
def test_single_level(self): assert MapWrapper({"k": "v"}, None).dig("k") == "v"
def test_items(self): data = dict(a="b", c="d") assert list(MapWrapper(data, None).items()) == list(data.items())
def test_values(self): data = dict(a="b", c="d") assert list(MapWrapper(data, None).values()) == list(data.values())
def test_iteration(self): data = dict(a="b", c="d") assert list(MapWrapper(data, None)) == list(data)
def test_test_non_string_key(self): with pytest.raises(KeyError): assert MapWrapper({Base(1, None): "v"}, None)[1]
def test_empty_visit(self): MapWrapper({}, None).visit("called", "with", keyword="args")
def test_lut_access_for_string_key(self): assert MapWrapper({"k": "v"}, None)["k"] == "v"
def test_bare(self): assert MapWrapper({"a": Base("b", None)}, None).bare == {"a": "b"}