easytest-0.2: tests/Suite.hs
{-# language OverloadedStrings #-}
module Main where
import EasyTest
import Control.Monad
suite1 :: Test ()
suite1 = tests
[ scope "a" ok
, scope "b.c" ok
, scope "b" ok
, scope "b" . scope "c" . scope "d" $ ok
-- you can also drop the "scope"
, "c" ok
]
reverseTest :: Test ()
reverseTest = scope "list reversal" $ do
lists <- listsOf [0..100] (int' 0 99)
forM_ lists $ \nums -> expect (reverse (reverse nums) == nums)
main :: IO ()
main = do
run suite1
runOnly "a" suite1
runOnly "b" suite1
runOnly "b" $ tests [suite1, scope "xyz" (crash "never run")]
runOnly "b.c" $ tests [suite1, scope "b" (crash "never run")]
runOnly "x.go" $ tests
[ scope "x.go to" (crash "never run")
, scope "x.go" ok
]
runOnly "x.go to" $ tests
[ scope "x.go to" ok
, scope "x.go" (crash "never run")
]
run reverseTest
run $ tests
[ expectLeft (Left 1 :: Either Int ())
, expectLeftNoShow (Left 2 :: Either Int ())
, expectRight (Right () :: Either Int ())
, expectRightNoShow (Right () :: Either Int ())
]