{-# LANGUAGE StandaloneDeriving, DeriveDataTypeable, TypeSynonymInstances, FlexibleInstances #-} -- | Module for using quickcheck properties module Test.MuCheck.TestAdapter.SmallCheck where import qualified Test.SmallCheck.Drivers as Sc import Test.MuCheck.TestAdapter import Test.MuCheck.Utils.Print (showA, showAS) import Data.Hash.MD5 (md5s, Str(..)) import Data.Typeable import Data.List((\\)) import Data.Either (partitionEithers) type SmallCheckSummary = Maybe Sc.PropertyFailure deriving instance Typeable Sc.PropertyFailure -- | Summarizable instance of `SmallCheckSummary` instance Summarizable SmallCheckSummary where testSummary mutantFiles results = Summary logMsg where (errorCases, executedCases) = partitionEithers results [successCases, failureCases] = map (\c -> filter (c . snd) executedCases) [isSuccess, isFailure] errorFiles = map (\l -> ".mutants/" ++ (md5s $ Str l) ++ ".hs") mutantFiles \\ map fst executedCases logMsg = showAS ["Details:", "Loading error files:", showA errorFiles, "Loading error messages:", showA errorCases, "Successes:", showA successCases, "Failure:", showA failureCases] isSuccess Nothing = True isSuccess _ = False