update NOTICE and LICENSE
[nit.git] / tests / test_iterate.nit
1 # This file is part of NIT ( http://www.nitlanguage.org ).
2 #
3 # Copyright 2009 Jean Privat <jean@pryen.org>
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 # http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16
17 fun test_iterator(c: Collection[Int])
18 do
19 var idx = 0
20 var it = c.iterator
21 while it.is_ok do
22 var i = it.item
23 print " {idx}->{i}"
24 it.next
25 idx += 1
26 end
27 end
28
29 fun test_iterate(c: Collection[Int])
30 do
31 var idx = 0
32 c.iterate !each i do
33 print " {idx}->{i}"
34 idx += 1
35 end
36 end
37
38 fun test_for(c: Collection[Int])
39 do
40 var idx = 0
41 for i in c do
42 print " {idx}->{i}"
43 idx += 1
44 end
45 end
46
47 fun test_coll(c: Collection[Int], s: String)
48 do
49 print("{s}: iterator")
50 test_iterator(c)
51 print("{s}: iterate")
52 test_iterate(c)
53 print("{s}: for")
54 test_for(c)
55 print("")
56 end
57
58 fun init_seq(c: SimpleCollection[Int]): SimpleCollection[Int]
59 do
60 for i in [0..5[ do
61 c.add(i)
62 end
63 return c
64 end
65
66 fun init_map(c: Map[Int, Int]): Map[Int, Int]
67 do
68 for i in [0..5[ do
69 c[i*10] = i
70 end
71 return c
72 end
73
74 test_coll(init_seq(new Array[Int]), "Array")
75 test_coll(init_seq(new List[Int]), "List")
76 test_coll(init_seq(new ArraySet[Int]), "ArraySet")
77 test_coll(init_seq(new HashSet[Int]), "HashSet")
78 test_coll([0..5[, "ORange")
79 test_coll([0..4], "CRange")
80 test_coll(init_map(new ArrayMap[Int, Int]), "ArrayMap")
81 test_coll(init_map(new HashMap[Int, Int]), "HashMap")
82