module Test.MuCheck (mucheck) where
import Test.MuCheck.Mutation
import Test.MuCheck.Config
import Test.MuCheck.Utils.Common
import Test.MuCheck.Interpreter (evaluateMutants, MutantSummary(..))
import Test.MuCheck.TestAdapter
import Test.MuCheck.AnalysisSummary
mucheck :: (Summarizable a, Show a) => (Mutant -> TestStr -> InterpreterOutput a -> Summary) -> String -> String -> [TestStr] -> IO (MAnalysisSummary, [MutantSummary])
mucheck resFn mutatingFn moduleFile tests = do
mutants <- genMutants mutatingFn moduleFile >>= rSample (maxNumMutants defaultConfig)
evaluateMutants resFn mutants tests