/** * Copyright (c) 2009 - 2017 Red Hat, Inc. * * This software is licensed to you under the GNU General Public License, * version 2 (GPLv2). There is NO WARRANTY for this software, express or * implied, including the implied warranties of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 * along with this software; if not, see * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. * * Red Hat trademarks are not licensed under GPLv2. No permission is * granted to use or replicate Red Hat trademarks that are incorporated * in this software or its documentation. */ package org.candlepin.util; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; import java.util.Map; import java.util.HashMap; /** * Test suite for the MapView class */ public class MapViewTest { protected Map source; protected MapView testobj; @Before public void init() { this.source = new HashMap(); this.testobj = new MapView(this.source); } @Test public void testClear() { this.source.put("k1", "v1"); this.source.put("k2", "v2"); this.source.put("k3", "v3"); assertEquals(3, this.testobj.size()); this.testobj.clear(); assertEquals(0, this.testobj.size()); } @Test public void testContainsKey() { assertFalse(this.testobj.containsKey("k1")); assertFalse(this.testobj.containsKey("k2")); assertFalse(this.testobj.containsKey("k3")); assertFalse(this.testobj.containsKey("v1")); assertFalse(this.testobj.containsKey("v2")); assertFalse(this.testobj.containsKey("v3")); this.source.put("k1", "v1"); assertTrue(this.testobj.containsKey("k1")); assertFalse(this.testobj.containsKey("k2")); assertFalse(this.testobj.containsKey("k3")); assertFalse(this.testobj.containsKey("v1")); assertFalse(this.testobj.containsKey("v2")); assertFalse(this.testobj.containsKey("v3")); this.source.put("k2", "v2"); assertTrue(this.testobj.containsKey("k1")); assertTrue(this.testobj.containsKey("k2")); assertFalse(this.testobj.containsKey("k3")); assertFalse(this.testobj.containsKey("v1")); assertFalse(this.testobj.containsKey("v2")); assertFalse(this.testobj.containsKey("v3")); this.source.put("k3", "v3"); assertTrue(this.testobj.containsKey("k1")); assertTrue(this.testobj.containsKey("k2")); assertTrue(this.testobj.containsKey("k3")); assertFalse(this.testobj.containsKey("v1")); assertFalse(this.testobj.containsKey("v2")); assertFalse(this.testobj.containsKey("v3")); } @Test public void testContainsValue() { assertFalse(this.testobj.containsValue("k1")); assertFalse(this.testobj.containsValue("k2")); assertFalse(this.testobj.containsValue("k3")); assertFalse(this.testobj.containsValue("v1")); assertFalse(this.testobj.containsValue("v2")); assertFalse(this.testobj.containsValue("v3")); this.source.put("k1", "v1"); assertFalse(this.testobj.containsValue("k1")); assertFalse(this.testobj.containsValue("k2")); assertFalse(this.testobj.containsValue("k3")); assertTrue(this.testobj.containsValue("v1")); assertFalse(this.testobj.containsValue("v2")); assertFalse(this.testobj.containsValue("v3")); this.source.put("k2", "v2"); assertFalse(this.testobj.containsValue("k1")); assertFalse(this.testobj.containsValue("k2")); assertFalse(this.testobj.containsValue("k3")); assertTrue(this.testobj.containsValue("v1")); assertTrue(this.testobj.containsValue("v2")); assertFalse(this.testobj.containsValue("v3")); this.source.put("k3", "v3"); assertFalse(this.testobj.containsValue("k1")); assertFalse(this.testobj.containsValue("k2")); assertFalse(this.testobj.containsValue("k3")); assertTrue(this.testobj.containsValue("v1")); assertTrue(this.testobj.containsValue("v2")); assertTrue(this.testobj.containsValue("v3")); } @Test public void testEntrySet() { assertEquals(this.source.entrySet(), this.testobj.entrySet()); this.source.put("k1", "v1"); assertEquals(this.source.entrySet(), this.testobj.entrySet()); this.source.put("k2", "v2"); assertEquals(this.source.entrySet(), this.testobj.entrySet()); this.source.put("k3", "v3"); assertEquals(this.source.entrySet(), this.testobj.entrySet()); this.source.clear(); assertEquals(this.source.entrySet(), this.testobj.entrySet()); } @Test public void testEquals() { Map comp = new HashMap(); assertTrue(this.testobj.equals(comp)); for (int i = 0; i < 5; ++i) { this.source.put("k" + i, "v" + i); assertFalse(this.testobj.equals(comp)); comp.put("k" + i, "value"); assertFalse(this.testobj.equals(comp)); comp.put("k" + i, "v" + i); assertTrue(this.testobj.equals(comp)); } this.source.clear(); assertFalse(this.testobj.equals(comp)); comp.clear(); assertTrue(this.testobj.equals(comp)); } @Test public void testGet() { assertNull(this.testobj.get("k1")); assertNull(this.testobj.get("k2")); assertNull(this.testobj.get("k3")); this.source.put("k1", "v1"); assertEquals("v1", this.testobj.get("k1")); assertNull(this.testobj.get("k2")); assertNull(this.testobj.get("k3")); this.source.put("k2", "v2"); assertEquals("v1", this.testobj.get("k1")); assertEquals("v2", this.testobj.get("k2")); assertNull(this.testobj.get("k3")); this.source.put("k3", "v3"); assertEquals("v1", this.testobj.get("k1")); assertEquals("v2", this.testobj.get("k2")); assertEquals("v3", this.testobj.get("k3")); this.source.put("k2", "v2-b"); assertEquals("v1", this.testobj.get("k1")); assertEquals("v2-b", this.testobj.get("k2")); assertEquals("v3", this.testobj.get("k3")); } @Test public void testHashCode() { Map comp = new HashMap(); assertEquals(comp.hashCode(), this.testobj.hashCode()); for (int i = 0; i < 5; ++i) { this.source.put("k" + i, "v" + i); assertNotEquals(comp.hashCode(), this.testobj.hashCode()); comp.put("k" + i, "value"); assertNotEquals(comp.hashCode(), this.testobj.hashCode()); comp.put("k" + i, "v" + i); assertEquals(comp.hashCode(), this.testobj.hashCode()); } this.source.clear(); assertNotEquals(comp.hashCode(), this.testobj.hashCode()); comp.clear(); assertEquals(comp.hashCode(), this.testobj.hashCode()); } @Test public void testIsEmpty() { assertTrue(this.testobj.isEmpty()); this.source.put("k1", "v1"); assertFalse(this.testobj.isEmpty()); this.source.put("k2", "v2"); assertFalse(this.testobj.isEmpty()); this.source.put("k3", "v3"); assertFalse(this.testobj.isEmpty()); this.source.remove("k1"); assertFalse(this.testobj.isEmpty()); this.source.clear(); assertTrue(this.testobj.isEmpty()); } @Test public void testKeySet() { assertEquals(this.source.keySet(), this.testobj.keySet()); this.source.put("k1", "v1"); assertEquals(this.source.keySet(), this.testobj.keySet()); this.source.put("k2", "v2"); assertEquals(this.source.keySet(), this.testobj.keySet()); this.source.put("k3", "v3"); assertEquals(this.source.keySet(), this.testobj.keySet()); this.source.clear(); assertEquals(this.source.keySet(), this.testobj.keySet()); } @Test(expected = UnsupportedOperationException.class) public void testPut() { this.testobj.put("k1", "v1"); } @Test(expected = UnsupportedOperationException.class) public void testPutAll() { Map map = new HashMap(); map.put("k1", "v1"); map.put("k2", "v2"); map.put("k3", "v3"); this.testobj.putAll(map); } @Test public void testRemove() { assertNull(this.testobj.remove("k1")); assertNull(this.testobj.remove("k2")); assertNull(this.testobj.remove("k3")); this.source.put("k1", "v1"); assertEquals(1, this.testobj.size()); assertEquals("v1", this.testobj.remove("k1")); assertEquals(0, this.testobj.size()); assertNull(this.testobj.remove("k2")); assertEquals(0, this.testobj.size()); assertNull(this.testobj.remove("k3")); assertEquals(0, this.testobj.size()); this.source.put("k1", "v1"); this.source.put("k2", "v2"); assertEquals(2, this.testobj.size()); assertEquals("v1", this.testobj.remove("k1")); assertEquals(1, this.testobj.size()); assertEquals("v2", this.testobj.remove("k2")); assertEquals(0, this.testobj.size()); assertNull(this.testobj.remove("k3")); assertEquals(0, this.testobj.size()); this.source.put("k1", "v1"); this.source.put("k3", "v3"); assertEquals(2, this.testobj.size()); assertEquals("v1", this.testobj.remove("k1")); assertEquals(1, this.testobj.size()); assertNull(this.testobj.remove("k2")); assertEquals(1, this.testobj.size()); assertEquals("v3", this.testobj.remove("k3")); assertEquals(0, this.testobj.size()); this.source.put("k1", "v1"); this.source.put("k2", "v2"); this.source.put("k3", "v3"); assertEquals(3, this.testobj.size()); assertEquals("v1", this.testobj.remove("k1")); assertEquals(2, this.testobj.size()); assertEquals("v2", this.testobj.remove("k2")); assertEquals(1, this.testobj.size()); assertEquals("v3", this.testobj.remove("k3")); assertEquals(0, this.testobj.size()); } @Test public void testSize() { assertEquals(0, this.testobj.size()); this.source.put("k1", "v1"); assertEquals(1, this.testobj.size()); this.source.put("k2", "v2"); assertEquals(2, this.testobj.size()); this.source.put("k2", "v2-b"); assertEquals(2, this.testobj.size()); this.source.put("k3", "v3"); assertEquals(3, this.testobj.size()); this.source.remove("k1"); assertEquals(2, this.testobj.size()); this.source.clear(); assertEquals(0, this.testobj.size()); } @Test public void testValues() { assertEquals(this.source.values(), this.testobj.values()); this.source.put("k1", "v1"); assertEquals(this.source.values(), this.testobj.values()); this.source.put("k2", "v2"); assertEquals(this.source.values(), this.testobj.values()); this.source.put("k3", "v3"); assertEquals(this.source.values(), this.testobj.values()); this.source.clear(); assertEquals(this.source.values(), this.testobj.values()); } }