package uk.ac.rhul.cs.utils; import static org.junit.Assert.*; import java.util.ListIterator; import org.junit.Test; public class IntegerRangeTest { @Test public void testSize() { assertEquals(new IntegerRange(0, 10).size(), 10); assertEquals(new IntegerRange(0, 5).size(), 5); assertEquals(new IntegerRange(3, 42).size(), 39); assertEquals(new IntegerRange(3, 42, 2).size(), 20); assertEquals(new IntegerRange(3, 42, 7).size(), 6); assertEquals(new IntegerRange(3, 4, 7).size(), 1); assertEquals(new IntegerRange(42, 3).size(), 0); assertEquals(new IntegerRange(42, 3, -1).size(), 39); assertEquals(new IntegerRange(42, 3, -3).size(), 13); assertEquals(new IntegerRange(42, 42).size(), 0); } @Test public void testGetInt() { IntegerRange range = new IntegerRange(3, 42); for (int i = 0; i < range.size(); i++) assertEquals((int)range.get(i), 3+i); range = new IntegerRange(3, 42, 5); for (int i = 0; i < range.size(); i++) assertEquals((int)range.get(i), 3+i*5); range = new IntegerRange(42, 3, -4); for (int i = 0; i < range.size(); i++) assertEquals((int)range.get(i), 42-i*4); } @Test public void testIterator() { IntegerRange range = new IntegerRange(3, 42); int j = 0; for (int i: range) { assertEquals(i, 3 + j); j++; } assertEquals(39, j); range = new IntegerRange(3, 42, 7); j = 0; for (int i: range) { assertEquals(i, 3 + 7*j); j++; } assertEquals(6, j); range = new IntegerRange(6, -6, -2); j = 0; for (int i: range) { assertEquals(i, 6 - 2*j); j++; } assertEquals(6, j); } @Test public void testListIterator() { IntegerRange range = new IntegerRange(3, 42, 3); int j = 0; ListIterator<Integer> it = range.listIterator(); while (it.hasNext()) { assertEquals(j, it.nextIndex()); assertEquals(3+j*3, (int)it.next()); j++; } assertEquals(range.size(), j); while (it.hasPrevious()) { j--; assertEquals(j, it.previousIndex()); assertEquals(3+j*3, (int)it.previous()); } assertEquals(0, j); } }