-- Tests for all bio functionality

module Main where

import Test.QuickCheck
import System.IO

import Bio.Util.TestBase
import Bio.Util.Test as U
import Bio.Alignment.Test as A
import Bio.GFF3.Test as G
import Bio.Location.Test as L
import Bio.Sequence.Test as S
import Bio.Clustering.Test as C

all_tests :: [(String,[Test])]
all_tests = [ ("Sequence tests", S.tests_io)
            , ("Sequence hash tests", S.tests_hw)
            , ("Alignment tests", A.tests)
            , ("GFF3 tests", G.tests)
            , ("Location tests", L.tests)
            , ("Clustering tests", C.tests)
            , ("Util functions", U.tests)
            ]

main = do
  hSetBuffering stdout NoBuffering
  mapM_ runTests all_tests

runTests :: (String,[Test]) -> IO ()
runTests (hd,ts) = do
  putStrLn ("\n --- "++hd++" ---\n")
  mapM_ runTest ts

runTest (T name test) = do 
  putStr $ name ++ " " ++ replicate (28-length name) '.' ++ " "
  quickCheck test

