packages feed

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