module Test.Framework.Skip
( skip
, skipTestCase
, skipTestGroup
, skipTestProperty
) where
import Control.Arrow (first)
import Test.Framework.Providers.API ((:~>)(..),Test(..),Testlike(..),TestResultlike(..))
import Data.Typeable (Typeable)
data Skip = Skip deriving (Typeable)
instance Show Skip where show _ = "skipped"
instance TestResultlike Skip Skip where
testSucceeded _ = True
instance Testlike Skip Skip Skip where
runTest _ _ = return (Finished Skip,return ())
testTypeName _ = "Skipped"
skip :: Test -> Test
skip (Test name _) = Test name Skip
skip (TestGroup name tests) = TestGroup name (map skip tests)
skip (PlusTestOptions options test) = PlusTestOptions options (skip test)
skip (BuildTestBracketed bracket) = BuildTestBracketed (fmap (first skip) bracket)
skipTestCase :: String -> a -> Test
skipTestCase name _ = Test name Skip
skipTestGroup :: String -> [Test] -> Test
skipTestGroup name = TestGroup name . map skip
skipTestProperty :: String -> a -> Test
skipTestProperty = skipTestCase