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 testContains() { assertFalse(Doubles.contains(EMPTY, (double) 1)); assertFalse(Doubles.contains(ARRAY1, (double) 2)); assertFalse(Doubles.contains(ARRAY234, (double) 1)); assertTrue(Doubles.contains(new double[] {(double) -1}, (double) -1)); assertTrue(Doubles.contains(ARRAY234, (double) 2)); assertTrue(Doubles.contains(ARRAY234, (double) 3)); assertTrue(Doubles.contains(ARRAY234, (double) 4)); for (double value : NUMBERS) { assertTrue("" + value, Doubles.contains(new double[] {5.0, value}, value)); } assertFalse(Doubles.contains(new double[] {5.0, NaN}, NaN)); }
public void testConcat() { assertTrue(Arrays.equals(EMPTY, Doubles.concat())); assertTrue(Arrays.equals(EMPTY, Doubles.concat(EMPTY))); assertTrue(Arrays.equals(EMPTY, Doubles.concat(EMPTY, EMPTY, EMPTY))); assertTrue(Arrays.equals(ARRAY1, Doubles.concat(ARRAY1))); assertNotSame(ARRAY1, Doubles.concat(ARRAY1)); assertTrue(Arrays.equals(ARRAY1, Doubles.concat(EMPTY, ARRAY1, EMPTY))); assertTrue( Arrays.equals( new double[] {(double) 1, (double) 1, (double) 1}, Doubles.concat(ARRAY1, ARRAY1, ARRAY1))); assertTrue( Arrays.equals( new double[] {(double) 1, (double) 2, (double) 3, (double) 4}, Doubles.concat(ARRAY1, ARRAY234))); }
public void testEnsureCapacity() { assertSame(EMPTY, Doubles.ensureCapacity(EMPTY, 0, 1)); assertSame(ARRAY1, Doubles.ensureCapacity(ARRAY1, 0, 1)); assertSame(ARRAY1, Doubles.ensureCapacity(ARRAY1, 1, 1)); assertTrue( Arrays.equals( new double[] {(double) 1, (double) 0, (double) 0}, Doubles.ensureCapacity(ARRAY1, 2, 1))); }
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))); }
@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)); } }
@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 + ">"); } }
private static void testReverse( double[] input, int fromIndex, int toIndex, double[] expectedOutput) { input = Arrays.copyOf(input, input.length); Doubles.reverse(input, fromIndex, toIndex); assertTrue(Arrays.equals(expectedOutput, input)); }
@GwtIncompatible // Doubles.tryParse public void testTryParseNaN() { checkTryParse("NaN"); checkTryParse("+NaN"); checkTryParse("-NaN"); }
public void testMin_noArgs() { try { Doubles.min(); fail(); } catch (IllegalArgumentException expected) { } }
@GwtIncompatible public void testTryParse_withNullNoGwt() { assertNull(Doubles.tryParse("null")); try { Doubles.tryParse(null); fail("Expected NPE"); } catch (NullPointerException expected) { } } }
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) { } }
public void testSortDescendingIndexed() { testSortDescending(new double[] {}, 0, 0, new double[] {}); testSortDescending(new double[] {1}, 0, 1, new double[] {1}); testSortDescending(new double[] {1, 2}, 0, 2, new double[] {2, 1}); testSortDescending(new double[] {1, 3, 1}, 0, 2, new double[] {3, 1, 1}); testSortDescending(new double[] {1, 3, 1}, 0, 1, new double[] {1, 3, 1}); testSortDescending(new double[] {-1, -2, 1, 2}, 1, 3, new double[] {-1, 1, -2, 2}); if (sortWorksWithNaN()) { testSortDescending( new double[] {-1, 1, Double.NaN, -2, 2}, 1, 4, new double[] {-1, Double.NaN, 1, -2, 2}); } }
@GwtIncompatible // works with real browsers but fails with HtmlUnit public void testSortWorksWithNaNNonGwt() { assertTrue(sortWorksWithNaN()); }
public void testAsListEmpty() { assertSame(Collections.emptyList(), Doubles.asList(EMPTY)); }
public void testStringConverter_nullConversions() { assertNull(Doubles.stringConverter().convert(null)); assertNull(Doubles.stringConverter().reverse().convert(null)); }
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))); }
@GwtIncompatible // Doubles.tryParse public void testTryParseFailures() { for (String badInput : BAD_TRY_PARSE_INPUTS) { assertThat(badInput).doesNotMatch(Doubles.FLOATING_POINT_PATTERN); assertEquals(referenceTryParse(badInput), Doubles.tryParse(badInput)); assertNull(Doubles.tryParse(badInput)); } }
@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 + ">"); } }
private static void testReverse(double[] input, double[] expectedOutput) { input = Arrays.copyOf(input, input.length); Doubles.reverse(input); assertTrue(Arrays.equals(expectedOutput, input)); }