package test.utils.collection;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.net.URI;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
import org.junit.Assume;
import org.junit.Test;
import com.firefly.utils.collection.LazyList;
import com.firefly.utils.lang.ArrayUtils;
/**
* Tests for LazyList utility class.
*/
public class TestLazyList {
public static final boolean STRICT = false;
/**
* Tests for {@link LazyList#add(Object, Object)}
*/
@Test
public void testAddObjectObject_NullInput_NullItem() {
Object list = LazyList.add(null, null);
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(1, LazyList.size(list));
}
/**
* Tests for {@link LazyList#add(Object, Object)}
*/
@Test
public void testAddObjectObject_NullInput_NonListItem() {
String item = "a";
Object list = LazyList.add(null, item);
assertNotNull(list);
if (STRICT) {
assertTrue(list instanceof List);
}
assertEquals(1, LazyList.size(list));
}
/**
* Tests for {@link LazyList#add(Object, Object)}
*/
@Test
public void testAddObjectObject_NullInput_LazyListItem() {
Object item = LazyList.add(null, "x");
item = LazyList.add(item, "y");
item = LazyList.add(item, "z");
Object list = LazyList.add(null, item);
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(1, LazyList.size(list));
Object val = LazyList.get(list, 0);
assertTrue(val instanceof List);
}
/**
* Tests for {@link LazyList#add(Object, Object)}
*/
@Test
public void testAddObjectObject_NonListInput() {
String input = "a";
Object list = LazyList.add(input, "b");
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(2, LazyList.size(list));
}
/**
* Tests for {@link LazyList#add(Object, Object)}
*/
@Test
public void testAddObjectObject_LazyListInput() {
Object input = LazyList.add(null, "a");
Object list = LazyList.add(input, "b");
assertEquals(2, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
list = LazyList.add(list, "c");
assertEquals(3, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
assertEquals("b", LazyList.get(list, 1));
assertEquals("c", LazyList.get(list, 2));
}
/**
* Tests for {@link LazyList#add(Object, Object)}
*/
@Test
public void testAddObjectObject_GenericListInput() {
List<String> input = new ArrayList<String>();
input.add("a");
Object list = LazyList.add(input, "b");
assertEquals(2, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
list = LazyList.add(list, "c");
assertEquals(3, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
assertEquals("b", LazyList.get(list, 1));
assertEquals("c", LazyList.get(list, 2));
}
/**
* Tests for {@link LazyList#add(Object, Object)}
*/
@Test
public void testAddObjectObject_AddNull() {
Object list = null;
list = LazyList.add(list, null);
assertEquals(1, LazyList.size(list));
assertNull(LazyList.get(list, 0));
list = "a";
list = LazyList.add(list, null);
assertEquals(2, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
assertNull(LazyList.get(list, 1));
list = LazyList.add(list, null);
assertEquals(3, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
assertNull(LazyList.get(list, 1));
assertNull(LazyList.get(list, 2));
}
/**
* Test for {@link LazyList#add(Object, int, Object)}
*/
@Test
public void testAddObjectIntObject_NullInput_NullItem() {
Object list = LazyList.add(null, 0, null);
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(1, LazyList.size(list));
}
/**
* Test for {@link LazyList#add(Object, int, Object)}
*/
@Test
public void testAddObjectIntObject_NullInput_NonListItem() {
String item = "a";
Object list = LazyList.add(null, 0, item);
assertNotNull(list);
if (STRICT) {
assertTrue(list instanceof List);
}
assertEquals(1, LazyList.size(list));
}
/**
* Test for {@link LazyList#add(Object, int, Object)}
*/
@Test
public void testAddObjectIntObject_NullInput_NonListItem2() {
Assume.assumeTrue(STRICT); // Only run in STRICT mode.
String item = "a";
// Test branch of logic "index>0"
Object list = LazyList.add(null, 1, item); // Always throws exception?
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(1, LazyList.size(list));
}
/**
* Test for {@link LazyList#add(Object, int, Object)}
*/
@Test
public void testAddObjectIntObject_NullInput_LazyListItem() {
Object item = LazyList.add(null, "x");
item = LazyList.add(item, "y");
item = LazyList.add(item, "z");
Object list = LazyList.add(null, 0, item);
assertNotNull(list);
assertEquals(1, LazyList.size(list));
Object val = LazyList.get(list, 0);
assertTrue(val instanceof List);
}
/**
* Test for {@link LazyList#add(Object, int, Object)}
*/
@Test
public void testAddObjectIntObject_NullInput_GenericListItem() {
List<String> item = new ArrayList<String>();
item.add("a");
Object list = LazyList.add(null, 0, item);
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(1, LazyList.size(list));
}
/**
* Test for {@link LazyList#add(Object, int, Object)}
*/
@Test
public void testAddObjectIntObject_NonListInput_NullItem() {
String input = "a";
Object list = LazyList.add(input, 0, null);
assertNotNull(list);
assertEquals(2, LazyList.size(list));
assertNull(LazyList.get(list, 0));
assertEquals("a", LazyList.get(list, 1));
}
/**
* Test for {@link LazyList#add(Object, int, Object)}
*/
@Test
public void testAddObjectIntObject_NonListInput_NonListItem() {
String input = "a";
String item = "b";
Object list = LazyList.add(input, 0, item);
assertNotNull(list);
assertEquals(2, LazyList.size(list));
assertEquals("b", LazyList.get(list, 0));
assertEquals("a", LazyList.get(list, 1));
}
/**
* Test for {@link LazyList#add(Object, int, Object)}
*/
@Test
public void testAddObjectIntObject_LazyListInput() {
Object list = LazyList.add(null, "c"); // [c]
list = LazyList.add(list, 0, "a"); // [a, c]
list = LazyList.add(list, 1, "b"); // [a, b, c]
list = LazyList.add(list, 3, "d"); // [a, b, c, d]
assertEquals(4, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
assertEquals("b", LazyList.get(list, 1));
assertEquals("c", LazyList.get(list, 2));
assertEquals("d", LazyList.get(list, 3));
}
/**
* Test for {@link LazyList#addCollection(Object, java.util.Collection)}
*/
@Test
public void testAddCollection_NullInput() {
Collection<?> coll = Arrays.asList("a", "b", "c");
Object list = LazyList.addCollection(null, coll);
assertTrue(list instanceof List);
assertEquals(3, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
assertEquals("b", LazyList.get(list, 1));
assertEquals("c", LazyList.get(list, 2));
}
/**
* Test for {@link LazyList#addCollection(Object, java.util.Collection)}
*/
@Test
public void testAddCollection_NonListInput() {
Collection<?> coll = Arrays.asList("a", "b", "c");
String input = "z";
Object list = LazyList.addCollection(input, coll);
assertTrue(list instanceof List);
assertEquals(4, LazyList.size(list));
assertEquals("z", LazyList.get(list, 0));
assertEquals("a", LazyList.get(list, 1));
assertEquals("b", LazyList.get(list, 2));
assertEquals("c", LazyList.get(list, 3));
}
/**
* Test for {@link LazyList#addCollection(Object, java.util.Collection)}
*/
@Test
public void testAddCollection_LazyListInput() {
Collection<?> coll = Arrays.asList("a", "b", "c");
Object input = LazyList.add(null, "x");
input = LazyList.add(input, "y");
input = LazyList.add(input, "z");
Object list = LazyList.addCollection(input, coll);
assertTrue(list instanceof List);
assertEquals(6, LazyList.size(list));
assertEquals("x", LazyList.get(list, 0));
assertEquals("y", LazyList.get(list, 1));
assertEquals("z", LazyList.get(list, 2));
assertEquals("a", LazyList.get(list, 3));
assertEquals("b", LazyList.get(list, 4));
assertEquals("c", LazyList.get(list, 5));
}
/**
* Test for {@link LazyList#addCollection(Object, java.util.Collection)}
*/
@Test
public void testAddCollection_GenricListInput() {
Collection<?> coll = Arrays.asList("a", "b", "c");
List<String> input = new ArrayList<String>();
input.add("x");
input.add("y");
input.add("z");
Object list = LazyList.addCollection(input, coll);
assertTrue(list instanceof List);
assertEquals(6, LazyList.size(list));
assertEquals("x", LazyList.get(list, 0));
assertEquals("y", LazyList.get(list, 1));
assertEquals("z", LazyList.get(list, 2));
assertEquals("a", LazyList.get(list, 3));
assertEquals("b", LazyList.get(list, 4));
assertEquals("c", LazyList.get(list, 5));
}
/**
* Test for {@link LazyList#addCollection(Object, java.util.Collection)}
*/
@Test
public void testAddCollection_Sequential() {
Collection<?> coll = Arrays.asList("a", "b");
Object list = null;
list = LazyList.addCollection(list, coll);
list = LazyList.addCollection(list, coll);
assertEquals(4, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
assertEquals("b", LazyList.get(list, 1));
assertEquals("a", LazyList.get(list, 2));
assertEquals("b", LazyList.get(list, 3));
}
/**
* Test for {@link LazyList#addCollection(Object, java.util.Collection)}
*/
@Test
public void testAddCollection_GenericListInput() {
List<String> l = new ArrayList<String>();
l.add("a");
l.add("b");
Object list = null;
list = LazyList.addCollection(list, l);
list = LazyList.addCollection(list, l);
assertEquals(4, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
assertEquals("b", LazyList.get(list, 1));
assertEquals("a", LazyList.get(list, 2));
assertEquals("b", LazyList.get(list, 3));
}
/**
* Tests for {@link LazyList#addArray(Object, Object[])}
*/
@Test
public void testAddArray_NullInput_NullArray() {
String arr[] = null;
Object list = LazyList.addArray(null, arr);
assertNull(list);
}
/**
* Tests for {@link LazyList#addArray(Object, Object[])}
*/
@Test
public void testAddArray_NullInput_EmptyArray() {
String arr[] = new String[0];
Object list = LazyList.addArray(null, arr);
if (STRICT) {
assertNotNull(list);
assertTrue(list instanceof List);
}
}
/**
* Tests for {@link LazyList#addArray(Object, Object[])}
*/
@Test
public void testAddArray_NullInput_SingleArray() {
String arr[] = new String[] { "a" };
Object list = LazyList.addArray(null, arr);
assertNotNull(list);
if (STRICT) {
assertTrue(list instanceof List);
}
assertEquals(1, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
}
/**
* Tests for {@link LazyList#addArray(Object, Object[])}
*/
@Test
public void testAddArray_NullInput_Array() {
String arr[] = new String[] { "a", "b", "c" };
Object list = LazyList.addArray(null, arr);
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(3, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
assertEquals("b", LazyList.get(list, 1));
assertEquals("c", LazyList.get(list, 2));
}
/**
* Tests for {@link LazyList#addArray(Object, Object[])}
*/
@Test
public void testAddArray_NonListInput_NullArray() {
String input = "z";
String arr[] = null;
Object list = LazyList.addArray(input, arr);
assertNotNull(list);
if (STRICT) {
assertTrue(list instanceof List);
}
assertEquals(1, LazyList.size(list));
assertEquals("z", LazyList.get(list, 0));
}
/**
* Tests for {@link LazyList#addArray(Object, Object[])}
*/
@Test
public void testAddArray_NonListInput_EmptyArray() {
String input = "z";
String arr[] = new String[0];
Object list = LazyList.addArray(input, arr);
assertNotNull(list);
if (STRICT) {
assertTrue(list instanceof List);
}
assertEquals(1, LazyList.size(list));
assertEquals("z", LazyList.get(list, 0));
}
/**
* Tests for {@link LazyList#addArray(Object, Object[])}
*/
@Test
public void testAddArray_NonListInput_SingleArray() {
String input = "z";
String arr[] = new String[] { "a" };
Object list = LazyList.addArray(input, arr);
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(2, LazyList.size(list));
assertEquals("z", LazyList.get(list, 0));
assertEquals("a", LazyList.get(list, 1));
}
/**
* Tests for {@link LazyList#addArray(Object, Object[])}
*/
@Test
public void testAddArray_NonListInput_Array() {
String input = "z";
String arr[] = new String[] { "a", "b", "c" };
Object list = LazyList.addArray(input, arr);
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(4, LazyList.size(list));
assertEquals("z", LazyList.get(list, 0));
assertEquals("a", LazyList.get(list, 1));
assertEquals("b", LazyList.get(list, 2));
assertEquals("c", LazyList.get(list, 3));
}
/**
* Tests for {@link LazyList#addArray(Object, Object[])}
*/
@Test
public void testAddArray_LazyListInput_NullArray() {
Object input = LazyList.add(null, "x");
input = LazyList.add(input, "y");
input = LazyList.add(input, "z");
String arr[] = null;
Object list = LazyList.addArray(input, arr);
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(3, LazyList.size(list));
assertEquals("x", LazyList.get(list, 0));
assertEquals("y", LazyList.get(list, 1));
assertEquals("z", LazyList.get(list, 2));
}
/**
* Tests for {@link LazyList#addArray(Object, Object[])}
*/
@Test
public void testAddArray_LazyListInput_EmptyArray() {
Object input = LazyList.add(null, "x");
input = LazyList.add(input, "y");
input = LazyList.add(input, "z");
String arr[] = new String[0];
Object list = LazyList.addArray(input, arr);
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(3, LazyList.size(list));
assertEquals("x", LazyList.get(list, 0));
assertEquals("y", LazyList.get(list, 1));
assertEquals("z", LazyList.get(list, 2));
}
/**
* Tests for {@link LazyList#addArray(Object, Object[])}
*/
@Test
public void testAddArray_LazyListInput_SingleArray() {
Object input = LazyList.add(null, "x");
input = LazyList.add(input, "y");
input = LazyList.add(input, "z");
String arr[] = new String[] { "a" };
Object list = LazyList.addArray(input, arr);
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(4, LazyList.size(list));
assertEquals("x", LazyList.get(list, 0));
assertEquals("y", LazyList.get(list, 1));
assertEquals("z", LazyList.get(list, 2));
assertEquals("a", LazyList.get(list, 3));
}
/**
* Tests for {@link LazyList#addArray(Object, Object[])}
*/
@Test
public void testAddArray_LazyListInput_Array() {
Object input = LazyList.add(null, "x");
input = LazyList.add(input, "y");
input = LazyList.add(input, "z");
String arr[] = new String[] { "a", "b", "c" };
Object list = LazyList.addArray(input, arr);
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(6, LazyList.size(list));
assertEquals("x", LazyList.get(list, 0));
assertEquals("y", LazyList.get(list, 1));
assertEquals("z", LazyList.get(list, 2));
assertEquals("a", LazyList.get(list, 3));
assertEquals("b", LazyList.get(list, 4));
assertEquals("c", LazyList.get(list, 5));
}
/**
* Tests for {@link LazyList#addArray(Object, Object[])}
*/
@Test
public void testAddArray_GenericListInput_NullArray() {
List<String> input = new ArrayList<String>();
input.add("x");
input.add("y");
input.add("z");
String arr[] = null;
Object list = LazyList.addArray(input, arr);
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(3, LazyList.size(list));
assertEquals("x", LazyList.get(list, 0));
assertEquals("y", LazyList.get(list, 1));
assertEquals("z", LazyList.get(list, 2));
}
/**
* Tests for {@link LazyList#addArray(Object, Object[])}
*/
@Test
public void testAddArray_GenericListInput_EmptyArray() {
List<String> input = new ArrayList<String>();
input.add("x");
input.add("y");
input.add("z");
String arr[] = new String[0];
Object list = LazyList.addArray(input, arr);
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(3, LazyList.size(list));
assertEquals("x", LazyList.get(list, 0));
assertEquals("y", LazyList.get(list, 1));
assertEquals("z", LazyList.get(list, 2));
}
/**
* Tests for {@link LazyList#addArray(Object, Object[])}
*/
@Test
public void testAddArray_GenericListInput_SingleArray() {
List<String> input = new ArrayList<String>();
input.add("x");
input.add("y");
input.add("z");
String arr[] = new String[] { "a" };
Object list = LazyList.addArray(input, arr);
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(4, LazyList.size(list));
assertEquals("x", LazyList.get(list, 0));
assertEquals("y", LazyList.get(list, 1));
assertEquals("z", LazyList.get(list, 2));
assertEquals("a", LazyList.get(list, 3));
}
/**
* Tests for {@link LazyList#addArray(Object, Object[])}
*/
@Test
public void testAddArray_GenericListInput_Array() {
List<String> input = new ArrayList<String>();
input.add("x");
input.add("y");
input.add("z");
String arr[] = new String[] { "a", "b", "c" };
Object list = LazyList.addArray(input, arr);
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(6, LazyList.size(list));
assertEquals("x", LazyList.get(list, 0));
assertEquals("y", LazyList.get(list, 1));
assertEquals("z", LazyList.get(list, 2));
assertEquals("a", LazyList.get(list, 3));
assertEquals("b", LazyList.get(list, 4));
assertEquals("c", LazyList.get(list, 5));
}
/**
* Tests for {@link LazyList#ensureSize(Object, int)}
*/
@Test
public void testEnsureSize_NullInput() {
Object list = LazyList.ensureSize(null, 10);
assertNotNull(list);
assertTrue(list instanceof List);
// Not possible to test for List capacity value.
}
/**
* Tests for {@link LazyList#ensureSize(Object, int)}
*/
@Test
public void testEnsureSize_NonListInput() {
String input = "a";
Object list = LazyList.ensureSize(input, 10);
assertNotNull(list);
assertTrue(list instanceof List);
// Not possible to test for List capacity value.
assertEquals(1, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
}
/**
* Tests for {@link LazyList#ensureSize(Object, int)}
*/
@Test
public void testEnsureSize_LazyListInput() {
Object input = LazyList.add(null, "a");
input = LazyList.add(input, "b");
Object list = LazyList.ensureSize(input, 10);
assertNotNull(list);
assertTrue(list instanceof List);
// Not possible to test for List capacity value.
assertEquals(2, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
assertEquals("b", LazyList.get(list, 1));
}
/**
* Tests for {@link LazyList#ensureSize(Object, int)}
*/
@Test
public void testEnsureSize_GenericListInput() {
List<String> input = new ArrayList<String>();
input.add("a");
input.add("b");
Object list = LazyList.ensureSize(input, 10);
assertNotNull(list);
assertTrue(list instanceof List);
// Not possible to test for List capacity value.
assertEquals(2, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
assertEquals("b", LazyList.get(list, 1));
}
/**
* Tests for {@link LazyList#ensureSize(Object, int)}
*/
@Test
public void testEnsureSize_GenericListInput_LinkedList() {
Assume.assumeTrue(STRICT); // Only run in STRICT mode.
// Using LinkedList concrete type as LazyList internal
// implementation does not look for this specifically.
List<String> input = new LinkedList<String>();
input.add("a");
input.add("b");
Object list = LazyList.ensureSize(input, 10);
assertNotNull(list);
assertTrue(list instanceof List);
// Not possible to test for List capacity value.
assertEquals(2, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
assertEquals("b", LazyList.get(list, 1));
}
/**
* Tests for {@link LazyList#ensureSize(Object, int)}
*/
@Test
public void testEnsureSize_Growth() {
List<String> l = new ArrayList<String>();
l.add("a");
l.add("b");
l.add("c");
// NOTE: Testing for object equality might be viewed as
// fragile by most developers, however, for this
// specific implementation, we don't want the
// provided list to change if the size requirements
// have been met.
// Trigger growth
Object ret = LazyList.ensureSize(l, 10);
assertTrue("Should have returned a new list object", ret != l);
// Growth not neeed.
ret = LazyList.ensureSize(l, 1);
assertTrue("Should have returned same list object", ret == l);
}
/**
* Tests for {@link LazyList#ensureSize(Object, int)}
*/
@Test
public void testEnsureSize_Growth_LinkedList() {
Assume.assumeTrue(STRICT); // Only run in STRICT mode.
// Using LinkedList concrete type as LazyList internal
// implementation has not historically looked for this
// specifically.
List<String> l = new LinkedList<String>();
l.add("a");
l.add("b");
l.add("c");
// NOTE: Testing for object equality might be viewed as
// fragile by most developers, however, for this
// specific implementation, we don't want the
// provided list to change if the size requirements
// have been met.
// Trigger growth
Object ret = LazyList.ensureSize(l, 10);
assertTrue("Should have returned a new list object", ret != l);
// Growth not neeed.
ret = LazyList.ensureSize(l, 1);
assertTrue("Should have returned same list object", ret == l);
}
/**
* Test for {@link LazyList#remove(Object, Object)}
*/
@Test
public void testRemoveObjectObject_NullInput() {
Object input = null;
assertNull(LazyList.remove(input, null));
assertNull(LazyList.remove(input, "a"));
assertNull(LazyList.remove(input, new ArrayList<Object>()));
assertNull(LazyList.remove(input, Integer.valueOf(42)));
}
/**
* Test for {@link LazyList#remove(Object, Object)}
*/
@Test
public void testRemoveObjectObject_NonListInput() {
String input = "a";
// Remove null item
Object list = LazyList.remove(input, null);
assertNotNull(list);
if (STRICT) {
assertTrue(list instanceof List);
}
assertEquals(1, LazyList.size(list));
// Remove item that doesn't exist
list = LazyList.remove(input, "b");
assertNotNull(list);
if (STRICT) {
assertTrue(list instanceof List);
}
assertEquals(1, LazyList.size(list));
// Remove item that exists
list = LazyList.remove(input, "a");
// TODO: should this be null? or an empty list?
assertNull(list); // nothing left in list
assertEquals(0, LazyList.size(list));
}
/**
* Test for {@link LazyList#remove(Object, Object)}
*/
@Test
public void testRemoveObjectObject_LazyListInput() {
Object input = LazyList.add(null, "a");
input = LazyList.add(input, "b");
input = LazyList.add(input, "c");
// Remove null item
Object list = LazyList.remove(input, null);
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(3, LazyList.size(list));
// Attempt to remove something that doesn't exist
list = LazyList.remove(input, "z");
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(3, LazyList.size(list));
// Remove something that exists in input
list = LazyList.remove(input, "b");
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(2, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
assertEquals("c", LazyList.get(list, 1));
}
/**
* Test for {@link LazyList#remove(Object, Object)}
*/
@Test
public void testRemoveObjectObject_GenericListInput() {
List<String> input = new ArrayList<String>();
input.add("a");
input.add("b");
input.add("c");
// Remove null item
Object list = LazyList.remove(input, null);
assertNotNull(list);
assertTrue(list instanceof List);
assertTrue("Should not have recreated list obj", input == list);
assertEquals(3, LazyList.size(list));
// Attempt to remove something that doesn't exist
list = LazyList.remove(input, "z");
assertNotNull(list);
assertTrue(list instanceof List);
assertTrue("Should not have recreated list obj", input == list);
assertEquals(3, LazyList.size(list));
// Remove something that exists in input
list = LazyList.remove(input, "b");
assertNotNull(list);
assertTrue(list instanceof List);
assertTrue("Should not have recreated list obj", input == list);
assertEquals(2, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
assertEquals("c", LazyList.get(list, 1));
// Try to remove the rest.
list = LazyList.remove(list, "a");
list = LazyList.remove(list, "c");
assertNull(list);
}
/**
* Test for {@link LazyList#remove(Object, Object)}
*/
@Test
public void testRemoveObjectObject_LinkedListInput() {
// Should be able to use any collection object.
List<String> input = new LinkedList<String>();
input.add("a");
input.add("b");
input.add("c");
// Remove null item
Object list = LazyList.remove(input, null);
assertNotNull(list);
assertTrue(list instanceof List);
assertTrue("Should not have recreated list obj", input == list);
assertEquals(3, LazyList.size(list));
// Attempt to remove something that doesn't exist
list = LazyList.remove(input, "z");
assertNotNull(list);
assertTrue(list instanceof List);
assertTrue("Should not have recreated list obj", input == list);
assertEquals(3, LazyList.size(list));
// Remove something that exists in input
list = LazyList.remove(input, "b");
assertNotNull(list);
assertTrue(list instanceof List);
assertTrue("Should not have recreated list obj", input == list);
assertEquals(2, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
assertEquals("c", LazyList.get(list, 1));
}
/**
* Tests for {@link LazyList#remove(Object, int)}
*/
@Test
public void testRemoveObjectInt_NullInput() {
Object input = null;
assertNull(LazyList.remove(input, 0));
assertNull(LazyList.remove(input, 2));
assertNull(LazyList.remove(input, -2));
}
/**
* Tests for {@link LazyList#remove(Object, int)}
*/
@Test
public void testRemoveObjectInt_NonListInput() {
String input = "a";
// Invalid index
Object list = LazyList.remove(input, 1);
assertNotNull(list);
if (STRICT) {
assertTrue(list instanceof List);
}
assertEquals(1, LazyList.size(list));
// Valid index
list = LazyList.remove(input, 0);
// TODO: should this be null? or an empty list?
assertNull(list); // nothing left in list
assertEquals(0, LazyList.size(list));
}
/**
* Tests for {@link LazyList#remove(Object, int)}
*/
@Test
public void testRemoveObjectInt_LazyListInput() {
Object input = LazyList.add(null, "a");
input = LazyList.add(input, "b");
input = LazyList.add(input, "c");
Object list = null;
if (STRICT) {
// Invalid index
// Shouldn't cause a IndexOutOfBoundsException as this is not the
// same behavior you experience in testRemoveObjectInt_NonListInput
// and
// testRemoveObjectInt_NullInput when using invalid indexes.
list = LazyList.remove(input, 5);
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(3, LazyList.size(list));
}
// Valid index
list = LazyList.remove(input, 1); // remove the 'b'
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(2, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
assertEquals("c", LazyList.get(list, 1));
}
/**
* Tests for {@link LazyList#remove(Object, int)}
*/
@Test
public void testRemoveObjectInt_GenericListInput() {
List<String> input = new ArrayList<String>();
input.add("a");
input.add("b");
input.add("c");
Object list = null;
if (STRICT) {
// Invalid index
// Shouldn't cause a IndexOutOfBoundsException as this is not the
// same behavior you experience in testRemoveObjectInt_NonListInput
// and
// testRemoveObjectInt_NullInput when using invalid indexes.
list = LazyList.remove(input, 5);
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(3, LazyList.size(list));
}
// Valid index
list = LazyList.remove(input, 1); // remove the 'b'
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(2, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
assertEquals("c", LazyList.get(list, 1));
// Remove the rest
list = LazyList.remove(list, 0); // the 'a'
list = LazyList.remove(list, 0); // the 'c'
assertNull(list);
}
/**
* Test for {@link LazyList#getList(Object)}
*/
@Test
public void testGetListObject_NullInput() {
Object input = null;
Object list = LazyList.getList(input);
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(0, LazyList.size(list));
}
/**
* Test for {@link LazyList#getList(Object)}
*/
@Test
public void testGetListObject_NonListInput() {
String input = "a";
Object list = LazyList.getList(input);
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(1, LazyList.size(list));
}
/**
* Test for {@link LazyList#getList(Object)}
*/
@Test
public void testGetListObject_LazyListInput() {
Object input = LazyList.add(null, "a");
input = LazyList.add(input, "b");
input = LazyList.add(input, "c");
Object list = LazyList.getList(input);
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(3, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
assertEquals("b", LazyList.get(list, 1));
assertEquals("c", LazyList.get(list, 2));
}
/**
* Test for {@link LazyList#getList(Object)}
*/
@Test
public void testGetListObject_GenericListInput() {
List<String> input = new ArrayList<String>();
input.add("a");
input.add("b");
input.add("c");
Object list = LazyList.getList(input);
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(3, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
assertEquals("b", LazyList.get(list, 1));
assertEquals("c", LazyList.get(list, 2));
}
/**
* Test for {@link LazyList#getList(Object)}
*/
@Test
public void testGetListObject_LinkedListInput() {
List<String> input = new LinkedList<String>();
input.add("a");
input.add("b");
input.add("c");
Object list = LazyList.getList(input);
assertNotNull(list);
assertTrue(list instanceof List);
assertEquals(3, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
assertEquals("b", LazyList.get(list, 1));
assertEquals("c", LazyList.get(list, 2));
}
/**
* Test for {@link LazyList#getList(Object)}
*/
@Test
public void testGetListObject_NullForEmpty() {
assertNull(LazyList.getList(null, true));
assertNotNull(LazyList.getList(null, false));
}
/**
* Tests for {@link LazyList#toStringArray(Object)}
*/
@Test
@SuppressWarnings("unchecked")
public void testToStringArray() {
assertEquals(0, LazyList.toStringArray(null).length);
assertEquals(1, LazyList.toStringArray("a").length);
assertEquals("a", LazyList.toStringArray("a")[0]);
@SuppressWarnings("rawtypes")
ArrayList l = new ArrayList();
l.add("a");
l.add(null);
l.add(new Integer(2));
String[] a = LazyList.toStringArray(l);
assertEquals(3, a.length);
assertEquals("a", a[0]);
assertEquals(null, a[1]);
assertEquals("2", a[2]);
}
/**
* Tests for {@link LazyList#toArray(Object, Class)}
*/
@Test
public void testToArray_NullInput_Object() {
Object input = null;
Object arr = LazyList.toArray(input, Object.class);
assertNotNull(arr);
assertTrue(arr.getClass().isArray());
}
/**
* Tests for {@link LazyList#toArray(Object, Class)}
*/
@Test
public void testToArray_NullInput_String() {
String input = null;
Object arr = LazyList.toArray(input, String.class);
assertNotNull(arr);
assertTrue(arr.getClass().isArray());
assertTrue(arr instanceof String[]);
}
/**
* Tests for {@link LazyList#toArray(Object, Class)}
*/
@Test
public void testToArray_NonListInput() {
String input = "a";
Object arr = LazyList.toArray(input, String.class);
assertNotNull(arr);
assertTrue(arr.getClass().isArray());
assertTrue(arr instanceof String[]);
String strs[] = (String[]) arr;
assertEquals(1, strs.length);
assertEquals("a", strs[0]);
}
/**
* Tests for {@link LazyList#toArray(Object, Class)}
*/
@Test
public void testToArray_LazyListInput() {
Object input = LazyList.add(null, "a");
input = LazyList.add(input, "b");
input = LazyList.add(input, "c");
Object arr = LazyList.toArray(input, String.class);
assertNotNull(arr);
assertTrue(arr.getClass().isArray());
assertTrue(arr instanceof String[]);
String strs[] = (String[]) arr;
assertEquals(3, strs.length);
assertEquals("a", strs[0]);
assertEquals("b", strs[1]);
assertEquals("c", strs[2]);
}
/**
* Tests for {@link LazyList#toArray(Object, Class)}
*/
@Test
public void testToArray_LazyListInput_Primitives() {
Object input = LazyList.add(null, 22);
input = LazyList.add(input, 333);
input = LazyList.add(input, 4444);
input = LazyList.add(input, 55555);
Object arr = LazyList.toArray(input, int.class);
assertNotNull(arr);
assertTrue(arr.getClass().isArray());
assertTrue(arr instanceof int[]);
int nums[] = (int[]) arr;
assertEquals(4, nums.length);
assertEquals(22, nums[0]);
assertEquals(333, nums[1]);
assertEquals(4444, nums[2]);
assertEquals(55555, nums[3]);
}
/**
* Tests for {@link LazyList#toArray(Object, Class)}
*/
@Test
public void testToArray_GenericListInput() {
List<String> input = new ArrayList<String>();
input.add("a");
input.add("b");
input.add("c");
Object arr = LazyList.toArray(input, String.class);
assertNotNull(arr);
assertTrue(arr.getClass().isArray());
assertTrue(arr instanceof String[]);
String strs[] = (String[]) arr;
assertEquals(3, strs.length);
assertEquals("a", strs[0]);
assertEquals("b", strs[1]);
assertEquals("c", strs[2]);
}
/**
* Tests for {@link LazyList#size(Object)}
*/
@Test
public void testSize_NullInput() {
assertEquals(0, LazyList.size(null));
}
/**
* Tests for {@link LazyList#size(Object)}
*/
@Test
public void testSize_NonListInput() {
String input = "a";
assertEquals(1, LazyList.size(input));
}
/**
* Tests for {@link LazyList#size(Object)}
*/
@Test
public void testSize_LazyListInput() {
Object input = LazyList.add(null, "a");
input = LazyList.add(input, "b");
assertEquals(2, LazyList.size(input));
input = LazyList.add(input, "c");
assertEquals(3, LazyList.size(input));
}
/**
* Tests for {@link LazyList#size(Object)}
*/
@Test
public void testSize_GenericListInput() {
List<String> input = new ArrayList<String>();
assertEquals(0, LazyList.size(input));
input.add("a");
input.add("b");
assertEquals(2, LazyList.size(input));
input.add("c");
assertEquals(3, LazyList.size(input));
}
/**
* Tests for bad input on {@link LazyList#get(Object, int)}
*/
@Test(expected = IndexOutOfBoundsException.class)
public void testGet_OutOfBounds_NullInput() {
LazyList.get(null, 0); // Should Fail due to null input
}
/**
* Tests for bad input on {@link LazyList#get(Object, int)}
*/
@Test(expected = IndexOutOfBoundsException.class)
public void testGet_OutOfBounds_NonListInput() {
String input = "a";
LazyList.get(input, 1); // Should Fail
}
/**
* Tests for bad input on {@link LazyList#get(Object, int)}
*/
@Test(expected = IndexOutOfBoundsException.class)
public void testGet_OutOfBounds_LazyListInput() {
Object input = LazyList.add(null, "a");
LazyList.get(input, 1); // Should Fail
}
/**
* Tests for bad input on {@link LazyList#get(Object, int)}
*/
@Test(expected = IndexOutOfBoundsException.class)
public void testGet_OutOfBounds_GenericListInput() {
List<String> input = new ArrayList<String>();
input.add("a");
LazyList.get(input, 1); // Should Fail
}
/**
* Tests for non-list input on {@link LazyList#get(Object, int)}
*/
@Test
public void testGet_NonListInput() {
String input = "a";
assertEquals("a", LazyList.get(input, 0));
}
/**
* Tests for list input on {@link LazyList#get(Object, int)}
*/
@Test
public void testGet_LazyListInput() {
Object input = LazyList.add(null, "a");
assertEquals("a", LazyList.get(input, 0));
}
/**
* Tests for list input on {@link LazyList#get(Object, int)}
*/
@Test
public void testGet_GenericListInput() {
List<String> input = new ArrayList<String>();
input.add("a");
assertEquals("a", LazyList.get(input, 0));
List<URI> uris = new ArrayList<URI>();
uris.add(URI.create("http://www.mortbay.org/"));
uris.add(URI.create("http://jetty.codehaus.org/jetty/"));
uris.add(URI.create("http://www.intalio.com/jetty/"));
uris.add(URI.create("http://www.eclipse.org/jetty/"));
// Make sure that Generics pass through the 'get' routine safely.
// We should be able to call this without casting the result to URI
URI eclipseUri = LazyList.get(uris, 3);
assertEquals("http://www.eclipse.org/jetty/", eclipseUri.toASCIIString());
}
/**
* Tests for {@link LazyList#contains(Object, Object)}
*/
@Test
public void testContains_NullInput() {
assertFalse(LazyList.contains(null, "z"));
}
/**
* Tests for {@link LazyList#contains(Object, Object)}
*/
@Test
public void testContains_NonListInput() {
String input = "a";
assertFalse(LazyList.contains(input, "z"));
assertTrue(LazyList.contains(input, "a"));
}
/**
* Tests for {@link LazyList#contains(Object, Object)}
*/
@Test
public void testContains_LazyListInput() {
Object input = LazyList.add(null, "a");
input = LazyList.add(input, "b");
input = LazyList.add(input, "c");
assertFalse(LazyList.contains(input, "z"));
assertTrue(LazyList.contains(input, "a"));
assertTrue(LazyList.contains(input, "b"));
}
/**
* Tests for {@link LazyList#contains(Object, Object)}
*/
@Test
public void testContains_GenericListInput() {
List<String> input = new ArrayList<String>();
input.add("a");
input.add("b");
input.add("c");
assertFalse(LazyList.contains(input, "z"));
assertTrue(LazyList.contains(input, "a"));
assertTrue(LazyList.contains(input, "b"));
}
/**
* Tests for {@link LazyList#clone(Object)}
*/
@Test
public void testClone_NullInput() {
Object input = null;
Object list = LazyList.clone(input);
assertNull(list);
}
/**
* Tests for {@link LazyList#clone(Object)}
*/
@Test
public void testClone_NonListInput() {
String input = "a";
Object list = LazyList.clone(input);
assertNotNull(list);
assertTrue("Should be the same object", input == list);
}
/**
* Tests for {@link LazyList#clone(Object)}
*/
@Test
public void testClone_LazyListInput() {
Object input = LazyList.add(null, "a");
input = LazyList.add(input, "b");
input = LazyList.add(input, "c");
Object list = LazyList.clone(input);
assertNotNull(list);
assertTrue("Should be a List object", list instanceof List);
assertFalse("Should NOT be the same object", input == list);
assertEquals(3, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
assertEquals("b", LazyList.get(list, 1));
assertEquals("c", LazyList.get(list, 2));
}
/**
* Tests for {@link LazyList#clone(Object)}
*/
@Test
public void testClone_GenericListInput() {
List<String> input = new ArrayList<String>();
input.add("a");
input.add("b");
input.add("c");
// TODO: decorate the .clone(Object) method to return
// the same generic object element type
Object list = LazyList.clone(input);
assertNotNull(list);
assertTrue("Should be a List object", list instanceof List);
assertFalse("Should NOT be the same object", input == list);
assertEquals(3, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
assertEquals("b", LazyList.get(list, 1));
assertEquals("c", LazyList.get(list, 2));
}
/**
* Tests for {@link LazyList#toString(Object)}
*/
@Test
public void testToString_NullInput() {
Object input = null;
assertEquals("[]", LazyList.toString(input));
}
/**
* Tests for {@link LazyList#toString(Object)}
*/
@Test
public void testToString_NonListInput() {
String input = "a";
assertEquals("[a]", LazyList.toString(input));
}
/**
* Tests for {@link LazyList#toString(Object)}
*/
@Test
public void testToString_LazyListInput() {
Object input = LazyList.add(null, "a");
assertEquals("[a]", LazyList.toString(input));
input = LazyList.add(input, "b");
input = LazyList.add(input, "c");
assertEquals("[a, b, c]", LazyList.toString(input));
}
/**
* Tests for {@link LazyList#toString(Object)}
*/
@Test
public void testToString_GenericListInput() {
List<String> input = new ArrayList<String>();
input.add("a");
assertEquals("[a]", LazyList.toString(input));
input.add("b");
input.add("c");
assertEquals("[a, b, c]", LazyList.toString(input));
}
/**
* Tests for {@link LazyList#iterator(Object)}
*/
@Test
public void testIterator_NullInput() {
Iterator<?> iter = LazyList.iterator(null);
assertNotNull(iter);
assertFalse(iter.hasNext());
}
/**
* Tests for {@link LazyList#iterator(Object)}
*/
@Test
public void testIterator_NonListInput() {
String input = "a";
Iterator<?> iter = LazyList.iterator(input);
assertNotNull(iter);
assertTrue(iter.hasNext());
assertEquals("a", iter.next());
assertFalse(iter.hasNext());
}
/**
* Tests for {@link LazyList#iterator(Object)}
*/
@Test
public void testIterator_LazyListInput() {
Object input = LazyList.add(null, "a");
input = LazyList.add(input, "b");
input = LazyList.add(input, "c");
Iterator<?> iter = LazyList.iterator(input);
assertNotNull(iter);
assertTrue(iter.hasNext());
assertEquals("a", iter.next());
assertEquals("b", iter.next());
assertEquals("c", iter.next());
assertFalse(iter.hasNext());
}
/**
* Tests for {@link LazyList#iterator(Object)}
*/
@Test
public void testIterator_GenericListInput() {
List<String> input = new ArrayList<String>();
input.add("a");
input.add("b");
input.add("c");
Iterator<String> iter = LazyList.iterator(input);
assertNotNull(iter);
assertTrue(iter.hasNext());
assertEquals("a", iter.next());
assertEquals("b", iter.next());
assertEquals("c", iter.next());
assertFalse(iter.hasNext());
}
/**
* Tests for {@link LazyList#listIterator(Object)}
*/
@Test
public void testListIterator_NullInput() {
ListIterator<?> iter = LazyList.listIterator(null);
assertNotNull(iter);
assertFalse(iter.hasNext());
assertFalse(iter.hasPrevious());
}
/**
* Tests for {@link LazyList#listIterator(Object)}
*/
@Test
public void testListIterator_NonListInput() {
String input = "a";
ListIterator<?> iter = LazyList.listIterator(input);
assertNotNull(iter);
assertTrue(iter.hasNext());
assertFalse(iter.hasPrevious());
assertEquals("a", iter.next());
assertFalse(iter.hasNext());
assertTrue(iter.hasPrevious());
}
/**
* Tests for {@link LazyList#listIterator(Object)}
*/
@Test
public void testListIterator_LazyListInput() {
Object input = LazyList.add(null, "a");
input = LazyList.add(input, "b");
input = LazyList.add(input, "c");
ListIterator<?> iter = LazyList.listIterator(input);
assertNotNull(iter);
assertTrue(iter.hasNext());
assertFalse(iter.hasPrevious());
assertEquals("a", iter.next());
assertEquals("b", iter.next());
assertEquals("c", iter.next());
assertFalse(iter.hasNext());
assertTrue(iter.hasPrevious());
assertEquals("c", iter.previous());
assertEquals("b", iter.previous());
assertEquals("a", iter.previous());
assertFalse(iter.hasPrevious());
}
/**
* Tests for {@link LazyList#listIterator(Object)}
*/
@Test
public void testListIterator_GenericListInput() {
List<String> input = new ArrayList<String>();
input.add("a");
input.add("b");
input.add("c");
ListIterator<?> iter = LazyList.listIterator(input);
assertNotNull(iter);
assertTrue(iter.hasNext());
assertFalse(iter.hasPrevious());
assertEquals("a", iter.next());
assertEquals("b", iter.next());
assertEquals("c", iter.next());
assertFalse(iter.hasNext());
assertTrue(iter.hasPrevious());
assertEquals("c", iter.previous());
assertEquals("b", iter.previous());
assertEquals("a", iter.previous());
assertFalse(iter.hasPrevious());
}
/**
* Tests for {@link ArrayUtils#asMutableList(Object[])}
*/
@Test
public void testArray2List_NullInput() {
Object input[] = null;
Object list = ArrayUtils.asMutableList(input);
assertNotNull(list);
assertTrue("Should be a List object", list instanceof List);
assertEquals(0, LazyList.size(list));
}
/**
* Tests for {@link ArrayUtils#asMutableList(Object[])}
*/
@Test
public void testArray2List_EmptyInput() {
String input[] = new String[0];
Object list = ArrayUtils.asMutableList(input);
assertNotNull(list);
assertTrue("Should be a List object", list instanceof List);
assertEquals(0, LazyList.size(list));
}
/**
* Tests for {@link ArrayUtils#asMutableList(Object[])}
*/
@Test
public void testArray2List_SingleInput() {
String input[] = new String[] { "a" };
Object list = ArrayUtils.asMutableList(input);
assertNotNull(list);
assertTrue("Should be a List object", list instanceof List);
assertEquals(1, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
}
/**
* Tests for {@link ArrayUtils#asMutableList(Object[])}
*/
@Test
public void testArray2List_MultiInput() {
String input[] = new String[] { "a", "b", "c" };
Object list = ArrayUtils.asMutableList(input);
assertNotNull(list);
assertTrue("Should be a List object", list instanceof List);
assertEquals(3, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
assertEquals("b", LazyList.get(list, 1));
assertEquals("c", LazyList.get(list, 2));
}
/**
* Tests for {@link ArrayUtils#asMutableList(Object[])}
*/
@Test
public void testArray2List_GenericsInput() {
String input[] = new String[] { "a", "b", "c" };
// Test the Generics definitions for array2List
List<String> list = ArrayUtils.asMutableList(input);
assertNotNull(list);
assertTrue("Should be a List object", list instanceof List);
assertEquals(3, LazyList.size(list));
assertEquals("a", LazyList.get(list, 0));
assertEquals("b", LazyList.get(list, 1));
assertEquals("c", LazyList.get(list, 2));
}
/**
* Tests for {@link ArrayUtils#addToArray(Object[], Object, Class)}
*/
@Test
public void testAddToArray_NullInput_NullItem() {
Object input[] = null;
Object arr[] = ArrayUtils.addToArray(input, null, Object.class);
assertNotNull(arr);
if (STRICT) {
// Adding null item to array should result in nothing added?
assertEquals(0, arr.length);
} else {
assertEquals(1, arr.length);
}
}
/**
* Tests for {@link ArrayUtils#addToArray(Object[], Object, Class)}
*/
@Test
public void testAddToArray_NullNullNull() {
// NPE if item && type are both null.
Assume.assumeTrue(STRICT);
// Harsh test case.
Object input[] = null;
Object arr[] = ArrayUtils.addToArray(input, null, null);
assertNotNull(arr);
if (STRICT) {
// Adding null item to array should result in nothing added?
assertEquals(0, arr.length);
} else {
assertEquals(1, arr.length);
}
}
/**
* Tests for {@link ArrayUtils#addToArray(Object[], Object, Class)}
*/
@Test
public void testAddToArray_NullInput_SimpleItem() {
Object input[] = null;
Object arr[] = ArrayUtils.addToArray(input, "a", String.class);
assertNotNull(arr);
assertEquals(1, arr.length);
assertEquals("a", arr[0]);
// Same test, but with an undefined type
arr = ArrayUtils.addToArray(input, "b", null);
assertNotNull(arr);
assertEquals(1, arr.length);
assertEquals("b", arr[0]);
}
/**
* Tests for {@link ArrayUtils#addToArray(Object[], Object, Class)}
*/
@Test
public void testAddToArray_EmptyInput_NullItem() {
String input[] = new String[0];
String arr[] = ArrayUtils.addToArray(input, null, Object.class);
assertNotNull(arr);
if (STRICT) {
// Adding null item to array should result in nothing added?
assertEquals(0, arr.length);
} else {
assertEquals(1, arr.length);
}
}
/**
* Tests for {@link ArrayUtils#addToArray(Object[], Object, Class)}
*/
@Test
public void testAddToArray_EmptyInput_SimpleItem() {
String input[] = new String[0];
String arr[] = ArrayUtils.addToArray(input, "a", String.class);
assertNotNull(arr);
assertEquals(1, arr.length);
assertEquals("a", arr[0]);
}
/**
* Tests for {@link ArrayUtils#addToArray(Object[], Object, Class)}
*/
@Test
public void testAddToArray_SingleInput_NullItem() {
String input[] = new String[] { "z" };
String arr[] = ArrayUtils.addToArray(input, null, Object.class);
assertNotNull(arr);
if (STRICT) {
// Should a null item be added to an array?
assertEquals(1, arr.length);
} else {
assertEquals(2, arr.length);
assertEquals("z", arr[0]);
assertEquals(null, arr[1]);
}
}
/**
* Tests for {@link ArrayUtils#addToArray(Object[], Object, Class)}
*/
@Test
public void testAddToArray_SingleInput_SimpleItem() {
String input[] = new String[] { "z" };
String arr[] = ArrayUtils.addToArray(input, "a", String.class);
assertNotNull(arr);
assertEquals(2, arr.length);
assertEquals("z", arr[0]);
assertEquals("a", arr[1]);
}
/**
* Tests for {@link ArrayUtils#removeFromArray(Object[], Object)}
*/
@Test
public void testRemoveFromArray_NullInput_NullItem() {
Object input[] = null;
Object arr[] = ArrayUtils.removeFromArray(input, null);
assertNull(arr);
}
/**
* Tests for {@link ArrayUtils#removeFromArray(Object[], Object)}
*/
@Test
public void testRemoveFromArray_NullInput_SimpleItem() {
Object input[] = null;
Object arr[] = ArrayUtils.removeFromArray(input, "a");
assertNull(arr);
}
/**
* Tests for {@link ArrayUtils#removeFromArray(Object[], Object)}
*/
@Test
public void testRemoveFromArray_EmptyInput_NullItem() {
String input[] = new String[0];
String arr[] = ArrayUtils.removeFromArray(input, null);
assertNotNull("Should not be null", arr);
assertEquals(0, arr.length);
}
/**
* Tests for {@link ArrayUtils#removeFromArray(Object[], Object)}
*/
@Test
public void testRemoveFromArray_EmptyInput_SimpleItem() {
String input[] = new String[0];
String arr[] = ArrayUtils.removeFromArray(input, "a");
assertNotNull("Should not be null", arr);
assertEquals(0, arr.length);
}
/**
* Tests for {@link ArrayUtils#removeFromArray(Object[], Object)}
*/
@Test
public void testRemoveFromArray_SingleInput() {
String input[] = new String[] { "a" };
String arr[] = ArrayUtils.removeFromArray(input, null);
assertNotNull("Should not be null", arr);
assertEquals(1, arr.length);
assertEquals("a", arr[0]);
// Remove actual item
arr = ArrayUtils.removeFromArray(input, "a");
assertNotNull("Should not be null", arr);
assertEquals(0, arr.length);
}
/**
* Tests for {@link ArrayUtils#removeFromArray(Object[], Object)}
*/
@Test
public void testRemoveFromArray_MultiInput() {
String input[] = new String[] { "a", "b", "c" };
String arr[] = ArrayUtils.removeFromArray(input, null);
assertNotNull("Should not be null", arr);
assertEquals(3, arr.length);
assertEquals("a", arr[0]);
assertEquals("b", arr[1]);
assertEquals("c", arr[2]);
// Remove an actual item
arr = ArrayUtils.removeFromArray(input, "b");
assertNotNull("Should not be null", arr);
assertEquals(2, arr.length);
assertEquals("a", arr[0]);
assertEquals("c", arr[1]);
}
}