package com.celements.validation;
import static org.junit.Assert.*;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.junit.Before;
import org.junit.Test;
public class MapHandlerTest {
private MapHandler<String, Integer, String> mapHandler;
@Before
public void setUp_MapHandlerTest() throws Exception {
mapHandler = new MapHandler<String, Integer, String>();
}
@Test
public void testPut_Value() {
int key = 0;
Map<Integer, Set<String>> toMap = new HashMap<Integer, Set<String>>();
Set<String> set = new HashSet<String>();
set.add("old");
toMap.put(key, set);
mapHandler.put(key, "new1", toMap);
mapHandler.put(key, "new2", toMap);
assertEquals(1, toMap.size());
set = toMap.get(key);
assertNotNull(set);
assertEquals(3, set.size());
assertTrue(set.contains("old"));
assertTrue(set.contains("new1"));
assertTrue(set.contains("new2"));
}
@Test
public void testPut_Set() {
int key = 0;
Map<Integer, Set<String>> toMap = new HashMap<Integer, Set<String>>();
Set<String> set = new HashSet<String>();
set.add("old");
toMap.put(key, set);
Set<String> putSet = new HashSet<String>();
putSet.add("new1");
putSet.add("new2");
mapHandler.put(key, putSet, toMap);
assertEquals(1, toMap.size());
set = toMap.get(key);
assertNotNull(set);
assertEquals(3, set.size());
assertTrue(set.contains("old"));
assertTrue(set.contains("new1"));
assertTrue(set.contains("new2"));
}
@Test
public void testMergeMaps() {
int key = 0;
Map<Integer, Set<String>> toMap = new HashMap<Integer, Set<String>>();
Set<String> set = new HashSet<String>();
set.add("old");
toMap.put(key, set);
Map<Integer, Set<String>> mergeMap = new HashMap<Integer, Set<String>>();
set = new HashSet<String>();
set.add("new1");
mergeMap.put(key, set);
set = new HashSet<String>();
set.add("new2");
mergeMap.put(key + 1, set);
mergeMap.put(key + 2, new HashSet<String>());
mapHandler.mergeMaps(mergeMap, toMap);
assertEquals(2, toMap.size());
set = toMap.get(key);
assertNotNull(set);
assertEquals(2, set.size());
assertTrue(set.contains("old"));
assertTrue(set.contains("new1"));
set = toMap.get(key + 1);
assertNotNull(set);
assertEquals(1, set.size());
assertTrue(set.contains("new2"));
}
@Test
public void testPut_Value_2() {
String key1 = "asdf";
String key2 = "fdsa";
Map<String, Map<Integer, Set<String>>> toMap = new HashMap<String, Map<Integer, Set<String>>>();
Map<Integer, Set<String>> innerMap = new HashMap<Integer, Set<String>>();
Set<String> set = new HashSet<String>();
set.add("old");
innerMap.put(0, set);
toMap.put(key1, innerMap);
mapHandler.put(key1, 1, "new1", toMap);
mapHandler.put(key2, 0, "new2", toMap);
assertEquals(2, toMap.size());
innerMap = toMap.get(key1);
assertNotNull(innerMap);
assertEquals(2, innerMap.size());
set = innerMap.get(0);
assertEquals(1, set.size());
assertTrue(set.contains("old"));
set = innerMap.get(1);
assertEquals(1, set.size());
assertTrue(set.contains("new1"));
innerMap = toMap.get(key2);
assertNotNull(innerMap);
assertEquals(1, innerMap.size());
set = innerMap.get(0);
assertEquals(1, set.size());
assertTrue(set.contains("new2"));
}
@Test
public void testPut_Map() {
String key1 = "asdf";
String key2 = "fdsa";
Map<String, Map<Integer, Set<String>>> toMap = new HashMap<String, Map<Integer, Set<String>>>();
Map<Integer, Set<String>> innerMap = new HashMap<Integer, Set<String>>();
Set<String> set = new HashSet<String>();
set.add("old");
innerMap.put(0, set);
toMap.put(key1, innerMap);
Map<Integer, Set<String>> putMap1 = new HashMap<Integer, Set<String>>();
set = new HashSet<String>();
set.add("new1");
putMap1.put(1, set);
Map<Integer, Set<String>> putMap2 = new HashMap<Integer, Set<String>>();
set = new HashSet<String>();
set.add("new2");
putMap2.put(0, set);
mapHandler.put(key1, putMap1, toMap);
mapHandler.put(key2, putMap2, toMap);
assertEquals(2, toMap.size());
innerMap = toMap.get(key1);
assertNotNull(innerMap);
assertEquals(2, innerMap.size());
set = innerMap.get(0);
assertEquals(1, set.size());
assertTrue(set.contains("old"));
set = innerMap.get(1);
assertEquals(1, set.size());
assertTrue(set.contains("new1"));
innerMap = toMap.get(key2);
assertNotNull(innerMap);
assertEquals(1, innerMap.size());
set = innerMap.get(0);
assertEquals(1, set.size());
assertTrue(set.contains("new2"));
}
@Test
public void testMergeMultiMaps() {
String key1 = "asdf";
String key2 = "fdsa";
Map<String, Map<Integer, Set<String>>> toMap = new HashMap<String, Map<Integer, Set<String>>>();
Map<Integer, Set<String>> innerMap = new HashMap<Integer, Set<String>>();
Set<String> set = new HashSet<String>();
set.add("old");
innerMap.put(0, set);
toMap.put(key1, innerMap);
Map<String, Map<Integer, Set<String>>> mergeMap = new HashMap<String, Map<Integer, Set<String>>>();
innerMap = new HashMap<Integer, Set<String>>();
set = new HashSet<String>();
set.add("new1");
innerMap.put(1, set);
mergeMap.put(key1, innerMap);
innerMap = new HashMap<Integer, Set<String>>();
set = new HashSet<String>();
set.add("new2");
innerMap.put(0, set);
mergeMap.put(key2, innerMap);
mapHandler.mergeMultiMaps(mergeMap, toMap);
assertEquals(2, toMap.size());
innerMap = toMap.get(key1);
assertNotNull(innerMap);
assertEquals(2, innerMap.size());
set = innerMap.get(0);
assertEquals(1, set.size());
assertTrue(set.contains("old"));
set = innerMap.get(1);
assertEquals(1, set.size());
assertTrue(set.contains("new1"));
innerMap = toMap.get(key2);
assertNotNull(innerMap);
assertEquals(1, innerMap.size());
set = innerMap.get(0);
assertEquals(1, set.size());
assertTrue(set.contains("new2"));
}
}