Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import static io.microsphere.constants.SymbolConstants.SPACE_CHAR;
import static io.microsphere.process.ProcessManager.INSTANCE;
import static io.microsphere.text.FormatUtils.format;
import static io.microsphere.util.ArrayUtils.isNotEmpty;
import static java.lang.Long.MAX_VALUE;
import static java.lang.Long.getLong;
import static java.lang.Runtime.getRuntime;
Expand Down Expand Up @@ -42,7 +43,7 @@ public class ProcessExecutor {
*/
public ProcessExecutor(String command, String... options) {
StringBuilder optionsBuilder = new StringBuilder();
if (options != null) {
if (isNotEmpty(options)) {
for (String argument : options) {
optionsBuilder.append(SPACE_CHAR).append(argument);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package io.microsphere.reflect;

public abstract class AbstractJavaTypeKindTest {

abstract void testGetSuperType();

abstract void testGetRawType();

abstract void testGetInterfaces();

abstract void testGetGenericTypes();
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
* @since JavaType
*/
public abstract class BaseJavaTypeTest<T> {
public abstract class AbstractJavaTypeTest<T> {

protected JavaType javaType;

Expand Down Expand Up @@ -91,14 +91,14 @@ private static void testSearchInterfaceType() {
assertNull(searchInterfaceType(Serializable.class, AbstractList.class));
}

public BaseJavaTypeTest() {
public AbstractJavaTypeTest() {
this.type = resolveType();
}

protected Type resolveType() {
ParameterizedType superType = (ParameterizedType) this.getClass().getGenericSuperclass();
Type superRawType;
while ((superRawType = superType.getRawType()) != BaseJavaTypeTest.class) {
while ((superRawType = superType.getRawType()) != AbstractJavaTypeTest.class) {
superType = (ParameterizedType) ((Class) superRawType).getGenericSuperclass();
}
return superType.getActualTypeArguments()[0];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,10 @@
* @see Class
* @since 1.0.0
*/
public class JavaTypeKindTestForClass {
public class JavaTypeKindTestForClass extends AbstractJavaTypeKindTest {

@Test
@Override
public void testGetSuperType() {
Type superType = CLASS.getSuperType(Object.class);
assertNull(superType);
Expand All @@ -54,6 +55,7 @@ public void testGetSuperType() {
}

@Test
@Override
public void testGetRawType() {
Type rawType = CLASS.getRawType(Object.class);
assertSame(Object.class, rawType);
Expand All @@ -63,6 +65,7 @@ public void testGetRawType() {
}

@Test
@Override
public void testGetInterfaces() {
Type[] interfaces = CLASS.getInterfaces(Object.class);
assertArrayEquals(EMPTY_TYPE_ARRAY, interfaces);
Expand All @@ -73,6 +76,7 @@ public void testGetInterfaces() {
}

@Test
@Override
public void testGetGenericTypes() {
Type[] genericTypes = CLASS.getGenericTypes(from(Object.class));
assertArrayEquals(EMPTY_TYPE_ARRAY, genericTypes);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
* @see GenericArrayType
* @since 1.0.0
*/
public class JavaTypeKindTestForGenericArrayType {
public class JavaTypeKindTestForGenericArrayType extends AbstractJavaTypeKindTest {

@Test
public void testGetSuperType() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
* @see ParameterizedType
* @since 1.0.0
*/
public class JavaTypeKindTestForParameterizedType {
public class JavaTypeKindTestForParameterizedType extends AbstractJavaTypeKindTest {

@Test
public void testGetSuperType() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
* @see TypeVariable
* @since 1.0.0
*/
public class JavaTypeKindTestForTypeVariable {
public class JavaTypeKindTestForTypeVariable extends AbstractJavaTypeKindTest {

@Test
public void testGetSuperType() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
* @see Kind#UNKNOWN
* @since 1.0.0
*/
public class JavaTypeKindTestForUnknown {
public class JavaTypeKindTestForUnknown extends AbstractJavaTypeKindTest {

@Test
public void testGetSuperType() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
* @see WildcardType
* @since 1.0.0
*/
public class JavaTypeKindTestForWildcardType {
public class JavaTypeKindTestForWildcardType extends AbstractJavaTypeKindTest {

@Test
public void testGetSuperType() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,43 +106,81 @@ public void testFromField() {

@Test
public void testForClass() throws Throwable {
testBaseJavaTypeTest(JavaTypeTestForClass.class);
testAbstractJavaTypeTest(JavaTypeTestForClass.class);
}

@Test
public void testForGenericArrayType() throws Throwable {
testBaseJavaTypeTest(JavaTypeTestForGenericArrayType.class);
testAbstractJavaTypeTest(JavaTypeTestForGenericArrayType.class);
}

@Test
public void testForObjectClass() throws Throwable {
testBaseJavaTypeTest(JavaTypeTestForObjectClass.class);
testAbstractJavaTypeTest(JavaTypeTestForObjectClass.class);
}

@Test
public void testForParameterizedType() throws Throwable {
testBaseJavaTypeTest(JavaTypeTestForParameterizedType.class);
testAbstractJavaTypeTest(JavaTypeTestForParameterizedType.class);

}

@Test
public void testForTypeVariable() throws Throwable {
testBaseJavaTypeTest(JavaTypeTestForTypeVariable.class);
testAbstractJavaTypeTest(JavaTypeTestForTypeVariable.class);
}

@Test
public void testForUnknown() throws Throwable {
testBaseJavaTypeTest(JavaTypeTestForUnknown.class);
testAbstractJavaTypeTest(JavaTypeTestForUnknown.class);
}

@Test
public void testForWildcardType() throws Throwable {
testBaseJavaTypeTest(JavaTypeTestForWildcardType.class);
testAbstractJavaTypeTest(JavaTypeTestForWildcardType.class);
}

private void testBaseJavaTypeTest(Class<? extends BaseJavaTypeTest> testClass) throws Throwable {
BaseJavaTypeTest.beforeAll();
BaseJavaTypeTest test = testClass.getConstructor().newInstance();
@Test
public void testKindForClass() throws Throwable {
testAbstractJavaTypeKindTest(JavaTypeKindTestForClass.class);
}

@Test
public void testKindForGenericArrayType() throws Throwable {
testAbstractJavaTypeKindTest(JavaTypeKindTestForGenericArrayType.class);
}

@Test
public void testKindForParameterizedType() throws Throwable {
testAbstractJavaTypeKindTest(JavaTypeKindTestForParameterizedType.class);
}

@Test
public void testKindForTypeVariable() throws Throwable {
testAbstractJavaTypeKindTest(JavaTypeKindTestForTypeVariable.class);
}

@Test
public void testKindForUnknown() throws Throwable {
testAbstractJavaTypeKindTest(JavaTypeKindTestForUnknown.class);
}

@Test
public void testKindForWildcardType() throws Throwable {
testAbstractJavaTypeKindTest(JavaTypeKindTestForWildcardType.class);
}

private void testAbstractJavaTypeKindTest(Class<? extends AbstractJavaTypeKindTest> testClass) throws Throwable {
AbstractJavaTypeKindTest test = testClass.getConstructor().newInstance();
test.testGetSuperType();
test.testGetRawType();
test.testGetInterfaces();
test.testGetGenericTypes();
}

private void testAbstractJavaTypeTest(Class<? extends AbstractJavaTypeTest> testClass) throws Throwable {
AbstractJavaTypeTest.beforeAll();
AbstractJavaTypeTest test = testClass.getConstructor().newInstance();
test.init();
test.test();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,15 +36,15 @@
import static org.junit.jupiter.api.Assertions.assertNull;

/**
* {@link BaseJavaTypeTest} for {@link Class}
* {@link AbstractJavaTypeTest} for {@link Class}
*
* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
* @see JavaType
* @see JavaType.Kind#CLASS
* @see Class
* @since 1.0.0
*/
public class JavaTypeTestForClass extends BaseJavaTypeTest<D> {
public class JavaTypeTestForClass extends AbstractJavaTypeTest<D> {

@Override
protected void testGetSuperType(JavaType superType) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,15 @@
import static org.junit.jupiter.api.Assertions.assertNull;

/**
* {@link BaseJavaTypeTest} for {@link GenericArrayType}
* {@link AbstractJavaTypeTest} for {@link GenericArrayType}
*
* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
* @see JavaType
* @see JavaType.Kind#GENERIC_ARRAY_TYPE
* @see GenericArrayType
* @since 1.0.0
*/
public class JavaTypeTestForGenericArrayType extends BaseJavaTypeTest<C<String>[]> {
public class JavaTypeTestForGenericArrayType extends AbstractJavaTypeTest<C<String>[]> {

@Override
protected void testGetSuperType(JavaType superType) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import static org.junit.jupiter.api.Assertions.assertNull;

/**
* {@link BaseJavaTypeTest} for {@link Object}'s {@link Class}
* {@link AbstractJavaTypeTest} for {@link Object}'s {@link Class}
*
* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
* @see JavaType
Expand All @@ -35,7 +35,7 @@
* @see JavaTypeTestForClass
* @since 1.0.0
*/
public class JavaTypeTestForObjectClass extends BaseJavaTypeTest<Object> {
public class JavaTypeTestForObjectClass extends AbstractJavaTypeTest<Object> {

@Override
protected void testGetSuperType(JavaType superType) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,15 @@
import static org.junit.jupiter.api.Assertions.assertNull;

/**
* {@link BaseJavaTypeTest} for {@link ParameterizedType}
* {@link AbstractJavaTypeTest} for {@link ParameterizedType}
*
* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
* @see JavaType
* @see JavaType.Kind#PARAMETERIZED_TYPE
* @see ParameterizedType
* @since 1.0.0
*/
public class JavaTypeTestForParameterizedType extends BaseJavaTypeTest<C<String>> {
public class JavaTypeTestForParameterizedType extends AbstractJavaTypeTest<C<String>> {

@Override
protected void testGetSuperType(JavaType superType) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,15 @@
import static org.junit.jupiter.api.Assertions.assertNull;

/**
* {@link BaseJavaTypeTest} for {@link TypeVariable}
* {@link AbstractJavaTypeTest} for {@link TypeVariable}
*
* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
* @see JavaType
* @see JavaType.Kind#TYPE_VARIABLE
* @see TypeVariable
* @since 1.0.0
*/
public class JavaTypeTestForTypeVariable<T> extends BaseJavaTypeTest<T> {
public class JavaTypeTestForTypeVariable<T> extends AbstractJavaTypeTest<T> {

@Override
protected void testGetSuperType(JavaType superType) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,14 @@
import static org.junit.jupiter.api.Assertions.assertNull;

/**
* {@link BaseJavaTypeTest} for Unknown
* {@link AbstractJavaTypeTest} for Unknown
*
* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
* @see JavaType
* @see JavaType.Kind#UNKNOWN
* @since 1.0.0
*/
public class JavaTypeTestForUnknown extends BaseJavaTypeTest {
public class JavaTypeTestForUnknown extends AbstractJavaTypeTest {

@Override
protected Type resolveType() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,15 @@
import static org.junit.jupiter.api.Assertions.assertNull;

/**
* {@link BaseJavaTypeTest} for {@link WildcardType}
* {@link AbstractJavaTypeTest} for {@link WildcardType}
*
* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
* @see JavaType
* @see JavaType.Kind#WILDCARD_TYPE
* @see WildcardType
* @since 1.0.0
*/
public class JavaTypeTestForWildcardType extends BaseJavaTypeTest {
public class JavaTypeTestForWildcardType extends AbstractJavaTypeTest {

@Override
protected Type resolveType() {
Expand Down