packages feed

HaTeX-3.17.0.0: parsertest/parsertest.hs

import Text.LaTeX.Base.Parser
import qualified Data.Text.IO as T
import System.Exit (exitSuccess, exitFailure)

testNumbers :: [Int]
testNumbers = [1 .. 6]

testFile :: Int -> IO Bool
testFile i = do
  putStr $ "Parsing example " ++ show i ++ "... "
  t <- T.readFile $ "parsertest/example" ++ show i ++ ".tex"
  case parseLaTeX t of
    Left err -> do putStrLn "Failed."
                   putStrLn $ "The error was: " ++ show err
                   return False
    Right _ -> putStrLn "Succeed." >> return True

main :: IO ()
main = do
  putStrLn "Running Parser Test..."
  bs <- mapM testFile testNumbers
  let b = and bs
  putStrLn $ "Parser Test Passed: " ++ show b
  if b then exitSuccess
       else do putStrLn $ "Test result: " ++ show (length $ filter (==True) bs) ++ "/" ++ show (length bs)
               exitFailure