hunit-gui-0.1: Test/HUnit/Gui/Runner.hs
module Test.HUnit.Gui.Runner (GuiInterface(..), runTests)
where
import Test.HUnit
import Test.HUnit.Gui.Descriptions
data GuiInterface = GuiInterface (String -> IO ()) (String -> IO ()) (Counts -> IO ())
runTests :: GuiInterface -> Test -> IO Counts
runTests (GuiInterface updateTestsRun updateFailureDetails updateTestBar) tests = do
(counts', _) <- performTest reportStart reportErrors reportFailures GuiUpdater tests
updateTestsRun $ showCounts counts'
return counts'
where
reportStart state _ = do
updateTestsRun $ show $ counts state
updateTestBar $ counts state
return GuiUpdater
reportErrors msg state _ = reportErrorsFailures (describeError msg state) state
reportFailures msg state _ = reportErrorsFailures (describeFailure msg state) state
reportErrorsFailures msg state = do
updateTestBar $ counts state
updateFailureDetails msg
return GuiUpdater
-- trivial "state" token
data GuiUpdater = GuiUpdater