packages feed

derive-topdown-0.1.1.0: test/Instance.hs

{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE PackageImports #-}
module Instance where

import           Data.Binary
import           Data.Derive.TopDown.IsInstance
import           Language.Haskell.TH.Syntax
import           Test.HUnit
import           Types
import           Utils
import qualified "haskell-src"  Language.Haskell.Syntax as H

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 ''H.HsModule]))
  )