# HG changeset patch # User redestad # Date 1515537871 -3600 # Tue Jan 09 23:44:31 2018 +0100 # Node ID 67a48445dbff0acf97480c776cbbf7aec65e63b4 # Parent 9a29aa153c202c4237c815f51d451def4de6cef1 8134459: java/util/stream/test/org/openjdk/tests/java/util/stream/WhileOpTest.java timed out Reviewed-by: psandoz, rriggs diff --git a/test/jdk/java/util/stream/test/org/openjdk/tests/java/util/stream/WhileOpTest.java b/test/jdk/java/util/stream/test/org/openjdk/tests/java/util/stream/WhileOpTest.java --- a/test/jdk/java/util/stream/test/org/openjdk/tests/java/util/stream/WhileOpTest.java +++ b/test/jdk/java/util/stream/test/org/openjdk/tests/java/util/stream/WhileOpTest.java @@ -47,6 +47,7 @@ /* * @test * @bug 8071597 8193856 + * @run main/timeout=240 */ @Test public class WhileOpTest extends OpTestCase { diff --git a/test/jdk/lib/testlibrary/bootlib/java.base/java/util/stream/LambdaTestHelpers.java b/test/jdk/lib/testlibrary/bootlib/java.base/java/util/stream/LambdaTestHelpers.java --- a/test/jdk/lib/testlibrary/bootlib/java.base/java/util/stream/LambdaTestHelpers.java +++ b/test/jdk/lib/testlibrary/bootlib/java.base/java/util/stream/LambdaTestHelpers.java @@ -48,6 +48,7 @@ import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; import static org.testng.Assert.assertFalse; +import static org.testng.Assert.fail; /** * LambdaTestHelpers -- assertion methods and useful objects for lambda test cases @@ -277,7 +278,7 @@ public static void assertContents(Iterable actual, Iterable expected) { if (actual instanceof Collection && expected instanceof Collection) { - assertEquals(actual, expected); + assertIterableEquals(actual, expected); } else { assertContents(actual.iterator(), expected.iterator()); } @@ -287,6 +288,43 @@ assertEquals(toBoxedList(actual), toBoxedList(expected)); } + // Workaround String creation in inner loop inside org.testng.Assert.assertEquals(Iterable, Iterable) + static public void assertIterableEquals(Iterable actual, Iterable expected) { + if(actual == expected) { + return; + } + + if(actual == null || expected == null) { + fail("Iterables not equal: expected: " + expected + " and actual: " + actual); + } + + assertIteratorsEquals(actual.iterator(), expected.iterator()); + } + + // Workaround String creation in inner loop inside org.testng.Assert.assertEquals(Iterator, Iterator) + static public void assertIteratorsEquals(Iterator actual, Iterator expected) { + if (actual == expected) { + return; + } + + if (actual == null || expected == null) { + fail("Iterators not equal: expected: " + expected + " and actual: " + actual); + } + + while (actual.hasNext() && expected.hasNext()) { + Object e = expected.next(); + Object a = actual.next(); + assertEquals(a, e, "Iterator contents differ"); + + } + + if(actual.hasNext()) { + fail("Actual iterator returned more elements than the expected iterator."); + } else if(expected.hasNext()) { + fail("Expected iterator returned more elements than the actual iterator."); + } + + } @SafeVarargs @SuppressWarnings("varargs") public static void assertContents(Iterator actual, T... expected) {