/* * File: DynamicArrayMapTest.java * Authors: Justin Basilico * Company: Sandia National Laboratories * Project: Cognitive Foundry * * Copyright June 2, 2006, Sandia Corporation. Under the terms of Contract * DE-AC04-94AL85000, there is a non-exclusive license for use of this work by * or on behalf of the U.S. Government. Export of this program may require a * license from the United States Government. See CopyrightHistory.txt for * complete details. * */ package gov.sandia.cognition.collection; import gov.sandia.cognition.annotation.CodeReview; import java.util.Collection; import java.util.Iterator; import java.util.Map; import java.util.Set; import junit.framework.TestCase; /** * This class implements JUnit tests for the following classes: * * DynamicArrayMap * * @author Justin Basilico * @since 1.0 */ @CodeReview( reviewer="Kevin R. Dixon", date="2006-07-19", changesNeeded=false, comments="Looks fine." ) public class DynamicArrayMapTest extends TestCase { public DynamicArrayMapTest( String testName) { super(testName); } /** * Constructors */ public void testConstructors() { System.out.println( "Constructors" ); DynamicArrayMap<Object> instance = new DynamicArrayMap<Object>(); Object o1 = new Object(); Object o2 = new Object(); instance.put(4, o1); instance.put(7, o2); DynamicArrayMap<Object> copy = new DynamicArrayMap<Object>( instance ); assertNotNull( copy ); assertNotSame( instance, copy ); assertEquals( instance.size(), copy.size() ); assertSame( instance.get(4), copy.get(4) ); assertSame( instance.get(7), copy.get(7) ); try { instance = new DynamicArrayMap<Object>(0); fail( "Initial capacity must be > 0" ); } catch (Exception e) { System.out.println( "Good: " + e ); } } /** * Test of clear method, of class gov.sandia.isrc.util.DynamicArrayMap. */ public void testClear() { System.out.println("clear"); DynamicArrayMap<Object> instance = new DynamicArrayMap<Object>(); Object o1 = new Object(); Object o2 = new Object(); instance.put(4, o1); instance.put(7, o2); assertEquals(2, instance.size()); instance.clear(); assertEquals(0, instance.size()); assertNull(instance.get(4)); assertNull(instance.get(7)); } /** * Test of clone method, of class gov.sandia.isrc.util.DynamicArrayMap. */ public void testClone() { DynamicArrayMap<Object> instance = new DynamicArrayMap<Object>(); Object o1 = new Object(); Object o2 = new Object(); instance.put(4, o1); instance.put(7, o2); DynamicArrayMap<Object> clone = instance.clone(); assertNotNull(clone); assertNotSame(instance, clone); assertEquals(2, clone.size()); assertSame(o1, clone.get(4)); assertSame(o2, clone.get(7)); instance.clear(); assertEquals(2, clone.size()); } /** * Test of containsKey method, of class gov.sandia.isrc.util.DynamicArrayMap. */ public void testContainsKey() { DynamicArrayMap<Object> instance = new DynamicArrayMap<Object>(); assertFalse(instance.containsKey(null)); assertFalse(instance.containsKey(4)); assertFalse(instance.containsKey(7)); Object o1 = new Object(); Object o2 = new Object(); instance.put(4, o1); instance.put(7, o2); assertTrue(instance.containsKey(4)); assertTrue(instance.containsKey(7)); instance.remove(4); instance.put(7, null); assertFalse(instance.containsKey(4)); assertFalse(instance.containsKey(7)); assertFalse( instance.containsKey(4.0) ); } /** * Test of containsValue method, of class gov.sandia.isrc.util.DynamicArrayMap. */ public void testContainsValue() { DynamicArrayMap<Object> instance = new DynamicArrayMap<Object>(); assertFalse(instance.containsValue(null)); Object o1 = new Object(); Object o2 = new Object(); assertFalse(instance.containsValue(o1)); assertFalse(instance.containsValue(o2)); instance.put(4, o1); instance.put(7, o2); assertTrue(instance.containsValue(o1)); assertTrue(instance.containsValue(o2)); instance.remove(4); instance.put(7, null); assertFalse(instance.containsValue(o1)); assertFalse(instance.containsValue(o2)); } /** * Test of entrySet method, of class gov.sandia.isrc.util.DynamicArrayMap. */ public void testEntrySet() { DynamicArrayMap<Object> instance = new DynamicArrayMap<Object>(); instance.put(47, "a"); instance.put(4, "b"); instance.put(7, "c"); Set<Map.Entry<Integer, Object>> keys = instance.entrySet(); assertEquals(3, keys.size()); Iterator<Map.Entry<Integer, Object>> it = keys.iterator(); Map.Entry<Integer, Object> entry = null; assertTrue(it.hasNext()); entry = it.next(); assertEquals(4, (int) entry.getKey()); assertEquals("b", entry.getValue()); assertTrue(it.hasNext()); entry = it.next(); assertEquals(7, (int) entry.getKey()); assertEquals("c", entry.getValue()); assertTrue(it.hasNext()); entry = it.next(); assertEquals(47, (int) entry.getKey()); assertEquals("a", entry.getValue()); assertFalse(it.hasNext()); } /** * Test of get method, of class gov.sandia.isrc.util.DynamicArrayMap. */ public void testGet() { DynamicArrayMap<String> instance = new DynamicArrayMap<String>(); assertNull(instance.get(4)); instance.put(4, "a"); assertEquals("a", instance.get(4)); assertEquals("a", instance.get( new Integer(4)) ); assertEquals( null, instance.get( new Double(4.0) ) ); instance.put(7, "b"); assertEquals("b", instance.get(7)); assertNull(instance.get(47)); instance.put(4, null); assertNull(instance.get(4)); boolean exceptionThrown = false; try { instance.get(null); } catch ( NullPointerException npe ) { exceptionThrown = true; } finally { assertTrue(exceptionThrown); } } /** * Test of isEmpty method, of class gov.sandia.isrc.util.DynamicArrayMap. */ public void testIsEmpty() { DynamicArrayMap<Object> instance = new DynamicArrayMap<Object>(); assertTrue(instance.isEmpty()); instance.put(3, null); assertTrue(instance.isEmpty()); instance.put(4, new Object()); assertFalse(instance.isEmpty()); instance.remove(4); assertTrue(instance.isEmpty()); instance.put(7, new Object()); assertFalse(instance.isEmpty()); instance.put(7, null); assertTrue(instance.isEmpty()); instance.put(47, new Object()); assertFalse(instance.isEmpty()); instance.clear(); assertTrue(instance.isEmpty()); } /** * Test of keySet method, of class gov.sandia.isrc.util.DynamicArrayMap. */ public void testKeySet() { DynamicArrayMap<Object> instance = new DynamicArrayMap<Object>(); instance.put(47, "a"); instance.put(4, "b"); instance.put(7, "c"); Set<Integer> keys = instance.keySet(); assertEquals(3, keys.size()); Iterator<Integer> it = keys.iterator(); assertTrue(it.hasNext()); assertEquals(4, (int) it.next()); assertTrue(it.hasNext()); assertEquals(7, (int) it.next()); assertTrue(it.hasNext()); assertEquals(47, (int) it.next()); assertFalse(it.hasNext()); } /** * Test of put method, of class gov.sandia.isrc.util.DynamicArrayMap. */ public void testPut() { DynamicArrayMap<Object> instance = new DynamicArrayMap<Object>(); instance.put(4, "a"); instance.put(7, "7"); assertEquals(2, instance.size()); assertEquals("a", instance.get(4)); assertEquals("7", instance.get(7)); instance.put(4, "b"); assertEquals(2, instance.size()); assertEquals("b", instance.get(4)); instance.put(4, null); assertEquals(1, instance.size()); assertNull(instance.get(4)); assertNull( instance.put( Integer.MAX_VALUE, null ) ); boolean exceptionThrown = false; try { instance.put(null, "bad"); } catch ( NullPointerException npe ) { exceptionThrown = true; } finally { assertTrue(exceptionThrown); } } /** * Test of remove method, of class gov.sandia.isrc.util.DynamicArrayMap. */ public void testRemove() { DynamicArrayMap<Object> instance = new DynamicArrayMap<Object>(); Object o1 = new Object(); Object o2 = new Object(); assertNull( instance.remove(4) ); assertNull( instance.remove(new Integer(4)) ); assertNull( instance.remove(new Double(4.0)) ); instance.put(4, o1); assertEquals(1, instance.size()); assertEquals(o1, instance.get(4)); assertTrue(instance.containsKey(4)); assertTrue(instance.containsValue(o1)); instance.remove(4); assertEquals(0, instance.size()); assertNull(instance.get(4)); assertFalse(instance.containsKey(4)); assertFalse(instance.containsValue(o1)); boolean exceptionThrown = false; try { instance.remove(null); } catch ( NullPointerException npe ) { exceptionThrown = true; } finally { assertTrue(exceptionThrown); } } /** * Test of size method, of class gov.sandia.isrc.util.DynamicArrayMap. */ public void testSize() { DynamicArrayMap<Object> instance = new DynamicArrayMap<Object>(); assertEquals(0, instance.size()); instance.put(4, null); assertEquals(0, instance.size()); instance.put(4, new Object()); assertEquals(1, instance.size()); instance.put(4, new Object()); assertEquals(1, instance.size()); instance.put(7, new Object()); assertEquals(2, instance.size()); instance.put(4, null); assertEquals(1, instance.size()); instance.put(47, new Object()); assertEquals(2, instance.size()); instance.remove(7); assertEquals(1, instance.size()); instance.clear(); assertEquals(0, instance.size()); } /** * Test of values method, of class gov.sandia.isrc.util.DynamicArrayMap. */ public void testValues() { DynamicArrayMap<Object> instance = new DynamicArrayMap<Object>(); instance.put(47, "47"); instance.put(4, "4"); instance.put(7, "7"); Collection<Object> values = instance.values(); assertEquals(3, values.size()); Iterator<Object> it = values.iterator(); assertTrue(it.hasNext()); assertEquals("4", it.next()); assertTrue(it.hasNext()); assertEquals("7", it.next()); assertTrue(it.hasNext()); assertEquals("47", it.next()); assertFalse(it.hasNext()); assertEquals( values, instance.values() ); assertNotSame( values, instance.values() ); instance.put( 10, "10" ); assertEquals( values, instance.values() ); assertEquals( 4, values.size() ); DynamicArrayMap<Object> d = new DynamicArrayMap<Object>( instance ); d.put( 15, "15" ); assertFalse( values.equals(d.values()) ); assertFalse( values.equals(null) ); assertFalse( values.equals(d) ); assertFalse( values.equals(instance) ); } }