fay-0.12.0.0: src/Test/Api.hs
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TemplateHaskell #-}
module Test.Api (tests) where
import Language.Fay
import Data.Default
import Data.Maybe
import Language.Haskell.Exts.Syntax
import System.Environment
import Test.Framework
import Test.Framework.Providers.HUnit
import Test.Framework.TH
import Test.HUnit (Assertion, assertBool, assertEqual)
import Test.Util
tests :: Test
tests = $testGroupGenerator
case_imports :: Assertion
case_imports = do
whatAGreatFramework <- fmap (lookup "HASKELL_PACKAGE_SANDBOX") getEnvironment
res <- compileFile defConf { configPackageConf = whatAGreatFramework } fp
assertBool "Could not compile file with imports" (isRight res)
case_importedList :: Assertion
case_importedList = do
whatAGreatFramework <- fmap (lookup "HASKELL_PACKAGE_SANDBOX") getEnvironment
res <- compileFileWithState defConf { configPackageConf = whatAGreatFramework } fp
case res of
Left err -> error (show err)
Right (_,r) -> assertBool "RecordImport_Export was not added to stateImported" .
isJust . lookup (ModuleName "RecordImport_Export") $ stateImported r
case_stateRecordTypes :: Assertion
case_stateRecordTypes = do
whatAGreatFramework <- fmap (lookup "HASKELL_PACKAGE_SANDBOX") getEnvironment
res <- compileFileWithState defConf { configPackageConf = whatAGreatFramework } "tests/Api/Records.hs"
case res of
Left err -> error (show err)
Right (_,r) -> do
-- TODO order should not matter
assertEqual "stateRecordTypes mismatch"
[ (UnQual (Ident "T"),[UnQual (Symbol ":+")])
, (UnQual (Ident "R"),[UnQual (Ident "R"), UnQual (Ident "S")])
]
(stateRecordTypes r)
case_importStateRecordTypes :: Assertion
case_importStateRecordTypes = do
whatAGreatFramework <- fmap (lookup "HASKELL_PACKAGE_SANDBOX") getEnvironment
res <- compileFileWithState defConf { configPackageConf = whatAGreatFramework } "tests/Api/ImportRecords.hs"
case res of
Left err -> error (show err)
Right (_,r) -> do
-- TODO order should not matter
assertEqual "stateRecordTypes mismatch"
[ (UnQual (Ident "T"),[UnQual (Symbol ":+")])
, (UnQual (Ident "R"),[UnQual (Ident "R"), UnQual (Ident "S")])
]
(stateRecordTypes r)
fp :: FilePath
fp = "tests/RecordImport_Import.hs"
defConf :: CompileConfig
defConf = addConfigDirectoryInclude "tests/"
$ def { configTypecheck = False }