{- The Test module provides an interface to test-framework. It is called when --tests - is supplied on the command line. This file only gathers together various test suites - from all over the rest of the code and then executes them via test-framework. -} module Test (runTests) where import System.Environment ( getArgs ) import Test.Framework import Test.Framework.Providers.QuickCheck2 import qualified Data.PieceSet (testSuite) import qualified Data.Queue (testSuite) import qualified Protocol.BCode (testSuite) import qualified Protocol.Wire (testSuite) import qualified Process.Peer (testSuite) runTests :: IO () runTests = do args <- filter (/= "--tests") `fmap` getArgs flip defaultMainWithArgs args [ testSuite , Data.Queue.testSuite , Data.PieceSet.testSuite , Protocol.BCode.testSuite , Protocol.Wire.testSuite , Process.Peer.testSuite ] testSuite :: Test testSuite = testGroup "Test test-framework" [ testProperty "reverse-reverse/id" prop_reversereverse ] -- reversing twice a finite list, is the same as identity prop_reversereverse :: [Int] -> Bool prop_reversereverse s = (reverse . reverse) s == id s where _ = s :: [Int]