@@ -510,6 +510,31 @@ public void testIsAssignableClassToNull() {
510
510
Types .isAssignable (Object .class , null );
511
511
}
512
512
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
+
513
538
/** Tests {@link Types#isInstance(Object, Class)}. */
514
539
@ Test
515
540
public void testIsInstance () {
@@ -598,6 +623,14 @@ public static enum Words {
598
623
FOO , BAR , FUBAR
599
624
}
600
625
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
+
601
634
// -- Helper methods --
602
635
603
636
/**
@@ -671,4 +704,7 @@ private void assertAllTheSame(final List<?> list, final Object... values) {
671
704
}
672
705
}
673
706
707
+ private Type genericTestType (final String name ) {
708
+ return Types .method (TestTypes .class , name ).getGenericReturnType ();
709
+ }
674
710
}
0 commit comments