package org.springframework.roo.support.util;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.junit.Test;
/**
* Unit test of {@link CollectionUtils}
*
* @author Andrew Swan
* @since 1.2.0
*/
public class CollectionUtilsTest {
private static class Child extends Parent {
}
private static class Parent {
@Override
public String toString() {
return getClass().getSimpleName();
}
}
// A simple filter for testing the filtering methods
private static final Filter<String> NON_BLANK_FILTER = new Filter<String>() {
public boolean include(final String instance) {
return StringUtils.isNotBlank(instance);
}
};
@Test
public void testFilterNonNullIterableWithNonNullFilter() {
// Set up
final Iterable<String> inputs = Arrays.asList("a", "", null, "b");
// Invoke
final List<? extends String> results = CollectionUtils.filter(inputs, NON_BLANK_FILTER);
// Check
assertEquals(Arrays.asList("a", "b"), results);
}
@Test
public void testFilterNonNullIterableWithNullFilter() {
// Set up
final Iterable<String> inputs = Arrays.asList("a", "");
// Invoke
final List<? extends String> results = CollectionUtils.filter(inputs, null);
// Check
assertEquals(inputs, results);
}
@Test
public void testFilterNullCollection() {
assertEquals(0, CollectionUtils.filter(null, NON_BLANK_FILTER).size());
}
@Test
public void testFirstElementOfEmptyCollection() {
assertNull(CollectionUtils.firstElementOf(Collections.emptySet()));
}
@Test
public void testFirstElementOfMultiElementCollection() {
final String[] members = {"x", "y", "z"};
assertEquals(members[0], CollectionUtils.firstElementOf(Arrays.asList(members)));
}
@Test
public void testFirstElementOfNullCollection() {
assertNull(CollectionUtils.firstElementOf(null));
}
@Test
public void testFirstElementOfSingleElementCollection() {
final String member = "x";
assertEquals(member, CollectionUtils.firstElementOf(Collections.singleton(member)));
}
@Test
public void testPopulateNonNullCollectionWithNonNullCollection() {
// Set up
final Collection<Parent> originalCollection = new ArrayList<Parent>();
originalCollection.add(new Parent());
final Child child = new Child();
// Invoke
final Collection<Parent> result =
CollectionUtils.populate(originalCollection, Arrays.asList(child));
// Check
assertEquals(Collections.singletonList(child), result);
}
@Test
public void testPopulateNonNullCollectionWithNullCollection() {
// Set up
final Collection<Parent> collection = new ArrayList<Parent>();
collection.add(new Parent());
// Invoke
final Collection<Parent> result = CollectionUtils.populate(collection, null);
// Check
assertEquals(0, result.size());
}
@Test
public void testPopulateNullCollectionWithNullCollection() {
assertNull(CollectionUtils.populate(null, null));
}
}