mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-09-19 08:46:02 -06:00
add testsuite for parsing
This commit is contained in:
@@ -75,6 +75,16 @@ test-suite linearization
|
|||||||
containers,
|
containers,
|
||||||
pgf2
|
pgf2
|
||||||
|
|
||||||
|
test-suite parsing
|
||||||
|
type: exitcode-stdio-1.0
|
||||||
|
main-is: tests/parsing.hs
|
||||||
|
default-language: Haskell2010
|
||||||
|
build-depends:
|
||||||
|
base,
|
||||||
|
HUnit >= 1.6.1.0,
|
||||||
|
containers,
|
||||||
|
pgf2
|
||||||
|
|
||||||
test-suite typechecking
|
test-suite typechecking
|
||||||
type: exitcode-stdio-1.0
|
type: exitcode-stdio-1.0
|
||||||
main-is: tests/typechecking.hs
|
main-is: tests/typechecking.hs
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
import Test.HUnit
|
||||||
|
import PGF2
|
||||||
|
import qualified Data.Map as Map
|
||||||
|
|
||||||
|
main = do
|
||||||
|
gr <- readPGF "tests/basic.pgf"
|
||||||
|
let Just cnc = Map.lookup "basic_cnc" (languages gr)
|
||||||
|
runTestTTAndExit $
|
||||||
|
TestList
|
||||||
|
[TestCase (assertParseOk gr cnc "zero" [("intLit 0",1.609438),("c z",2.3025851)] "0")
|
||||||
|
,TestCase (assertParseOk gr cnc "one" [("intLit 1",1.609438),("c (s ?)",2.3025851)] "1")
|
||||||
|
,TestCase (assertParseOk gr cnc "two" [("c (s (s ?))",2.9957323)] "1 + 1")
|
||||||
|
,TestCase (assertParseFail gr cnc "needs-bind" "1+1")
|
||||||
|
,TestCase (assertParseOk gr cnc "int" [("intLit 128",1.609438)] "128")
|
||||||
|
,TestCase (assertParseOk gr cnc "neg-int" [("intLit -128",1.609438)] "-128")
|
||||||
|
,TestCase (assertParseOk gr cnc "float" [("floatLit 3.14",1.609438)] "3.14")
|
||||||
|
,TestCase (assertParseOk gr cnc "neg-float" [("floatLit -3.14",1.609438)] "-3.14")
|
||||||
|
,TestCase (assertParseOk gr cnc "string" [("stringLit \"abc\"",1.609438)] "abc")
|
||||||
|
,TestCase (assertParseFail gr cnc "dwo-dots" "3.1.4")
|
||||||
|
]
|
||||||
|
|
||||||
|
assertParseOk gr cnc name expr_strs str =
|
||||||
|
case parse cnc (startCat gr) str of
|
||||||
|
ParseOk es -> let exp_es = [(e,prob) | (expr_str,prob) <- expr_strs, Just e <- [readExpr expr_str]]
|
||||||
|
in assertEqual name exp_es es
|
||||||
|
_ -> assertFailure (name++": the expression is not readable")
|
||||||
|
|
||||||
|
assertParseFail gr cnc name str =
|
||||||
|
case parse cnc (startCat gr) str of
|
||||||
|
ParseOk es -> assertFailure (name++": the string should not have been parsable")
|
||||||
|
ParseFailed _ _ -> return ()
|
||||||
Reference in New Issue
Block a user