Unit test for match against unresolvable wildcard
See gh-33982
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2023 the original author or authors.
|
||||
* Copyright 2002-2024 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.
|
||||
@@ -169,7 +169,7 @@ class ResolvableTypeTests {
|
||||
|
||||
@Test
|
||||
void forInstanceProviderNull() {
|
||||
ResolvableType type = ResolvableType.forInstance(new MyGenericInterfaceType<String>(null));
|
||||
ResolvableType type = ResolvableType.forInstance(new MyGenericInterfaceType<>(null));
|
||||
assertThat(type.getType()).isEqualTo(MyGenericInterfaceType.class);
|
||||
assertThat(type.resolve()).isEqualTo(MyGenericInterfaceType.class);
|
||||
}
|
||||
@@ -1177,6 +1177,20 @@ class ResolvableTypeTests {
|
||||
assertThatResolvableType(complex4).isNotAssignableFrom(complex3);
|
||||
}
|
||||
|
||||
@Test
|
||||
void isAssignableFromForUnresolvedWildcards() {
|
||||
ResolvableType wildcard = ResolvableType.forInstance(new Wildcard<>());
|
||||
ResolvableType wildcardFixed = ResolvableType.forInstance(new WildcardFixed());
|
||||
ResolvableType wildcardConcrete = ResolvableType.forClassWithGenerics(Wildcard.class, Number.class);
|
||||
|
||||
assertThat(wildcard.isAssignableFrom(wildcardFixed)).isTrue();
|
||||
assertThat(wildcard.isAssignableFrom(wildcardConcrete)).isTrue();
|
||||
assertThat(wildcardFixed.isAssignableFrom(wildcard)).isFalse();
|
||||
assertThat(wildcardFixed.isAssignableFrom(wildcardConcrete)).isFalse();
|
||||
assertThat(wildcardConcrete.isAssignableFrom(wildcard)).isTrue();
|
||||
assertThat(wildcardConcrete.isAssignableFrom(wildcardFixed)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void identifyTypeVariable() throws Exception {
|
||||
Method method = ClassArguments.class.getMethod("typedArgumentFirst", Class.class, Class.class, Class.class);
|
||||
@@ -1574,7 +1588,6 @@ class ResolvableTypeTests {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class MySimpleInterfaceType implements MyInterfaceType<String> {
|
||||
}
|
||||
|
||||
@@ -1584,7 +1597,6 @@ class ResolvableTypeTests {
|
||||
public abstract class ExtendsMySimpleInterfaceTypeWithImplementsRaw extends MySimpleInterfaceTypeWithImplementsRaw {
|
||||
}
|
||||
|
||||
|
||||
public class MyCollectionInterfaceType implements MyInterfaceType<Collection<String>> {
|
||||
}
|
||||
|
||||
@@ -1592,20 +1604,17 @@ class ResolvableTypeTests {
|
||||
public abstract class MySuperclassType<T> {
|
||||
}
|
||||
|
||||
|
||||
public class MySimpleSuperclassType extends MySuperclassType<String> {
|
||||
}
|
||||
|
||||
|
||||
public class MyCollectionSuperclassType extends MySuperclassType<Collection<String>> {
|
||||
}
|
||||
|
||||
|
||||
interface Wildcard<T extends Number> extends List<T> {
|
||||
public class Wildcard<T extends Number> {
|
||||
}
|
||||
|
||||
|
||||
interface RawExtendsWildcard extends Wildcard {
|
||||
public class WildcardFixed extends Wildcard<Integer> {
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user