summaryrefslogtreecommitdiff
path: root/files/practicum/MatchStringsTest.icl
diff options
context:
space:
mode:
authorMart Lubbers2015-02-06 08:39:37 +0100
committerMart Lubbers2015-02-06 08:39:37 +0100
commit379b6353396ca2401241d714733d570629835ffe (patch)
tree26652c854a79c627b5f50bc8ac26f9b84f8e196d /files/practicum/MatchStringsTest.icl
parentMerge branch 'master' of https://github.com/dopefishh/fp1 (diff)
added practicum files, updated gitignore
Diffstat (limited to 'files/practicum/MatchStringsTest.icl')
-rw-r--r--files/practicum/MatchStringsTest.icl80
1 files changed, 80 insertions, 0 deletions
diff --git a/files/practicum/MatchStringsTest.icl b/files/practicum/MatchStringsTest.icl
new file mode 100644
index 0000000..35c2d27
--- /dev/null
+++ b/files/practicum/MatchStringsTest.icl
@@ -0,0 +1,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}