blob: 35c2d2791135a394cf0b84d71f0963b209a2dd63 (
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
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
|
module MatchStringsTest
/* Test module MatchStrings
Voor werken met Gast:
(*) gebruik Environment 'Gast'
(*) zet Project Options op 'Basic Values Only'
*/
import StdEnv
import MatchStrings
import gast
Start
= testn 1000
(\s t ->
eigenschap_waar_voor_gelijke_argumenten is_gelijk s /\
eigenschap_onwaar_voor_groter_argument is_gelijk s /\
eigenschap_onwaar_voor_groter_argument is_deelstring s /\
eigenschap_waar_voor_gelijke_argumenten is_deelstring s /\
eigenschap_waar_voor_gelijk_begin is_deelstring s t /\
eigenschap_waar_voor_gelijk_midden is_deelstring s t /\
eigenschap_waar_voor_gelijk_eind is_deelstring s t /\
eigenschap_onwaar_voor_groter_argument is_deel s /\
eigenschap_waar_voor_gelijke_argumenten is_deel s /\
eigenschap_waar_voor_gelijk_begin is_deel s t /\
eigenschap_waar_voor_gelijk_midden is_deel s t /\
eigenschap_waar_voor_gelijk_eind is_deel s t /\
eigenschap_waar_voor_uitbreiding is_deel s t /\
kleenes_matcht_altijd s /\
dots_matcht_zelfde_lengte s /\
True
)
eigenschap_onwaar_voor_groter_argument :: (String String -> Bool) String -> Property
eigenschap_onwaar_voor_groter_argument f a
= name "eigenschap_onwaar_voor_groter_argument" (not (f (a +++ ".") a))
eigenschap_waar_voor_gelijke_argumenten :: (String String -> Bool) String -> Property
eigenschap_waar_voor_gelijke_argumenten f a
= name "eigenschap_waar_voor_gelijke_argumenten" (f a a)
eigenschap_waar_voor_gelijk_begin :: (String String -> Bool) String String -> Property
eigenschap_waar_voor_gelijk_begin f a b
= name "eigenschap_waar_voor_gelijk_begin" (f a (a +++ b))
eigenschap_waar_voor_gelijk_midden :: (String String -> Bool) String String -> Property
eigenschap_waar_voor_gelijk_midden f a b
= name "eigenschap_waar_voor_gelijk_midden" (f a (b +++ a +++ b))
eigenschap_waar_voor_gelijk_eind :: (String String -> Bool) String String -> Property
eigenschap_waar_voor_gelijk_eind f a b
= name "eigenschap_waar_voor_gelijk_eind" (f a (b +++ a))
eigenschap_waar_voor_uitbreiding :: (String String -> Bool) String String -> Property
eigenschap_waar_voor_uitbreiding f a extra
= name "eigenschap_waar_voor_uitbreiding"
((extra <> "") ==> f a (breid_string_uit extra a))
breid_string_uit :: String String -> String
breid_string_uit extra string
= toString (flatten [[c:cs] \\ c <-: string])
where
cs = fromString extra
kleenes_matcht_altijd :: String -> Property
kleenes_matcht_altijd s
= name "kleenes_matcht_altijd"
(ForEach [{# '*' \\ _ <- [1..n]} \\ n <- [1..10]] (flip is_match s))
dots_matcht_zelfde_lengte :: String -> Property
dots_matcht_zelfde_lengte s
= name "dots_matcht_zelfde_lengte"
(is_match dots s
&&
not (is_match ("."+++dots) s)
&&
not (is_match dots (s+++"."))
)
where
dots = {# '.' \\ _ <-: s}
|