packages feed

logic-TPTP-0.4.3.0: testing/TestImportExportImportFile.hs

{-# OPTIONS -Wall #-}
{-# LANGUAGE PackageImports #-}
module TestImportExportImportFile where

import Control.Monad
import Data.Maybe
import Data.List as L
import Data.Function
import System.IO
import System.SimpleArgs
import Data.Monoid
import Text.PrettyPrint.ANSI.Leijen
import System.Exit
import Common

import "logic-TPTP" Codec.TPTP


-- Note: This test expects a list of .p files (one per line) through stdin

main ::  IO ()
main = do
  files <- lines `fmap` getContents
  --print (length files)
  print_export <- getArgs
  forM_ files (diff_once_twice print_export)
  exitWith ExitSuccess

diff_once_twice ::  Bool -> String -> IO ()
diff_once_twice print_export infilename'  = do
  --let tmp = "/tmp/tmp.tptp"
  putStrLn infilename'
  input <- readFile infilename'
  case findUnsupportedFormulaType input of
     Just x -> putStrLn . prettySimple . yellow . text $ ("Skipping unsupported formula type "++x)
     Nothing -> do

      let once = parse input
      let tptp = toTPTP' once
      when print_export (putStrLn $ "new tptp = " ++tptp)
      let twice = parse tptp
      let dif = mconcat (zipWith diffAFormula once twice)
      let success = (putStrLn . prettySimple . dullgreen . text $ "Ok")

      -- case dif of
      --   OtherSame -> success
      --   FormulaDiff (F Same) -> success
      --   _ -> do
      --     putStrLn . prettySimple $ dif
      --     exitWith (ExitFailure 1)

      if once==twice
         then success
         else do
           putStrLn . prettySimple $ dif
           exitWith (ExitFailure 1)