BiobaseBlast-0.2.1.0: tests/properties.hs
-- TODO some unit tests to check if assumed-known values are in the right
-- table cells
module Main where
import Test.Tasty
import Test.Tasty.Silver ( findByExtension)
import Test.Tasty.Silver.Advanced (goldenTest1, GDiff(..), GShow(..))
import Biobase.BLAST.Import
import System.FilePath ( replaceExtension )
import qualified Data.Text as T
import qualified Data.Text.IO as TIO
import Control.Monad
main :: IO ()
main = defaultMain =<< allTests
allTests :: IO TestTree
allTests = do
tabularSucceedTest <- succeedTest
tabularHTTPSucceedTest <- succeedHTTPTest
return $ testGroup "tests"
[tabularSucceedTest, tabularHTTPSucceedTest]
succeedTest :: IO TestTree
succeedTest = do
files <- findByExtension [".test"] "./tests/succeed"
return $ testGroup "succeed" $ map tastyTest files
tastyTest :: FilePath -> TestTree
tastyTest testFile =
let
goldenFilePath :: FilePath
goldenFilePath = replaceExtension testFile ".golden"
in goldenTest1 "Tabular HTTP blast" (liftM Just (TIO.readFile goldenFilePath)) (testBlast testFile) compareText (ShowText) print
--in goldenVsAction "Tabularblast" goldenFile (blastFromFile testFile) (\a -> T.pack $ concatMap show a)
testBlast :: FilePath -> IO T.Text
testBlast testFile = do
result <- blastFromFile testFile
let textresult = T.pack $ ((concatMap show result)++ "\n")
return textresult
succeedHTTPTest :: IO TestTree
succeedHTTPTest = do
files <- findByExtension [".httptest"] "./tests/succeed"
return $ testGroup "succeed" $ map tastyHTTPTest files
tastyHTTPTest :: FilePath -> TestTree
tastyHTTPTest testFile =
let
goldenFilePath :: FilePath
goldenFilePath = replaceExtension testFile ".golden"
in goldenTest1 "Tabular HTTP blast" (liftM Just (TIO.readFile goldenFilePath)) (testBlastHTTPS testFile) compareText (ShowText) print
--in goldenVsAction "Tabular HTTP blast" goldenFile (blastHTTPFromFile testFile) (\a -> T.pack $ concatMap show a)
testBlastHTTPS :: FilePath -> IO T.Text
testBlastHTTPS testFile = do
result <- blastHTTPFromFile testFile
let textresult = T.pack $ ((concatMap show result) ++ "\n")
return textresult
compareText :: T.Text -> T.Text -> GDiff
compareText goldT testT
| goldT == testT = Equal
| otherwise = DiffText (Just ("Golden file and test output are different:\nTest:\n" ++ T.unpack testT ++ "\nGold:\n" ++ T.unpack goldT)) testT goldT