HUnit入門
http://haskell.g.hatena.ne.jp/jmk/20060816/1155697498を参照しながら、自分で手を動かしながらmapとfoldrのテストを書いてみました。やっぱりコードの断片じゃなくて実際に動作するものがあった方が理解が進みます。
Haskellらしくまたよくわからない演算子を多用していますが、これはこれでとてもシンプルに書けるということがよくわかりました。
module Main (main) where import Test.HUnit (runTestTT, test, Test, (~:), (~=?)) suite :: [Test] suite = [ "map" ~: testMap, "foldr" ~: testFoldr ] testMap :: [Test] testMap = [ [2, 3, 4] ~=? map (+ 1) [1, 2, 3], [2, 4, 6] ~=? map (* 2) [1, 2, 3], [] ~=? map (* 2) [] ] testFoldr :: [Test] testFoldr = [ 55 ~=? foldr (+) 0 [1 .. 10], 0 ~=? foldr (+) 0 [] ] main :: IO () main = do runTestTT $ test suite return ()
実行例:
$ ./hunit_sample.exe Cases: 5 Tried: 5 Errors: 0 Failures: 0