{-# LANGUAGE TemplateHaskell #-} module Instance where import Data.Binary import Data.Derive.TopDown.IsInstance import Language.Haskell.Syntax import Language.Haskell.TH.Syntax import Test.HUnit import Types import Utils binaryCompany = TestCase (assertEqual "Company is instance of Binary" True $((qBoolToExp $ isInstance' ''Binary [(ConT ''Company)])) ) binaryI = TestCase (assertEqual "I is instance of Binary" True $((qBoolToExp $ isInstance' ''Binary [apps [ConT ''I, VarT (mkName "a")]])) ) binaryB = TestCase (assertEqual "N is instance of Binary" True $((qBoolToExp $ isInstance' ''Binary [apps [(ConT ''B), VarT (mkName "a"), VarT (mkName "b")]])) ) binaryT = TestCase (assertEqual "T is instance of Binary" True $((qBoolToExp $ isInstance' ''Binary [apps [(ConT ''T), VarT (mkName "a"), VarT (mkName "b"), VarT (mkName "c")]])) ) binaryT1 = TestCase (assertEqual "T1 is instance of Binary" True $((qBoolToExp $ isInstance' ''Binary [ConT ''T1])) ) binaryT2 = TestCase (assertEqual "T2 is instance of Binary" True $((qBoolToExp $ isInstance' ''Binary [apps [ConT ''T2, VarT (mkName "a"), VarT (mkName "b")]])) ) binaryT3 = TestCase (assertEqual "T3 is instance of Binary" True $((qBoolToExp $ isInstance' ''Binary [apps [ConT ''T3, VarT (mkName "k"), VarT (mkName "a"), VarT (mkName "b")]])) ) binaryR0 = TestCase (assertEqual "R0 is instance of Binary" True $((qBoolToExp $ isInstance' ''Binary [apps [ConT ''R0, VarT (mkName "a")]])) ) binaryR6 = TestCase (assertEqual "R6 is instance of Binary" True $((qBoolToExp $ isInstance' ''Binary [apps [ConT ''R6, VarT (mkName "a")]])) ) binaryRx0 = TestCase (assertEqual "Rx0 is instance of Binary" True $((qBoolToExp $ isInstance' ''Binary [apps [ConT ''Rx0, VarT (mkName "a"), VarT (mkName "b"), VarT (mkName "c")]])) ) binaryRx3 = TestCase (assertEqual "Rx3 is instance of Binary" True $((qBoolToExp $ isInstance' ''Binary [apps [ConT ''Rx3, VarT (mkName "a"), VarT (mkName "b")]])) ) binaryE = TestCase (assertEqual "E is instance of Binary" True $((qBoolToExp $ isInstance' ''Binary [apps [ConT ''E, VarT (mkName "a"), VarT (mkName "b")]])) ) binaryHsModule = TestCase (assertEqual "HsModule is instance of Binary" True $((qBoolToExp $ isInstance' ''Binary [ConT ''HsModule])) )