Polishing

See gh-26540
This commit is contained in:
Sam Brannen
2021-02-12 11:27:44 +01:00
parent 77b7e49fb2
commit 566ff54782
4 changed files with 68 additions and 60 deletions

View File

@@ -75,7 +75,4 @@ public class TestObject implements ITestObject, ITestInterface, Comparable<Objec
return 1;
}
}
public static class NestedObject {
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2020 the original author or authors.
* Copyright 2002-2021 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -33,6 +33,7 @@ import java.util.List;
import java.util.Set;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
@@ -59,14 +60,6 @@ class ClassUtilsTests {
private final ClassLoader classLoader = getClass().getClassLoader();
@BeforeEach
void clearStatics() {
InnerClass.noArgCalled = false;
InnerClass.argCalled = false;
InnerClass.overloadedCalled = false;
}
@Test
void isPresent() {
assertThat(ClassUtils.isPresent("java.lang.String", classLoader)).isTrue();
@@ -86,8 +79,12 @@ class ClassUtilsTests {
assertThat(ClassUtils.forName("org.springframework.tests.sample.objects.TestObject[][]", classLoader)).isEqualTo(TestObject[][].class);
assertThat(ClassUtils.forName(TestObject[][].class.getName(), classLoader)).isEqualTo(TestObject[][].class);
assertThat(ClassUtils.forName("[[[S", classLoader)).isEqualTo(short[][][].class);
assertThat(ClassUtils.forName("org.springframework.tests.sample.objects.TestObject$NestedObject", classLoader)).isEqualTo(TestObject.NestedObject.class);
assertThat(ClassUtils.forName("org.springframework.tests.sample.objects.TestObject.NestedObject", classLoader)).isEqualTo(TestObject.NestedObject.class);
}
@Test
void forNameWithNestedType() throws ClassNotFoundException {
assertThat(ClassUtils.forName("org.springframework.util.ClassUtilsTests$NestedClass", classLoader)).isEqualTo(NestedClass.class);
assertThat(ClassUtils.forName("org.springframework.util.ClassUtilsTests.NestedClass", classLoader)).isEqualTo(NestedClass.class);
}
@Test
@@ -145,11 +142,11 @@ class ClassUtilsTests {
assertThat(ClassUtils.isCacheSafe(String.class, childLoader1)).isTrue();
assertThat(ClassUtils.isCacheSafe(String.class, childLoader2)).isTrue();
assertThat(ClassUtils.isCacheSafe(String.class, childLoader3)).isTrue();
assertThat(ClassUtils.isCacheSafe(InnerClass.class, null)).isFalse();
assertThat(ClassUtils.isCacheSafe(InnerClass.class, classLoader)).isTrue();
assertThat(ClassUtils.isCacheSafe(InnerClass.class, childLoader1)).isTrue();
assertThat(ClassUtils.isCacheSafe(InnerClass.class, childLoader2)).isTrue();
assertThat(ClassUtils.isCacheSafe(InnerClass.class, childLoader3)).isTrue();
assertThat(ClassUtils.isCacheSafe(NestedClass.class, null)).isFalse();
assertThat(ClassUtils.isCacheSafe(NestedClass.class, classLoader)).isTrue();
assertThat(ClassUtils.isCacheSafe(NestedClass.class, childLoader1)).isTrue();
assertThat(ClassUtils.isCacheSafe(NestedClass.class, childLoader2)).isTrue();
assertThat(ClassUtils.isCacheSafe(NestedClass.class, childLoader3)).isTrue();
assertThat(ClassUtils.isCacheSafe(composite, null)).isFalse();
assertThat(ClassUtils.isCacheSafe(composite, classLoader)).isFalse();
assertThat(ClassUtils.isCacheSafe(composite, childLoader1)).isTrue();
@@ -211,9 +208,9 @@ class ClassUtilsTests {
}
@Test
void getShortNameForInnerClass() {
String className = ClassUtils.getShortName(InnerClass.class);
assertThat(className).as("Class name did not match").isEqualTo("ClassUtilsTests.InnerClass");
void getShortNameForNestedClass() {
String className = ClassUtils.getShortName(NestedClass.class);
assertThat(className).as("Class name did not match").isEqualTo("ClassUtilsTests.NestedClass");
}
@Test
@@ -301,27 +298,6 @@ class ClassUtilsTests {
assertThat(ClassUtils.hasAtLeastOneMethodWithName(TestObject.class, "setAge")).isTrue();
}
@Test
void noArgsStaticMethod() throws IllegalAccessException, InvocationTargetException {
Method method = ClassUtils.getStaticMethod(InnerClass.class, "staticMethod");
method.invoke(null, (Object[]) null);
assertThat(InnerClass.noArgCalled).as("no argument method was not invoked.").isTrue();
}
@Test
void argsStaticMethod() throws IllegalAccessException, InvocationTargetException {
Method method = ClassUtils.getStaticMethod(InnerClass.class, "argStaticMethod", String.class);
method.invoke(null, "test");
assertThat(InnerClass.argCalled).as("argument method was not invoked.").isTrue();
}
@Test
void overloadedStaticMethod() throws IllegalAccessException, InvocationTargetException {
Method method = ClassUtils.getStaticMethod(InnerClass.class, "staticMethod", String.class);
method.invoke(null, "test");
assertThat(InnerClass.overloadedCalled).as("argument method was not invoked.").isTrue();
}
@Test
void isAssignable() {
assertThat(ClassUtils.isAssignable(Object.class, Object.class)).isTrue();
@@ -433,6 +409,40 @@ class ClassUtilsTests {
}
@Nested
class GetStaticMethodTests {
@BeforeEach
void clearStatics() {
NestedClass.noArgCalled = false;
NestedClass.argCalled = false;
NestedClass.overloadedCalled = false;
}
@Test
void noArgsStaticMethod() throws IllegalAccessException, InvocationTargetException {
Method method = ClassUtils.getStaticMethod(NestedClass.class, "staticMethod");
method.invoke(null, (Object[]) null);
assertThat(NestedClass.noArgCalled).as("no argument method was not invoked.").isTrue();
}
@Test
void argsStaticMethod() throws IllegalAccessException, InvocationTargetException {
Method method = ClassUtils.getStaticMethod(NestedClass.class, "argStaticMethod", String.class);
method.invoke(null, "test");
assertThat(NestedClass.argCalled).as("argument method was not invoked.").isTrue();
}
@Test
void overloadedStaticMethod() throws IllegalAccessException, InvocationTargetException {
Method method = ClassUtils.getStaticMethod(NestedClass.class, "staticMethod", String.class);
method.invoke(null, "test");
assertThat(NestedClass.overloadedCalled).as("argument method was not invoked.").isTrue();
}
}
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@ValueSource(classes = { Boolean.class, Character.class, Byte.class, Short.class,
@@ -447,7 +457,7 @@ class ClassUtilsTests {
@interface PrimitiveTypes {
}
public static class InnerClass {
public static class NestedClass {
static boolean noArgCalled;
static boolean argCalled;