예제 #1
0
def test_not_failing_with_safe_variant():
    default = object()
    assert default is deep.get(a, 'x', default=default)
    assert default is deep.get(a, 'l.2', default=default)
    assert default is deep.get(a, 'd.x', default=default)
    assert (default, default) == deep.get(a, 'l.2 d.x', default=default)

    assert None is deep.get.safe(a, 'x')
    assert None is deep.get.safe(a, 'l.2')
    assert None is deep.get.safe(a, 'd.x')
    assert (None, None) == deep.get.safe(a, 'l.2 d.x')
예제 #2
0
파일: test_deep.py 프로젝트: hwms/nicepy
def test_not_failing_with_safe_variant():
    default = object()
    assert default is deep.get(a, 'x', default=default)
    assert default is deep.get(a, 'l.2', default=default)
    assert default is deep.get(a, 'd.x', default=default)
    assert (default, default) == deep.get(a, 'l.2 d.x', default=default)

    assert None is deep.get.safe(a, 'x')
    assert None is deep.get.safe(a, 'l.2')
    assert None is deep.get.safe(a, 'd.x')
    assert (None, None) == deep.get.safe(a, 'l.2 d.x')
예제 #3
0
파일: test_deep.py 프로젝트: hwms/nicepy
def test_failing():
    with pytest.raises(AttributeError):
        deep.get(a, 'x')
    with pytest.raises(IndexError):
        deep.get(a, 'l.2')
    with pytest.raises(KeyError):
        deep.get(a, 'd.x')
예제 #4
0
def test_failing():
    with pytest.raises(AttributeError):
        deep.get(a, 'x')
    with pytest.raises(IndexError):
        deep.get(a, 'l.2')
    with pytest.raises(KeyError):
        deep.get(a, 'd.x')
예제 #5
0
파일: methods.py 프로젝트: hwms/nicepy
def assert_equal_struct(obj, expected_obj, namepaths=None, expected_namepaths=None, msg=None):
    """
    The values on *expected_obj* are equal to those from *obj*

    If *namepaths* is given, only those attributes are compared.

    If *namepaths* isn't given, it is assumed as:
    * *expected_obj*.keys() if *expected_obj* is a dict or
    * range(len(*expected_obj*) if *expected_obj is a Sequence else
    * *expected_obj*.__dict__.keys(), filtered by all names that don't start with underscore.

    If *expected_namepaths* is given, *namepaths* at *obj* are compared with *expected_namepaths* on
    *expected_obj* in same order.

    Utilizes nicepy.deep.get, so *namepaths* and *expected_namepaths* can stand for attributes, or
    keys of a dict, or even indizes as strings for a list.

    """
    is_sequence = isinstance(expected_obj, Sequence)

    if not namepaths:
        if isinstance(expected_obj, dict):
            namepaths = expected_obj.keys()
        elif is_sequence:
            namepaths = map(str, range(len(expected_obj)))
        else:
            namepaths = filter(lambda a: not a.startswith('_'), expected_obj.__dict__)

    values = get(obj, namepaths, one_as_tuple=True)

    if is_sequence and not expected_namepaths:
        expected_values = expected_obj[:len(namepaths)]
    else:
        expected_values = get(expected_obj, expected_namepaths or namepaths, one_as_tuple=True)

    standard_msg = get_failed_msg(eq, values, expected_values, namepaths, expected_namepaths)

    if standard_msg:
        raise AssertionError(msg or standard_msg)
예제 #6
0
파일: test_deep.py 프로젝트: hwms/nicepy
def test_namepaths():
    assert a is deep.get(a)
    assert a is deep.get(a, '')

    # attributes
    assert a is deep.get(a.b, 'a')
    assert a is deep.get(a, 'b.a')

    # list indices
    assert a.l == deep.get(a, 'l')
    assert a.b is deep.get(a.l, '0')
    assert c.b is deep.get(a.l, '1')
    assert a.b is deep.get(a, 'l.0')
    assert c.b is deep.get(a, 'l.1')

    # dict values
    assert a.d == deep.get(a, 'd')
    assert a.b is deep.get(a.d, 'a')
    assert c.b is deep.get(a.d, 'c')
    assert a.b is deep.get(a, 'd.a')
    assert c.b is deep.get(a, 'd.c')

    # all together
    assert c.b is deep.get(a, 'l.0.a.d.c')

    # multiple at once
    assert (a.b, c.b) == deep.get(a, ('l.0', 'l.1'))
    assert (a.b, c.b) == deep.get(a, ('l.0 l.1'))
예제 #7
0
def test_namepaths():
    assert a is deep.get(a)
    assert a is deep.get(a, '')

    # attributes
    assert a is deep.get(a.b, 'a')
    assert a is deep.get(a, 'b.a')

    # list indices
    assert a.l == deep.get(a, 'l')
    assert a.b is deep.get(a.l, '0')
    assert c.b is deep.get(a.l, '1')
    assert a.b is deep.get(a, 'l.0')
    assert c.b is deep.get(a, 'l.1')

    # dict values
    assert a.d == deep.get(a, 'd')
    assert a.b is deep.get(a.d, 'a')
    assert c.b is deep.get(a.d, 'c')
    assert a.b is deep.get(a, 'd.a')
    assert c.b is deep.get(a, 'd.c')

    # all together
    assert c.b is deep.get(a, 'l.0.a.d.c')

    # multiple at once
    assert (a.b, c.b) == deep.get(a, ('l.0', 'l.1'))
    assert (a.b, c.b) == deep.get(a, ('l.0 l.1'))