From a7d7542dc646a5fd124ef71e71ce260889f1701b Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Tue, 2 Feb 2016 19:24:50 +0100 Subject: Moved to 1415 directory --- 1415/files/practicum/FragsTest.icl | 39 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 1415/files/practicum/FragsTest.icl (limited to '1415/files/practicum/FragsTest.icl') diff --git a/1415/files/practicum/FragsTest.icl b/1415/files/practicum/FragsTest.icl new file mode 100644 index 0000000..c146994 --- /dev/null +++ b/1415/files/practicum/FragsTest.icl @@ -0,0 +1,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 -- cgit v1.2.3