-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Automated Mutation Testing -- -- This package defines a mutation analysis library for haskell programs. -- It does this by parsing the haskell source, and replacing a few of the -- common haskell functions and operators with other, but similar -- operators and functions, and running the testsuite to check whether -- the difference has been detected. Currently, it supports QuickCheck -- and HUnit tests. @package MuCheck @version 0.1.0.1 module MuCheck.Utils.Common choose :: [b] -> Int -> [[b]] genFileNames :: String -> [String] replace :: Eq a => (a, a) -> [a] -> [a] safeHead :: [a] -> Maybe a module MuCheck.Utils.Print showPerCent :: Show a => a -> [Char] percent :: Integral a => a -> a -> a showAS :: [String] -> String showA :: Show a => [a] -> String module MuCheck.Interpreter type InterpreterOutput a = Either InterpreterError (String, a) checkPropsOnMutants :: [String] -> String -> [String] -> String -> IO [Result] checkTestSuiteOnMutants :: [String] -> String -> [String] -> String -> IO [Counts] mutantCheckSummary :: Summarizable a => [String] -> String -> [String] -> FilePath -> IO [a] runCodeOnMutants :: (MonadIO m, MonadMask m, Typeable * t, Functor m) => [String] -> String -> String -> m [Either InterpreterError (String, t)] evalMethod :: (MonadInterpreter m, Typeable t) => String -> String -> String -> m (String, t) type MutantFilename = String type TerminalSummary = String type LogSummary = String class Typeable s => Summarizable s singleSummary :: Summarizable s => [MutantFilename] -> [InterpreterOutput s] -> (TerminalSummary, LogSummary) multipleSummary :: Summarizable s => [[InterpreterOutput s]] -> (TerminalSummary, LogSummary) multipleCheckSummary :: Show a => (a -> Bool) -> [[InterpreterOutput a]] -> (String, String) instance Typeable Counts instance Typeable Result instance Summarizable Result instance Summarizable Counts module MuCheck.MuOp data MuOp (==>*) :: Mutable a => a -> [a] -> [MuOp] (*==>*) :: Mutable a => [a] -> [a] -> [MuOp] (~~>) :: (MonadPlus m, Eq a) => a -> a -> (a -> m a) mkMp' :: (MonadPlus m, Typeable * a) => MuOp -> a -> m a class Mutable a (==>) :: Mutable a => a -> a -> MuOp instance Mutable GuardedRhs instance Mutable Literal instance Mutable Decl instance Mutable Exp instance Mutable QOp instance Mutable QName instance Mutable Name instance Show MuOp module MuCheck.Operators allOps :: [MuOp] comparators :: [MuOp] predNums :: [MuOp] binAriths :: [MuOp] arithLists :: [MuOp] (<$>) :: (Mutable a1, Eq a1) => (a -> a1) -> [a] -> [MuOp] module MuCheck.StdArgs data GenerationMode FirstOrderOnly :: GenerationMode FirstAndHigherOrder :: GenerationMode data StdArgs StdArgs :: [MuOp] -> Bool -> Bool -> Bool -> Bool -> Int -> GenerationMode -> StdArgs muOps :: StdArgs -> [MuOp] doMutatePatternMatches :: StdArgs -> Bool doMutateValues :: StdArgs -> Bool doNegateIfElse :: StdArgs -> Bool doNegateGuards :: StdArgs -> Bool maxNumMutants :: StdArgs -> Int genMode :: StdArgs -> GenerationMode stdArgs :: StdArgs instance Eq GenerationMode instance Show GenerationMode instance Show StdArgs module MuCheck.Utils.Syb selectMany :: (Data a, Typeable b) => (b -> Bool) -> a -> [b] selectOne :: (Typeable * a, Data a1) => (a -> Bool) -> a1 -> Maybe a relevantOps :: (Data a, Eq a) => a -> [MuOp] -> [MuOp] once :: MonadPlus m => GenericM m -> GenericM m once' :: (forall a. Data a => a -> Maybe a) -> (forall a. Data a => a -> a) module MuCheck.Mutation genMutants :: String -> FilePath -> IO Int genMutantsWith :: StdArgs -> String -> FilePath -> IO Int mutates :: [MuOp] -> Decl -> [Decl] mutatesN :: [MuOp] -> Decl -> Int -> [Decl] mutate :: MuOp -> Decl -> [Decl] isFunction :: Name -> GenericQ Bool isFunctionD :: String -> Decl -> Bool permMatches :: Decl -> [MuOp] removeOnePMatch :: Decl -> [MuOp] removeOneElem :: Eq t => [t] -> [[t]] parseModuleFromFile :: String -> Module getDecls :: Module -> [Decl] extractStrings :: [Match] -> [String] getFuncNames :: [Decl] -> [String] putDecls :: Module -> [Decl] -> Module getName :: Module -> String selectValOps :: (Data a, Eq a, Typeable b, Mutable b, Eq b) => (b -> Bool) -> [b -> b] -> a -> [MuOp] selectValOps' :: (Data a, Eq a, Typeable b, Mutable b) => (b -> Bool) -> (b -> [b]) -> a -> [MuOp] selectIntOps :: (Data a, Eq a) => a -> [MuOp] selectIfElseBoolNegOps :: (Data a, Eq a) => a -> [MuOp] selectGuardedBoolNegOps :: (Data a, Eq a) => a -> [MuOp]