예제 #1
0
def test_flatten() -> None:
    m_empty: Maybe[Maybe[str]] = Just(Nothing())
    m_flat: Maybe[str] = m_empty.flatten()
    assert m_flat.or_else("backup") == "backup"

    m_full: Maybe[Maybe[str]] = Just(Just("becon"))
    assert m_full.flatten().or_else("backup") == "becon"
예제 #2
0
def test_as_iterable() -> None:
    m_empty: Maybe[str] = Nothing()
    i = 0
    for n in m_empty:
        i = i + 1
    assert i == 0

    for n in Just("one"):
        i = i + 1
    assert i == 1

    assert len(m_empty) == 0
    assert len(Just("one")) == 1
예제 #3
0
def test_from_nothing() -> None:
    m: Maybe[int] = Nothing()
    result: Result[int, str] = Result.fromMaybe(m, "error")
    assert Err("error") == result
예제 #4
0
def test_from_empty_list() -> None:
    assert Nothing() == Maybe.fromList([])
예제 #5
0
def test_last() -> None:
    maybes: List[Maybe[int]] = [Just(1), Just(2), Nothing()]
    assert Just(2) == last(maybes)
예제 #6
0
def test_first() -> None:
    maybes: List[Maybe[int]] = [Nothing(), Just(1), Just(2)]
    assert Just(1) == first(maybes)
예제 #7
0
def test_nothing_withdefault() -> None:
    m: Maybe[int] = Nothing()
    assert 0 == m.withDefault(0)
예제 #8
0
def test_apply_nothing_to_nothing() -> None:
    m: Maybe[int] = Nothing()
    f: Maybe[Callable[[int], int]] = Nothing()
    assert Nothing() == m.apply(f)
예제 #9
0
def test_nothing_to_result() -> None:
    assert Err("oops") == Nothing().toResult("oops")
예제 #10
0
def test_bind_nothing() -> None:
    m: Maybe[int] = Nothing()
    increment: Callable[[int], Maybe[int]] = lambda x: Just(x + 1)
    assert Nothing() == m.bind(increment)
예제 #11
0
def test_or_else() -> None:
    m_empty: Maybe[str] = Nothing()
    assert m_empty.or_else("backup") == "backup"

    m_full: Maybe[str] = Just("becon")
    assert m_full.or_else("backup") == "becon"
예제 #12
0
def test_nothing_to_optional() -> None:
    assert None == Nothing().toOptional()
예제 #13
0
def test_from_optional_none() -> None:
    assert Nothing() == Maybe.fromOptional(None)
예제 #14
0
def test_err_to_maybe() -> None:
    result: Result[int, str] = Err("error")
    assert Nothing() == result.toMaybe()
예제 #15
0
def test_apply_just_to_nothing() -> None:
    m: Maybe[int] = Nothing()
    increment: Callable[[int], int] = lambda x: x + 1
    assert Nothing() == m.apply(Maybe.pure(increment))
예제 #16
0
 def __init__(self, f):
     self.subscribers = []
     self.cache = Nothing()
     self.semaphore = threading.BoundedSemaphore(1)
     f(self.__callback)
예제 #17
0
def test_from_err() -> None:
    assert Nothing() == Maybe.fromResult(Err("oops"))