#!/usr/bin/runhugs +l module Main where import Prelude hiding (filter) import Test.HUnit import Control.Monad import System import Data.Array import AufgabeFFP3 cases1 = TestLabel "foo" $ TestList [ TestCase $ assertEqual "a" [([(2,7),(2,6)],4,13)] ((selector1 . (filter 5) . transformer . generator) [(5,3),(2,7),(2,6),(10,100)]), TestCase $ assertEqual "b" ((selector1 . (filter 13) . transformer . generator) [(5,3),(2,7),(2,6),(10,100)]) [([(2,7),(10,100)],12,107)], TestCase $ assertEqual "c" ((selector1 . (filter 1) . transformer . generator) [(5,3),(2,7),(2,6),(10,100)]) [], TestCase $ assertEqual "d" ((selector1 . (filter 5) . transformer . generator) [(5,13),(2,7),(2,6),(10,100)]) [([(5,13)],5,13), ([(2,7),(2,6)],4,13)], TestCase $ assertEqual "e" ((selector2 . (filter 5) . transformer . generator) [(5,13),(2,7),(2,6),(10,100)]) [([(2,7),(2,6)],4,13)] ] cases2 = TestLabel "bar" $ TestList [ TestCase $ assertEqual "a" [ binomS (8, i) | i <- [0..7] ] [ binom (8, i) | i <- [0..7] ], TestCase $ assertEqual "a" (binom (1,1)) (binomS (1,1)), TestCase $ assertEqual "a" (binom (2,1)) (binomS (2,1)), TestCase $ assertEqual "a" (binom (18,12)) (binomS (18,12)) ] cases3 = TestLabel "bar" $ TestList [ TestCase $ assertEqual "a" [ binomM (8, i) | i <- [0..7] ] [ binom (8, i) | i <- [0..7] ], TestCase $ assertEqual "a" (binom (1,1)) (binomM (1,1)), TestCase $ assertEqual "a" (binom (2,1)) (binomM (2,1)), TestCase $ assertEqual "a" (binom (18,12)) (binomM (18,12)) ] cases4 = TestLabel "bar" $ TestList [ TestCase $ assertEqual "a" ( [binomS (n, k) | k <- [0..50], n <- [k..50] ] ) ( [binomM (n, k) | k <- [0..50], n <- [k..50] ] ) ] tests :: [Test] tests = [cases1, cases2, cases3, cases4] 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)