module Signet.Unstable.Extra.MaybeTest where

import qualified Data.Void as Void
import qualified Signet.Unstable.Extra.Maybe as Maybe
import qualified Signet.Unstable.Extra.Tasty as Tasty
import Test.Tasty.HUnit ((@?=))

spec :: Tasty.Spec
spec :: Spec
spec = TestName -> Spec -> Spec
Tasty.describe TestName
"Signet.Unstable.Extra.Maybe" (Spec -> Spec) -> Spec -> Spec
forall a b. (a -> b) -> a -> b
$ do
  TestName -> Spec -> Spec
Tasty.describe TestName
"note" (Spec -> Spec) -> Spec -> Spec
forall a b. (a -> b) -> a -> b
$ do
    TestName -> Assertion -> Spec
Tasty.it TestName
"works with nothing" (Assertion -> Spec) -> Assertion -> Spec
forall a b. (a -> b) -> a -> b
$ do
      () -> Maybe Void -> Either () Void
forall e a. e -> Maybe a -> Either e a
Maybe.note () (Maybe Void
forall a. Maybe a
Nothing :: Maybe Void.Void) Either () Void -> Either () Void -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= () -> Either () Void
forall a b. a -> Either a b
Left ()

    TestName -> Assertion -> Spec
Tasty.it TestName
"works with just" (Assertion -> Spec) -> Assertion -> Spec
forall a b. (a -> b) -> a -> b
$ do
      () -> Maybe Bool -> Either () Bool
forall e a. e -> Maybe a -> Either e a
Maybe.note () (Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
True) Either () Bool -> Either () Bool -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= Bool -> Either () Bool
forall a b. b -> Either a b
Right Bool
True