1 package org.xvsm.coordinators.label;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertFalse;
5 import static org.junit.Assert.assertTrue;
6
7 import java.util.ArrayList;
8 import java.util.Collections;
9 import java.util.List;
10 import java.util.Map;
11 import java.util.Set;
12
13 import org.junit.After;
14 import org.junit.Before;
15 import org.junit.BeforeClass;
16 import org.junit.Test;
17 import org.xvsm.coordinators.MultiMap;
18 import org.xvsm.coordinators.MultiMapList;
19
20 /***
21 * @version 1 created 06.05.2008
22 * @author robby
23 *
24 */
25 public class MultiMapListTest {
26
27 /***
28 * Multimap to test.
29 */
30 private MultiMapList<String, Integer, String> map;
31 /***
32 * Key testvalue.
33 */
34 private String key1 = "key1";
35 /***
36 * Key testvalue.
37 */
38 private String key2 = "key2";
39
40 /***
41 * Key testvalue.
42 */
43 private Integer valkey1 = 1;
44 /***
45 * Key testvalue.
46 */
47 private Integer valkey2 = 2;
48 /***
49 * Testvalue.
50 */
51 private String val1 = "val1";
52 /***
53 * Testvalue.
54 */
55 private String val2 = "val2";
56 /***
57 * Testvalue.
58 */
59 private String val3 = "val3";
60
61 /***
62 *
63 * @throws java.lang.Exception -
64 * if an other error occurs.
65 *
66 */
67 @BeforeClass
68 public static void setUpBeforeClass() throws Exception {
69 System.out.println("Start testing MultiMap");
70 System.out.println("______________________");
71 }
72
73 /***
74 *
75 * @throws java.lang.Exception -
76 * if an other error occurs.
77 *
78 */
79 @Before
80 public void setUp() throws Exception {
81 map = new MultiMapList<String, Integer, String>();
82
83 }
84
85 /***
86 *
87 * @throws java.lang.Exception -
88 * if an other error occurs.
89 *
90 */
91 @After
92 public void tearDown() throws Exception {
93 }
94
95 /***
96 * Test method for {@link xvsmjms.xvsmextend.MultiMapList#clear()}.
97 */
98 @Test
99 public void testClear() {
100 System.out.println("------------clear");
101 map.add(key1, valkey1, val2);
102 map.printMap();
103
104 map.clear();
105 map.printMap();
106 assertEquals(0, map.size());
107 }
108
109 /***
110 * Test method for
111 * {@link xvsmjms.xvsmextend.MultiMapList#containsKey(java.lang.Object)}.
112 */
113 @Test
114 public void testContainsKey() {
115 System.out.println("------------containsKey");
116 map.add(key1, valkey1, val2);
117 map.printMap();
118 assertTrue(map.containsKey(key1));
119 }
120
121 /***
122 * Test method for {@link xvsmjms.xvsmextend.MultiMapList#containsMapKey(
123 * java.lang.Object, java.lang.Object)}.
124 */
125 @Test
126 public void testContainsMapKey() {
127 System.out.println("------------containsMapKey");
128 map.add(key1, valkey2, val2);
129 map.printMap();
130 assertTrue(map.containsMapKey(key1, valkey2));
131 assertFalse(map.containsMapKey(key1, valkey1));
132 }
133
134 /***
135 * Test method for
136 * {@link xvsmjms.xvsmextend.MultiMapList#containsValue(java.lang.Object)}.
137 */
138 @Test
139 public void testContainsValue() {
140 System.out.println("------------containsValue");
141 map.add(key1, valkey2, val2);
142 map.printMap();
143 assertTrue(map.containsValue(val2));
144 assertFalse(map.containsValue(key1));
145 }
146
147 /***
148 * Test method for {@link xvsmjms.xvsmextend.MultiMapList#entrySet()}.
149 */
150 @Test
151 public void testEntrySet() {
152 System.out.println("------------entrySet");
153 map.add(key1, valkey1, val1);
154 map.add(key2, valkey1, val2);
155 map.add(key2, valkey2, val1);
156
157 map.printMap();
158
159 for (Map.Entry<String, MultiMap<Integer, String>> e : map.entrySet()) {
160 System.out.println(e.getKey() + ": " + e.getValue());
161 }
162 assertTrue(true);
163 }
164
165 /***
166 * Test method for
167 * {@link xvsmjms.xvsmextend.MultiMapList#equals(java.lang.Object)}.
168 */
169 @Test
170 public void testEqualsObject() {
171
172 System.out.println("------------equals(Object)");
173 map.add(key1, valkey1, val1);
174 map.add(key2, valkey1, val2);
175 map.add(key2, valkey1, val2);
176 map.add(key2, valkey1, val1);
177 map.add(key2, valkey2, val1);
178
179 map.printMap();
180
181 MultiMapList<String, Integer, String> map2 = new MultiMapList<String, Integer, String>();
182 map2.add(key1, valkey1, val1);
183 map2.add(key2, valkey1, val2);
184 map2.add(key2, valkey1, val2);
185 map2.add(key2, valkey1, val1);
186 map2.add(key2, valkey2, val1);
187
188 map2.printMap();
189 assertTrue(map.equals(map2));
190 map2.add(key2, valkey1, val1);
191 assertFalse(map.equals(map2));
192 map2.printMap();
193 }
194
195 /***
196 * Test method for {@link xvsmjms.xvsmextend.MultiMapList#get(
197 * java.lang.Object)}.
198 */
199 @Test
200 public void testGetK() {
201 System.out.println("------------get(K)");
202 map.add(key1, valkey1, val1);
203 map.add(key2, valkey1, val2);
204 map.add(key2, valkey2, val1);
205
206 map.printMap();
207 List<String> gList = map.get(key1, valkey1);
208 assertTrue(gList.contains(val1));
209 List<String> gList2 = map.get(key2, valkey1);
210 assertTrue(gList2.contains(val2));
211
212 assertEquals(map.get(val1, valkey1), null);
213 }
214
215 /***
216 * Test method for {@link xvsmjms.xvsmextend.MultiMapList#get(
217 * java.lang.Object, java.lang.Object)}.
218 */
219 @Test
220 public void testGetKV() {
221 System.out.println("------------get(K, V)");
222 map.add(key1, valkey1, val1);
223 map.add(key2, valkey1, val2);
224 map.add(key2, valkey2, val1);
225
226 map.printMap();
227 MultiMap mMap = map.get(key1);
228 assertTrue(mMap.get(valkey1).contains(val1));
229 MultiMap mMap2 = map.get(key2);
230 assertTrue(mMap2.get(valkey1).contains(val2));
231 assertTrue(mMap2.get(valkey2).contains(val1));
232
233 assertEquals(map.get(val1), null);
234 }
235
236 /***
237 * Test method for {@link xvsmjms.xvsmextend.MultiMapList#isEmpty()}.
238 */
239 @Test
240 public void testIsEmpty() {
241 System.out.println("------------isEmpty");
242 map.add(key1, valkey1, val1);
243 map.clear();
244 assertTrue(map.isEmpty());
245
246 }
247
248 /***
249 * Test method for {@link xvsmjms.xvsmextend.MultiMapList#keySet()}.
250 */
251 @Test
252 public void testKeySet() {
253 System.out.println("------------get(K, V)");
254 map.add(key1, valkey1, val1);
255 map.add(key2, valkey1, val2);
256 map.add(key2, valkey2, val1);
257
258 Set<String> set = map.keySet();
259 assertTrue(set.contains(key1));
260 assertTrue(set.contains(key2));
261 }
262
263 /***
264 * Test method for {@link xvsmjms.xvsmextend.MultiMapList#put(
265 * java.lang.Object, xvsmjms.xvsmextend.MultiMap)}.
266 */
267 @Test
268 public void testPutKeyMultiMap() {
269
270 System.out.println("------------put(Key, MultiMap)");
271 map.add(key1, valkey1, val1);
272 map.add(key2, valkey1, val2);
273 map.add(key2, valkey1, val2);
274 map.add(key2, valkey1, val1);
275 map.add(key2, valkey2, val1);
276
277 map.printMap();
278
279 MultiMap<Integer, String> mMap2 = new MultiMap<Integer, String>();
280 mMap2.add(valkey1, val3);
281 mMap2.printMap();
282
283
284 map.put(key2, mMap2);
285 map.printMap();
286
287 List<String> list1 = map.get(key1, valkey1);
288 assertTrue(list1.contains(val1));
289
290 List<String> list2 = map.get(key2, valkey1);
291 assertTrue(list2.contains(val3));
292
293 assertEquals(map.get(key2, valkey2), null);
294 List<String> list = map.get(key2, valkey1);
295 assertFalse(list.contains(val1));
296
297 }
298
299 /***
300 * Test method for {@link xvsmjms.xvsmextend.MultiMapList#put(
301 * java.lang.Object, xvsmjms.xvsmextend.MultiMap)}.
302 */
303 @Test
304 public void testPutKeyValueListOfVal() {
305
306 System.out.println("------------put(Key, Value, List(Value) )");
307 map.add(key1, valkey1, val1);
308 map.add(key2, valkey1, val2);
309 map.add(key2, valkey1, val2);
310 map.add(key2, valkey1, val1);
311 map.add(key2, valkey2, val1);
312
313 map.printMap();
314
315 List<String> newList = Collections
316 .synchronizedList(new ArrayList<String>());
317 newList.add(val3);
318
319
320 map.put(key2, valkey1, newList);
321 map.printMap();
322
323 List<String> list1 = map.get(key1, valkey1);
324 assertTrue(list1.contains(val1));
325
326 List<String> list2 = map.get(key2, valkey1);
327 assertTrue(list2.contains(val3));
328
329 assertEquals(map.get(key2, valkey2), null);
330 List<String> list = map.get(key2, valkey1);
331 assertFalse(list.contains(val1));
332 }
333
334 /***
335 * Test method for {@link xvsmjms.xvsmextend.MultiMapList#put(
336 * java.lang.Object, xvsmjms.xvsmextend.MultiMap)}.
337 */
338 @Test
339 public void testPutKeyValueEntry() {
340
341 System.out.println("------------put(Key, Value, entry)");
342 map.add(key1, valkey1, val1);
343 map.add(key2, valkey1, val2);
344 map.add(key2, valkey1, val2);
345 map.add(key2, valkey1, val1);
346 map.add(key2, valkey2, val1);
347
348 map.printMap();
349
350
351 map.put(key2, valkey1, val3);
352 map.printMap();
353
354 List<String> list1 = map.get(key1, valkey1);
355 assertTrue(list1.contains(val1));
356
357 List<String> list2 = map.get(key2, valkey1);
358 assertTrue(list2.contains(val3));
359
360 assertEquals(map.get(key2, valkey2), null);
361 List<String> list = map.get(key2, valkey1);
362 assertFalse(list.contains(val1));
363 }
364
365 /***
366 * Test method for {@link xvsmjms.xvsmextend.MultiMapList#add(
367 * java.lang.Object, java.lang.Object, java.lang.Object)}.
368 */
369 @Test
370 public void testAddKVL() {
371 System.out.println("------------add(key, keyvalue, listvalue)");
372 map.add(key1, valkey1, val1);
373 map.add(key2, valkey1, val1);
374 map.add(key2, valkey1, val1);
375 map.add(key2, valkey2, val2);
376 map.add(key2, valkey2, val1);
377 map.add(key2, valkey2, val1);
378 map.printMap();
379
380 assertTrue(map.containsKey(key1));
381 assertTrue(map.containsKey(key2));
382 assertTrue(map.containsMapKey(key1, valkey1));
383 assertTrue(map.containsValue(val1));
384
385
386 List<String> list = map.get(key1, valkey1);
387 assertTrue(list.contains(val1));
388
389 List<String> list2 = map.get(key2, valkey1);
390 assertTrue(list2.contains(val1));
391
392 List<String> list3 = map.get(key2, valkey2);
393 assertTrue(list3.contains(val1));
394 assertTrue(list3.contains(val2));
395 System.out.println("list3: " + list3);
396 final int size = 3;
397 assertEquals(size, list3.size());
398
399
400 list3.remove(val1);
401 assertTrue(list3.contains(val1));
402 }
403
404 /***
405 * Test method for {@link xvsmjms.xvsmextend.MultiMapList#add(
406 * java.lang.Object, xvsmjms.xvsmextend.MultiMap)}.
407 */
408 @Test
409 public void testAddKeyValueListOfValues() {
410 System.out.println("------------add(key, keyValue, ListOfValues)");
411 map.add(key1, valkey1, val1);
412 map.add(key2, valkey2, val2);
413 map.add(key2, valkey2, val1);
414 map.add(key2, valkey1, val1);
415 map.printMap();
416 List<String> sList = new ArrayList();
417 sList.add("value neu");
418 sList.add("val2");
419 sList.add("val1");
420
421 map.add(key2, valkey2, sList);
422 map.printMap();
423
424
425 List<String> list = map.get(key1, valkey1);
426 assertTrue(list.contains(val1));
427
428 assertTrue(map.get(key2, valkey2).containsAll(sList));
429
430 List<String> list3 = map.get(key2, valkey2);
431 list3.remove(val1);
432 assertTrue(list3.contains(val1));
433 }
434
435 /***
436 * Test method for {@link xvsmjms.xvsmextend.MultiMapList#add(
437 * java.lang.Object, xvsmjms.xvsmextend.MultiMap)}.
438 */
439 @Test
440 public void testAddKeyMultiMapVL() {
441 System.out.println("------------add(key, MultiMap)");
442 map.add(key1, valkey1, val1);
443 map.add(key2, valkey2, val2);
444 map.add(key2, valkey2, val1);
445 map.add(key2, valkey1, val1);
446 map.printMap();
447 MultiMap<Integer, String> mMap = new MultiMap<Integer, String>();
448 mMap.add(valkey2, "value neu");
449 mMap.add(valkey2, val3);
450 mMap.add(valkey2, val1);
451
452 map.add(key2, mMap);
453 map.printMap();
454
455
456 List<String> list = map.get(key1, valkey1);
457 assertTrue(list.contains(val1));
458
459 List<String> list2 = map.get(key2, valkey2);
460 assertTrue(list2.contains(val1));
461 assertTrue(list2.contains(val3));
462
463 list2.remove(val1);
464 assertTrue(list2.contains(val1));
465 }
466
467 /***
468 * Test method for {@link xvsmjms.xvsmextend.MultiMapList#removeAll(
469 * java.lang.Object)}.
470 */
471 @Test
472 public void testRemoveAll() {
473 System.out.println("------------removeAll()");
474 map.add(key1, valkey1, val1);
475 map.add(key2, valkey2, val2);
476 map.add(key2, valkey2, val1);
477 map.removeAll(key2);
478
479
480 assertFalse(map.containsKey(key2));
481
482 assertTrue(map.containsKey(key1));
483
484 }
485
486 /***
487 * Test method for {@link xvsmjms.xvsmextend.MultiMapList#removeList(
488 * java.lang.Object, java.lang.Object)}.
489 */
490 @Test
491 public void testRemoveList() {
492 System.out.println("------------removeList(key, valkey)");
493 map.add(key1, valkey1, val1);
494 map.add(key2, valkey1, val2);
495 map.add(key2, valkey2, val1);
496 map.add(key2, valkey2, val3);
497
498 map.removeList(key2, valkey2);
499
500
501 List<String> list = map.get(key2, valkey1);
502 assertTrue(list.contains(val2));
503
504 List<String> list2 = map.get(key2, valkey2);
505 assertEquals(list2, null);
506
507 }
508
509 /***
510 * Test method for {@link xvsmjms.xvsmextend.MultiMapList#remove(
511 * java.lang.Object, java.lang.Object, java.lang.Object)}.
512 */
513 @Test
514 public void testRemove() {
515 System.out.println("------------remove(key, valkey, listValue)");
516 map.add(key1, valkey1, val1);
517 map.add(key2, valkey1, val2);
518 map.add(key2, valkey2, val1);
519 map.add(key2, valkey2, val1);
520 map.add(key2, valkey2, val2);
521
522
523 String removed = map.remove(key2, valkey2, val1);
524 System.out.println("removed value:" + removed);
525
526 List<String> list = map.get(key2, valkey1);
527 assertTrue(list.contains(val2));
528 List<String> list2 = map.get(key2, valkey2);
529 assertEquals(list2.size(), 2);
530 assertTrue(list2.contains(val1));
531 assertTrue(list2.contains(val2));
532 System.out.println("list2: " + list2);
533
534 assertTrue(list2.contains(val1));
535 }
536
537 /***
538 * Test method for {@link xvsmjms.xvsmextend.MultiMapList#size()}.
539 */
540 @Test
541 public void testSize() {
542 System.out.println("------------size()");
543 map.add(key1, valkey1, val1);
544 assertEquals(1, map.size());
545
546 }
547
548 /***
549 * Test method for {@link xvsmjms.xvsmextend.MultiMapList#values()}.
550 */
551 @Test
552 public void testValues() {
553 System.out.println("------------values() TODO");
554
555 }
556
557 /***
558 * Test method for {@link xvsmjms.xvsmextend.MultiMapList#valueList()}.
559 */
560 @Test
561 public void testValueList() {
562 System.out.println("------------valueList(key, MultiMap)");
563 map.add(key1, valkey1, val1);
564 map.add(key2, valkey2, val2);
565 map.add(key2, valkey2, val1);
566 map.printMap();
567
568 List<String> valList = map.valueList();
569 assertTrue(valList.contains(val1));
570 assertTrue(valList.contains(val2));
571
572 valList.remove(val1);
573 assertTrue(valList.contains(val1));
574
575 }
576
577 }