dhall-1.25.0: tests/Dhall/Test/TypeInference.hs
{-# LANGUAGE OverloadedStrings #-}
module Dhall.Test.TypeInference where
import Data.Monoid (mempty, (<>))
import Data.Text (Text)
import Prelude hiding (FilePath)
import Test.Tasty (TestTree)
import qualified Data.Text as Text
import qualified Data.Text.IO as Text.IO
import qualified Dhall.Core as Core
import qualified Dhall.Import as Import
import qualified Dhall.Parser as Parser
import qualified Dhall.Test.Util as Test.Util
import qualified Dhall.TypeCheck as TypeCheck
import qualified Test.Tasty as Tasty
import qualified Test.Tasty.HUnit as Tasty.HUnit
import qualified Turtle
getTests :: IO TestTree
getTests = do
successTests <- Test.Util.discover (Turtle.chars <* "A.dhall") successTest (Turtle.lstree "./dhall-lang/tests/type-inference/success")
let testTree = Tasty.testGroup "type-inference tests"
[ successTests
]
return testTree
successTest :: Text -> TestTree
successTest prefix = do
Tasty.HUnit.testCase (Text.unpack prefix) $ do
value <- expr "A.dhall"
expectedType <- expr "B.dhall"
inferredType <- Core.throws (TypeCheck.typeOf value)
let message = "The inferred type did not match the expected type"
Tasty.HUnit.assertEqual message expectedType inferredType
where
expr suffix = do
code <- Text.IO.readFile (Text.unpack prefix <> suffix)
e <- Core.throws (Parser.exprFromText mempty code)
Import.assertNoImports (Core.denote e)