package org.quaere;
import org.junit.Test;
import java.util.Iterator;
import java.math.BigInteger;
import java.math.BigDecimal;
import junit.framework.Assert;
public class RangeTest {
@Test
public void canCreateByteRange() {
NumberRange<Byte> r = new NumberRange<Byte>((byte) 0, (byte) 10);
Iterator<Byte> riter = r.iterator();
for (Byte i = 0; i <= 10; i++) {
Assert.assertEquals(i, riter.next());
}
}
@Test
public void canCreateShortRange() {
NumberRange<Short> r = new NumberRange<Short>((short) 0, (short) 10);
Iterator<Short> riter = r.iterator();
for (Short i = 0; i <= 10; i++) {
Assert.assertEquals(i, riter.next());
}
}
@Test
public void canCreateIntegerRange() {
NumberRange<Integer> r = new NumberRange<Integer>(0, 10);
Iterator<Integer> riter = r.iterator();
for (Integer i = 0; i <= 10; i++) {
Assert.assertEquals(i, riter.next());
}
}
@Test
public void canCreateLongRange() {
NumberRange<Long> r = new NumberRange<Long>(0L, 10L);
Iterator<Long> riter = r.iterator();
for (Long i = 0L; i <= 10L; i++) {
Assert.assertEquals(i, riter.next());
}
}
@Test
public void canCreateFloatRange() {
NumberRange<Float> r = new NumberRange<Float>(0.4F, 10F);
Iterator<Float> riter = r.iterator();
for (Float i = 0.4F; i <= 10L; i++) {
Assert.assertEquals(i, riter.next());
}
}
@Test
public void canCreateDoubleRange() {
NumberRange<Double> r = new NumberRange<Double>(0.4D, 10D);
Iterator<Double> riter = r.iterator();
for (Double i = 0.4D; i <= 10D; i++) {
Assert.assertEquals(i, riter.next());
}
}
@Test
public void canCreateBigIntegerRange() {
NumberRange<BigInteger> r = new NumberRange<BigInteger>(BigInteger.ZERO, BigInteger.TEN);
Iterator<BigInteger> riter = r.iterator();
for (Long i = 0L; i <= 10L; i++) {
Assert.assertEquals(BigInteger.valueOf(i), riter.next());
}
}
@Test
public void canCreateBigDecimalRange() {
NumberRange<BigDecimal> r = new NumberRange<BigDecimal>(BigDecimal.valueOf(0.4D), BigDecimal.TEN);
Iterator<BigDecimal> riter = r.iterator();
for (Double i = 0.4; i <= 10D; i++) {
Assert.assertEquals(BigDecimal.valueOf(i), riter.next());
}
}
@Test
public void rangeEndsAtEnd() {
NumberRange<Integer> r = new NumberRange<Integer>(0, 1);
Iterator<Integer> riter = r.iterator();
riter.next();
riter.next();
Assert.assertFalse(riter.hasNext());
}
@Test(expected = ArrayIndexOutOfBoundsException.class)
public void arrayIndexOutOfBoundsExceptionIsThrownWhenIteratorPassesEndOfRange() {
NumberRange<Integer> r = new NumberRange<Integer>(0, 1);
Iterator<Integer> riter = r.iterator();
riter.next();
riter.next();
riter.next();
}
}