module Interpreter.Function.LookupSpec (spec, main) where import Helpers main :: IO () main = hspec spec fname :: Text fname = "lookup" expectedErrMsg :: String expectedErrMsg = "Wrong set of arguments" -- See dummyFacts defined in Pure.hs testkey :: Expression testkey = "foo" expectedValue :: Text expectedValue = "dummy" checkSuccess :: [Expression] -> Text -> Expectation checkSuccess = checkExprsSuccess fname checkError :: [Expression] -> String -> Expectation checkError = checkExprsError fname boolDatatype, stringDatatype :: Expression boolDatatype = Terminal (UDataType UDTBoolean) stringDatatype = Terminal (UDataType (UDTString Nothing Nothing)) spec :: Spec spec = do it "should fail with no argument" (checkError [] expectedErrMsg) it "should succeed with one argument" (checkSuccess [testkey] expectedValue) it "should succeed with 4 arguments" (checkSuccess [testkey, stringDatatype, "unique", "default"] expectedValue) it "should fail with an unknown merge strategy" (checkError [testkey, stringDatatype, "joe", "default"] "Unknown merge strategy") it "should succeed with two arguments, the second one being a datatype" (checkSuccess [testkey, stringDatatype] expectedValue) it "should fail when the type mismatched" (checkError [testkey, boolDatatype] "Datatype mismatched") it "should fail with two arguments both strings" (checkError [testkey, "default"] expectedErrMsg)