ihaskell-0.9.0.0: src/tests/IHaskell/Test/Util.hs
module IHaskell.Test.Util (lstrip, rstrip, strip, replace, ghc, shouldBeAmong) where
import Prelude
import qualified Data.Text as T
import Test.HUnit (assertBool)
import GHC
import qualified GHC.Paths
-- | Drop whitespace from the left of a string.
lstrip :: String -> String
lstrip = dropWhile (`elem` (" \t\r\n" :: String))
-- | Drop whitespace from the right of a string.
rstrip :: String -> String
rstrip = reverse . lstrip . reverse
-- | Drop whitespace from both sides of a string.
strip :: String -> String
strip = rstrip . lstrip
-- | Replace all occurrences of a string with another string.
replace :: String -> String -> String -> String
replace needle replacement haystack =
T.unpack $ T.replace (T.pack needle) (T.pack replacement) (T.pack haystack)
ghc :: Ghc a -> IO a
ghc = runGhc (Just GHC.Paths.libdir)
--
-- | @sublist \`shouldbeAmong\` list@ sets the expectation that @sublist@ elements are
-- among those in @list@.
shouldBeAmong :: (Show a, Eq a) => [a] -> [a] -> IO ()
sublist `shouldBeAmong` list = assertBool errorMsg $ and [x `elem` list | x <- sublist]
where
errorMsg = show list ++ " doesn't contain " ++ show sublist