Skip to content

Commit 2ab6828

Browse files
committed
Backport String conversion test updates
1 parent 5c51107 commit 2ab6828

File tree

1 file changed

+43
-1
lines changed

1 file changed

+43
-1
lines changed

junit-jupiter-params/src/test/java/org/junit/jupiter/params/converter/DefaultArgumentConverterTests.java

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
package org.junit.jupiter.params.converter;
1212

1313
import static org.assertj.core.api.Assertions.assertThat;
14+
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
1415

1516
import java.io.File;
1617
import java.lang.Thread.State;
@@ -99,6 +100,40 @@ void convertsStringsToPrimitiveTypes() {
99100
assertConverts("42.2_3", double.class, 42.23);
100101
}
101102

103+
@Test
104+
void throwsExceptionOnInvalidStringForPrimitiveTypes() {
105+
assertThatExceptionOfType(ArgumentConversionException.class) //
106+
.isThrownBy(() -> convert("ab", char.class)) //
107+
.withMessage("Failed to convert String \"ab\" to type java.lang.Character") //
108+
.havingCause() //
109+
.withMessage("String must have length of 1: ab");
110+
}
111+
112+
@Test
113+
void throwsExceptionWhenImplicitConverstionIsUnsupported() {
114+
assertThatExceptionOfType(ArgumentConversionException.class) //
115+
.isThrownBy(() -> convert("foo", Enigma.class)) //
116+
.withMessage("No implicit conversion to convert object of type java.lang.String to type %s",
117+
Enigma.class.getName());
118+
119+
assertThatExceptionOfType(ArgumentConversionException.class) //
120+
.isThrownBy(() -> convert(new Enigma(), int[].class)) //
121+
.withMessage("No implicit conversion to convert object of type %s to type [I", Enigma.class.getName());
122+
123+
assertThatExceptionOfType(ArgumentConversionException.class) //
124+
.isThrownBy(() -> convert(new long[] {}, int[].class)) //
125+
.withMessage("No implicit conversion to convert object of type [J to type [I");
126+
127+
assertThatExceptionOfType(ArgumentConversionException.class) //
128+
.isThrownBy(() -> convert(new String[] {}, boolean.class)) //
129+
.withMessage(
130+
"No implicit conversion to convert object of type [Ljava.lang.String; to type java.lang.Boolean");
131+
132+
assertThatExceptionOfType(ArgumentConversionException.class) //
133+
.isThrownBy(() -> convert(Class.class, int[].class)) //
134+
.withMessage("No implicit conversion to convert object of type java.lang.Class to type [I");
135+
}
136+
102137
/**
103138
* @since 5.4
104139
*/
@@ -232,11 +267,18 @@ void convertsStringToUUID() {
232267
// -------------------------------------------------------------------------
233268

234269
private void assertConverts(Object input, Class<?> targetClass, Object expectedOutput) {
235-
var result = DefaultArgumentConverter.INSTANCE.convert(input, targetClass);
270+
var result = convert(input, targetClass);
236271

237272
assertThat(result) //
238273
.describedAs(input + " --(" + targetClass.getName() + ")--> " + expectedOutput) //
239274
.isEqualTo(expectedOutput);
240275
}
241276

277+
private Object convert(Object input, Class<?> targetClass) {
278+
return DefaultArgumentConverter.INSTANCE.convert(input, targetClass);
279+
}
280+
281+
private static class Enigma {
282+
}
283+
242284
}

0 commit comments

Comments
 (0)