package org.oddjob.values.types;
import java.util.Iterator;
import junit.framework.TestCase;
public class SequenceIterableTest extends TestCase {
public void testSimplePositiveSingleStep() {
SequenceIterable test = new SequenceIterable(1, 3, 1);
Iterator<Integer> it = test.iterator();
assertTrue(it.hasNext());
assertEquals(new Integer(1), it.next());
assertTrue(it.hasNext());
assertEquals(new Integer(2), it.next());
assertTrue(it.hasNext());
assertEquals(new Integer(3), it.next());
assertFalse(it.hasNext());
}
public void testSimpleNegativeSingleStep() {
SequenceIterable test = new SequenceIterable(-1, -3, -1);
Iterator<Integer> it = test.iterator();
assertTrue(it.hasNext());
assertEquals(new Integer(-1), it.next());
assertTrue(it.hasNext());
assertEquals(new Integer(-2), it.next());
assertTrue(it.hasNext());
assertEquals(new Integer(-3), it.next());
assertFalse(it.hasNext());
}
public void testAllZeroParameters() {
SequenceIterable test = new SequenceIterable(0, 0, 0);
Iterator<Integer> it = test.iterator();
assertTrue(it.hasNext());
assertEquals(new Integer(0), it.next());
assertTrue(it.hasNext());
assertEquals(new Integer(0), it.next());
}
public void testFromToZeroStepOne() {
SequenceIterable test = new SequenceIterable(0, 0, 1);
Iterator<Integer> it = test.iterator();
assertTrue(it.hasNext());
assertEquals(new Integer(0), it.next());
assertFalse(it.hasNext());
}
public void testToLessThanFromPositiveStep() {
SequenceIterable test = new SequenceIterable(0, -1, 1);
Iterator<Integer> it = test.iterator();
assertTrue(it.hasNext());
assertEquals(new Integer(0), it.next());
assertTrue(it.hasNext());
assertEquals(new Integer(1), it.next());
assertTrue(it.hasNext());
assertEquals(new Integer(2), it.next());
assertTrue(it.hasNext());
assertEquals(new Integer(3), it.next());
}
public void testBigSteps() {
SequenceIterable test = new SequenceIterable(0, 30, 10);
Iterator<Integer> it = test.iterator();
assertTrue(it.hasNext());
assertEquals(new Integer(0), it.next());
assertTrue(it.hasNext());
assertEquals(new Integer(10), it.next());
assertTrue(it.hasNext());
assertEquals(new Integer(20), it.next());
assertTrue(it.hasNext());
assertEquals(new Integer(30), it.next());
}
public void testLargeStep() {
SequenceIterable test = new SequenceIterable(1, 10, 20);
Iterator<Integer> it = test.iterator();
assertTrue(it.hasNext());
assertEquals(new Integer(1), it.next());
assertFalse(it.hasNext());
}
}