Skip to content

Commit d88812c

Browse files
committed
added tests for equals()
1 parent 39ccc50 commit d88812c

File tree

1 file changed

+43
-1
lines changed

1 file changed

+43
-1
lines changed

src/test/java/org/apache/ibatis/reflection/TypeParameterResolverTest.java

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import static org.junit.jupiter.api.Assertions.assertEquals;
1919
import static org.junit.jupiter.api.Assertions.assertTrue;
2020

21+
import java.io.Serializable;
2122
import java.lang.reflect.Field;
2223
import java.lang.reflect.GenericArrayType;
2324
import java.lang.reflect.Method;
@@ -568,7 +569,48 @@ public Entry<String, Integer> entry() {
568569
Method method = clazz.getMethod("selectEntry");
569570
Type typeMybatis = TypeParameterResolver.resolveReturnType(method, clazz);
570571

571-
assertEquals(typeMybatis, typeJdk);
572+
assertTrue(typeJdk instanceof ParameterizedType && !(typeJdk instanceof TypeParameterResolver.ParameterizedTypeImpl));
573+
assertTrue(typeMybatis instanceof TypeParameterResolver.ParameterizedTypeImpl);
574+
assertEquals(typeMybatis.equals(typeJdk), typeJdk.equals(typeMybatis));
575+
}
576+
577+
@Test
578+
void shouldWildcardTypeBeEqual() throws Exception {
579+
class WildcardTypeTester {
580+
public List<? extends Serializable> foo() {
581+
return null;
582+
}
583+
}
584+
585+
Class<?> clazz = WildcardTypeTester.class;
586+
Method foo = clazz.getMethod("foo");
587+
Type typeMybatis = TypeParameterResolver.resolveReturnType(foo, clazz);
588+
Type typeJdk = foo.getGenericReturnType();
589+
590+
Type wildcardMybatis = ((ParameterizedType) typeMybatis).getActualTypeArguments()[0];
591+
Type wildcardJdk = ((ParameterizedType) typeJdk).getActualTypeArguments()[0];
592+
593+
assertTrue(wildcardJdk instanceof WildcardType && !(wildcardJdk instanceof TypeParameterResolver.WildcardTypeImpl));
594+
assertTrue(wildcardMybatis instanceof TypeParameterResolver.WildcardTypeImpl);
595+
assertEquals(wildcardMybatis.equals(wildcardJdk), wildcardJdk.equals(wildcardMybatis));
596+
}
597+
598+
@Test
599+
void shouldGenericArrayTypeBeEqual() throws Exception {
600+
class GenericArrayTypeTester {
601+
public List<String>[] foo() {
602+
return null;
603+
}
604+
}
605+
606+
Class<?> clazz = GenericArrayTypeTester.class;
607+
Method foo = clazz.getMethod("foo");
608+
Type typeMybatis = TypeParameterResolver.resolveReturnType(foo, clazz);
609+
Type typeJdk = foo.getGenericReturnType();
610+
611+
assertTrue(typeJdk instanceof GenericArrayType && !(typeJdk instanceof TypeParameterResolver.GenericArrayTypeImpl));
612+
assertTrue(typeMybatis instanceof TypeParameterResolver.GenericArrayTypeImpl);
613+
assertEquals(typeMybatis.equals(typeJdk), typeJdk.equals(typeMybatis));
572614
}
573615

574616
@Test

0 commit comments

Comments
 (0)