From dc92c64135a80c49ca4ba5bd7f5ff692a258346b Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Fri, 1 Mar 2024 17:06:58 +0100 Subject: [PATCH] [core] NodeStreamBlanketTest - prefilter the test data in order to avoid many ignored unit tests. E.g. before this change, we had: Tests passed: 5,417, ignored: 2,539 of 7,956 tests meaning about 30% of the tests were ignored. --- .../ast/internal/NodeStreamBlanketTest.java | 44 ++++++++++++------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/lang/ast/internal/NodeStreamBlanketTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/lang/ast/internal/NodeStreamBlanketTest.java index d8a0f3a496..755f948c7c 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/lang/ast/internal/NodeStreamBlanketTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/lang/ast/internal/NodeStreamBlanketTest.java @@ -68,7 +68,7 @@ class NodeStreamBlanketTest { ); @ParameterizedTest - @MethodSource("primeNumbers") + @MethodSource("allNodeStreamVariants") void testToListConsistency(NodeStream stream) { List toList = stream.toList(); List collected = stream.collect(Collectors.toList()); @@ -81,7 +81,7 @@ class NodeStreamBlanketTest { } @ParameterizedTest - @MethodSource("primeNumbers") + @MethodSource("allNodeStreamVariants") void testToListSize(NodeStream stream) { List toList = stream.toList(); @@ -90,7 +90,7 @@ class NodeStreamBlanketTest { @ParameterizedTest - @MethodSource("primeNumbers") + @MethodSource("nodeStreamVariantsNonEmpty") void testLast(NodeStream stream) { assertImplication( stream, @@ -100,7 +100,7 @@ class NodeStreamBlanketTest { } @ParameterizedTest - @MethodSource("primeNumbers") + @MethodSource("nodeStreamVariantsNonEmpty") void testFirst(NodeStream stream) { assertImplication( stream, @@ -111,7 +111,7 @@ class NodeStreamBlanketTest { @ParameterizedTest - @MethodSource("primeNumbers") + @MethodSource("nodeStreamVariantsNonEmpty") void testDrop(NodeStream stream) { assertImplication( stream, @@ -123,7 +123,7 @@ class NodeStreamBlanketTest { } @ParameterizedTest - @MethodSource("primeNumbers") + @MethodSource("nodeStreamVariantsNonEmpty") void testDropLast(NodeStream stream) { assertImplication( stream, @@ -135,7 +135,7 @@ class NodeStreamBlanketTest { } @ParameterizedTest - @MethodSource("primeNumbers") + @MethodSource("nodeStreamVariantsMoreThanOne") void testDropMoreThan1(NodeStream stream) { assertImplication( stream, @@ -146,7 +146,7 @@ class NodeStreamBlanketTest { } @ParameterizedTest - @MethodSource("primeNumbers") + @MethodSource("nodeStreamVariantsNonEmpty") void testTake(NodeStream stream) { assertImplication( stream, @@ -158,7 +158,7 @@ class NodeStreamBlanketTest { } @ParameterizedTest - @MethodSource("primeNumbers") + @MethodSource("allNodeStreamVariants") void testGet(NodeStream stream) { for (int i = 0; i < 100; i++) { assertSame(stream.get(i), stream.drop(i).first(), "stream.get(i) == stream.drop(i).first()"); @@ -166,25 +166,25 @@ class NodeStreamBlanketTest { } @ParameterizedTest - @MethodSource("primeNumbers") + @MethodSource("allNodeStreamVariants") void testGetNegative(NodeStream stream) { assertThrows(IllegalArgumentException.class, () -> stream.get(-1)); } @ParameterizedTest - @MethodSource("primeNumbers") + @MethodSource("allNodeStreamVariants") void testDropNegative(NodeStream stream) { assertThrows(IllegalArgumentException.class, () -> stream.drop(-1)); } @ParameterizedTest - @MethodSource("primeNumbers") + @MethodSource("allNodeStreamVariants") void testTakeNegative(NodeStream stream) { assertThrows(IllegalArgumentException.class, () -> stream.take(-1)); } @ParameterizedTest - @MethodSource("primeNumbers") + @MethodSource("allNodeStreamVariants") void testEmpty(NodeStream stream) { assertEquivalence( stream, @@ -201,11 +201,21 @@ class NodeStreamBlanketTest { ); } - static Collection primeNumbers() { + static Collection> nodeStreamVariantsNonEmpty() { + return allNodeStreamVariants().stream().filter(NodeStream::nonEmpty).collect(Collectors.toList()); + } + + static Collection> nodeStreamVariantsMoreThanOne() { + return allNodeStreamVariants().stream().filter(n -> n.count() > 1).collect(Collectors.toList()); + } + + + static Collection> allNodeStreamVariants() { return ASTS.stream().flatMap( root -> Stream.of( root.asStream(), root.children().first().asStream(), + // keep this, so that transformation are tested on empty node streams as well NodeStream.empty() ) ).flatMap( @@ -261,10 +271,10 @@ class NodeStreamBlanketTest { private static void assertImplication(T input, Prop precond, Prop... properties) { assumeTrue(precond.test(input)); - for (Prop prop2 : properties) { + for (Prop prop : properties) { assertTrue( - prop2.test(input), - "Expected (" + precond.description + ") to entail (" + prop2.description + prop.test(input), + "Expected (" + precond.description + ") to entail (" + prop.description + "), but the latter was false" ); }