import Test.HUnit
import Language.WebIDL.Parser
import Language.WebIDL.PPrint
import Control.Monad.IO.Class (liftIO)
main :: IO ()
main = runTestTT tests >>= print
tests :: Test
tests = TestList [ TestLabel "WebGL" (testIDL "examples/webgl.idl")
, TestLabel "File API" (testIDL "examples/fileapi.idl") ]
testIDL :: FilePath -> Test
testIDL idlpath = TestCase $ do
text <- liftIO $ readFile idlpath
case parseIDL text of
Right defs -> do
let text' = unlines $ map printDef defs
case parseIDL text' of
Right defs' -> assertEqual "Definitions should be equal" defs defs'
Left err -> assertFailure ("Incorrect parsing of regenerated file: " ++ show err ++ "\n" ++ text')
Left err -> assertFailure ("Incorrect parsing of original file: " ++ show err)