diff options
Diffstat (limited to 'TestAufgabeFFP4.hs')
| -rw-r--r-- | TestAufgabeFFP4.hs | 54 |
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 @@ | |||
| 1 | module Main where | ||
| 2 | |||
| 3 | import Test.HUnit | ||
| 4 | import Control.Monad | ||
| 5 | import AufgabeFFP4 | ||
| 6 | |||
| 7 | ------------------------------------------------------------------------------- | ||
| 8 | |||
| 9 | import Data.List | ||
| 10 | |||
| 11 | type KnapsackWantedSolution = (SolKnp,Value) | ||
| 12 | type KnapsackWantedSolutions = [KnapsackWantedSolution] | ||
| 13 | type KnapsackGotSolution = (SolKnp,Value) | ||
| 14 | |||
| 15 | |||
| 16 | knapsackOk :: KnapsackWantedSolutions -> KnapsackGotSolution -> Bool | ||
| 17 | knapsackOk 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 | |||
| 23 | assertKnapsackOneOf :: String -> KnapsackWantedSolutions -> KnapsackGotSolution -> Assertion | ||
| 24 | assertKnapsackOneOf 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 | |||
| 31 | cases1 = 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 | |||
| 46 | cases2 = TestLabel "binomDyn" $ TestList [ | ||
| 47 | ] | ||
| 48 | |||
| 49 | tests :: [Test] | ||
| 50 | tests = [cases1, cases2] | ||
| 51 | |||
| 52 | main = do | ||
| 53 | forM tests $ \test -> | ||
| 54 | runTestTT test | ||
