Test.hs 822 B

12345678910111213141516171819202122232425262728293031323334
  1. module Main where
  2. import Control.Monad
  3. import Gidl.Types
  4. import Gidl.Interface
  5. import Gidl.Parse
  6. import Gidl.Schema
  7. main :: IO ()
  8. main = test "tests/testtypes.sexpr"
  9. test :: FilePath -> IO ()
  10. test f = do
  11. c <- readFile f
  12. case parseDecls c of
  13. Left e -> print e
  14. Right (te@(TypeEnv te'), ie@(InterfaceEnv ie')) -> do
  15. print te
  16. putStrLn "---"
  17. forM_ te' $ \(tn, t) -> do
  18. putStrLn (tn ++ ":")
  19. print (typeLeaves t)
  20. putStrLn "---"
  21. print ie
  22. putStrLn "---"
  23. forM_ ie' $ \(iname, i) -> do
  24. putStrLn (iname ++ ":")
  25. print (interfaceTypes iname ie te)
  26. print (interfaceParents i)
  27. putStrLn "---"
  28. let ir = interfaceDescrToRepr iname ie te
  29. print (producerSchema ir)
  30. print (consumerSchema ir)
  31. putStrLn "---"