@Test public void testIsAssignableByGenericsInheritance() { assertEquals(true, collectionOfString.isAssignableBy(collectionOfString)); assertEquals(true, collectionOfString.isAssignableBy(listOfStrings)); assertEquals(true, collectionOfString.isAssignableBy(linkedListOfString)); assertEquals(false, listOfStrings.isAssignableBy(collectionOfString)); assertEquals(true, listOfStrings.isAssignableBy(listOfStrings)); assertEquals(true, listOfStrings.isAssignableBy(linkedListOfString)); assertEquals(false, linkedListOfString.isAssignableBy(collectionOfString)); assertEquals(false, linkedListOfString.isAssignableBy(listOfStrings)); assertEquals(true, linkedListOfString.isAssignableBy(linkedListOfString)); }
@Test public void testIsAssignableByGenerics() { assertEquals(false, listOfStrings.isAssignableBy(listOfWildcardExtendsString)); assertEquals(false, listOfStrings.isAssignableBy(listOfWildcardExtendsString)); assertEquals(true, listOfWildcardExtendsString.isAssignableBy(listOfStrings)); assertEquals(false, listOfWildcardExtendsString.isAssignableBy(listOfWildcardSuperString)); assertEquals(true, listOfWildcardSuperString.isAssignableBy(listOfStrings)); assertEquals(false, listOfWildcardSuperString.isAssignableBy(listOfWildcardExtendsString)); }
@Test public void testIsAssignableBySimple() { assertEquals(true, object.isAssignableBy(string)); assertEquals(false, string.isAssignableBy(object)); assertEquals(false, listOfStrings.isAssignableBy(listOfA)); assertEquals(false, listOfA.isAssignableBy(listOfStrings)); assertEquals(false, object.isAssignableBy(ResolvedVoidType.INSTANCE)); assertEquals(false, string.isAssignableBy(ResolvedVoidType.INSTANCE)); assertEquals(false, listOfStrings.isAssignableBy(ResolvedVoidType.INSTANCE)); assertEquals(false, listOfA.isAssignableBy(ResolvedVoidType.INSTANCE)); assertEquals(true, object.isAssignableBy(NullType.INSTANCE)); assertEquals(true, string.isAssignableBy(NullType.INSTANCE)); assertEquals(true, listOfStrings.isAssignableBy(NullType.INSTANCE)); assertEquals(true, listOfA.isAssignableBy(NullType.INSTANCE)); }
@Test public void testIsAssignableBySimple() { assertEquals(false, tpString.isAssignableBy(tpA)); }
@Test public void testIsAssignableBySimple() { assertEquals(false, unbounded.isAssignableBy(object)); assertEquals(true, object.isAssignableBy(unbounded)); assertEquals(false, string.isAssignableBy(unbounded)); assertEquals(true, superFoo.isAssignableBy(foo)); assertEquals(false, foo.isAssignableBy(superFoo)); assertEquals(false, extendsFoo.isAssignableBy(foo)); assertEquals(true, foo.isAssignableBy(extendsFoo)); }
for (ResolvedTypeParameterDeclaration.Bound bound : other.asTypeVariable().asTypeParameter().getBounds()) { if (bound.isExtends()) { if (this.isAssignableBy(bound.getType())) { return true; return isAssignableBy(other.asConstraintType().getBound()); } else if (other.isWildcard()) { if (this.getQualifiedName().equals(Object.class.getCanonicalName())) { return true; } else if (other.asWildcard().isExtends()) { return isAssignableBy(other.asWildcard().getBoundedType()); } else { return false;
for (ResolvedTypeParameterDeclaration.Bound bound : other.asTypeVariable().asTypeParameter().getBounds()) { if (bound.isExtends()) { if (this.isAssignableBy(bound.getType())) { return true; return isAssignableBy(other.asConstraintType().getBound()); } else if (other.isWildcard()) { if (this.getQualifiedName().equals(Object.class.getCanonicalName())) { return true; } else if (other.asWildcard().isExtends()) { return isAssignableBy(other.asWildcard().getBoundedType()); } else { return false;
for (ResolvedTypeParameterDeclaration.Bound bound : other.asTypeVariable().asTypeParameter().getBounds()) { if (bound.isExtends()) { if (this.isAssignableBy(bound.getType())) { return true; return isAssignableBy(other.asConstraintType().getBound()); } else if (other.isWildcard()) { if (this.getQualifiedName().equals(Object.class.getCanonicalName())) { return true; } else if (other.asWildcard().isExtends()) { return isAssignableBy(other.asWildcard().getBoundedType()); } else { return false;
@Test public void charSequenceIsAssignableToObject() { TypeSolver typeSolver = new ReflectionTypeSolver(); ReferenceTypeImpl charSequence = new ReferenceTypeImpl(new ReflectionInterfaceDeclaration(CharSequence.class, typeSolver), typeSolver); ReferenceTypeImpl object = new ReferenceTypeImpl(new ReflectionClassDeclaration(Object.class, typeSolver), typeSolver); assertEquals(false, charSequence.isAssignableBy(object)); assertEquals(true, object.isAssignableBy(charSequence)); }
new ReflectionClassDeclaration(MoreBazzing.class, typeSolver), ImmutableList.of(foo, bar), typeSolver) .isAssignableBy(new ReferenceTypeImpl( new ReflectionClassDeclaration(MoreBazzing.class, typeSolver), ImmutableList.of(foo, bar), typeSolver)) new ReflectionClassDeclaration(MoreBazzing.class, typeSolver), ImmutableList.of(ResolvedWildcard.extendsBound(foo), bar), typeSolver) .isAssignableBy(new ReferenceTypeImpl( new ReflectionClassDeclaration(MoreBazzing.class, typeSolver), ImmutableList.of(foo, bar), typeSolver)) new ReflectionClassDeclaration(MoreBazzing.class, typeSolver), ImmutableList.of(foo, ResolvedWildcard.extendsBound(bar)), typeSolver) .isAssignableBy(new ReferenceTypeImpl( new ReflectionClassDeclaration(MoreBazzing.class, typeSolver), ImmutableList.of(foo, bar), typeSolver)) new ReflectionClassDeclaration(MoreBazzing.class, typeSolver), ImmutableList.of(ResolvedWildcard.extendsBound(foo), ResolvedWildcard.extendsBound(foo)), typeSolver) .isAssignableBy(new ReferenceTypeImpl( new ReflectionClassDeclaration(MoreBazzing.class, typeSolver), ImmutableList.of(foo, bar), typeSolver)) new ReflectionClassDeclaration(MoreBazzing.class, typeSolver), ImmutableList.of(bar, bar), typeSolver); assertEquals(true, left.isAssignableBy(right)); assertEquals(true, left.isAssignableBy(right));