    -- | 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