30 lines
985 B
Haskell
30 lines
985 B
Haskell
{-# LANGUAGE OverloadedStrings #-}
|
|
module Main (
|
|
main
|
|
) where
|
|
|
|
import Test.Tasty
|
|
import Test.Tasty.HUnit
|
|
|
|
import qualified System.Directory as Directory
|
|
|
|
import qualified Data.ByteString.Lazy as LBS
|
|
|
|
import qualified Language.Wasm as Wasm
|
|
import qualified Language.Wasm.Script as Script
|
|
import qualified Data.List as List
|
|
|
|
main :: IO ()
|
|
main = do
|
|
files <- filter (List.isSuffixOf ".wast") <$> Directory.listDirectory "tests/spec"
|
|
let files = ["block.wast", "loop.wast", "if.wast", "stack.wast", "func.wast"]
|
|
scriptTestCases <- (`mapM` files) $ \file -> do
|
|
test <- LBS.readFile ("tests/spec/" ++ file)
|
|
return $ testCase file $ do
|
|
case Wasm.parseScript test of
|
|
Right script ->
|
|
Script.runScript (\msg assert -> assertFailure ("Failed assert: " ++ msg ++ ". Assert " ++ show assert)) script
|
|
Left error ->
|
|
assertFailure $ "Failed to parse with error: " ++ show error
|
|
defaultMain $ testGroup "Wasm Core Test Suit" scriptTestCases
|