toy-datalog/test/Main.hs

28 lines
741 B
Haskell
Raw Normal View History

module Main (main) where
import Datalog
import Data.Text qualified as T
import Data.Text.IO qualified as T
import Text.Megaparsec qualified as M
parserGoldenTest :: String -> IO Bool
parserGoldenTest prefix = do
let inFile = "test/golden/" <> prefix <> ".dl"
outFile = "test/golden/" <> prefix <> ".show"
inp <- T.readFile inFile
out <- T.readFile outFile
result <- case M.parse parseProgram inFile inp of
Left e -> do
print e
return False
Right out' -> do
return (T.strip out == T.pack (show out'))
let resultS = if result then "passed" else "failed"
putStrLn $ unwords ["Parser test", prefix, resultS]
return result
main :: IO ()
main = do
True <- parserGoldenTest "ancestor"
return ()