#!/usr/bin/runhugs +l module Main where import Test.HUnit import Control.Monad import System import Data.Array import AufgabeFFP1 assertBoolF :: String -> Bool -> Assertion assertBoolF msg b = when b (assertFailure msg) ------------------------------------------------------------------------------- pof2s1 :: Test pof2s1 = TestCase (assertEqual "pof2s" [1,2,4,8,16,32,64,128,256,512] (take 10 pof2s)) pof2sTests = TestList [pof2s1] ------------------------------------------------------------------------------- pd1 :: Test pd1 = TestCase (assertEqual "pd" [[1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1], [1,5,10,10,5,1], [1,6,15,20,15,6,1], [1,7,21,35,35,21,7,1], [1,8,28,56,70,56,28,8,1], [1,9,36,84,126,126,84,36,9,1], [1,10,45,120,210,252,210,120,45,10,1]] (take 11 pd)) pdTests = TestList [pd1] ------------------------------------------------------------------------------- fibdiag1 :: Test fibdiag1 = TestCase (assertEqual "fibdiag(1)" [1] (fibdiag 1)) fibdiag2 :: Test fibdiag2 = TestCase (assertEqual "fibdiag(2)" [1] (fibdiag 2)) fibdiag3 :: Test fibdiag3 = TestCase (assertEqual "fibdiag(3)" [1,1] (fibdiag 3)) fibdiag4 :: Test fibdiag4 = TestCase (assertEqual "fibdiag(4)" [1,2] (fibdiag 4)) fibdiag5 :: Test fibdiag5 = TestCase (assertEqual "fibdiag(5)" [1,3,1] (fibdiag 5)) fibdiag6 :: Test fibdiag6 = TestCase (assertEqual "fibdiag(6)" [1,4,3] (fibdiag 6)) fibdiag7 :: Test fibdiag7 = TestCase (assertEqual "fibdiag(7)" [1,5,6,1] (fibdiag 7)) fibdiag8 :: Test fibdiag8 = TestCase (assertEqual "fibdiag(8)" [1,6,10,4] (fibdiag 8)) fibdiagTests = TestList [fibdiag1, fibdiag2, fibdiag3, fibdiag4, fibdiag5, fibdiag6, fibdiag7, fibdiag8] ------------------------------------------------------------------------------- fibdiags1 :: Test fibdiags1 = TestCase (assertEqual "fibdiags" [[1], [1], [1,1], [1,2], [1,3,1], [1,4,3], [1,5,6,1], [1,6,10,4]] (take 8 fibdiags)) fibdiagsTests = TestList [fibdiags1] ------------------------------------------------------------------------------- fibspd1 :: Test fibspd1 = TestCase (assertEqual "fibspd" [1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657] (take 23 fibspd)) fibspdTests = TestList [fibspd1] ------------------------------------------------------------------------------- tests :: [Test] tests = [pof2s1, pdTests, fibdiagTests, fibdiagsTests, fibspdTests] isSuccess :: Counts -> Bool isSuccess Counts{ cases = _, tried = _, errors = 0, failures = 0 } = True isSuccess Counts{ cases = _, tried = _, errors = _, failures = _ } = False runTest :: Test -> IO () runTest test = do result <- runTestTT test unless (isSuccess result) exitFailure main = do forM tests $ (\test -> runTest test)