#!/usr/bin/runhugs -X-98 +o +l module Main where import Test.HUnit import Control.Monad import System import AufgabeFFP6 import Data.Array cases1 = TestLabel "eval" $ TestList [ TestCase $ assertEqual "eval1" (0) (eval (array (1,3) [(1,1), (2,2), (3,3)]) (array (1,2) [(1,(+)), (2,(-))])), TestCase $ assertEqual "eval2" (5) (eval (array (1,3) [(1,1), (2,2), (3,3)]) (array (1,2) [(1,(*)), (2,(+))])), TestCase $ assertEqual "eval3" (-3) (eval (array (1,3) [(1,1), (2,2), (3,3)]) (array (1,2) [(1,(-)), (2,(*))])), TestCase $ assertEqual "eval4" (-1) (eval (array (1,6) [(1,3), (2,5), (3,2), (4,-2), (5,7), (6,0)]) (array (1,5) [(1,(+)), (2,(./.)), (3,(*)), (4,(+)), (5,(-))])), TestCase $ assertEqual "eval5" (1) (eval (array (1,6) [(1,3), (2,5), (3,2), (4,-2), (5,7), (6,0)]) (array (1,5) [(1,(*)), (2,(-)), (3,(+)), (4,(./.)), (5,(+))])), TestCase $ assertEqual "eval6" (-5) (eval (array (1,6) [(1,4), (2,2), (3,3), (4,-4), (5,5), (6,2)]) (array (1,5) [(1,(+)), (2,(./.)), (3,(*)), (4,(+)), (5,(-))])), TestCase $ assertEqual "eval7" (2) (eval (array (1,6) [(1,4), (2,2), (3,3), (4,-4), (5,5), (6,2)]) (array (1,5) [(1,(*)), (2,(-)), (3,(+)), (4,(./.)), (5,(+))])) ] -------------------------------------------------------------------------------- cases2 = TestLabel "yield_bt" $ TestList [ TestCase $ assertEqual "yield_bt1" [array (1,2) [(1,(+)), (2,(+))],array (1,2) [(1,(*)), (2,(*))]] (yield_bt (array (1,3) [(1,1), (2,2), (3,3)] ) 6), TestCase $ assertEqual "yield_bt2" [] (yield_bt (array (1,3) [(1,1), (2,2), (3,3)] ) 4), TestCase $ assertEqual "yield_bt3" [(array (1,2) [(1,(+)), (2,(-))]),(array (1,2) [(1,(*)), (2,(./.))]), (array (1,2) [(1,(./.)), (2,(*))]),(array (1,2) [(1,(./.)), (2,(./.))])] (yield_bt (array (1,3) [(1,1), (2,2), (3,3)]) 0), TestCase $ assertEqual "yield_bt4" [array (1,1) [(1,(+))], array (1,1) [(1,(-))]] (yield_bt (array (1,2) [(1,1), (2,0)]) 1) ] cases3 = TestLabel "yield_gtf" $ TestList [ TestCase $ assertEqual "yield_gtf1" [array (1,2) [(1,(+)), (2,(+))],array (1,2) [(1,(*)), (2,(*))]] (yield_gtf (array (1,3) [(1,1), (2,2), (3,3)] ) 6), TestCase $ assertEqual "yield_gtf2" [] (yield_gtf (array (1,3) [(1,1), (2,2), (3,3)] ) 4), TestCase $ assertEqual "yield_gtf3" [(array (1,2) [(1,(+)), (2,(-))]),(array (1,2) [(1,(*)), (2,(./.))]), (array (1,2) [(1,(./.)), (2,(*))]),(array (1,2) [(1,(./.)), (2,(./.))])] (yield_gtf (array (1,3) [(1,1), (2,2), (3,3)]) 0), TestCase $ assertEqual "yield_gtf4" [array (1,1) [(1,(+))], array (1,1) [(1,(-))]] (yield_gtf (array (1,2) [(1,1), (2,0)]) 1) ] cases4 = TestLabel "yield" $ TestList [ TestCase $ assertEqual "yield" [array (1,2) [(1,(+)), (2,(+))],array (1,2) [(1,(*)), (2,(*))]] (yield (array (1,3) [(1,1), (2,2), (3,3)] ) 6), TestCase $ assertEqual "yield" [] (yield (array (1,3) [(1,1), (2,2), (3,3)] ) 4), TestCase $ assertEqual "yield" [(array (1,2) [(1,(+)), (2,(-))]),(array (1,2) [(1,(*)), (2,(./.))]), (array (1,2) [(1,(./.)), (2,(*))]),(array (1,2) [(1,(./.)), (2,(./.))])] (yield (array (1,3) [(1,1), (2,2), (3,3)]) 0), TestCase $ assertEqual "yield" [array (1,1) [(1,(+))], array (1,1) [(1,(-))]] (yield (array (1,2) [(1,1), (2,0)]) 1) ] -------------------------------------------------------------------------------- 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)