summaryrefslogtreecommitdiff
path: root/files/practicum/StdAssocListTest.icl
blob: 81f112cb8564e07611348963fe36cf8a9007674f (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
module StdAssocListTest

/*	Test module StdAssocList
	Voor werken met Gast: 
		(*) gebruik Environment 'Gast'
		(*) zet Project Options op 'Basic Values Only' en '2M' Maximum Heap Size
*/

import gast
import StdAssocList

Start
							= testn 1000
								(\x ->
								   newAssocList_is_leeg     /\
								   aantal_elementen_klopt x /\
								   lookup_after_update    x /\
								   lookup_after_update2   x /\
								   keys_zijn_uniek        x /\
								   True
								)

newIntStringAssocList		:: AssocList Int String
newIntStringAssocList		= newAssocList

vulIntStringAssocList		:: (AssocList Int String) Int -> AssocList Int String
vulIntStringAssocList l n	= seq [updateKey k (toString k) \\ k <- [1..n]] l

newAssocList_is_leeg		:: Property
newAssocList_is_leeg		= name "newAssocList_is_leeg"
							  (countValues newIntStringAssocList == 0)

aantal_elementen_klopt		:: Int -> Property
aantal_elementen_klopt n	= name "aantal_elementen_klopt"
							  (countValues (vulIntStringAssocList newIntStringAssocList n`) == max 0 n`)
where                  n`	= min n 100

lookup_after_update			:: Int -> Property
lookup_after_update n		= name "lookup_after_update"
							  (lookupKey k (updateKey k v (vulIntStringAssocList newIntStringAssocList n`)) == [v])
where                  n`	= min n 100
                       k	= n+1
                       v	= toString k

lookup_after_update2		:: Int -> Property
lookup_after_update2 n		= name "lookup_after_update"
							  (lookupKey k (vulIntStringAssocList (updateKey k v newIntStringAssocList) n`) == [v])
where                  n`	= min n 100
                       k	= n+1
                       v	= toString k

keys_zijn_uniek				:: Int -> Property
keys_zijn_uniek n			= name "keys_zijn_uniek"
							  (lookupKey k (removeKey k (vulIntStringAssocList newIntStringAssocList n`)) == [])
where                  n`	= min n 100
                       k	= n/2