コード例 #1
0
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()) == []
コード例 #2
0
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()) == []