-- 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, -- HUnit and Hspec tests. @package MuCheck @version 0.1.1.0 module MuCheck.Utils.Common -- | The choose function generates subsets of a given size choose :: [b] -> Int -> [[b]] -- | The genFileNames function lazily generates filenames of mutants genFileNames :: String -> [String] -- | The replace function replaces first element in a list given old -- and new values as a pair replace :: Eq a => (a, a) -> [a] -> [a] -- | The safeHead function safely extracts head of a list using -- Maybe safeHead :: [a] -> Maybe a module MuCheck.Utils.Print -- | simple wrapper for adding a % at the end. (./.) :: (Show a, Integral a) => a -> a -> [Char] -- | join lines together showAS :: [String] -> String -- | make lists into lines in text. showA :: Show a => [a] -> String module MuCheck.Interpreter type InterpreterOutput a = Either InterpreterError (String, a) checkQuickCheckOnMutants :: [String] -> String -> [String] -> String -> IO [Result] checkHUnitOnMutants :: [String] -> String -> [String] -> String -> IO [Counts] checkHspecOnMutants :: [String] -> String -> [String] -> String -> IO [Summary] mutantCheckSummary :: Summarizable a => [String] -> String -> [String] -> FilePath -> IO [a] runCodeOnMutants :: Typeable * t => [[Char]] -> [Char] -> [Char] -> IO [Either InterpreterError (String, t)] evalMethod :: (MonadInterpreter m, Typeable t) => String -> String -> String -> m (String, t) data TSum TSum :: Int -> Int -> Int -> Int -> Int -> String -> TSum tsum_numMutants :: TSum -> Int tsum_loadError :: TSum -> Int tsum_notKilled :: TSum -> Int tsum_killed :: TSum -> Int tsum_others :: TSum -> Int tsum_log :: TSum -> String data TSSum TSSum :: Int -> Int -> Int -> String -> TSSum tssum_numMutants :: TSSum -> Int tssum_alive :: TSSum -> Int tssum_errors :: TSSum -> Int tssum_log :: TSSum -> String type MutantFilename = String class Typeable s => Summarizable s testSummary :: Summarizable s => [MutantFilename] -> [InterpreterOutput s] -> TSum suiteSummary :: Summarizable s => [[InterpreterOutput s]] -> TSSum isSuccess :: Summarizable s => s -> Bool multipleCheckSummary :: (Show b, Show a, Ord a) => ((a, b) -> Bool) -> [[Either a1 (a, b)]] -> TSSum instance Typeable Summary instance Typeable Counts instance Typeable Result instance Summarizable Summary 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]