/*
* File: RangeExcludedArrayListTest.java
* Authors: Justin Basilico
* Company: Sandia National Laboratories
* Project: Cognitive Foundry
*
* Copyright September 26, 2007, 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 java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import junit.framework.TestCase;
/**
* This class implements JUnit tests for the following classes: RangeExcludedArrayList
*
* @author Justin Basilico
* @since 2.0
*/
public class RangeExcludedArrayListTest
extends TestCase
{
public RangeExcludedArrayListTest(
String testName)
{
super(testName);
}
public void testConstructors()
{
ArrayList<String> list = new ArrayList<String>();
list.add("0");
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");
list.add("7");
RangeExcludedArrayList<String> instance = null;
int count = list.size();
for (int i = 0; i < count; i++)
{
for (int j = i; j < i; j++)
{
instance = new RangeExcludedArrayList<String>(list, i, j);
}
}
boolean exceptionThrown = false;
try
{
instance = new RangeExcludedArrayList<String>(list, -1, 1);
}
catch (IndexOutOfBoundsException e)
{
exceptionThrown = true;
}
finally
{
assertTrue(exceptionThrown);
}
exceptionThrown = false;
try
{
instance = new RangeExcludedArrayList<String>(list, 1, count);
}
catch (IndexOutOfBoundsException e)
{
exceptionThrown = true;
}
finally
{
assertTrue(exceptionThrown);
}
exceptionThrown = false;
try
{
instance = new RangeExcludedArrayList<String>(list, 2, 1);
}
catch (IllegalArgumentException e)
{
exceptionThrown = true;
}
finally
{
assertTrue(exceptionThrown);
}
}
/**
* Test of get method, of class gov.sandia.cognition.collections.RangeExcludedArrayList.
*/
public void testGet()
{
ArrayList<String> list = new ArrayList<String>();
list.add("0");
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");
list.add("7");
RangeExcludedArrayList<String> instance =
new RangeExcludedArrayList<String>(list, 4, 6);
assertEquals(5, instance.size());
assertEquals("0", instance.get(0));
assertEquals("1", instance.get(1));
assertEquals("2", instance.get(2));
assertEquals("3", instance.get(3));
assertEquals("7", instance.get(4));
}
/**
* Test of size method, of class gov.sandia.cognition.collections.RangeExcludedArrayList.
*/
public void testSize()
{
ArrayList<String> list = new ArrayList<String>();
list.add("0");
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");
list.add("7");
assertEquals(7, new RangeExcludedArrayList<String>(list, 0, 0).size());
assertEquals(7, new RangeExcludedArrayList<String>(list, 1, 1).size());
assertEquals(7, new RangeExcludedArrayList<String>(list, 4, 4).size());
assertEquals(7, new RangeExcludedArrayList<String>(list, 7, 7).size());
assertEquals(5, new RangeExcludedArrayList<String>(list, 4, 6).size());
assertEquals(1, new RangeExcludedArrayList<String>(list, 1, 7).size());
assertEquals(1, new RangeExcludedArrayList<String>(list, 0, 6).size());
assertEquals(0, new RangeExcludedArrayList<String>(list, 0, 7).size());
}
public void testForAll()
{
ArrayList<String> list = new ArrayList<String>();
list.add("0");
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");
list.add("7");
RangeExcludedArrayList<String> instance =
new RangeExcludedArrayList<String>(list, 4, 6);
for (String s : instance)
{
if (s.equals("4") || s.equals("5") || s.equals("6"))
{
fail("Iterator is accessing excluded values!");
}
}
}
public void testSubCollections()
{
ArrayList<String> list = new ArrayList<String>();
list.add("0");
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");
list.add("7");
RangeExcludedArrayList<String> instance =
new RangeExcludedArrayList<String>(list, 4, 6);
List<? extends Collection<String>> result = instance.subCollections();
assertEquals(2, result.size());
assertEquals(list.subList(0, 4), result.get(0));
assertEquals(list.subList(7, 8), result.get(1));
instance = new RangeExcludedArrayList<String>(list, 0, 3);
result = instance.subCollections();
assertEquals(1, result.size());
assertEquals(list.subList(4, 8), result.get(0));
instance = new RangeExcludedArrayList<String>(list, 3, 7);
result = instance.subCollections();
assertEquals(1, result.size());
assertEquals(list.subList(0, 3), result.get(0));
instance = new RangeExcludedArrayList<String>(list, 3, 3);
result = instance.subCollections();
assertEquals(2, result.size());
assertEquals(list.subList(0, 3), result.get(0));
assertEquals(list.subList(4, 8), result.get(1));
}
}