import Test.Extrapolate
import Data.Typeable (typeOf)
main :: IO ()
main = do
ch ()
ch bool
ch int
ch integer
ch char
ch ordering
--ch [()]
--ch [bool]
--ch [int]
ch [integer]
--ch [char]
--ch [ordering]
--ch ((),int)
--ch (bool,char)
--ch (int,(),bool)
--ch (ordering,char,integer)
--ch (mayb ())
ch (mayb int)
--ch (eith () bool)
ch (eith int char)
-- TODO: find out why output for the following is different across diff GHCs
-- see: https://travis-ci.org/rudymatela/extrapolate/jobs/263425540
-- ch (char,int,bool,ordering)
-- For some reason, output for the following funky types is different across
-- different versions of GHC, see:
-- https://travis-ci.org/rudymatela/extrapolate/builds/262325825
-- I don't have time to investigate now, but it might be good to check why.
--ch (eith integer ordering,mayb (int,(),bool),mayb (char,()))
--ch (eith (integer,mayb (int,(),bool),mayb (char,())) (int,char))
ch :: (Eq a, Generalizable a) => a -> IO ()
ch x = do
putStrLn $ "checks :: " ++ show (typeOf x) ++ "\n"
check `withConditionSize` 3 $ const False -:> x
check `withConditionSize` 3 $ (\x y -> False) -:> x ->:> x
check `withConditionSize` 3 $ (\x y z -> False) -:> x ->:> x ->>:> x
putStrLn ""