/****************************************************************************** * Copyright (c) 2006, 2010 VMware Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * and Apache License v2.0 which accompanies this distribution. * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html and the Apache License v2.0 * is available at http://www.opensource.org/licenses/apache2.0.php. * You may elect to redistribute this code under either of these licenses. * * Contributors: * VMware Inc. *****************************************************************************/ package org.eclipse.gemini.blueprint.util; import java.util.Dictionary; import java.util.Enumeration; import java.util.Map; import java.util.Properties; import junit.framework.TestCase; import org.eclipse.gemini.blueprint.util.internal.MapBasedDictionary; /** * Test for the Dictionary contract of {@link MapBasedDictionary}. * * @author Costin Leau * */ public class MapBasedDictionaryTest extends TestCase { private Dictionary dict; protected void setUp() throws Exception { dict = new MapBasedDictionary(); } protected void tearDown() throws Exception { dict = null; } public void testDictionaryWithNullMap() { dict = new MapBasedDictionary((Map) null); assertTrue(dict.isEmpty()); } public void testElements() { dict.put(new Object(), new Object()); Object value = new Object(); dict.put(new Object(), value); dict.put(new Object(), value); Enumeration enm = dict.elements(); assertNotNull(enm); enm.nextElement(); assertSame(value, enm.nextElement()); assertSame(value, enm.nextElement()); // no more elements assertFalse(enm.hasMoreElements()); } public void testKeys() { Object key = new Object(); Object value = new Object(); dict.put(key, new Object()); dict.put(key, value); Enumeration enm = dict.keys(); assertNotNull(enm); assertSame(key, enm.nextElement()); assertFalse(enm.hasMoreElements()); } public void testGetObject() { Object key = new Object(); Object value = new Object(); dict.put(key, new Object()); dict.put(key, value); assertNull(dict.get(new Object())); assertSame(value, dict.get(key)); assertSame(value, dict.get(key)); } public void testGetNullObject() { try { dict.get(null); fail("should have thrown NPE"); } catch (NullPointerException e) { // expected } } public void testRemoveObject() { assertNull(dict.remove(new Object())); Object key = new Object(); dict.put(key, key); assertSame(key, dict.remove(key)); assertNull(dict.remove(key)); } public void testRemoveNullObject() { try { dict.remove(null); fail("should have thrown NPE"); } catch (NullPointerException e) { // expected } } public void testPutObjectObject() { assertNull(dict.put(new Object(), new Object())); Object key = new Object(); Object value = new Object(); assertNull(dict.put(key, value)); assertSame(value, dict.put(key, value)); } public void testPutNullValue() { try { dict.put(new Object(), null); fail("should have thrown NPE"); } catch (NullPointerException e) { // expected } } public void testPutNullKey() { try { dict.put(null, new Object()); fail("should have thrown NPE"); } catch (NullPointerException e) { // expected } } public void testSize() { assertEquals(0, dict.size()); dict.put(new Object(), new Object()); Object key = new Object(); dict.put(key, key); assertEquals(2, dict.size()); dict.put(key, key); assertEquals(2, dict.size()); } public void testDictionaryWithDictionary() { Dictionary dict = new Properties(); dict.put("joe", "satriani"); Dictionary wrapper = new MapBasedDictionary(dict); assertEquals(wrapper, dict); } public void testPutAllDictionary() { Dictionary dict = new Properties(); dict.put("joe", "satriani"); MapBasedDictionary wrapper = new MapBasedDictionary(); wrapper.putAll(dict); assertEquals(wrapper, dict); } public void testValues() throws Exception { Dictionary dict = new Properties(); dict.put("joe", "satriani"); MapBasedDictionary wrapper = new MapBasedDictionary(); wrapper.putAll(dict); Enumeration enm1 = dict.elements(); Enumeration enm2 = wrapper.elements(); while (enm1.hasMoreElements()) { assertTrue(enm2.hasMoreElements()); assertEquals(enm1.nextElement(), enm2.nextElement()); } } public void testClear() throws Exception { Dictionary dict = new Properties(); dict.put("joe", "satriani"); MapBasedDictionary wrapper = new MapBasedDictionary(); wrapper.putAll(dict); assertEquals(1, wrapper.size()); wrapper.clear(); assertEquals(0, wrapper.size()); } public void testContainsKey() throws Exception { Dictionary dict = new Properties(); dict.put("joe", "satriani"); MapBasedDictionary wrapper = new MapBasedDictionary(); wrapper.putAll(dict); assertTrue(wrapper.containsKey("joe")); } public void testValue() throws Exception { Dictionary dict = new Properties(); dict.put("joe", "satriani"); MapBasedDictionary wrapper = new MapBasedDictionary(); wrapper.putAll(dict); assertTrue(wrapper.containsValue("satriani")); } public void testHashCode() throws Exception { MapBasedDictionary wrapper1 = new MapBasedDictionary(); MapBasedDictionary wrapper2 = new MapBasedDictionary(); assertEquals(wrapper1.hashCode(), wrapper2.hashCode()); wrapper1.put(new Object(), new Object()); assertFalse(wrapper1.hashCode() == wrapper2.hashCode()); } }