COIN-OR::LEMON - Graph Library

source: lemon-0.x/src/work/klao/iter_map_test.cc @ 921:818510fa3d99

Last change on this file since 921:818510fa3d99 was 921:818510fa3d99, checked in by Alpar Juttner, 15 years ago

hugo -> lemon

File size: 5.4 KB
Line 
1#include <iter_map.h>
2#include <lemon/maps.h>
3
4#include <iostream>
5
6using namespace lemon;
7using namespace std;
8
9const int N = 3;
10
11typedef StdMap<int,int> BaseMap;
12typedef IterableMap<BaseMap, N> TestMap;
13typedef IterableBoolMap<BaseMap> TestBoolMap;
14
15
16template<typename TM>
17void print(TM const& m, int N = 3) {
18  cout << "Size of the map: " << m.size() << endl;
19  for(int i=0; i<N; ++i) {
20    cout << "  Class " << i << ". (size=" << m.size(i) << "): " << flush;
21    cout << "    ";
22    for(typename TM::iterator j = m.begin(i); j!=m.end(i); ++j) {
23      cout << " " << *j;
24    }
25    cout << endl;
26  }
27}
28
29struct Int {
30  int a;
31
32  Int(int b = 5) : a(b) {}
33  Int(Invalid) : a(-1) {}
34
35  operator int() const { return a; }
36
37  bool valid() { return a != -1; }
38};
39
40typedef StdMap<Int,int> BaseMap2;
41typedef IterableBoolMap<BaseMap2> TestBoolMap2;
42
43
44int main() {
45
46  {
47    BaseMap base(344);
48    TestMap test(base);
49
50
51    print(test);
52
53    cout << "Inserting 12 to class 2...\n";
54    test.insert(12,2);
55    print(test);
56
57
58    cout << "Inserting 22 to class 2...\n";
59    test.insert(22,2);
60    print(test);
61
62    cout << "Testing some map values:\n";
63    cout << " 12: " << int(test[12]) << endl;
64
65    cout << "Inserting 10 to class 0...\n";
66    test.insert(10,0);
67    print(test);
68
69    cout << "Testing some map values:\n";
70    cout << " 12: " << int(test[12]) << endl;
71
72    cout << "Inserting 11 to class 1...\n";
73    test.insert(11,1);
74    print(test);
75
76    cout << "Testing some map values:\n";
77    cout << " 12: " << int(test[12]) << endl;
78    cout << " 22: " << int(test[22]) << endl;
79    cout << " 10: " << int(test[10]) << endl;
80    cout << " 11: " << int(test[11]) << endl;
81    cout << " 42: " << int(test[42]) << endl;
82
83    cout << "Inserting 21 to class 1...\n";
84    test.insert(21,1);
85    print(test);
86
87    cout << "Inserting 20 to class 1...\n";
88    test.insert(20,0);
89    print(test);
90
91    cout << "Testing some map values:\n";
92    cout << " 12: " << int(test[12]) << endl;
93    cout << " 22: " << int(test[22]) << endl;
94    cout << " 10: " << int(test[10]) << endl;
95    cout << " 20: " << int(test[20]) << endl;
96    cout << " 11: " << int(test[11]) << endl;
97    cout << " 21: " << int(test[21]) << endl;
98    cout << " 42: " << int(test[42]) << endl;
99
100    cout << "Setting 20 to class 2...\n";
101    test.set(20,2);
102    print(test);
103 
104    cout << "Setting 10 to class 1...\n";
105    test.set(10,1);
106    print(test);
107 
108    cout << "Setting 11 to class 1...\n";
109    test.set(11,1);
110    print(test);
111 
112    cout << "Setting 12 to class 1...\n";
113    test.set(12,1);
114    print(test);
115 
116    cout << "Setting 21 to class 2...\n";
117    test.set(21,2);
118    print(test);
119 
120    cout << "Setting 22 to class 2...\n";
121    test.set(22,2);
122    print(test);
123 
124    cout << "Testing some map values:\n";
125    cout << " 12: " << int(test[12]) << endl;
126    cout << " 22: " << int(test[22]) << endl;
127    cout << " 10: " << int(test[10]) << endl;
128    cout << " 20: " << int(test[20]) << endl;
129    cout << " 11: " << int(test[11]) << endl;
130    cout << " 21: " << int(test[21]) << endl;
131    cout << " 42: " << int(test[42]) << endl;
132  }
133
134  {
135    cout << "\n\n\nTesting the IterableBoolMap...\n";
136
137    BaseMap base(344);
138    TestBoolMap test(base,true);
139
140
141    print(test,2);
142
143    cout << "Inserting 12 to class true...\n";
144    test.insert(12,true);
145    print(test,2);
146
147
148    cout << "Inserting 22 to class true...\n";
149    test.insert(22,true);
150    print(test,2);
151
152    cout << "Testing some map values:\n";
153    cout << " 12: " << test[12] << endl;
154
155    cout << "Inserting 10 to class false...\n";
156    test.insert(10,false);
157    print(test,2);
158
159    cout << "Testing some map values:\n";
160    cout << " 12: " << test[12] << endl;
161
162    cout << "Inserting 11 to class false...\n";
163    test.insert(11,false);
164    print(test,2);
165
166    cout << "Testing some map values:\n";
167    cout << " 12: " << test[12] << endl;
168    cout << " 22: " << test[22] << endl;
169    cout << " 10: " << test[10] << endl;
170    cout << " 11: " << test[11] << endl;
171    cout << " 42: " << test[42] << endl;
172
173    cout << "Setting 10 to class true...\n";
174    test.set(10,true);
175    print(test,2);
176 
177    cout << "Setting 11 to class true...\n";
178    test.set(11,1);
179    print(test,2);
180 
181    cout << "Setting 12 to class false...\n";
182    test.set(12,false);
183    print(test,2);
184 
185    cout << "Setting 22 to class false...\n";
186    test.set(22,false);
187    print(test,2);
188 
189    cout << "Testing some map values:\n";
190    cout << " 12: " << test[12] << endl;
191    cout << " 22: " << test[22] << endl;
192    cout << " 10: " << test[10] << endl;
193    cout << " 11: " << test[11] << endl;
194    cout << " 42: " << test[42] << endl;
195
196  }
197
198  {
199    cout << "\n\n\nTest a masikfele iteralasra:\n";
200
201    BaseMap2 base(344);
202    TestBoolMap2 test(base,false);
203
204    cout << "Inserting 12 to class true...\n";
205    test.insert(12,true);
206    print(test,2);
207
208    cout << "Inserting 22 to class true...\n";
209    test.insert(22,true);
210    print(test,2);
211
212    cout << "Inserting 10 to class false...\n";
213    test.insert(10,false);
214    print(test,2);
215
216    cout << "Testing some map values:\n";
217    cout << " 12: " << test[12] << endl;
218    cout << " 22: " << test[22] << endl;
219    cout << " 10: " << test[10] << endl;
220    cout << " 42: " << test[42] << endl;
221
222    cout << "The elements of the \"true\" class: ";
223    Int a;
224    for(test.first(a, true); a.valid(); test.next(a)) {
225      cout << " " << a;
226    }
227    cout << endl;
228
229    cout << "Removing 10 from the map...\n";
230    test.remove(10);
231    print(test,2);
232  }
233}
Note: See TracBrowser for help on using the repository browser.