]> gerrit.simantics Code Review - simantics/platform.git/blob - tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/scl/ListFunctions.scl
Fixed multiple issues causing dangling references to discarded queries
[simantics/platform.git] / tests / org.simantics.scl.compiler.tests / src / org / simantics / scl / compiler / tests / scl / ListFunctions.scl
1 import "Prelude"
2 main = do
3     print $ [1,2] \\ []
4     print $ [1,2,3] \\ [1]
5     print $ [1,2,3] \\ [2]
6     print $ [1,2,3] \\ [2,3]
7 --
8 [1, 2]
9 [2, 3]
10 [1, 3]
11 [1]
12 ()    
13 --
14 import "Prelude"
15
16 assertEquals :: Show a => a -> a -> <Proc> ()
17 assertEquals a b = if a == b then () else fail "\(a) <> \(b)"
18
19 testGrouping outVal f l = do
20     kl = map (\v -> (f v, v)) l
21     groups = group kl
22     print groups
23     
24     assertEquals groups (groupBy f l)
25     
26     i1 = fromMaybe [] . index groups
27     i2 = indexGroup kl
28     i3 = indexGroupBy f l
29     
30     keys = map fst groups + [outVal]
31     
32     for keys $ \k -> do 
33         assertEquals (i1 k) (i2 k)
34         assertEquals (i1 k) (i3 k)
35
36 main = do
37     testGrouping 4 (`mod` 3) [2,4,6,8,10]
38 --
39 [(2, [2, 8]), (1, [4, 10]), (0, [6])]
40 ()