def test_attr_dict(): ad = AttrDict() ad['one'] = 'one' ad[1] = 1 ad[('a', 2)] = ('a', 2) assert list(ad.keys()) == ['one', 1, ('a', 2)] assert len(ad) == 3 ad2 = ad.copy() assert list(ad2.keys()) == list(ad.keys()) assert ad.get('one', None) == 'one' assert ad.get('two', False) is False k, v = ad.popitem() assert k == 'one' assert v == 'one' items = ad.items() assert (1, 1) in items assert (('a', 2), ('a', 2)) in items assert len(items) == 2 values = ad.values() assert 1 in values assert ('a', 2) in values assert len(values) == 2 ad2 = AttrDict() ad2[1] = 3 ad2['one'] = 'one' ad2['a'] = 'a' ad.update(ad2) assert ad[1] == 3 assert 'a' in ad ad.__str__() with pytest.raises(AttributeError): ad.__ordered_dict__ = None with pytest.raises(AttributeError): ad.some_other_key with pytest.raises(KeyError): ad['__ordered_dict__'] = None del ad[1] assert 1 not in ad.keys() ad.new_value = 'new_value' assert 'new_value' in ad.keys() assert ad.new_value == ad['new_value'] for key in ad.keys(): if isinstance(key, str): assert key in dir(ad) new_value = ad.pop('new_value') assert new_value == 'new_value' del ad.one assert 'one' not in ad.keys() ad.clear() assert list(ad.keys()) == []
def test_attr_dict(): ad = AttrDict() ad["one"] = "one" ad[1] = 1 ad[("a", 2)] = ("a", 2) assert list(ad.keys()) == ["one", 1, ("a", 2)] assert len(ad) == 3 ad2 = ad.copy() assert list(ad2.keys()) == list(ad.keys()) assert ad.get("one", None) == "one" assert ad.get("two", False) is False k, v = ad.popitem() assert k == "one" assert v == "one" items = ad.items() assert (1, 1) in items assert (("a", 2), ("a", 2)) in items assert len(items) == 2 values = ad.values() assert 1 in values assert ("a", 2) in values assert len(values) == 2 ad2 = AttrDict() ad2[1] = 3 ad2["one"] = "one" ad2["a"] = "a" ad.update(ad2) assert ad[1] == 3 assert "a" in ad ad.__str__() with pytest.raises(AttributeError): ad.__private_dict__ = None with pytest.raises(AttributeError): ad.some_other_key with pytest.raises(KeyError): ad["__private_dict__"] = None del ad[1] assert 1 not in ad.keys() ad.new_value = "new_value" assert "new_value" in ad.keys() assert ad.new_value == ad["new_value"] for key in ad.keys(): if isinstance(key, str): assert key in dir(ad) new_value = ad.pop("new_value") assert new_value == "new_value" del ad.one assert "one" not in ad.keys() ad.clear() assert list(ad.keys()) == []