package ch.akuhn.foreach;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import java.util.Arrays;
import java.util.Iterator;
import org.junit.Test;
public class CollectTest {
private Collect<String> query;
private String[] array;
@Test
public void testEmptyArray() {
query = Collect.from();
for (Each<String> each: query) each.yield = each.value.toUpperCase();
array = query.getResultArray();
assertNotNull(array);
assertEquals(0, array.length);
}
@Test
public void testArrayWithOneElement() {
query = Collect.from("foo");
for (Each<String> each: query) each.yield = each.value.toUpperCase();
array = query.getResultArray();
assertNotNull(array);
assertEquals(1, array.length);
assertEquals("FOO", array[0]);
}
@Test
public void testArrayWithThreeElement() {
query = Collect.from("foo", "bar", "qux");
for (Each<String> each: query) each.yield = each.value.toUpperCase();
array = query.getResultArray();
assertNotNull(array);
assertEquals(3, array.length);
assertEquals("FOO", array[0]);
assertEquals("BAR", array[1]);
assertEquals("QUX", array[2]);
}
@Test
public void testArrayIterator() {
query = Collect.from("foo", "bar", "qux");
Iterator<Each<String>> iter = query.iterator();
iter.hasNext();
iter.next().yield = "FOO";
iter.hasNext();
iter.next().yield = "BAR";
iter.hasNext();
iter.next().yield = "QUX";
assertFalse(iter.hasNext());
array = query.getResultArray();
assertNotNull(array);
assertEquals(3, array.length);
assertEquals("FOO", array[0]);
assertEquals("BAR", array[1]);
assertEquals("QUX", array[2]);
}
@Test
public void testArrayIterator2() {
query = Collect.from("foo", "bar", "qux");
Iterator<Each<String>> iter = query.iterator();
iter.next().yield = "FOO";
iter.next().yield = "BAR";
iter.next().yield = "QUX";
array = query.getResultArray();
assertNotNull(array);
assertEquals(3, array.length);
assertEquals("FOO", array[0]);
assertEquals("BAR", array[1]);
assertEquals("QUX", array[2]);
}
@Test
public void testEmptyCollection() {
query = Collect.from(Arrays.<String>asList());
for (Each<String> each: query) each.yield = each.value.toUpperCase();
array = query.getResultArray(String.class);
assertNotNull(array);
assertEquals(0, array.length);
}
@Test
public void testCollectionWithOneElement() {
query = Collect.from(Arrays.<String>asList("foo"));
for (Each<String> each: query) each.yield = each.value.toUpperCase();
array = query.getResultArray();
assertNotNull(array);
assertEquals(1, array.length);
assertEquals("FOO", array[0]);
}
@Test
public void testCollectionWithThreeElement() {
query = Collect.from(Arrays.<String>asList("foo", "bar", "qux"));
for (Each<String> each: query) each.yield = each.value.toUpperCase();
array = query.getResultArray();
assertNotNull(array);
assertEquals(3, array.length);
assertEquals("FOO", array[0]);
assertEquals("BAR", array[1]);
assertEquals("QUX", array[2]);
}
@Test
public void testCollectionIterator() {
query = Collect.from(Arrays.<String>asList("foo", "bar", "qux"));
Iterator<Each<String>> iter = query.iterator();
iter.hasNext();
iter.next().yield = "FOO";
iter.hasNext();
iter.next().yield = "BAR";
iter.hasNext();
iter.next().yield = "QUX";
assertFalse(iter.hasNext());
array = query.getResultArray();
assertNotNull(array);
assertEquals(3, array.length);
assertEquals("FOO", array[0]);
assertEquals("BAR", array[1]);
assertEquals("QUX", array[2]);
}
@Test
public void testCollectionIterator2() {
query = Collect.from(Arrays.<String>asList("foo", "bar", "qux"));
Iterator<Each<String>> iter = query.iterator();
iter.next().yield = "FOO";
iter.next().yield = "BAR";
iter.next().yield = "QUX";
array = query.getResultArray();
assertNotNull(array);
assertEquals(3, array.length);
assertEquals("FOO", array[0]);
assertEquals("BAR", array[1]);
assertEquals("QUX", array[2]);
}
}