summaryrefslogtreecommitdiffstats
path: root/TestAufgabeFFP4.hs
diff options
context:
space:
mode:
Diffstat (limited to 'TestAufgabeFFP4.hs')
-rw-r--r--TestAufgabeFFP4.hs54
1 files changed, 54 insertions, 0 deletions
diff --git a/TestAufgabeFFP4.hs b/TestAufgabeFFP4.hs
new file mode 100644
index 0000000..55a257c
--- /dev/null
+++ b/TestAufgabeFFP4.hs
@@ -0,0 +1,54 @@
1module Main where
2
3import Test.HUnit
4import Control.Monad
5import AufgabeFFP4
6
7-------------------------------------------------------------------------------
8
9import Data.List
10
11type KnapsackWantedSolution = (SolKnp,Value)
12type KnapsackWantedSolutions = [KnapsackWantedSolution]
13type KnapsackGotSolution = (SolKnp,Value)
14
15
16knapsackOk :: KnapsackWantedSolutions -> KnapsackGotSolution -> Bool
17knapsackOk wanted got = any (equalKnapsack got) wanted
18 where
19 equalKnapsack (sg,vg) (sw,vw) = vg == vw && equalKnapsackContent sg sw
20 equalKnapsackContent sg sw = sort sg == sort sw
21
22
23assertKnapsackOneOf :: String -> KnapsackWantedSolutions -> KnapsackGotSolution -> Assertion
24assertKnapsackOneOf preface expected actual = unless (knapsackOk expected actual) (assertFailure msg)
25 where
26 msg = (if null preface then "" else preface ++ "\n") ++
27 "expected one of: " ++ show expected ++ "\n but got: " ++ show actual
28
29-------------------------------------------------------------------------------
30
31cases1 = TestLabel "knapsack" $ TestList [
32 TestCase $ assertKnapsackOneOf "exercise example"
33 [([(2,3), (2,3), (3,4), (3,4)], 14)]
34 (knapsack [(2,3), (2,3), (3,4), (3,4), (5,6)] 10),
35 TestCase $ assertKnapsackOneOf "no objects"
36 [([], 0)]
37 (knapsack [(2,3), (2,3), (3,4), (3,4), (5,6)] 1),
38 TestCase $ assertKnapsackOneOf "all objects"
39 [([(2,3), (2,3), (3,4), (3,4), (5,6)], 20)]
40 (knapsack [(2,3), (2,3), (3,4), (3,4), (5,6)] 100),
41 TestCase $ assertKnapsackOneOf "a"
42 [([(2,2), (3,3)], 5), ([(5,5)], 5)]
43 (knapsack [(2,2), (3,3), (4,4), (5,5)] 5)
44 ]
45
46cases2 = TestLabel "binomDyn" $ TestList [
47 ]
48
49tests :: [Test]
50tests = [cases1, cases2]
51
52main = do
53 forM tests $ \test ->
54 runTestTT test