@Test public void testGetCopyReturnsMutableMap() { final DefaultThreadContextMap map = new DefaultThreadContextMap(true); assertTrue(map.isEmpty()); final Map<String, String> copy = map.getCopy(); assertTrue(copy.isEmpty()); copy.put("key", "value"); // mutable assertEquals("value", copy.get("key")); // thread context map not affected assertTrue(map.isEmpty()); }
@Test public void testGetImmutableMapCopyNotAffectdByContextMapChanges() { final DefaultThreadContextMap map = new DefaultThreadContextMap(true); map.put("key1", "value1"); assertFalse(map.isEmpty()); final Map<String, String> immutable = map.getImmutableMapOrNull(); assertEquals("value1", immutable.get("key1")); // copy has values too // clearing context map does not affect copy map.clear(); assertTrue(map.isEmpty()); assertFalse(immutable.isEmpty()); }
@Test(expected = UnsupportedOperationException.class) public void testGetImmutableMapReturnsImmutableMapIfNonEmpty() { final DefaultThreadContextMap map = new DefaultThreadContextMap(true); map.put("key1", "value1"); assertFalse(map.isEmpty()); final Map<String, String> immutable = map.getImmutableMapOrNull(); assertEquals("value1", immutable.get("key1")); // copy has values too // immutable immutable.put("key", "value"); // error }
@Test public void testGetCopyReturnsMutableCopy() { final DefaultThreadContextMap map = new DefaultThreadContextMap(true); map.put("key1", "value1"); assertFalse(map.isEmpty()); final Map<String, String> copy = map.getCopy(); assertEquals("value1", copy.get("key1")); // copy has values too copy.put("key", "value"); // copy is mutable assertEquals("value", copy.get("key")); // thread context map not affected assertFalse(map.containsKey("key")); // clearing context map does not affect copy map.clear(); assertTrue(map.isEmpty()); assertFalse(copy.isEmpty()); }
@Test public void testPutAll() { final DefaultThreadContextMap map = new DefaultThreadContextMap(true); assertTrue(map.isEmpty()); assertFalse(map.containsKey("key")); final int mapSize = 10; final Map<String, String> newMap = new HashMap<>(mapSize); for (int i = 1; i <= mapSize; i++) { newMap.put("key" + i, "value" + i); } map.putAll(newMap); assertFalse(map.isEmpty()); for (int i = 1; i <= mapSize; i++) { assertTrue(map.containsKey("key" + i)); assertEquals("value" + i, map.get("key" + i)); } }
@Test public void testGetImmutableMapReturnsNullIfEmpty() { final DefaultThreadContextMap map = new DefaultThreadContextMap(true); assertTrue(map.isEmpty()); assertNull(map.getImmutableMapOrNull()); }
@Test public void testDoesNothingIfConstructedWithUseMapIsFalse() { final DefaultThreadContextMap map = new DefaultThreadContextMap(false); assertTrue(map.isEmpty()); assertFalse(map.containsKey("key")); map.put("key", "value"); assertTrue(map.isEmpty()); assertFalse(map.containsKey("key")); assertNull(map.get("key")); }
@Test public void testClear() { final DefaultThreadContextMap map = createMap(); map.clear(); assertTrue(map.isEmpty()); assertFalse(map.containsKey("key")); assertFalse(map.containsKey("key2")); }
/** * @return */ private DefaultThreadContextMap createMap() { final DefaultThreadContextMap map = new DefaultThreadContextMap(true); assertTrue(map.isEmpty()); map.put("key", "value"); map.put("key2", "value2"); assertEquals("value", map.get("key")); assertEquals("value2", map.get("key2")); return map; }