mirror of
https://github.com/correl/typesafe-monads.git
synced 2024-11-14 11:09:36 +00:00
Add more tests for Maybe
This commit is contained in:
parent
68705f25cc
commit
c31a9c49ca
1 changed files with 53 additions and 5 deletions
|
@ -1,21 +1,68 @@
|
|||
import pytest # type: ignore
|
||||
from typing import List
|
||||
from typing import Callable, List
|
||||
|
||||
from monads.maybe import Maybe, Just, Nothing, maybe, first, last
|
||||
|
||||
|
||||
def test_maybe_none():
|
||||
def test_bind_just() -> None:
|
||||
m: Maybe[int] = Just(5)
|
||||
increment: Callable[[int], Maybe[int]] = lambda x: Just(x + 1)
|
||||
assert Just(6) == m.bind(increment)
|
||||
|
||||
|
||||
def test_bind_nothing() -> None:
|
||||
m: Maybe[int] = Nothing()
|
||||
increment: Callable[[int], Maybe[int]] = lambda x: Just(x + 1)
|
||||
assert Nothing() == m.bind(increment)
|
||||
|
||||
|
||||
def test_apply_just_to_just() -> None:
|
||||
m: Maybe[int] = Just(5)
|
||||
increment: Callable[[int], int] = lambda x: x + 1
|
||||
assert Just(6) == m.apply(Maybe.pure(increment))
|
||||
|
||||
|
||||
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))
|
||||
|
||||
|
||||
def test_apply_nothing_to_just() -> None:
|
||||
m: Maybe[int] = Just(5)
|
||||
f: Maybe[Callable[[int], int]] = Nothing()
|
||||
assert Nothing() == m.apply(f)
|
||||
|
||||
|
||||
def test_apply_nothing_to_nothing() -> None:
|
||||
m: Maybe[int] = Nothing()
|
||||
f: Maybe[Callable[[int], int]] = Nothing()
|
||||
assert Nothing() == m.apply(f)
|
||||
|
||||
|
||||
def test_just_withdefault() -> None:
|
||||
m: Maybe[int] = Just(5)
|
||||
assert 5 == m.withDefault(0)
|
||||
|
||||
|
||||
def test_nothing_withdefault() -> None:
|
||||
m: Maybe[int] = Nothing()
|
||||
assert 0 == m.withDefault(0)
|
||||
|
||||
|
||||
def test_maybe_none() -> None:
|
||||
assert isinstance(maybe(None), Nothing)
|
||||
|
||||
|
||||
def test_maybe_something():
|
||||
def test_maybe_something() -> None:
|
||||
assert isinstance(maybe(False), Just)
|
||||
|
||||
|
||||
def test_maybe_boolean_false():
|
||||
def test_maybe_boolean_false() -> None:
|
||||
assert isinstance(maybe(False, predicate=bool), Nothing)
|
||||
|
||||
|
||||
def test_maybe_boolean_true():
|
||||
def test_maybe_boolean_true() -> None:
|
||||
assert isinstance(maybe(True, predicate=bool), Just)
|
||||
|
||||
|
||||
|
@ -23,6 +70,7 @@ def test_first() -> None:
|
|||
maybes: List[Maybe[int]] = [Nothing(), Just(1), Just(2)]
|
||||
assert Just(1) == first(maybes)
|
||||
|
||||
|
||||
def test_last() -> None:
|
||||
maybes: List[Maybe[int]] = [Just(1), Just(2), Nothing()]
|
||||
assert Just(2) == last(maybes)
|
||||
|
|
Loading…
Reference in a new issue