blob: d6e89f33877c671c4cd3301fe6298cb33a782907 (
plain) (
blame)
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
|
module EersteOfLaatsteTest
/* Test module EersteOfLaatste
Voor werken met Gast:
(*) gebruik Environment 'Gast'
(*) zet Project Options op 'Basic Values Only'
*/
import EersteOfLaatste
import StdEnv
import gast
Start
= testn 1000
(\n v ->
eerste2_is_eerste_2 v /\
laatste2_is_laatste_2 v /\
eersten_is_eerste_n n v /\
laatsten_is_laatste_n n v /\
True
)
:: BaseType :== Int
eerste2_is_eerste_2 :: [BaseType] -> Property
eerste2_is_eerste_2 l = name "eerste2 is eerste twee"
((length l > 1) ==> let l` = eerste2 l in zelfde_deel 2 l` l)
laatste2_is_laatste_2 :: [BaseType] -> Property
laatste2_is_laatste_2 l = name "laatste2 is laatste twee"
((length l > 1) ==> let l` = laatste2 l in zelfde_deel 2 l` (drop (length l - 2) l))
eersten_is_eerste_n :: Int [BaseType] -> Property
eersten_is_eerste_n n l = name "eersten is eerste n"
((n >= 0 && n < length l) ==> let l` = eersten n l in zelfde_deel n l` l)
laatsten_is_laatste_n :: Int [BaseType] -> Property
laatsten_is_laatste_n n l = name "laatsten is laatste n"
((n >= 0 && n < length l) ==> let l` = laatsten n l in zelfde_deel n l` (drop (length l - n) l))
zelfde_deel :: Int [BaseType] [BaseType] -> Bool
zelfde_deel 0 _ _ = True
zelfde_deel n [a:as] [b:bs] = a == b && zelfde_deel (n-1) as bs
zelfde_deel _ _ _ = False
|