{-# 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.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 = 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