{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
module Lib.Functor.Test where

import Test.Tasty

import Data.Proxy (Proxy(..))
import Prelude hiding ((&&), not, (||))

import Language.Symantic ()
import Language.Symantic.Lib
import Compiling.Test

type SS =
 [ Proxy (->)
 , Proxy Bool
 , Proxy Functor
 , Proxy Integer
 , Proxy Maybe
 ]
(==>) = readTe @() @SS

tests :: TestTree
tests = testGroup "Functor"
 [ "fmap not (Just True)" ==> Right (tyMaybe tyBool, Just False, "fmap (\\x0 -> not x0) (Just True)")
 , "not `fmap` Just True" ==> Right (tyMaybe tyBool, Just False, "fmap (\\x0 -> not x0) (Just True)")
 , "not <$> Just True"    ==> Right (tyMaybe tyBool, Just False, "(\\x0 -> not x0) <$> Just True")
 , "False <$ Just True"   ==> Right (tyMaybe tyBool, Just False, "False <$ Just True")
 ]