Skip to content

Commit fbf4248

Browse files
committed
TypesTest: add more isAssignable tests
1 parent eb8e570 commit fbf4248

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

src/test/java/org/scijava/util/TypesTest.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,31 @@ public void testIsAssignableClassToNull() {
510510
Types.isAssignable(Object.class, null);
511511
}
512512

513+
/** Tests {@link Types#isAssignable(Type, Type)} with type variable. */
514+
@Test
515+
public <T extends Number> void testIsAssignableT() {
516+
final Type t = genericTestType("t");
517+
final Type listT = genericTestType("listT");
518+
final Type listNumber = genericTestType("listNumber");
519+
final Type listInteger = genericTestType("listInteger");
520+
final Type listExtendsNumber = genericTestType("listExtendsNumber");
521+
522+
assertTrue(Types.isAssignable(t, t));
523+
assertTrue(Types.isAssignable(listT, listT));
524+
assertTrue(Types.isAssignable(listNumber, listNumber));
525+
assertTrue(Types.isAssignable(listInteger, listInteger));
526+
assertTrue(Types.isAssignable(listExtendsNumber, listExtendsNumber));
527+
528+
assertTrue(Types.isAssignable(listT, listExtendsNumber));
529+
assertTrue(Types.isAssignable(listNumber, listExtendsNumber));
530+
assertTrue(Types.isAssignable(listInteger, listExtendsNumber));
531+
532+
assertFalse(Types.isAssignable(listNumber, listT));
533+
assertFalse(Types.isAssignable(listInteger, listT));
534+
assertFalse(Types.isAssignable(listExtendsNumber, listT));
535+
assertFalse(Types.isAssignable(listExtendsNumber, listNumber));
536+
}
537+
513538
/** Tests {@link Types#isInstance(Object, Class)}. */
514539
@Test
515540
public void testIsInstance() {
@@ -598,6 +623,14 @@ public static enum Words {
598623
FOO, BAR, FUBAR
599624
}
600625

626+
private interface TestTypes<T extends Number> {
627+
T t();
628+
List<T> listT();
629+
List<Number> listNumber();
630+
List<Integer> listInteger();
631+
List<? extends Number> listExtendsNumber();
632+
}
633+
601634
// -- Helper methods --
602635

603636
/**
@@ -671,4 +704,7 @@ private void assertAllTheSame(final List<?> list, final Object... values) {
671704
}
672705
}
673706

707+
private Type genericTestType(final String name) {
708+
return Types.method(TestTypes.class, name).getGenericReturnType();
709+
}
674710
}

0 commit comments

Comments
 (0)