add deserializer for instructions and module

This commit is contained in:
Ilya Rezvov
2018-02-19 18:36:17 -08:00
parent 8dc40aa699
commit 928fa3a606
2 changed files with 280 additions and 25 deletions
+15 -3
View File
@@ -29,11 +29,23 @@ compile file = do
main :: IO ()
main = do
files <- Directory.listDirectory "tests/samples"
-- files <- Directory.listDirectory "tests/samples"
let files = ["fact.wast"]
compile "fact.wast"
testCases <- (`mapM` files) $ \file -> do
syntaxTestCases <- (`mapM` files) $ \file -> do
content <- LBS.readFile $ "tests/samples/" ++ file
let result = Parser.parseModule <$> Lexer.scanner content
return $ testCase ("Parse module from core Test Suit: " ++ file) $
assertBool "Module parsed" $ isRight result
defaultMain $ testGroup "Syntax parsing" testCases
binaryTestCases <- (`mapM` files) $ \file -> do
content <- LBS.readFile $ "tests/samples/" ++ file
let Right mod = Parser.parseModule <$> Lexer.scanner content
let res = Binary.decodeModuleLazy $ Binary.dumpModuleLazy mod
print res
let Right mod' = res
return $ testCase ("Dump module to binary and parse back: " ++ file) $
assertBool "Module matched" $ mod == mod'
defaultMain $ testGroup "tests" [
testGroup "Syntax parsing" syntaxTestCases,
testGroup "Binary format" binaryTestCases
]