-- | HUnit is a unit testing framework for Haskell, inspired by the JUnit tool
-- for Java. This guide describes how to use HUnit, assuming you are familiar
-- with Haskell, though not necessarily with JUnit.
--
-- In the Haskell module where your tests will reside, import module
-- @Test.HUnit@:
--
-- @
--    import Test.HUnit
-- @
--
--  Define test cases as appropriate:
--
-- @
--    test1 = TestCase (assertEqual "for (foo 3)," (1,2) (foo 3))
--    test2 = TestCase (do (x,y) <- partA 3
--                         assertEqual "for the first result of partA," 5 x
--                         b <- partB y
--                         assertBool ("(partB " ++ show y ++ ") failed") b)
-- @
--
-- Name the test cases and group them together:
--
-- @
--    tests = TestList [TestLabel "test1" test1, TestLabel "test2" test2]
-- @
--
-- Run the tests as a group. At a Haskell interpreter prompt, apply the function
-- @runTestTT@ to the collected tests. (The /TT/ suggests /T/ext orientation
-- with output to the /T/erminal.)
--
-- @
--    \> runTestTT tests
--    Cases: 2  Tried: 2  Errors: 0  Failures: 0
--    \>
-- @
--
-- If the tests are proving their worth, you might see:
--
-- @
--    \> runTestTT tests
--    ### Failure in: 0:test1
--    for (foo 3),
--    expected: (1,2)
--     but got: (1,3)
--    Cases: 2  Tried: 2  Errors: 0  Failures: 1
--    \>
-- @
--
-- You can specify tests even more succinctly using operators and overloaded
-- functions that HUnit provides:
--
-- @
--    tests = test [ "test1" ~: "(foo 3)" ~: (1,2) ~=? (foo 3),
--                   "test2" ~: do (x, y) <- partA 3
--                                 assertEqual "for the first result of partA," 5 x
--                                 partB y \@? "(partB " ++ show y ++ ") failed" ]
-- @
--
-- Assuming the same test failures as before, you would see:
--
-- @
--    \> runTestTT tests
--    ### Failure in: 0:test1:(foo 3)
--    expected: (1,2)
--     but got: (1,3)
--    Cases: 2  Tried: 2  Errors: 0  Failures: 1
--    \>
-- @

module Test.HUnit
(
  module Test.HUnit.Base,
  module Test.HUnit.Text
)
where

import Test.HUnit.Base
import Test.HUnit.Text