From 7852ea9752703e477626d6e1494edcc19a8a0294 Mon Sep 17 00:00:00 2001 From: Robert Stupp Date: Fri, 25 Mar 2022 19:37:39 +0100 Subject: [PATCH] Add tests around "new-ish" collection types used with @ParameterizedTest See #24492 --- .../io/quarkus/it/extension/ParamsTest.java | 126 ++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 integration-tests/test-extension/tests/src/test/java/io/quarkus/it/extension/ParamsTest.java diff --git a/integration-tests/test-extension/tests/src/test/java/io/quarkus/it/extension/ParamsTest.java b/integration-tests/test-extension/tests/src/test/java/io/quarkus/it/extension/ParamsTest.java new file mode 100644 index 0000000000000..8460db8b12324 --- /dev/null +++ b/integration-tests/test-extension/tests/src/test/java/io/quarkus/it/extension/ParamsTest.java @@ -0,0 +1,126 @@ +package io.quarkus.it.extension; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Set; +import java.util.stream.Stream; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; +import org.junit.jupiter.params.provider.ValueSource; + +import io.quarkus.test.junit.QuarkusTest; + +/** + * Exercise {@link ParameterizedTest @ParameterizedTest}s. + * + *

+ * This test will run into x-stream/xstream#253 on Java 16 and + * newer if the custom XStream converters are not used + */ +@QuarkusTest +public class ParamsTest { + @ParameterizedTest + @ValueSource(booleans = { true, false }) + public void valuesBooleans(boolean ignore) { + } + + @ParameterizedTest + @ValueSource(strings = { "true", "false" }) + public void valuesStrings(String ignore) { + } + + @ParameterizedTest + @ValueSource(classes = { String.class, TestData.class }) + public void valuesClasses(Class ignore) { + } + + @ParameterizedTest + @ValueSource(chars = { 'a', 'b', 'c' }) + public void valuesChars(char ignore) { + } + + @ParameterizedTest + @ValueSource(bytes = { (byte) 1, (byte) 2, (byte) 3 }) + public void valuesBytes(byte ignore) { + } + + @ParameterizedTest + @MethodSource("testDataStreamList") + public void methodStreamList(List ignore) { + } + + static Stream> testDataStreamList() { + return Stream.of(Arrays.asList("a"), Arrays.asList("b")); + } + + @ParameterizedTest + @MethodSource("testDataStreamListOf") + public void methodStreamListOf(List ignore) { + } + + static Stream> testDataStreamListOf() { + return Stream.of(List.of("a")); + } + + @ParameterizedTest + @MethodSource("testDataStreamSetOf") + public void methodStreamListOf(Set ignore) { + } + + static Stream> testDataStreamSetOf() { + return Stream.of(Set.of("a")); + } + + @ParameterizedTest + @MethodSource("testDataStreamArrayList") + public void methodStreamArrayList(List ignore) { + } + + static Stream> testDataStreamArrayList() { + return Stream.of(Collections.emptyList()); + } + + @ParameterizedTest + @MethodSource("testDataStream") + public void methodStream(TestData ignore) { + } + + static Stream testDataStream() { + return Stream.of(new TestData()); + } + + @ParameterizedTest + @MethodSource("testDataList") + public void methodList(TestData ignore) { + } + + static List testDataList() { + return List.of(new TestData()); + } + + @ParameterizedTest + @MethodSource("testDataStreamArguments") + public void methodList(TestData ignore, String ignored) { + } + + static Stream testDataStreamArguments() { + return Stream.of(Arguments.of(new TestData(), "foo")); + } + + @ParameterizedTest + @MethodSource("testDataListArguments") + public void methodListArguments(TestData ignore, String ignored) { + } + + static List testDataListArguments() { + return Arrays.asList(Arguments.of(new TestData(), "foo"), Arguments.of(new TestData(), "foo")); + } + + @SuppressWarnings("unused") + static class TestData { + final List foo = Arrays.asList("one", "two", "three"); + } +}