type-sets-0.1.1.0: test/Spec.hs
{-# LANGUAGE DataKinds #-}
{-# OPTIONS_GHC -fplugin=Type.Compare.Plugin #-}
{-# OPTIONS_GHC -fconstraint-solver-iterations=0 #-} -- with iterations=10, bit sets fail in the RB tests :(
import Data.Proxy
import Data.Functor.Identity
import Data.Functor.Const
import Type.Set
import qualified Type.RBSet as RB
type MySet = Insert Bool (Insert String (Insert (Maybe Int) 'Empty))
test1 :: Proxy (Member Bool MySet) -> Proxy 'True
test1 = id -- Bool is a member :)
test2 :: Proxy (Member Char MySet) -> Proxy 'False
test2 = id -- False is not a member :(
-- RB tests
--
--
type MyRBSet = RB.FromList '[
Bool
, String
, String
, String
, Maybe Int
, Maybe Char
, Char
, Either Int Int
, Either Int Int
, Either Int Int
, Either Char Int
, Either Bool Int
, Maybe Bool
, Identity Int
, Identity Char
, Identity Bool
, Either Int (Identity Int)
, Either Int (Identity Char)
, Either Int (Identity Bool)
, Either Char (Identity Int)
, Either Char (Identity Char)
, Either Char (Identity Bool)
, Either Bool (Identity Int)
, Either Bool (Identity Char)
, Either Bool (Identity Bool)
]
type MyReducedRBSet = RB.Remove Bool
( RB.Remove String
( RB.Remove (Either Int Int)
( RB.Remove (Either Char Int)
( RB.Remove (Either Bool (Identity Int))
( RB.Remove (Either Bool (Identity Char))
( RB.Remove (Either Bool (Identity Bool))
MyRBSet))))))
type MyReducedToEmptyRBSet =
RB.Remove (Maybe Int)
( RB.Remove (Maybe Char)
( RB.Remove Char
( RB.Remove (Either Bool Int)
( RB.Remove (Maybe Bool)
( RB.Remove (Identity Int)
( RB.Remove (Identity Char)
( RB.Remove (Identity Bool)
( RB.Remove (Either Int (Identity Int))
( RB.Remove (Either Int (Identity Char))
( RB.Remove (Either Int (Identity Bool))
( RB.Remove (Either Char (Identity Int))
( RB.Remove (Either Char (Identity Char))
( RB.Remove (Either Char (Identity Bool))
MyReducedRBSet)))))))))))))
type MyMergedRBSet = RB.Merge (RB.FromList '[Const Int Bool,
Const Int Char,
Const Int String])
MyReducedRBSet
testRB1 :: Proxy (RB.Member (Bool) MyRBSet) -> Proxy 'True
testRB1 = id
testRB2 :: Proxy (RB.Member (String) MyRBSet) -> Proxy 'True
testRB2 = id
testRB3 :: Proxy (RB.Member (Maybe Int) MyRBSet) -> Proxy 'True
testRB3 = id
testRB4 :: Proxy (RB.Member (Maybe Char) MyRBSet) -> Proxy 'True
testRB4 = id
testRB5 :: Proxy (RB.Member (Char) MyRBSet) -> Proxy 'True
testRB5 = id
testRB6 :: Proxy (RB.Member (Either Int Int) MyRBSet) -> Proxy 'True
testRB6 = id
testRB7 :: Proxy (RB.Member (Either Char Int) MyRBSet) -> Proxy 'True
testRB7 = id
testRB8 :: Proxy (RB.Member (Either Bool Int) MyRBSet) -> Proxy 'True
testRB8 = id
testRB9 :: Proxy (RB.Member (Maybe Bool) MyRBSet) -> Proxy 'True
testRB9 = id
testRB10 :: Proxy (RB.Member (Identity Int) MyRBSet) -> Proxy 'True
testRB10 = id
testRB11 :: Proxy (RB.Member (Identity Char) MyRBSet) -> Proxy 'True
testRB11 = id
testRB12 :: Proxy (RB.Member (Identity Bool) MyRBSet) -> Proxy 'True
testRB12 = id
testRB13 :: Proxy (RB.Member (Either Int (Identity Int)) MyRBSet) -> Proxy 'True
testRB13 = id
testRB14 :: Proxy (RB.Member (Either Int (Identity Char)) MyRBSet) -> Proxy 'True
testRB14 = id
testRB15 :: Proxy (RB.Member (Either Int (Identity Bool)) MyRBSet) -> Proxy 'True
testRB15 = id
testRB16 :: Proxy (RB.Member (Either Char (Identity Int)) MyRBSet) -> Proxy 'True
testRB16 = id
testRB17 :: Proxy (RB.Member (Either Char (Identity Char)) MyRBSet) -> Proxy 'True
testRB17 = id
testRB18 :: Proxy (RB.Member (Either Char (Identity Bool)) MyRBSet) -> Proxy 'True
testRB18 = id
testRB19 :: Proxy (RB.Member (Either Bool (Identity Int)) MyRBSet) -> Proxy 'True
testRB19 = id
testRB20 :: Proxy (RB.Member (Either Bool (Identity Char)) MyRBSet) -> Proxy 'True
testRB20 = id
testRB21 :: Proxy (RB.Member (Either Bool (Identity Bool)) MyRBSet) -> Proxy 'True
testRB21 = id
testRB102 :: Proxy (RB.Member Float MyRBSet) -> Proxy 'False
testRB102 = id -- False is not a member :(
--
-- Test MyReducedRBSet
testRB201 :: Proxy (RB.Member (Bool) MyReducedRBSet) -> Proxy 'False
testRB201 = id
testRB202 :: Proxy (RB.Member (String) MyReducedRBSet) -> Proxy 'False
testRB202 = id
testRB203 :: Proxy (RB.Member (Either Int Int) MyReducedRBSet) -> Proxy 'False
testRB203 = id
testRB204 :: Proxy (RB.Member (Either Char Int) MyReducedRBSet) -> Proxy 'False
testRB204 = id
testRB205 :: Proxy (RB.Member (Either Bool (Identity Int)) MyReducedRBSet) -> Proxy 'False
testRB205 = id
testRB206 :: Proxy (RB.Member (Either Bool (Identity Char)) MyReducedRBSet) -> Proxy 'False
testRB206 = id
testRB207 :: Proxy (RB.Member (Either Bool (Identity Bool)) MyReducedRBSet) -> Proxy 'False
testRB207 = id
-- the rest remain
testRB303 :: Proxy (RB.Member (Maybe Int) MyReducedRBSet) -> Proxy 'True
testRB303 = id
testRB304 :: Proxy (RB.Member (Maybe Char) MyReducedRBSet) -> Proxy 'True
testRB304 = id
testRB305 :: Proxy (RB.Member (Char) MyReducedRBSet) -> Proxy 'True
testRB305 = id
testRB308 :: Proxy (RB.Member (Either Bool Int) MyReducedRBSet) -> Proxy 'True
testRB308 = id
testRB309 :: Proxy (RB.Member (Maybe Bool) MyReducedRBSet) -> Proxy 'True
testRB309 = id
testRB310 :: Proxy (RB.Member (Identity Int) MyReducedRBSet) -> Proxy 'True
testRB310 = id
testRB311 :: Proxy (RB.Member (Identity Char) MyReducedRBSet) -> Proxy 'True
testRB311 = id
testRB312 :: Proxy (RB.Member (Identity Bool) MyReducedRBSet) -> Proxy 'True
testRB312 = id
testRB313 :: Proxy (RB.Member (Either Int (Identity Int)) MyReducedRBSet) -> Proxy 'True
testRB313 = id
testRB314 :: Proxy (RB.Member (Either Int (Identity Char)) MyReducedRBSet) -> Proxy 'True
testRB314 = id
testRB315 :: Proxy (RB.Member (Either Int (Identity Bool)) MyReducedRBSet) -> Proxy 'True
testRB315 = id
testRB316 :: Proxy (RB.Member (Either Char (Identity Int)) MyReducedRBSet) -> Proxy 'True
testRB316 = id
testRB317 :: Proxy (RB.Member (Either Char (Identity Char)) MyReducedRBSet) -> Proxy 'True
testRB317 = id
testRB318 :: Proxy (RB.Member (Either Char (Identity Bool)) MyReducedRBSet) -> Proxy 'True
testRB318 = id
-- Tests for MyMergedRBSet
testRB400 :: Proxy (RB.Member (Const Int Bool) MyMergedRBSet) -> Proxy 'True
testRB400 = id
testRB401 :: Proxy (RB.Member (Const Int Char) MyMergedRBSet) -> Proxy 'True
testRB401 = id
testRB402 :: Proxy (RB.Member (Const Int String) MyMergedRBSet) -> Proxy 'True
testRB402 = id
testRB403 :: Proxy (RB.Member (Maybe Int) MyMergedRBSet) -> Proxy 'True
testRB403 = id
testRB404 :: Proxy (RB.Member (Maybe Char) MyMergedRBSet) -> Proxy 'True
testRB404 = id
testRB405 :: Proxy (RB.Member (Char) MyMergedRBSet) -> Proxy 'True
testRB405 = id
testRB408 :: Proxy (RB.Member (Either Bool Int) MyMergedRBSet) -> Proxy 'True
testRB408 = id
testRB409 :: Proxy (RB.Member (Maybe Bool) MyMergedRBSet) -> Proxy 'True
testRB409 = id
testRB410 :: Proxy (RB.Member (Identity Int) MyMergedRBSet) -> Proxy 'True
testRB410 = id
testRB411 :: Proxy (RB.Member (Identity Char) MyMergedRBSet) -> Proxy 'True
testRB411 = id
testRB412 :: Proxy (RB.Member (Identity Bool) MyMergedRBSet) -> Proxy 'True
testRB412 = id
testRB413 :: Proxy (RB.Member (Either Int (Identity Int)) MyMergedRBSet) -> Proxy 'True
testRB413 = id
testRB414 :: Proxy (RB.Member (Either Int (Identity Char)) MyMergedRBSet) -> Proxy 'True
testRB414 = id
testRB415 :: Proxy (RB.Member (Either Int (Identity Bool)) MyMergedRBSet) -> Proxy 'True
testRB415 = id
testRB416 :: Proxy (RB.Member (Either Char (Identity Int)) MyMergedRBSet) -> Proxy 'True
testRB416 = id
testRB417 :: Proxy (RB.Member (Either Char (Identity Char)) MyMergedRBSet) -> Proxy 'True
testRB417 = id
testRB418 :: Proxy (RB.Member (Either Char (Identity Bool)) MyMergedRBSet) -> Proxy 'True
testRB418 = id
main :: IO ()
main = putStrLn "It compiled!"