public void testCompare() { for (double x : VALUES) { for (double y : VALUES) { // note: spec requires only that the sign is the same assertEquals(x + ", " + y, Double.valueOf(x).compareTo(y), Doubles.compare(x, y)); } } }
public void testHashCode() { for (double value : VALUES) { assertEquals(((Double) value).hashCode(), Doubles.hashCode(value)); } }
public void testJoinNonTrivialDoubles() { assertEquals("", Doubles.join(",", EMPTY)); assertEquals("1.2", Doubles.join(",", 1.2)); assertEquals("1.3,2.4", Doubles.join(",", 1.3, 2.4)); assertEquals("1.42.53.6", Doubles.join("", 1.4, 2.5, 3.6)); }
public void testIsFinite() { for (double value : NUMBERS) { assertEquals(!(Double.isNaN(value) || Double.isInfinite(value)), Doubles.isFinite(value)); } }
private static void testSortDescending(double[] input, double[] expectedOutput) { input = Arrays.copyOf(input, input.length); Doubles.sortDescending(input); // GWT's Arrays.equals doesn't appear to handle NaN correctly, so test each element individually for (int i = 0; i < input.length; i++) { assertEquals(0, Double.compare(expectedOutput[i], input[i])); } }
private static void testSortDescending( double[] input, int fromIndex, int toIndex, double[] expectedOutput) { input = Arrays.copyOf(input, input.length); Doubles.sortDescending(input, fromIndex, toIndex); // GWT's Arrays.equals doesn't appear to handle NaN correctly, so test each element individually for (int i = 0; i < input.length; i++) { assertEquals(0, Double.compare(expectedOutput[i], input[i])); } }
public void testStringConverter_convert() { Converter<String, Double> converter = Doubles.stringConverter(); assertEquals((Double) 1.0, converter.convert("1.0")); assertEquals((Double) 0.0, converter.convert("0.0")); assertEquals((Double) (-1.0), converter.convert("-1.0")); assertEquals((Double) 1.0, converter.convert("1")); assertEquals((Double) 0.0, converter.convert("0")); assertEquals((Double) (-1.0), converter.convert("-1")); assertEquals((Double) 1e6, converter.convert("1e6")); assertEquals((Double) 1e-6, converter.convert("1e-6")); }
@GwtIncompatible // Double.toString returns different value in GWT. public void testJoin() { assertEquals("", Doubles.join(",", EMPTY)); assertEquals("1.0", Doubles.join(",", ARRAY1)); assertEquals("1.0,2.0", Doubles.join(",", (double) 1, (double) 2)); assertEquals("1.02.03.0", Doubles.join("", (double) 1, (double) 2, (double) 3)); }
public void testMax() { assertEquals(LEAST, Doubles.max(LEAST)); assertEquals(GREATEST, Doubles.max(GREATEST)); assertEquals( (double) 9, Doubles.max( (double) 8, (double) 6, (double) 7, (double) 5, (double) 3, (double) 0, (double) 9)); assertEquals(0.0, Doubles.max(-0.0, 0.0)); assertEquals(0.0, Doubles.max(0.0, -0.0)); assertEquals(GREATEST, Doubles.max(NUMBERS)); assertTrue(Double.isNaN(Doubles.max(VALUES))); }
public void testIndexOf() { assertEquals(-1, Doubles.indexOf(EMPTY, (double) 1)); assertEquals(-1, Doubles.indexOf(ARRAY1, (double) 2)); assertEquals(-1, Doubles.indexOf(ARRAY234, (double) 1)); assertEquals(0, Doubles.indexOf(new double[] {(double) -1}, (double) -1)); assertEquals(0, Doubles.indexOf(ARRAY234, (double) 2)); assertEquals(1, Doubles.indexOf(ARRAY234, (double) 3)); assertEquals(2, Doubles.indexOf(ARRAY234, (double) 4)); assertEquals( 1, Doubles.indexOf(new double[] {(double) 2, (double) 3, (double) 2, (double) 3}, (double) 3)); for (double value : NUMBERS) { assertEquals("" + value, 1, Doubles.indexOf(new double[] {5.0, value}, value)); } assertEquals(-1, Doubles.indexOf(new double[] {5.0, NaN}, NaN)); }
public void testMin() { assertEquals(LEAST, Doubles.min(LEAST)); assertEquals(GREATEST, Doubles.min(GREATEST)); assertEquals( (double) 0, Doubles.min( (double) 8, (double) 6, (double) 7, (double) 5, (double) 3, (double) 0, (double) 9)); assertEquals(-0.0, Doubles.min(-0.0, 0.0)); assertEquals(-0.0, Doubles.min(0.0, -0.0)); assertEquals(LEAST, Doubles.min(NUMBERS)); assertTrue(Double.isNaN(Doubles.min(VALUES))); }
public void testLastIndexOf() { assertEquals(-1, Doubles.lastIndexOf(EMPTY, (double) 1)); assertEquals(-1, Doubles.lastIndexOf(ARRAY1, (double) 2)); assertEquals(-1, Doubles.lastIndexOf(ARRAY234, (double) 1)); assertEquals(0, Doubles.lastIndexOf(new double[] {(double) -1}, (double) -1)); assertEquals(0, Doubles.lastIndexOf(ARRAY234, (double) 2)); assertEquals(1, Doubles.lastIndexOf(ARRAY234, (double) 3)); assertEquals(2, Doubles.lastIndexOf(ARRAY234, (double) 4)); assertEquals( 3, Doubles.lastIndexOf( new double[] {(double) 2, (double) 3, (double) 2, (double) 3}, (double) 3)); for (double value : NUMBERS) { assertEquals("" + value, 0, Doubles.lastIndexOf(new double[] {value, 5.0}, value)); } assertEquals(-1, Doubles.lastIndexOf(new double[] {NaN, 5.0}, NaN)); }
public void testToArray_threadSafe() { for (int delta : new int[] {+1, 0, -1}) { for (int i = 0; i < VALUES.length; i++) { List<Double> list = Doubles.asList(VALUES).subList(0, i); Collection<Double> misleadingSize = Helpers.misleadingSizeCollection(delta); misleadingSize.addAll(list); double[] arr = Doubles.toArray(misleadingSize); assertEquals(i, arr.length); for (int j = 0; j < i; j++) { assertEquals(VALUES[j], arr[j]); } } } }
public void testAsList_toArray_roundTrip() { double[] array = {(double) 0, (double) 1, (double) 2}; List<Double> list = Doubles.asList(array); double[] newArray = Doubles.toArray(list); // Make sure it returned a copy list.set(0, (double) 4); assertTrue(Arrays.equals(new double[] {(double) 0, (double) 1, (double) 2}, newArray)); newArray[1] = (double) 5; assertEquals((double) 1, (double) list.get(1)); }
public void testConstrainToRange() { double tolerance = 1e-10; assertEquals( (double) 1, Doubles.constrainToRange((double) 1, (double) 0, (double) 5), tolerance); assertEquals( (double) 1, Doubles.constrainToRange((double) 1, (double) 1, (double) 5), tolerance); assertEquals( (double) 3, Doubles.constrainToRange((double) 1, (double) 3, (double) 5), tolerance); assertEquals( (double) -1, Doubles.constrainToRange((double) 0, (double) -5, (double) -1), tolerance); assertEquals( (double) 2, Doubles.constrainToRange((double) 5, (double) 2, (double) 2), tolerance); try { Doubles.constrainToRange((double) 1, (double) 3, (double) 2); fail(); } catch (IllegalArgumentException expected) { } }
@GwtIncompatible // Doubles.tryParse private static void checkTryParse(double expected, String input) { assertEquals(Double.valueOf(expected), Doubles.tryParse(input)); assertThat(input) .matches( Pattern.compile( Doubles.FLOATING_POINT_PATTERN.pattern(), Doubles.FLOATING_POINT_PATTERN.flags())); }
@GwtIncompatible // Doubles.tryParse private static void checkTryParse(String input) { Double expected = referenceTryParse(input); assertEquals(expected, Doubles.tryParse(input)); if (expected != null && !Doubles.FLOATING_POINT_PATTERN.matcher(input).matches()) { // TODO(cpovirk): Use SourceCodeEscapers if it is added to Guava. StringBuilder escapedInput = new StringBuilder(); for (char c : input.toCharArray()) { if (c >= 0x20 && c <= 0x7E) { escapedInput.append(c); } else { escapedInput.append(String.format("\\u%04x", (int) c)); } } fail("FLOATING_POINT_PATTERN should have matched valid input <" + escapedInput + ">"); } }
public void testIndexOf_arrayTarget() { assertEquals(0, Doubles.indexOf(EMPTY, EMPTY)); assertEquals(0, Doubles.indexOf(ARRAY234, EMPTY)); assertEquals(-1, Doubles.indexOf(EMPTY, ARRAY234)); assertEquals(-1, Doubles.indexOf(ARRAY234, ARRAY1)); assertEquals(-1, Doubles.indexOf(ARRAY1, ARRAY234)); assertEquals(0, Doubles.indexOf(ARRAY1, ARRAY1)); assertEquals(0, Doubles.indexOf(ARRAY234, ARRAY234)); assertEquals(0, Doubles.indexOf(ARRAY234, new double[] {(double) 2, (double) 3})); assertEquals(1, Doubles.indexOf(ARRAY234, new double[] {(double) 3, (double) 4})); assertEquals(1, Doubles.indexOf(ARRAY234, new double[] {(double) 3})); assertEquals(2, Doubles.indexOf(ARRAY234, new double[] {(double) 4})); assertEquals( 1, Doubles.indexOf( new double[] {(double) 2, (double) 3, (double) 3, (double) 3, (double) 3}, new double[] {(double) 3})); assertEquals( 2, Doubles.indexOf( }, new double[] {(double) 2, (double) 3, (double) 4})); assertEquals( 1, Doubles.indexOf( }, new double[] {(double) 2, (double) 3, (double) 4})); assertEquals(
@GwtIncompatible // Double.toString returns different value in GWT. public void testStringConverter_reverse() { Converter<String, Double> converter = Doubles.stringConverter(); assertEquals("1.0", converter.reverse().convert(1.0)); assertEquals("0.0", converter.reverse().convert(0.0)); assertEquals("-1.0", converter.reverse().convert(-1.0)); assertEquals("1000000.0", converter.reverse().convert(1e6)); assertEquals("1.0E-6", converter.reverse().convert(1e-6)); }
@GwtIncompatible // Doubles.tryParse public void testTryParseFailures() { for (String badInput : BAD_TRY_PARSE_INPUTS) { assertThat(badInput) .doesNotMatch( Pattern.compile( Doubles.FLOATING_POINT_PATTERN.pattern(), Doubles.FLOATING_POINT_PATTERN.flags())); assertEquals(referenceTryParse(badInput), Doubles.tryParse(badInput)); assertNull(Doubles.tryParse(badInput)); } }