Exemplo n.º 1
0
def test_attr_dict():
    d = AttrDict()
    d.x = 1
    d.y = {}
    d.y.z = 2
    d.q = AttrDict()
    d.q.r = 3
    d.q.s = AttrDict(AttrDict({}))  # I'm just being weird
    d['q']['s']['t'] = 4

    assert d.x == 1
    assert d.y.z == d['y']['z']
    assert d.y.z == 2
    assert d.q.r == d['q']['r']
    assert d.q.r == 3
    assert d.q.s.t == d['q'].s['t']  # Don't do this in real code.
    assert isinstance(d, dict)
    assert isinstance(d.y, dict)
    assert isinstance(d['y'], dict)
    assert isinstance(d.q.s, dict)
    assert isinstance(d['q']['s'], dict)
    assert isinstance(d.q.s, dict)
    assert isinstance(d['q']['s'], dict)

    # We can say AttrDict(AttrDict({'foo': 'bar'})) with no ill effects.
    e = AttrDict(d)
    assert e == d
    assert e.x == 1
    assert e.y.z == d['y']['z']
    assert e.y.z == 2
    assert e.q.r == d['q']['r']
    assert e.q.r == 3
    assert isinstance(e, dict)
    assert isinstance(e.y, dict)
    assert isinstance(e['y'], dict)
Exemplo n.º 2
0
def test_attr_dict():
    d = AttrDict()
    d.x = 1
    d.y = {}
    d.y.z = 2
    d.q = AttrDict()
    d.q.r = 3
    d.q.s = AttrDict(AttrDict({}))  # I'm just being weird
    d['q']['s']['t'] = 4

    assert d.x == 1
    assert d.y.z == d['y']['z']
    assert d.y.z == 2
    assert d.q.r == d['q']['r']
    assert d.q.r == 3
    assert d.q.s.t == d['q'].s['t']  # Don't do this in real code.
    assert isinstance(d, dict)
    assert isinstance(d.y, dict)
    assert isinstance(d['y'], dict)
    assert isinstance(d.q.s, dict)
    assert isinstance(d['q']['s'], dict)
    assert isinstance(d.q.s, dict)
    assert isinstance(d['q']['s'], dict)

    # We can say AttrDict(AttrDict({'foo': 'bar'})) with no ill effects.
    e = AttrDict(d)
    assert e == d
    assert e.x == 1
    assert e.y.z == d['y']['z']
    assert e.y.z == 2
    assert e.q.r == d['q']['r']
    assert e.q.r == 3
    assert isinstance(e, dict)
    assert isinstance(e.y, dict)
    assert isinstance(e['y'], dict)
Exemplo n.º 3
0
def test_attr_dict_kwargs():
    """Test that attributes can be set as named arguments"""
    d = AttrDict(x=0, y=1)
    assert d.x == 0
    assert d.y == 1
    #We can stil have an initial document and named values
    #named values take over.
    e = AttrDict({'x': 0, 'y': 1}, x=1)
    assert e.x == 1
    assert e.y == 1
    #We can pass a dictionary as a value
    f = AttrDict(x={'a': 1})
    assert f.x.a == 1
Exemplo n.º 4
0
def test_attr_dict_from_dict():
    d = {
        'a': 1,
        'b': {
            'c': 2,
            'd': {
                'e': 3,
                'f': 4,
            },
            'g': 5,
        },
        'h': 6,
        'i': 7,
    }
    attr_dict = AttrDict(d)
    assert attr_dict.a == 1
    assert attr_dict['a'] == 1

    assert attr_dict.b.c == 2
    assert attr_dict['b'].c == 2
    assert attr_dict['b']['c'] == 2
    assert attr_dict.b['c'] == 2

    assert attr_dict.b.d.e == 3
    assert attr_dict['b']['d']['e'] == 3
Exemplo n.º 5
0
def test_attrdict_del():
    f = AttrDict()
    f.x = 1
    del f.x
    with pytest.raises(AttributeError):
        tmp = f.x
    with pytest.raises(KeyError):
        tmp = f['x']

    f['x'] = 1
    del f['x']

    with pytest.raises(KeyError):
        tmp = f['x']
    with pytest.raises(AttributeError):
        tmp = f.x
Exemplo n.º 6
0
def test_attrdict_del():
    f = AttrDict()
    f.x = 1
    del f.x
    with pytest.raises(AttributeError):
        tmp = f.x
    with pytest.raises(KeyError):
        tmp = f['x']

    f['x'] = 1
    del f['x']

    with pytest.raises(KeyError):
        tmp = f['x']
    with pytest.raises(AttributeError):
        tmp = f.x