1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
module Main where
import Test.HUnit
import Control.Monad
import Data.Array
import AufgabeFFP5
a :: Array Int Int
a = array (1,9) [(1,3),(2,(-5)),(3,0),(4,9),(5,2),(6,(-1)),(7,2),(8,(-5)),(9,1)]
b :: Array Int Int
b = array (1,9) [(1,3),(2,(-1)),(3,(-2)),(4,9),(5,2),(6,(-1)),(7,2),(8,0),(9,(-1))]
c :: Array Int Int
c = array (1,5) [(1,2),(2,3),(3,(-10)),(4,1),(5,4)]
d :: Array Int Int
d = array (1,6) [(1, (-3)), (2, 1), (3, 10), (4, (-5)), (5, 8), (6, 7)]
minA :: Array Int Int
minA = array (0,0) [(0,0)]
data Week = Mon | Tue | Wed | Thu | Fri | Sat | Sun deriving (Eq, Ord, Ix, Show)
w :: Array Week String
w = array (Tue, Sat) [(Wed, "work"), (Thu, "study"), (Tue, "study"), (Fri, "chill"), (Sat, "relax")]
cases1 = TestLabel "mas" $ TestList [
TestCase $ assertEqual "mas a"
12
(mas a),
TestCase $ assertEqual "mas b"
12
(mas b),
TestCase $ assertEqual "mas c"
5
(mas c),
TestCase $ assertEqual "mas d"
21
(mas d),
TestCase $ assertEqual "mas minA"
0
(mas minA)
]
cases2 = TestLabel "amas" $ TestList [
TestCase $ assertEqual "amas a"
[(3,7), (4,7)]
(amas a),
TestCase $ assertEqual "amas b"
[(1,7),(1,8),(4,7),(4,8)]
(amas b),
TestCase $ assertEqual "amas c"
[(1,2),(4,5)]
(amas c),
TestCase $ assertEqual "amas d"
[(2,6)]
(amas d),
TestCase $ assertEqual "amas minA"
[(0,0)]
(amas minA)
]
cases3 = TestLabel "lmas" $ TestList [
TestCase $ assertEqual "lmas a"
(3,7)
(lmas a),
TestCase $ assertEqual "lmas b"
(1,8)
(lmas b),
TestCase $ assertEqual "lmas c"
(1,2)
(lmas c),
TestCase $ assertEqual "lmas d"
(2,6)
(lmas d),
TestCase $ assertEqual "lmas minA"
(0,0)
(lmas minA)
]
cases4 = TestLabel "minIndex" $ TestList [
TestCase $ assertEqual "minIndex a (>5)"
4
(minIndex a (>5)),
TestCase $ assertEqual "minIndex a (<0)"
2
(minIndex a (<0)),
TestCase $ assertEqual "minIndex a (even)"
3
(minIndex a (even)),
TestCase $ assertEqual "minIndex b (odd)"
1
(minIndex b (odd)),
-- TestCase $ assertEqual "minIndex b (>100)"
-- error "No matching index"
-- (minIndex b (>100)),
TestCase $ assertEqual "minIndex w (=='relax')"
Sat
(minIndex w (=="relax")),
TestCase $ assertEqual "minIndex w (=='work')"
Wed
(minIndex w (=="work")),
TestCase $ assertEqual "minIndex w (=='chill')"
Fri
(minIndex w (=="chill")),
TestCase $ assertEqual "minIndex w (/='chill')"
Tue
(minIndex w (/="chill"))
-- TestCase $ assertEqual "minIndex w (=='swim')"
-- error "No matching index"
-- (minIndex w (=="swim"))
]
tests :: [Test]
tests = [cases1, cases2, cases3, cases4]
main = do
forM tests $ \test ->
runTestTT test
|