コード例 #1
0
def test_resolve_nonexisting_instance_attribute():
    class User:
        pass

    user = User()
    with raises(th.AttributeError):
        get(user, _.name)
コード例 #2
0
def test_resolve_private_instance_attribute():
    class User:
        def __init__(self, name):
            self.__name = name

    user = User("Bob")
    with raises(th.AttributeError):
        get(user, _.__name)
コード例 #3
0
ファイル: test_errors.py プロジェクト: nikitanovosibirsk/th
def test_attribute_error():
    exception = "th.AttributeError: _.body['items'][0]\n" \
                "                     ^^^^ does not exist"

    with raises(th.AttributeError) as exc:
        get(None, _.body["items"][0])

    tb = "".join(format_exception(exc.type, exc.value, exc.tb))
    assert tb.endswith(exception + "\n")

    assert repr(exc.value) == exception
コード例 #4
0
ファイル: test_errors.py プロジェクト: nikitanovosibirsk/th
def test_key_error_verbose():
    exception = "th.KeyError: _['result']['items']\n" \
                "                         ^^^^^^^ does not exist\n" \
                "where _ is <class 'dict'>:\n" \
                "{'result': {}}"

    with raises(th.KeyError) as exc:
        get({"result": {}}, _["result"]["items"], verbose=True)

    tb = "".join(format_exception(exc.type, exc.value, exc.tb))
    assert tb.endswith(exception + "\n")
コード例 #5
0
ファイル: test_errors.py プロジェクト: nikitanovosibirsk/th
def test_index_error_verbose():
    exception = "th.IndexError: _['items'][10]\n" \
                "                          ^^ out of range\n" \
                "where _ is <class 'dict'>:\n" \
                "{'items': [1, 2, 3]}"

    with raises(th.IndexError) as exc:
        get({"items": [1, 2, 3]}, _["items"][10], verbose=True)

    tb = "".join(format_exception(exc.type, exc.value, exc.tb))
    assert tb.endswith(exception + "\n")
コード例 #6
0
ファイル: test_errors.py プロジェクト: nikitanovosibirsk/th
def test_key_error():
    exception = "th.KeyError: _['result']['items']\n" \
                "                         ^^^^^^^ does not exist"

    with raises(th.KeyError) as exc:
        get({"result": {}}, _["result"]["items"])

    tb = "".join(format_exception(exc.type, exc.value, exc.tb))
    assert tb.endswith(exception + "\n")

    assert repr(exc.value) == exception
コード例 #7
0
ファイル: test_errors.py プロジェクト: nikitanovosibirsk/th
def test_type_error_subscriptable():
    exception = "th.TypeError: _['status'][0]\n" \
                "              ^^^^^^^^^^^ inappropriate type (int)"

    with raises(th.TypeError) as exc:
        get({"status": 200}, _["status"][0])

    tb = "".join(format_exception(exc.type, exc.value, exc.tb))
    assert tb.endswith(exception + "\n")

    assert repr(exc.value) == exception
コード例 #8
0
ファイル: test_errors.py プロジェクト: nikitanovosibirsk/th
def test_type_error_subscriptable_verbose():
    exception = "th.TypeError: _['status'][0]\n" \
                "              ^^^^^^^^^^^ inappropriate type (int)\n" \
                "where _ is <class 'dict'>:\n" \
                "{'status': 200}"

    with raises(th.TypeError) as exc:
        get({"status": 200}, _["status"][0], verbose=True)

    tb = "".join(format_exception(exc.type, exc.value, exc.tb))
    assert tb.endswith(exception + "\n")
コード例 #9
0
ファイル: test_errors.py プロジェクト: nikitanovosibirsk/th
def test_index_error():
    exception = "th.IndexError: _['items'][10]\n" \
                "                          ^^ out of range"

    with raises(th.IndexError) as exc:
        get({"items": [1, 2, 3]}, _["items"][10])

    tb = "".join(format_exception(exc.type, exc.value, exc.tb))
    assert tb.endswith(exception + "\n")

    assert repr(exc.value) == exception
コード例 #10
0
ファイル: test_errors.py プロジェクト: nikitanovosibirsk/th
def test_type_error():
    exception = "th.TypeError: _['status'][None]\n" \
                "                          ^^^^ inappropriate type (NoneType)"

    with raises(th.TypeError) as exc:
        get({"status": "OK"}, _["status"][None])

    tb = "".join(format_exception(exc.type, exc.value, exc.tb))
    assert tb.endswith(exception + "\n")

    assert repr(exc.value) == exception
コード例 #11
0
ファイル: test_errors.py プロジェクト: nikitanovosibirsk/th
def test_type_error_verbose():
    exception = "th.TypeError: _['status'][None]\n" \
                "                          ^^^^ inappropriate type (NoneType)\n" \
                "where _ is <class 'dict'>:\n" \
                "{'status': 'OK'}"

    with raises(th.TypeError) as exc:
        get({"status": "OK"}, _["status"][None], verbose=True)

    tb = "".join(format_exception(exc.type, exc.value, exc.tb))
    assert tb.endswith(exception + "\n")
コード例 #12
0
ファイル: test_errors.py プロジェクト: nikitanovosibirsk/th
def test_attribute_error_verbose():
    exception = "th.AttributeError: _.body['items'][0]\n" \
                "                     ^^^^ does not exist\n" \
                "where _ is <class 'NoneType'>:\n" \
                "None"

    with raises(th.AttributeError) as exc:
        get(None, _.body["items"][0], verbose=True)

    tb = "".join(format_exception(exc.type, exc.value, exc.tb))
    assert tb.endswith(exception + "\n")
コード例 #13
0
def test_resolve_protected_instance_attribute():
    class User:
        def __init__(self, name):
            self._name = name

    user = User("Bob")
    assert get(user, _._name) == user._name
コード例 #14
0
def test_resolve_public_instance_attribute():
    class User:
        def __init__(self, name):
            self.name = name

    user = User("Bob")
    assert get(user, _.name) == user.name
コード例 #15
0
def test_resolve_sequence_inappropriate_type():
    numbers = [1, 2, 3]
    with raises(th.TypeError):
        get(numbers, _["first"])
コード例 #16
0
def test_resolve_sequence_slice():
    numbers = [1, 2, 3]
    assert get(numbers, _[0:1]) == numbers[0:1]
コード例 #17
0
def test_resolve_nonexisting_class_attribute():
    class User:
        pass

    with raises(th.AttributeError):
        get(User, _.unknown)
コード例 #18
0
def test_resolve_sequence_index():
    numbers = [1, 2, 3]
    assert get(numbers, _[0]) == numbers[0]
コード例 #19
0
def test_resolve_nonexisting_instance_attribute_with_default():
    class User:
        pass

    user = User()
    assert get(user, _.name, default=s.default) == s.default
コード例 #20
0
def test_resolve_mapping_int_key():
    numbers = {
        0: "zero",
    }
    assert get(numbers, _[0]) == numbers[0]
コード例 #21
0
def test_resolve_mapping_nonexisting_key():
    numbers = {}
    with raises(th.KeyError):
        get(numbers, _["key"])
コード例 #22
0
def test_resolve_nonexisting_class_attribute_with_default():
    class User:
        pass

    assert get(User, _.unknown, default=s.default) == s.default
コード例 #23
0
def test_resolve_mapping_str_key():
    numbers = {
        "id": 1,
    }
    assert get(numbers, _["id"]) == numbers["id"]
コード例 #24
0
def test_resolve_sequence_outside_index_with_default():
    assert get([], _[0], default=s.default) == s.default
コード例 #25
0
def test_resolve_class_attribute():
    class User:
        name = "Bob"

    assert get(User, _.name) == User.name
コード例 #26
0
def test_resolve_mapping_nonexisting_key_with_default():
    assert get({}, _["key"], default=s.default) == s.default
コード例 #27
0
def test_resolve_sequence_outside_index():
    numbers = []
    with raises(th.IndexError):
        get(numbers, _[len(numbers) + 1])
コード例 #28
0
def test_resolve_sequence_inappropriate_type_with_default():
    assert get([], _["first"], default=s.default) == s.default