Skip to content

Commit 0fe36c7

Browse files
committed
Increase test coverage for ReflectionUtils.tryToLoadClass()
This is a prerequisite for #4250.
1 parent 9bddac8 commit 0fe36c7

File tree

1 file changed

+88
-34
lines changed

1 file changed

+88
-34
lines changed

platform-tests/src/test/java/org/junit/platform/commons/util/ReflectionUtilsTests.java

Lines changed: 88 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import static org.junit.jupiter.api.Assertions.assertThrows;
2424
import static org.junit.jupiter.api.Assertions.assertTimeoutPreemptively;
2525
import static org.junit.jupiter.api.Assertions.assertTrue;
26-
import static org.junit.platform.commons.function.Try.success;
2726
import static org.junit.platform.commons.util.ReflectionUtils.HierarchyTraversalMode.BOTTOM_UP;
2827
import static org.junit.platform.commons.util.ReflectionUtils.HierarchyTraversalMode.TOP_DOWN;
2928
import static org.junit.platform.commons.util.ReflectionUtils.findFields;
@@ -804,77 +803,132 @@ void loadClass() {
804803

805804
@Test
806805
void tryToLoadClass() {
807-
assertThat(ReflectionUtils.tryToLoadClass(Integer.class.getName())).isEqualTo(success(Integer.class));
808-
assertThat(ReflectionUtils.tryToLoadClass(Void.class.getName())).isEqualTo(success(Void.class));
806+
assertTryToLoadClass(getClass().getName(), getClass());
807+
assertTryToLoadClass(Integer.class.getName(), Integer.class);
808+
assertTryToLoadClass(Void.class.getName(), Void.class);
809809
}
810810

811811
@Test
812812
void tryToLoadClassTrimsClassName() {
813-
assertThat(ReflectionUtils.tryToLoadClass(" " + Integer.class.getName() + "\t"))//
814-
.isEqualTo(success(Integer.class));
813+
assertTryToLoadClass(" " + Integer.class.getName() + "\t", Integer.class);
815814
}
816815

817816
@Test
818-
void tryToLoadClassForPrimitive() {
819-
assertThat(ReflectionUtils.tryToLoadClass(int.class.getName())).isEqualTo(success(int.class));
820-
assertThat(ReflectionUtils.tryToLoadClass(void.class.getName())).isEqualTo(success(void.class));
817+
void tryToLoadClassForVoidPseudoPrimitiveType() {
818+
assertTryToLoadClass("void", void.class);
819+
}
821820

822-
// The following should be equivalent to the above, but just to be sure...
823-
assertThat(ReflectionUtils.tryToLoadClass("int")).isEqualTo(success(int.class));
824-
assertThat(ReflectionUtils.tryToLoadClass("void")).isEqualTo(success(void.class));
821+
@Test
822+
void tryToLoadClassForPrimitiveType() {
823+
assertTryToLoadClass("boolean", boolean.class);
824+
assertTryToLoadClass("char", char.class);
825+
assertTryToLoadClass("byte", byte.class);
826+
assertTryToLoadClass("short", short.class);
827+
assertTryToLoadClass("int", int.class);
828+
assertTryToLoadClass("long", long.class);
829+
assertTryToLoadClass("float", float.class);
830+
assertTryToLoadClass("double", double.class);
825831
}
826832

827833
@Test
828-
void tryToLoadClassForPrimitiveArray() {
829-
assertThat(ReflectionUtils.tryToLoadClass(int[].class.getName())).isEqualTo(success(int[].class));
834+
void tryToLoadClassForBinaryPrimitiveArrayName() {
835+
assertTryToLoadClass("[Z", boolean[].class);
836+
assertTryToLoadClass("[C", char[].class);
837+
assertTryToLoadClass("[B", byte[].class);
838+
assertTryToLoadClass("[S", short[].class);
839+
assertTryToLoadClass("[I", int[].class);
840+
assertTryToLoadClass("[J", long[].class);
841+
assertTryToLoadClass("[F", float[].class);
842+
assertTryToLoadClass("[D", double[].class);
830843
}
831844

832845
@Test
833-
void tryToLoadClassForPrimitiveArrayUsingSourceCodeSyntax() {
834-
assertThat(ReflectionUtils.tryToLoadClass("int[]")).isEqualTo(success(int[].class));
846+
void tryToLoadClassForCanonicalPrimitiveArrayName() {
847+
assertTryToLoadClass("boolean[]", boolean[].class);
848+
assertTryToLoadClass("char[]", char[].class);
849+
assertTryToLoadClass("byte[]", byte[].class);
850+
assertTryToLoadClass("short[]", short[].class);
851+
assertTryToLoadClass("int[]", int[].class);
852+
assertTryToLoadClass("long[]", long[].class);
853+
assertTryToLoadClass("float[]", float[].class);
854+
assertTryToLoadClass("double[]", double[].class);
835855
}
836856

837857
@Test
838-
void tryToLoadClassForObjectArray() {
839-
assertThat(ReflectionUtils.tryToLoadClass(String[].class.getName())).isEqualTo(success(String[].class));
858+
void tryToLoadClassForBinaryObjectArrayName() {
859+
assertTryToLoadClass(String[].class.getName(), String[].class);
840860
}
841861

842862
@Test
843-
void tryToLoadClassForObjectArrayUsingSourceCodeSyntax() {
844-
assertThat(ReflectionUtils.tryToLoadClass("java.lang.String[]")).isEqualTo(success(String[].class));
863+
void tryToLoadClassForCanonicalObjectArrayName() {
864+
assertTryToLoadClass("java.lang.String[]", String[].class);
845865
}
846866

847867
@Test
848-
void tryToLoadClassForTwoDimensionalPrimitiveArray() {
849-
assertThat(ReflectionUtils.tryToLoadClass(int[][].class.getName())).isEqualTo(success(int[][].class));
868+
void tryToLoadClassForBinaryTwoDimensionalPrimitiveArrayName() {
869+
assertTryToLoadClass("[[Z", boolean[][].class);
870+
assertTryToLoadClass("[[C", char[][].class);
871+
assertTryToLoadClass("[[B", byte[][].class);
872+
assertTryToLoadClass("[[S", short[][].class);
873+
assertTryToLoadClass("[[I", int[][].class);
874+
assertTryToLoadClass("[[J", long[][].class);
875+
assertTryToLoadClass("[[F", float[][].class);
876+
assertTryToLoadClass("[[D", double[][].class);
850877
}
851878

852879
@Test
853-
void tryToLoadClassForTwoDimensionaldimensionalPrimitiveArrayUsingSourceCodeSyntax() {
854-
assertThat(ReflectionUtils.tryToLoadClass("int[][]")).isEqualTo(success(int[][].class));
880+
void tryToLoadClassForCanonicalTwoDimensionalPrimitiveArrayName() {
881+
assertTryToLoadClass("boolean[][]", boolean[][].class);
882+
assertTryToLoadClass("char[][]", char[][].class);
883+
assertTryToLoadClass("byte[][]", byte[][].class);
884+
assertTryToLoadClass("short[][]", short[][].class);
885+
assertTryToLoadClass("int[][]", int[][].class);
886+
assertTryToLoadClass("long[][]", long[][].class);
887+
assertTryToLoadClass("float[][]", float[][].class);
888+
assertTryToLoadClass("double[][]", double[][].class);
855889
}
856890

857891
@Test
858-
void tryToLoadClassForMultidimensionalPrimitiveArray() {
859-
assertThat(ReflectionUtils.tryToLoadClass(int[][][][][].class.getName()))//
860-
.isEqualTo(success(int[][][][][].class));
892+
void tryToLoadClassForBinaryMultidimensionalPrimitiveArrayName() {
893+
assertTryToLoadClass("[[[[[Z", boolean[][][][][].class);
894+
assertTryToLoadClass("[[[[[C", char[][][][][].class);
895+
assertTryToLoadClass("[[[[[B", byte[][][][][].class);
896+
assertTryToLoadClass("[[[[[S", short[][][][][].class);
897+
assertTryToLoadClass("[[[[[I", int[][][][][].class);
898+
assertTryToLoadClass("[[[[[J", long[][][][][].class);
899+
assertTryToLoadClass("[[[[[F", float[][][][][].class);
900+
assertTryToLoadClass("[[[[[D", double[][][][][].class);
861901
}
862902

863903
@Test
864-
void tryToLoadClassForMultidimensionalPrimitiveArrayUsingSourceCodeSyntax() {
865-
assertThat(ReflectionUtils.tryToLoadClass("int[][][][][]")).isEqualTo(success(int[][][][][].class));
904+
void tryToLoadClassForCanonicalMultidimensionalPrimitiveArrayName() {
905+
assertTryToLoadClass("boolean[][][][][]", boolean[][][][][].class);
906+
assertTryToLoadClass("char[][][][][]", char[][][][][].class);
907+
assertTryToLoadClass("byte[][][][][]", byte[][][][][].class);
908+
assertTryToLoadClass("short[][][][][]", short[][][][][].class);
909+
assertTryToLoadClass("int[][][][][]", int[][][][][].class);
910+
assertTryToLoadClass("long[][][][][]", long[][][][][].class);
911+
assertTryToLoadClass("float[][][][][]", float[][][][][].class);
912+
assertTryToLoadClass("double[][][][][]", double[][][][][].class);
866913
}
867914

868915
@Test
869-
void tryToLoadClassForMultidimensionalObjectArray() {
870-
assertThat(ReflectionUtils.tryToLoadClass(String[][][][][].class.getName()))//
871-
.isEqualTo(success(String[][][][][].class));
916+
void tryToLoadClassForBinaryMultidimensionalObjectArrayName() {
917+
assertTryToLoadClass(String[][][][][].class.getName(), String[][][][][].class);
872918
}
873919

874920
@Test
875-
void tryToLoadClassForMultidimensionalObjectArrayUsingSourceCodeSyntax() {
876-
assertThat(ReflectionUtils.tryToLoadClass("java.lang.String[][][][][]"))//
877-
.isEqualTo(success(String[][][][][].class));
921+
void tryToLoadClassForCanonicalMultidimensionalObjectArrayName() {
922+
assertTryToLoadClass("java.lang.String[][][][][]", String[][][][][].class);
923+
}
924+
925+
private static void assertTryToLoadClass(String name, Class<?> type) {
926+
try {
927+
assertThat(ReflectionUtils.tryToLoadClass(name).get()).as(name).isEqualTo(type);
928+
}
929+
catch (Exception ex) {
930+
ExceptionUtils.throwAsUncheckedException(ex);
931+
}
878932
}
879933

880934
}

0 commit comments

Comments
 (0)