summaryrefslogtreecommitdiff
path: root/files/practicum/MatchStringsTest.icl
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}