/* * File: DefaultIndexerTest.java * Authors: Justin Basilico * Project: Cognitive Foundry * * Copyright 2011 Cognitive Foundry. All rights reserved. */ package gov.sandia.cognition.collection; import java.util.Arrays; import java.util.List; import org.junit.Test; import static org.junit.Assert.*; /** * Unit tests for class {@link DefaultIndexer}. * * @author Justin Basilico * @since 3.3.3 */ public class DefaultIndexerTest extends Object { /** * Creates a new test. */ public DefaultIndexerTest() { super(); } @Test public void testConstructors() { DefaultIndexer<String> instance = new DefaultIndexer<String>(); assertTrue(instance.isEmpty()); assertTrue(instance.valueSet().isEmpty()); assertTrue(instance.valueList().isEmpty()); assertTrue(instance.asMap().isEmpty()); instance = new DefaultIndexer<String>(123); assertTrue(instance.isEmpty()); assertTrue(instance.valueSet().isEmpty()); assertTrue(instance.valueList().isEmpty()); assertTrue(instance.asMap().isEmpty()); List<String> values = Arrays.asList( "a", "c", new String("a"), null, "b"); instance = new DefaultIndexer<String>(values); assertEquals(4, instance.size()); assertEquals(4, instance.valueSet().size()); assertEquals(4, instance.valueList().size()); assertEquals(4, instance.asMap().size()); assertTrue(instance.valueSet().containsAll(values)); assertTrue(instance.valueList().containsAll(values)); assertTrue(instance.asMap().keySet().containsAll(values)); assertEquals(0, (int) instance.getIndex("a")); assertEquals(3, (int) instance.getIndex("b")); assertEquals(1, (int) instance.getIndex("c")); assertEquals(2, (int) instance.getIndex(null)); } /** * Test of clone method, of class DefaultIndexer. */ @Test public void testClone() { DefaultIndexer<String> instance = new DefaultIndexer<String>(); DefaultIndexer<String> clone = instance.clone(); assertNotSame(instance, clone); assertNotSame(clone, instance.clone()); instance.add("a"); assertEquals(0, (int) instance.getIndex("a")); assertNull(clone.getIndex("a")); assertTrue(clone.isEmpty()); assertTrue(clone.valueSet().isEmpty()); assertTrue(clone.valueList().isEmpty()); instance.add("b"); clone = instance.clone(); assertEquals(2, clone.size()); assertEquals(instance.valueList(), clone.valueList()); assertEquals(instance.asMap(), clone.asMap()); assertEquals(0, (int) clone.getIndex("a")); assertEquals(1, (int) clone.getIndex("b")); } /** * Test of add method, of class DefaultIndexer. */ @Test public void testAdd() { DefaultIndexer<String> instance = new DefaultIndexer<String>(); assertTrue(instance.isEmpty()); assertEquals(0, (int) instance.add("a")); assertEquals(1, (int) instance.add("b")); assertEquals(2, (int) instance.add("another")); assertEquals(1, (int) instance.add(new String("b"))); assertEquals(3, (int) instance.add(null)); assertEquals(3, (int) instance.add(null)); assertEquals(0, (int) instance.add("a")); assertEquals(4, (int) instance.add("something else")); } /** * Test of addAll method, of class DefaultIndexer. */ @Test public void testAddAll() { DefaultIndexer<String> instance = new DefaultIndexer<String>(); assertTrue(instance.isEmpty()); instance.add("something"); List<String> values = Arrays.asList( "a", "c", new String("a"), null, "b"); instance.addAll(values); assertEquals(5, instance.size()); assertEquals(0, (int) instance.getIndex("something")); assertEquals(1, (int) instance.getIndex("a")); assertEquals(4, (int) instance.getIndex("b")); assertEquals(2, (int) instance.getIndex("c")); assertEquals(3, (int) instance.getIndex(null)); instance.addAll(values); assertEquals(0, (int) instance.getIndex("something")); assertEquals(1, (int) instance.getIndex("a")); assertEquals(4, (int) instance.getIndex("b")); assertEquals(2, (int) instance.getIndex("c")); assertEquals(3, (int) instance.getIndex(null)); } /** * Test of getIndex method, of class DefaultIndexer. */ @Test public void testGetIndex() { DefaultIndexer<String> instance = new DefaultIndexer<String>(); assertNull(instance.getIndex("a")); assertNull(instance.getIndex("b")); assertNull(instance.getIndex("another")); assertNull(instance.getIndex(null)); instance.add("a"); assertEquals(0, (int) instance.getIndex("a")); assertNull(instance.getIndex("b")); assertNull(instance.getIndex("another")); assertNull(instance.getIndex(null)); instance.add("b"); assertEquals(0, (int) instance.getIndex("a")); assertEquals(1, (int) instance.getIndex("b")); assertNull(instance.getIndex("another")); assertNull(instance.getIndex(null)); instance.add("another"); assertEquals(0, (int) instance.getIndex("a")); assertEquals(1, (int) instance.getIndex("b")); assertEquals(2, (int) instance.getIndex("another")); assertNull(instance.getIndex(null)); instance.add(null); assertEquals(0, (int) instance.getIndex("a")); assertEquals(1, (int) instance.getIndex("b")); assertEquals(2, (int) instance.getIndex("another")); assertEquals(3, (int) instance.getIndex(null)); instance.add("another"); assertEquals(0, (int) instance.getIndex("a")); assertEquals(1, (int) instance.getIndex("b")); assertEquals(2, (int) instance.getIndex("another")); assertEquals(3, (int) instance.getIndex(null)); assertEquals(0, (int) instance.getIndex(new String("a"))); assertEquals(1, (int) instance.getIndex(new String("b"))); assertEquals(2, (int) instance.getIndex(new String("another"))); assertNull(instance.getIndex("something else")); } /** * Test of getValue method, of class DefaultIndexer. */ @Test public void testGetValue() { DefaultIndexer<String> instance = new DefaultIndexer<String>(); instance.add("a"); assertSame("a", instance.getValue(0)); instance.add("b"); assertSame("a", instance.getValue(0)); assertSame("b", instance.getValue(1)); instance.add("another"); assertSame("a", instance.getValue(0)); assertSame("b", instance.getValue(1)); assertSame("another", instance.getValue(2)); instance.add(new String("b")); assertSame("a", instance.getValue(0)); assertSame("b", instance.getValue(1)); assertSame("another", instance.getValue(2)); instance.add(null); assertSame("a", instance.getValue(0)); assertSame("b", instance.getValue(1)); assertSame("another", instance.getValue(2)); assertSame(null, instance.getValue(3)); instance.add(null); assertSame("a", instance.getValue(0)); assertSame("b", instance.getValue(1)); assertSame("another", instance.getValue(2)); assertSame(null, instance.getValue(3)); instance.add("something else"); assertSame("a", instance.getValue(0)); assertSame("b", instance.getValue(1)); assertSame("another", instance.getValue(2)); assertSame(null, instance.getValue(3)); assertSame("something else", instance.getValue(4)); Integer[] badValues = { -1, -2, 5, instance.size(), instance.size() + 1, null }; for (Integer badIndex : badValues) { boolean exceptionThrown = false; try { instance.getValue(badIndex); } catch (Exception e) { exceptionThrown = true; } finally { assertTrue(exceptionThrown); } } } /** * Test of hasValue method, of class DefaultIndexer. */ @Test public void testHasValue() { DefaultIndexer<String> instance = new DefaultIndexer<String>(); assertFalse(instance.hasValue("a")); assertFalse(instance.hasValue("b")); assertFalse(instance.hasValue("another")); assertFalse(instance.hasValue(null)); instance.add("a"); assertTrue(instance.hasValue("a")); assertFalse(instance.hasValue("b")); assertFalse(instance.hasValue("another")); assertFalse(instance.hasValue(null)); instance.add("b"); assertTrue(instance.hasValue("a")); assertTrue(instance.hasValue("b")); assertFalse(instance.hasValue("another")); assertFalse(instance.hasValue(null)); instance.add("another"); assertTrue(instance.hasValue("a")); assertTrue(instance.hasValue("b")); assertTrue(instance.hasValue("another")); assertFalse(instance.hasValue(null)); instance.add(null); assertTrue(instance.hasValue("a")); assertTrue(instance.hasValue("b")); assertTrue(instance.hasValue("another")); assertTrue(instance.hasValue(null)); instance.add("another"); assertTrue(instance.hasValue("a")); assertTrue(instance.hasValue("b")); assertTrue(instance.hasValue("another")); assertTrue(instance.hasValue(null)); assertTrue(instance.hasValue(new String("a"))); assertTrue(instance.hasValue(new String("b"))); assertTrue(instance.hasValue(new String("another"))); assertFalse(instance.hasValue("something else")); } /** * Test of hasIndex method, of class DefaultIndexer. */ @Test public void testHasIndex() { DefaultIndexer<String> instance = new DefaultIndexer<String>(); assertFalse(instance.hasIndex(0)); assertFalse(instance.hasIndex(1)); assertFalse(instance.hasIndex(2)); assertFalse(instance.hasIndex(3)); assertFalse(instance.hasIndex(4)); assertFalse(instance.hasIndex(-1)); assertFalse(instance.hasIndex(-2)); assertFalse(instance.hasIndex(null)); instance.add("a"); assertTrue(instance.hasIndex(0)); assertFalse(instance.hasIndex(1)); assertFalse(instance.hasIndex(2)); assertFalse(instance.hasIndex(3)); assertFalse(instance.hasIndex(4)); assertFalse(instance.hasIndex(-1)); assertFalse(instance.hasIndex(-2)); assertFalse(instance.hasIndex(null)); instance.add("b"); assertTrue(instance.hasIndex(0)); assertTrue(instance.hasIndex(1)); assertFalse(instance.hasIndex(2)); assertFalse(instance.hasIndex(3)); assertFalse(instance.hasIndex(4)); assertFalse(instance.hasIndex(-1)); assertFalse(instance.hasIndex(-2)); assertFalse(instance.hasIndex(null)); instance.add("another"); assertTrue(instance.hasIndex(0)); assertTrue(instance.hasIndex(1)); assertTrue(instance.hasIndex(2)); assertFalse(instance.hasIndex(3)); assertFalse(instance.hasIndex(4)); assertFalse(instance.hasIndex(-1)); assertFalse(instance.hasIndex(-2)); assertFalse(instance.hasIndex(null)); instance.add(null); assertTrue(instance.hasIndex(0)); assertTrue(instance.hasIndex(1)); assertTrue(instance.hasIndex(2)); assertTrue(instance.hasIndex(3)); assertFalse(instance.hasIndex(4)); assertFalse(instance.hasIndex(-1)); assertFalse(instance.hasIndex(-2)); assertFalse(instance.hasIndex(null)); instance.add("another"); assertTrue(instance.hasIndex(0)); assertTrue(instance.hasIndex(1)); assertTrue(instance.hasIndex(2)); assertTrue(instance.hasIndex(3)); assertFalse(instance.hasIndex(4)); assertFalse(instance.hasIndex(-1)); assertFalse(instance.hasIndex(-2)); assertFalse(instance.hasIndex(null)); } /** * Test of size method, of class DefaultIndexer. */ @Test public void testSize() { DefaultIndexer<String> instance = new DefaultIndexer<String>(); assertEquals(0, instance.size()); instance.add("a"); assertEquals(1, instance.size()); instance.add("b"); assertEquals(2, instance.size()); instance.add("another"); assertEquals(3, instance.size()); instance.add(new String("b")); assertEquals(3, instance.size()); instance.add(null); assertEquals(4, instance.size()); instance.add(null); assertEquals(4, instance.size()); instance.add("something else"); assertEquals(5, instance.size()); } /** * Test of valueSet method, of class DefaultIndexer. */ @Test public void testValueSet() { DefaultIndexer<String> instance = new DefaultIndexer<String>(); assertTrue(instance.valueSet().isEmpty()); instance.add("something"); assertEquals(1, instance.valueSet().size()); assertTrue(instance.valueSet().contains("something")); List<String> values = Arrays.asList( "a", "c", new String("a"), null, "b"); instance.addAll(values); assertEquals(5, instance.valueSet().size()); assertTrue(instance.valueSet().contains("something")); assertTrue(instance.valueSet().containsAll(values)); } /** * Test of valueList method, of class DefaultIndexer. */ @Test public void testValueList() { DefaultIndexer<String> instance = new DefaultIndexer<String>(); assertTrue(instance.valueList().isEmpty()); instance.add("something"); assertEquals(1, instance.valueSet().size()); assertTrue(instance.valueList().contains("something")); List<String> values = Arrays.asList( "a", "c", new String("a"), null, "b"); instance.addAll(values); assertEquals(5, instance.valueList().size()); assertTrue(instance.valueList().contains("something")); assertTrue(instance.valueList().containsAll(values)); } /** * Test of asMap method, of class DefaultIndexer. */ @Test public void testAsMap() { DefaultIndexer<String> instance = new DefaultIndexer<String>(); assertTrue(instance.asMap().isEmpty()); instance.add("something"); assertEquals(1, instance.asMap().size()); assertTrue(instance.asMap().containsKey("something")); assertEquals(0, (int) instance.asMap().get("something")); List<String> values = Arrays.asList( "a", "c", new String("a"), null, "b"); instance.addAll(values); assertEquals(5, instance.asMap().size()); assertTrue(instance.asMap().containsKey("something")); assertTrue(instance.asMap().keySet().containsAll(values)); assertEquals(0, (int) instance.asMap().get("something")); assertEquals(1, (int) instance.asMap().get("a")); assertEquals(2, (int) instance.asMap().get("c")); assertEquals(3, (int) instance.asMap().get(null)); assertEquals(4, (int) instance.asMap().get("b")); } /** * Test of the clear method */ @Test public void testClear() { DefaultIndexer<String> instance = new DefaultIndexer<>(5); instance.add("bob"); instance.add("frank"); assertEquals(2, instance.size()); assertTrue(instance.hasValue("bob")); assertTrue(instance.hasValue("frank")); instance.clear(); assertEquals(0, instance.size()); assertFalse(instance.hasValue("bob")); assertFalse(instance.hasValue("frank")); instance.add("billy"); instance.add("bob"); assertEquals(2, instance.size()); assertTrue(instance.hasValue("bob")); assertTrue(instance.hasValue("billy")); assertFalse(instance.hasValue("frank")); } }