IntRangeUtil { public static int requireInRange(int val, int first, int lastExclusive) { if (val < first || val >= lastExclusive) { throw new IllegalArgumentException(val + IS_NOT_IN_THE_RANGE + first + ", " + lastExclusive + ")"); } return val; } private  IntRangeUtil(); static int requirePositive(int val); static int requireNegative(int val); static int requireZero(int val); static int requireNonPositive(int val); static int requireNonNegative(int val); static int requireNonZero(int val); static int requireEquals(int val, int otherVal); static int requireNotEquals(int val, int otherVal); static int requireInRange(int val, int first, int lastExclusive); static int requireInRangeClosed(int val, int first, int lastInclusive); static int requirePositive(int val, Function<String, E> exceptionConstructor); static int requireNegative(int val, Function<String, E> exceptionConstructor); static int requireZero(int val, Function<String, E> exceptionConstructor); static int requireNonPositive(int val, Function<String, E> exceptionConstructor); static int requireNonNegative(int val, Function<String, E> exceptionConstructor); static int requireNonZero(int val, Function<String, E> exceptionConstructor); static int requireEquals(int val, int otherVal, Function<String, E> exceptionConstructor); static int requireNotEquals(int val, int otherVal, Function<String, E> exceptionConstructor); static int requireInRange(int val, int first, int lastExclusive, Function<String, E> exceptionConstructor); static int requireInRangeClosed(int val, int first, int lastInclusive, Function<String, E> exceptionConstructor);  }
@Test void requireInRange() { final int first = -1; final int lastExclusive = 4; testHelper(l -> l >= first && l < lastExclusive, l -> IntRangeUtil.requireInRange(l, first, lastExclusive)); }
@Test void testRequireInRange() { assertEquals(0.0, IntRangeUtil.requireInRange(0, -1,1, RuntimeException::new)); }
@Test void testRequireInRange2() { assertThrows(RuntimeException.class, () -> IntRangeUtil.requireInRange(-1,0,1, RuntimeException::new)); }
@Test void testRequireInRange3() { assertThrows(RuntimeException.class, () -> IntRangeUtil.requireInRange(1,-1,0, RuntimeException::new)); }
@Test void testRequireInRange4() { assertThrows(RuntimeException.class, () -> IntRangeUtil.requireInRange(0,-1,0, RuntimeException::new)); }