[Haskell-beginners] hunit question

Joe Van Dyk joe at fixieconsulting.com
Tue Feb 2 16:18:50 EST 2010


I have a little binary search function and am trying to write tests
for it in hunit.

The below approach doesn't compile, because I'm attempting to build a
list of tuples of different types, which isn't working for me.

What's the appropriate way to do this test?

http://gist.github.com/293031

import Test.HUnit
import JoeBinarySearch
-- Note:
-- JoeBinarySearch.binary_search :: (Ord a) => [a] -> a -> Maybe Int

assertions = [
  ([1],       1, (Just 0)),
  ([1, 3],    1, (Just 0)),
  ([1, 3, 4], 4, (Just 2)),
  ([1,2,4,6,8,9,12,15,17,20], 17, (Just 8)),
  ([1,2,4,6,8,9,12,15,17,20], 20, (Just 9)),
  ("hello",                 'l', (Just 2)), -- BOOM
  ([0.0, 1.5, 3.0],         3.0, (Just 2)),
  ([],                      1, Nothing),
  ([1,3],                   2, Nothing),
  ([1,4,6,8,9,12,15,17,20], 2, Nothing),
  ([1,4,6,8,9,12,15,17,20], 100, Nothing),
  ([1,4,6,8,9,12,15,17,20], (-100), Nothing)]

test_list = TestList test_cases
  where
    test_cases = map test_func assertions
    test_func (lst, input, expected) = TestCase $ assert_equal' (
binary_search lst  input ) expected
    assert_equal' = assertEqual "should equal"

main :: IO ()
main = do
  runTestTT test_list
  print "DONE"


-- 
Joe Van Dyk
http://fixieconsulting.com


More information about the Beginners mailing list