Ejemplo n.º 1
0
def test_result_traverse_ok(xs: List[int]):
    ys: List[Result[int, str]] = [Ok(x) for x in xs]
    zs = sequence(ys)
    res = zs.match(Ok, lambda ok: sum(ok.value), Error,
                   lambda error: throw(error.error))

    assert res == sum(xs)
Ejemplo n.º 2
0
def test_result_traverse_ok(xs: List[int]):
    ys: List[Result[int, str]] = [Ok(x) for x in xs]
    zs = sequence(ys)
    for value in zs.match(Ok[List[int], str]):
        assert sum(value) == sum(xs)
        break
    else:
        assert False
Ejemplo n.º 3
0
def test_result_traverse_error(xs: List[int]):
    error = "Do'h"
    ys: List[Result[int, str]] = [
        Ok(x) if i == 3 else Error(error) for x, i in enumerate(xs)
    ]

    zs = sequence(ys)
    for err in zs.match(Error[int, str]):
        assert err == error
Ejemplo n.º 4
0
def test_result_traverse_error(xs: List[int]):
    error = "Do'h"
    ys: List[Result[int, str]] = [
        Ok(x) if i == 3 else Error(error) for x, i in enumerate(xs)
    ]

    zs = sequence(ys)
    res = zs.match(Ok, lambda ok: "", Error, lambda error: error.error)

    assert res == error