blob: 6092bc082cdbcb7695749391ab8ea32b4308ba13 (
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
|
module SubsTest
/* Test module Subs
Voor werken met Gast:
(*) gebruik Environment 'Gast'
(*) zet Project Options op 'Basic Values Only'
*/
import StdEnv
import gast
import Subs
Start
= testn 1000
(\xs -> alle_lengtes_komen_voor xs /\
alle_elementen_zijn_sub xs /\
subs_xs_bevat_xs xs /\
True
)
alle_lengtes_komen_voor :: [Int] -> Property
alle_lengtes_komen_voor xs = name "alle_lengtes_komen_voor"
(let n = length xs
in sort (removeDup (map length (subs xs))) == [0..n]
)
alle_elementen_zijn_sub :: [Int] -> Property
alle_elementen_zijn_sub xs = name "alle_elementen_zijn_sub" (and [is_sub f xs \\ f <- subs xs])
subs_xs_bevat_xs :: [Int] -> Property
subs_xs_bevat_xs xs = name "subs_xs_bevat_xs" (isMember xs (subs xs))
/* is_sub sub lijst is True alleen als alle elementen van sub achtereenvolgens voorkomen in lijst.
*/
is_sub :: [a] [a] -> Bool | Eq a
is_sub [] _ = True
is_sub _ [] = False
is_sub [x:xs] [y:ys]
| x == y = is_sub xs ys
| otherwise = is_sub [x:xs] ys
|