hydra-0.8.0: src/test/haskell/Hydra/Inference/SubstitutionSpec.hs
{-# LANGUAGE OverloadedStrings #-}
module Hydra.Inference.SubstitutionSpec where
import Hydra.Kernel
import Hydra.Sources.Libraries
import Hydra.Inference.Inference
import Hydra.TestUtils
import Hydra.TestData
import qualified Hydra.Dsl.Expect as Expect
import Hydra.Dsl.Terms as Terms
import qualified Hydra.Dsl.Annotations as Ann
import qualified Hydra.Dsl.Types as Types
import Hydra.Dsl.ShorthandTypes
import Hydra.Inference.Substitution
import Hydra.Inference.Rules
import qualified Test.Hspec as H
import qualified Test.QuickCheck as QC
import qualified Data.List as L
import qualified Data.Map as M
import qualified Data.Set as S
import Control.Monad
checkInstantiation :: H.SpecWith ()
checkInstantiation = H.describe "Check type instantiation" $ do
H.describe "Lambdas" $ do
H.it "test #1" $ shouldSucceedWith
(withInferenceContext $ instantiate $ Types.scheme ["x"] $ Types.var "x")
(Types.scheme ["t0"] $ Types.var "t0")
H.it "test #2" $ shouldSucceedWith
(withInferenceContext $ instantiate $ Types.scheme ["x"] $ Types.list $ Types.var "x")
(Types.scheme ["t0"] $ Types.list $ Types.var "t0")
spec :: H.Spec
spec = do
checkInstantiation