blob: c1469949490792cdb89e196f0142f9425f9dc3e7 (
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
|
module FragsTest
/* Test module Frags
Voor werken met Gast:
(*) gebruik Environment 'Gast'
(*) zet Project Options op 'Basic Values Only'
*/
import StdEnv
import gast
import Frags
Start = testn 1000
( \xs -> alle_lengtes_komen_voor xs /\
alle_elementen_zijn_frag 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 (frags xs))) == [0..n]
)
alle_elementen_zijn_frag :: [Int] -> Property
alle_elementen_zijn_frag xs = name "alle_elementen_zijn_frag"
(and [is_frag f xs \\ f <- frags xs])
/* is_frag fragment lijst is True alleen als fragment een strikte deellijst is
van lijst, dwz: de elementen van fragment komen direct achter elkaar in lijst voor.
*/
is_frag :: [a] [a] -> Bool | Eq a
is_frag [] _ = True
is_frag _ [] = False
is_frag [f:fs] [x:xs]
| f == x
| is_frag fs xs = True
| otherwise = is_frag [f:fs] xs
| otherwise = is_frag [f:fs] xs
|