fortran-src-extras-0.1.0: src/Language/Fortran/Extras/Test.hs
{-# LANGUAGE OverloadedStrings #-}
module Language.Fortran.Extras.Test where
import qualified Data.ByteString.Lazy.Char8 as BC
import Language.Fortran.Analysis ( Analysis )
import Language.Fortran.AST ( A0
, ProgramFile
)
import Language.Fortran.Version ( FortranVersion(..) )
import Language.Fortran.Extras.Analysis
( versionedExpandedProgramAnalysis
)
import Language.Fortran.Extras.ProgramFile
( versionedExpandedProgramFile )
import Language.Fortran.Util.Files
( flexReadFile )
getTestProgramFile :: String -> IO (ProgramFile A0)
getTestProgramFile p = do
cts <- flexReadFile p
versionedExpandedProgramFile Fortran77Legacy [] p cts
getTestProgramFileIncludes :: String -> [String] -> IO (ProgramFile A0)
getTestProgramFileIncludes p incls = do
cts <- flexReadFile p
versionedExpandedProgramFile Fortran77Legacy incls p cts
getTestProgramAnalysis :: String -> IO (ProgramFile (Analysis A0))
getTestProgramAnalysis p = do
cts <- flexReadFile p
versionedExpandedProgramAnalysis Fortran77Legacy [] p cts
getTestProgramAnalysisIncludes
:: String -> [String] -> IO (ProgramFile (Analysis A0))
getTestProgramAnalysisIncludes p incls = do
cts <- flexReadFile p
versionedExpandedProgramAnalysis Fortran77Legacy incls p cts
-- | Utility function to compare file content
compareFile :: FilePath -> FilePath -> IO Bool
compareFile expected actual = do
c1 <- BC.readFile expected
c2 <- BC.readFile actual
compareByteString c1 c2
compareByteString :: BC.ByteString -> BC.ByteString -> IO Bool
compareByteString expected actual = if expected == actual
then return True
else do
BC.putStrLn "<<<<<<< EXPECTED"
BC.putStrLn expected
BC.putStrLn ">>>>>>> ACTUAL"
BC.putStrLn actual
return False