예제 #1
0
def test_unsafe_wrapped_function_returns_error() -> None:
    error: Exception = Exception("oops")

    @safe
    def unsafe(x: int) -> int:
        if x > 5:
            raise error
        else:
            return x + 1

    result: Result[int, Exception] = unsafe(10)
    assert Err(error) == result
예제 #2
0
def test_map_error_err() -> None:
    m: Result[int, str] = Err("oops")
    assert Err(4) == m.mapError(len)
예제 #3
0
def test_err_withdefault() -> None:
    m: Result[int, str] = Err("oops")
    assert 0 == m.withDefault(0)
예제 #4
0
def test_apply_err_to_err() -> None:
    m: Result[int, str] = Err("oops")
    f: Result[Callable[[int], int], str] = Err("oops")
    assert Err("oops") == m.apply(f)
예제 #5
0
def test_apply_ok_to_err() -> None:
    m: Result[int, str] = Err("oops")
    increment: Callable[[int], int] = lambda x: x + 1
    assert Err("oops") == m.apply(Result.pure(increment))
예제 #6
0
def test_bind_err() -> None:
    m: Result[int, str] = Err("oops")
    increment: Callable[[int], Result[int, str]] = lambda x: Ok(x + 1)
    assert Err("oops") == m.bind(increment)
예제 #7
0
def test_err_to_maybe() -> None:
    result: Result[int, str] = Err("error")
    assert Nothing() == result.toMaybe()
예제 #8
0
def test_from_nothing() -> None:
    m: Maybe[int] = Nothing()
    result: Result[int, str] = Result.fromMaybe(m, "error")
    assert Err("error") == result
예제 #9
0
def test_nothing_to_result() -> None:
    assert Err("oops") == Nothing().toResult("oops")
예제 #10
0
def test_from_err() -> None:
    assert Nothing() == Maybe.fromResult(Err("oops"))
예제 #11
0
def test_err_to_optional() -> None:
    assert None == Err("error").toOptional()
예제 #12
0
def test_from_optional_none() -> None:
    assert Err("error") == Result.fromOptional(None, "error")