@Test public void testRange() assertRange(0, 0); assertRange(0, 0.1); assertRange(-0.1, 0.1); assertRange(Double.NEGATIVE_INFINITY, 0); assertRange(Float.NEGATIVE_INFINITY, 0); assertRange(Double.NEGATIVE_INFINITY, -1.0 * Double.MAX_VALUE); assertRange(Float.NEGATIVE_INFINITY, -1.0 * Double.MAX_VALUE); assertRange(Float.NEGATIVE_INFINITY, -1.0 * Float.MAX_VALUE); assertRange(Double.MAX_VALUE, Double.POSITIVE_INFINITY); assertRange(Float.MAX_VALUE, Double.POSITIVE_INFINITY); assertRange(Double.MAX_VALUE, Float.POSITIVE_INFINITY); assertRange(Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY); assertRange(Double.NEGATIVE_INFINITY, Float.POSITIVE_INFINITY); assertRange(Float.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY); assertThatThrownBy(() -> new DoubleRange(Double.NaN, 0)).isInstanceOf(IllegalArgumentException.class); assertThatThrownBy(() -> new DoubleRange(0, Double.NaN)).isInstanceOf(IllegalArgumentException.class);