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 CollectAsTest { private CollectAs<String,Integer> query; private Integer[] array; @Test public void testEmptyArray() { query = CollectAs.from(Integer.class); for (EachAs<String,Integer> each: query) each.yield = each.value.length(); array = query.getResultArray(); assertNotNull(array); assertEquals(0, array.length); } @Test public void testArrayWithOneElement() { query = CollectAs.from(Integer.class, "the"); for (EachAs<String,Integer> each: query) each.yield = each.value.length(); array = query.getResultArray(); assertNotNull(array); assertEquals(1, array.length); assertEquals(3, (int) array[0]); } @Test public void testArrayWithThreeElement() { query = CollectAs.from(Integer.class, "the", "quick", "lazy"); for (EachAs<String,Integer> each: query) each.yield = each.value.length(); array = query.getResultArray(); assertNotNull(array); assertEquals(3, array.length); assertEquals(3, (int) array[0]); assertEquals(5, (int) array[1]); assertEquals(4, (int) array[2]); } @Test public void testArrayIterator() { query = CollectAs.from(Integer.class, "the", "quick", "lazy"); Iterator<EachAs<String,Integer>> iter = query.iterator(); iter.hasNext(); iter.next().yield = 3; iter.hasNext(); iter.next().yield = 5; iter.hasNext(); iter.next().yield = 4; assertFalse(iter.hasNext()); array = query.getResultArray(); assertNotNull(array); assertEquals(3, array.length); assertEquals(3, (int) array[0]); assertEquals(5, (int) array[1]); assertEquals(4, (int) array[2]); } @Test public void testArrayIterator2() { query = CollectAs.from(Integer.class, "the", "quick", "lazy"); Iterator<EachAs<String,Integer>> iter = query.iterator(); iter.next().yield = 3; iter.next().yield = 5; iter.next().yield = 4; array = query.getResultArray(); assertNotNull(array); assertEquals(3, array.length); assertEquals(3, (int) array[0]); assertEquals(5, (int) array[1]); assertEquals(4, (int) array[2]); } @Test public void testEmptyCollection() { query = CollectAs.from(Integer.class, Arrays.<String>asList()); for (EachAs<String,Integer> each: query) each.yield = each.value.length(); array = query.getResultArray(); assertNotNull(array); assertEquals(0, array.length); } @Test public void testCollectionWithOneElement() { query = CollectAs.from(Integer.class, Arrays.<String>asList("foo")); for (EachAs<String,Integer> each: query) each.yield = each.value.length(); array = query.getResultArray(); assertNotNull(array); assertEquals(1, array.length); assertEquals(3, (int) array[0]); } @Test public void testCollectionWithThreeElement() { query = CollectAs.from(Integer.class, Arrays.<String>asList("the", "quick", "lazy")); for (EachAs<String,Integer> each: query) each.yield = each.value.length(); array = query.getResultArray(); assertNotNull(array); assertEquals(3, array.length); assertEquals(3, (int) array[0]); assertEquals(5, (int) array[1]); assertEquals(4, (int) array[2]); } @Test public void testCollectionIterator() { query = CollectAs.from(Integer.class, Arrays.<String>asList("foo", "bar", "qux")); Iterator<EachAs<String,Integer>> iter = query.iterator(); iter.hasNext(); iter.next().yield = 3; iter.hasNext(); iter.next().yield = 5; iter.hasNext(); iter.next().yield = 4; assertFalse(iter.hasNext()); array = query.getResultArray(); assertNotNull(array); assertEquals(3, array.length); assertEquals(3, (int) array[0]); assertEquals(5, (int) array[1]); assertEquals(4, (int) array[2]); } @Test public void testCollectionIterator2() { query = CollectAs.from(Integer.class, Arrays.<String>asList("foo", "bar", "qux")); Iterator<EachAs<String,Integer>> iter = query.iterator(); iter.next().yield = 3; iter.next().yield = 5; iter.next().yield = 4; array = query.getResultArray(); assertNotNull(array); assertEquals(3, array.length); assertEquals(3, (int) array[0]); assertEquals(5, (int) array[1]); assertEquals(4, (int) array[2]); } }