{-# LANGUAGE DataKinds #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE KindSignatures #-} module Test.SymbolRepr ( symbolTests ) where import Test.Tasty import Test.Tasty.HUnit ( (@=?), testCase ) import Data.Parameterized.SymbolRepr import GHC.TypeLits data Bird (name :: Symbol) where Jay :: String -> Bird "Jay" Dove :: Bird "Dove" Hawk :: Bird "Hawk" symbolTests :: IO TestTree symbolTests = testGroup "Symbol" <$> return [ testCase "SomeSym" $ do let syms = [ SomeSym (Jay "Blue") , SomeSym Dove , SomeSym Hawk ] "Dove" @=? viewSomeSym symbolVal (head (tail syms)) ]