View Javadoc

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 		// put
284 		map.put(key2, mMap2);
285 		map.printMap();
286 		// Check: exists old value
287 		List<String> list1 = map.get(key1, valkey1);
288 		assertTrue(list1.contains(val1));
289 		// Check: exists new value
290 		List<String> list2 = map.get(key2, valkey1);
291 		assertTrue(list2.contains(val3));
292 		// Check: other values removed
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 		// put list
320 		map.put(key2, valkey1, newList);
321 		map.printMap();
322 		// Check: exists old value
323 		List<String> list1 = map.get(key1, valkey1);
324 		assertTrue(list1.contains(val1));
325 		// Check: exists new value
326 		List<String> list2 = map.get(key2, valkey1);
327 		assertTrue(list2.contains(val3));
328 		// Check: other values removed
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 		// put entry
351 		map.put(key2, valkey1, val3);
352 		map.printMap();
353 		// Check: exists old value
354 		List<String> list1 = map.get(key1, valkey1);
355 		assertTrue(list1.contains(val1));
356 		// Check: exists new value
357 		List<String> list2 = map.get(key2, valkey1);
358 		assertTrue(list2.contains(val3));
359 		// Check: other values removed
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 		// Check: exists old value
386 		List<String> list = map.get(key1, valkey1);
387 		assertTrue(list.contains(val1));
388 		// Check: exists new value
389 		List<String> list2 = map.get(key2, valkey1);
390 		assertTrue(list2.contains(val1));
391 		// Check: exists new value
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 		// Check: exists duplicate value
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 		// add
421 		map.add(key2, valkey2, sList);
422 		map.printMap();
423 
424 		// Check: exists old value
425 		List<String> list = map.get(key1, valkey1);
426 		assertTrue(list.contains(val1));
427 		// Check: exists new value
428 		assertTrue(map.get(key2, valkey2).containsAll(sList));
429 		// Check: exists duplicate values
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 		// add
452 		map.add(key2, mMap);
453 		map.printMap();
454 
455 		// Check: exists old value
456 		List<String> list = map.get(key1, valkey1);
457 		assertTrue(list.contains(val1));
458 		// Check: exists new value
459 		List<String> list2 = map.get(key2, valkey2);
460 		assertTrue(list2.contains(val1));
461 		assertTrue(list2.contains(val3));
462 		// Check: exists duplicate values
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 		// exists key2
480 		assertFalse(map.containsKey(key2));
481 		// exists key2
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 		// Check: exists old value
501 		List<String> list = map.get(key2, valkey1);
502 		assertTrue(list.contains(val2));
503 		// Check: exists new value
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); // <- to remove
519 		map.add(key2, valkey2, val1); // <-
520 		map.add(key2, valkey2, val2);
521 
522 		// remove
523 		String removed = map.remove(key2, valkey2, val1);
524 		System.out.println("removed value:" + removed);
525 		// Check: exists old value
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 		// Check: only one value removed
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 		// TODO Collection c = map.values();
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 		// check duplicate value exists
572 		valList.remove(val1);
573 		assertTrue(valList.contains(val1));
574 
575 	}
576 
577 }