diff a/test/jdk/java/util/Arrays/Correct.java b/test/jdk/java/util/Arrays/Correct.java --- a/test/jdk/java/util/Arrays/Correct.java +++ b/test/jdk/java/util/Arrays/Correct.java @@ -24,15 +24,18 @@ /* * @test * @bug 4726380 8037097 * @summary Check that different sorts give equivalent results. * @key randomness + * @library /test/lib * @run junit Correct */ import java.util.*; +import jdk.test.lib.valueclass.AsValueClass; + import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -42,31 +45,72 @@ static final Random rnd = new Random(); static final int ITERATIONS = 1000; static final int TEST_SIZE = 1000; + @AsValueClass + record Point(int x, int y) implements Comparable { + public int compareTo(Point o) { + int c = Integer.compare(x, o.x); + return c != 0 ? c : Integer.compare(y, o.y); + } + } + + @Test + public void testDefaultSortPoint() { + for (int i=0; i comparator) { + for (int i=0; i comparator) { for (int i=0; i to - 1) + return; for (int x=from; x pointComparators() { + Object[][] comparators = new Object[][] { + new Object[] { Comparator.naturalOrder() }, + new Object[] { Comparator.naturalOrder().reversed() }, + new Object[] { Comparator.comparingInt(Point::x).thenComparingInt(Point::y) }, + new Object[] { Comparator.comparingInt(Point::y).thenComparingInt(Point::x) } + }; + + return Arrays.asList(comparators).iterator(); + } + public static Iterator comparators() { Object[][] comparators = new Object[][] { new Object[] { Comparator.naturalOrder() }, new Object[] { Comparator.naturalOrder().reversed() }, new Object[] { STANDARD_ORDER },