package de.undercouch.citeproc;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import org.junit.Test;
import de.undercouch.citeproc.csl.CSLItemDataBuilder;
/**
* Tests for {@link CompoundItemDataProvider}
* @author Michel Kraemer
*/
public class CompoundItemDataProviderTest {
private final ListItemDataProvider l1 = new ListItemDataProvider(
new CSLItemDataBuilder().id("A").title("The A").build(),
new CSLItemDataBuilder().id("B").title("The B").build());
private final ListItemDataProvider l2 = new ListItemDataProvider(
new CSLItemDataBuilder().id("C").title("The C").build(),
new CSLItemDataBuilder().id("D").title("The D").build(),
new CSLItemDataBuilder().id("E").title("The E").build());
/**
* Test if the compound provider can handle an empty list
*/
@Test
public void empty() {
CompoundItemDataProvider p = new CompoundItemDataProvider(
Collections.emptyList());
assertArrayEquals(new String[0], p.getIds());
assertNull(p.retrieveItem("ID"));
assertNull(p.retrieveItem(""));
assertNull(p.retrieveItem(null));
}
/**
* Test if the compound provider can handle a list with one
* {@link ListItemDataProvider}
*/
@Test
public void oneItemList() {
CompoundItemDataProvider p = new CompoundItemDataProvider(
Arrays.asList(l1));
assertArrayEquals(l1.getIds(), p.getIds());
assertNull(p.retrieveItem("ID"));
assertNull(p.retrieveItem(""));
assertNull(p.retrieveItem(null));
assertEquals(l1.retrieveItem("A"), p.retrieveItem("A"));
assertEquals(l1.retrieveItem("B"), p.retrieveItem("B"));
assertNull(p.retrieveItem("C"));
assertNull(p.retrieveItem("D"));
assertNull(p.retrieveItem("E"));
}
/**
* Test if the compound provider can handle a list with two
* {@link ListItemDataProvider}s
*/
@Test
public void twoItemList() {
CompoundItemDataProvider p = new CompoundItemDataProvider(
Arrays.asList(l1, l2));
ArrayList<String> a = new ArrayList<>();
a.addAll(Arrays.asList(l1.getIds()));
a.addAll(Arrays.asList(l2.getIds()));
assertEquals(a, Arrays.asList(p.getIds()));
assertNull(p.retrieveItem("ID"));
assertNull(p.retrieveItem(""));
assertNull(p.retrieveItem(null));
assertEquals(l1.retrieveItem("A"), p.retrieveItem("A"));
assertEquals(l1.retrieveItem("B"), p.retrieveItem("B"));
assertEquals(l2.retrieveItem("C"), p.retrieveItem("C"));
assertEquals(l2.retrieveItem("D"), p.retrieveItem("D"));
assertEquals(l2.retrieveItem("E"), p.retrieveItem("E"));
}
}