@Test public void iterator() { Interval zero = Interval.zero(); Iterator<Integer> zeroIterator = zero.iterator(); Assert.assertTrue(zeroIterator.hasNext()); Assert.assertEquals(Integer.valueOf(0), zeroIterator.next()); Assert.assertFalse(zeroIterator.hasNext()); Interval oneToFive = Interval.oneTo(5); Iterator<Integer> oneToFiveIterator = oneToFive.iterator(); for (int i = 1; i < 6; i++) { Assert.assertTrue(oneToFiveIterator.hasNext()); Assert.assertEquals(Integer.valueOf(i), oneToFiveIterator.next()); } Verify.assertThrows(NoSuchElementException.class, (Runnable) oneToFiveIterator::next); Interval threeToNegativeThree = Interval.fromTo(3, -3); Iterator<Integer> threeToNegativeThreeIterator = threeToNegativeThree.iterator(); for (int i = 3; i > -4; i--) { Assert.assertTrue(threeToNegativeThreeIterator.hasNext()); Assert.assertEquals(Integer.valueOf(i), threeToNegativeThreeIterator.next()); } Verify.assertThrows( NoSuchElementException.class, (Runnable) threeToNegativeThreeIterator::next); Verify.assertThrows( UnsupportedOperationException.class, () -> Interval.zeroTo(10).iterator().remove()); }
@Test public void forEachWithIndex() { IntegerSum sum = new IntegerSum(0); Interval.oneTo(5) .forEachWithIndex((ObjectIntProcedure<Integer>) (each, index) -> sum.add(each + index)); Assert.assertEquals(25, sum.getIntSum()); IntegerSum zeroSum = new IntegerSum(0); Interval.fromTo(0, -4) .forEachWithIndex((ObjectIntProcedure<Integer>) (each, index) -> zeroSum.add(each + index)); Assert.assertEquals(0, zeroSum.getIntSum()); Verify.assertThrows( IndexOutOfBoundsException.class, () -> Interval.zeroTo(10).forEachWithIndex(null, -1, 10)); }
@Test public void contains() { Assert.assertTrue(Interval.zero().contains(0)); Assert.assertTrue(Interval.oneTo(5).containsAll(1, 5)); Assert.assertTrue(Interval.oneTo(5).containsNone(6, 7)); Assert.assertFalse(Interval.oneTo(5).containsAll(1, 6)); Assert.assertFalse(Interval.oneTo(5).containsNone(1, 6)); Assert.assertFalse(Interval.oneTo(5).contains(0)); Assert.assertTrue(Interval.fromTo(-1, -5).containsAll(-1, -5)); Assert.assertFalse(Interval.fromTo(-1, -5).contains(1)); Assert.assertTrue(Interval.zero().contains(Integer.valueOf(0))); Assert.assertFalse(Interval.oneTo(5).contains(Integer.valueOf(0))); Assert.assertFalse(Interval.fromTo(-1, -5).contains(Integer.valueOf(1))); Assert.assertFalse(Interval.zeroTo(5).contains(new Object())); }
@Test public void equalsAndHashCode() { Interval interval1 = Interval.oneTo(5); Interval interval2 = Interval.oneTo(5); Interval interval3 = Interval.zeroTo(5); Verify.assertPostSerializedEqualsAndHashCode(interval1); Verify.assertEqualsAndHashCode(interval1, interval2); Assert.assertNotEquals(interval1, interval3); Assert.assertNotEquals(interval3, interval1); Verify.assertEqualsAndHashCode(Interval.fromToBy(1, 5, 2), Interval.fromToBy(1, 6, 2)); Verify.assertEqualsAndHashCode(FastList.newListWith(1, 2, 3), Interval.fromTo(1, 3)); Verify.assertEqualsAndHashCode(FastList.newListWith(3, 2, 1), Interval.fromTo(3, 1)); Assert.assertNotEquals(FastList.newListWith(1, 2, 3, 4), Interval.fromTo(1, 3)); Assert.assertNotEquals(FastList.newListWith(1, 2, 4), Interval.fromTo(1, 3)); Assert.assertNotEquals(FastList.newListWith(3, 2, 0), Interval.fromTo(3, 1)); Verify.assertEqualsAndHashCode(FastList.newListWith(-1, -2, -3), Interval.fromTo(-1, -3)); }