added practicum files, updated gitignore
[fp1415.git] / files / practicum / MatchStringsTest.icl
1 module MatchStringsTest
2
3 /* Test module MatchStrings
4 Voor werken met Gast:
5 (*) gebruik Environment 'Gast'
6 (*) zet Project Options op 'Basic Values Only'
7 */
8
9 import StdEnv
10 import MatchStrings
11 import gast
12
13 Start
14 = testn 1000
15 (\s t ->
16 eigenschap_waar_voor_gelijke_argumenten is_gelijk s /\
17 eigenschap_onwaar_voor_groter_argument is_gelijk s /\
18 eigenschap_onwaar_voor_groter_argument is_deelstring s /\
19 eigenschap_waar_voor_gelijke_argumenten is_deelstring s /\
20 eigenschap_waar_voor_gelijk_begin is_deelstring s t /\
21 eigenschap_waar_voor_gelijk_midden is_deelstring s t /\
22 eigenschap_waar_voor_gelijk_eind is_deelstring s t /\
23 eigenschap_onwaar_voor_groter_argument is_deel s /\
24 eigenschap_waar_voor_gelijke_argumenten is_deel s /\
25 eigenschap_waar_voor_gelijk_begin is_deel s t /\
26 eigenschap_waar_voor_gelijk_midden is_deel s t /\
27 eigenschap_waar_voor_gelijk_eind is_deel s t /\
28 eigenschap_waar_voor_uitbreiding is_deel s t /\
29 kleenes_matcht_altijd s /\
30 dots_matcht_zelfde_lengte s /\
31 True
32 )
33
34 eigenschap_onwaar_voor_groter_argument :: (String String -> Bool) String -> Property
35 eigenschap_onwaar_voor_groter_argument f a
36 = name "eigenschap_onwaar_voor_groter_argument" (not (f (a +++ ".") a))
37
38 eigenschap_waar_voor_gelijke_argumenten :: (String String -> Bool) String -> Property
39 eigenschap_waar_voor_gelijke_argumenten f a
40 = name "eigenschap_waar_voor_gelijke_argumenten" (f a a)
41
42 eigenschap_waar_voor_gelijk_begin :: (String String -> Bool) String String -> Property
43 eigenschap_waar_voor_gelijk_begin f a b
44 = name "eigenschap_waar_voor_gelijk_begin" (f a (a +++ b))
45
46 eigenschap_waar_voor_gelijk_midden :: (String String -> Bool) String String -> Property
47 eigenschap_waar_voor_gelijk_midden f a b
48 = name "eigenschap_waar_voor_gelijk_midden" (f a (b +++ a +++ b))
49
50 eigenschap_waar_voor_gelijk_eind :: (String String -> Bool) String String -> Property
51 eigenschap_waar_voor_gelijk_eind f a b
52 = name "eigenschap_waar_voor_gelijk_eind" (f a (b +++ a))
53
54 eigenschap_waar_voor_uitbreiding :: (String String -> Bool) String String -> Property
55 eigenschap_waar_voor_uitbreiding f a extra
56 = name "eigenschap_waar_voor_uitbreiding"
57 ((extra <> "") ==> f a (breid_string_uit extra a))
58
59 breid_string_uit :: String String -> String
60 breid_string_uit extra string
61 = toString (flatten [[c:cs] \\ c <-: string])
62 where
63 cs = fromString extra
64
65 kleenes_matcht_altijd :: String -> Property
66 kleenes_matcht_altijd s
67 = name "kleenes_matcht_altijd"
68 (ForEach [{# '*' \\ _ <- [1..n]} \\ n <- [1..10]] (flip is_match s))
69
70 dots_matcht_zelfde_lengte :: String -> Property
71 dots_matcht_zelfde_lengte s
72 = name "dots_matcht_zelfde_lengte"
73 (is_match dots s
74 &&
75 not (is_match ("."+++dots) s)
76 &&
77 not (is_match dots (s+++"."))
78 )
79 where
80 dots = {# '.' \\ _ <-: s}