assertFalse(CovariantTypes.isAssignableFrom(WildcardTypeImpl.withLowerBound(d), Runnable.class));
}
@Test
public void testWildcardAssignableFromParameterizedType() {
assertTrue(CovariantTypes.isAssignableFrom(WildcardTypeImpl.defaultInstance(), new ParameterizedTypeImpl(Collection.class, Number.class)));
assertTrue(CovariantTypes.isAssignableFrom(WildcardTypeImpl.withUpperBound(new ParameterizedTypeImpl(Collection.class, Number.class)), new ParameterizedTypeImpl(Collection.class, Number.class)));
assertTrue(CovariantTypes.isAssignableFrom(WildcardTypeImpl.withUpperBound(new ParameterizedTypeImpl(Collection.class, Number.class)), new ParameterizedTypeImpl(List.class, Number.class)));
assertTrue(CovariantTypes.isAssignableFrom(WildcardTypeImpl.withUpperBound(new ParameterizedTypeImpl(Collection.class, Number.class)), new ParameterizedTypeImpl(ArrayList.class, Number.class)));
assertFalse(CovariantTypes.isAssignableFrom(WildcardTypeImpl.withUpperBound(new ParameterizedTypeImpl(Collection.class, Number.class)), new ParameterizedTypeImpl(Collection.class, Integer.class)));
assertFalse(CovariantTypes.isAssignableFrom(WildcardTypeImpl.withUpperBound(new ParameterizedTypeImpl(Collection.class, Number.class)), new ParameterizedTypeImpl(Collection.class, Object.class)));
assertTrue(CovariantTypes.isAssignableFrom(WildcardTypeImpl.withLowerBound(new ParameterizedTypeImpl(Collection.class, Number.class)), new ParameterizedTypeImpl(Collection.class, Number.class)));
assertTrue(CovariantTypes.isAssignableFrom(WildcardTypeImpl.withLowerBound(new ParameterizedTypeImpl(Collection.class, Number.class)), new ParameterizedTypeImpl(Iterable.class, Number.class)));
assertFalse(CovariantTypes.isAssignableFrom(WildcardTypeImpl.withLowerBound(new ParameterizedTypeImpl(Collection.class, Number.class)), new ParameterizedTypeImpl(List.class, Number.class)));
assertFalse(CovariantTypes.isAssignableFrom(WildcardTypeImpl.withLowerBound(new ParameterizedTypeImpl(Collection.class, Number.class)), new ParameterizedTypeImpl(ArrayList.class, Integer.class)));
assertFalse(CovariantTypes.isAssignableFrom(WildcardTypeImpl.withLowerBound(new ParameterizedTypeImpl(Collection.class, Number.class)), new ParameterizedTypeImpl(Collection.class, Integer.class)));
assertFalse(CovariantTypes.isAssignableFrom(WildcardTypeImpl.withLowerBound(new ParameterizedTypeImpl(Collection.class, Number.class)), new ParameterizedTypeImpl(Collection.class, Object.class)));
}