This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-lang.git

commit 62e8c58129813811fea5da0d180c88559490778d
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Wed Jan 24 22:13:51 2024 -0500

    Sort members
---
 .../commons/lang3/builder/ConversionTest.java      |   8 +-
 .../commons/lang3/builder/DiffResultTest.java      |  10 +-
 .../commons/lang3/reflect/TypeUtilsTest.java       | 372 ++++++++++-----------
 3 files changed, 195 insertions(+), 195 deletions(-)

diff --git a/src/test/java/org/apache/commons/lang3/builder/ConversionTest.java 
b/src/test/java/org/apache/commons/lang3/builder/ConversionTest.java
index 7143e2c72..36b4a8543 100644
--- a/src/test/java/org/apache/commons/lang3/builder/ConversionTest.java
+++ b/src/test/java/org/apache/commons/lang3/builder/ConversionTest.java
@@ -31,13 +31,13 @@ class ConversionTest {
     }
 
     @Test
-    void testHexToByte_nullString() {
-        assertThrows(NullPointerException.class, () -> 
Conversion.hexToByte(null, 0, (byte) 0, 0, 2));
+    void testHexToByte_IllegalArgument() {
+        assertThrows(IllegalArgumentException.class, () -> 
Conversion.hexToByte("A0", 0, (byte) 0, 4, 2));
     }
 
     @Test
-    void testHexToByte_IllegalArgument() {
-        assertThrows(IllegalArgumentException.class, () -> 
Conversion.hexToByte("A0", 0, (byte) 0, 4, 2));
+    void testHexToByte_nullString() {
+        assertThrows(NullPointerException.class, () -> 
Conversion.hexToByte(null, 0, (byte) 0, 0, 2));
     }
 
 }
diff --git a/src/test/java/org/apache/commons/lang3/builder/DiffResultTest.java 
b/src/test/java/org/apache/commons/lang3/builder/DiffResultTest.java
index 2f3f19cc6..e76251184 100644
--- a/src/test/java/org/apache/commons/lang3/builder/DiffResultTest.java
+++ b/src/test/java/org/apache/commons/lang3/builder/DiffResultTest.java
@@ -132,32 +132,32 @@ public class DiffResultTest extends AbstractLangTest {
     }
 
     @Test
-    public void testToStringOutput() {
+    public void testToStringFormat() {
         // @formatter:off
         final DiffResult<EmptyClass> result = DiffBuilder.<EmptyClass>builder()
                 .setLeft(new EmptyClass())
                 .setRight(new EmptyClass())
                 .setStyle(ToStringStyle.SHORT_PREFIX_STYLE)
+                .setToStringFormat("%s <> %s")
                 .build()
                 .append("test", false, true)
                 .build();
         // @formatter:on
-        assertEquals("DiffResultTest.EmptyClass[test=false] differs from 
DiffResultTest.EmptyClass[test=true]", result.toString());
+        assertEquals("DiffResultTest.EmptyClass[test=false] <> 
DiffResultTest.EmptyClass[test=true]", result.toString());
     }
 
     @Test
-    public void testToStringFormat() {
+    public void testToStringOutput() {
         // @formatter:off
         final DiffResult<EmptyClass> result = DiffBuilder.<EmptyClass>builder()
                 .setLeft(new EmptyClass())
                 .setRight(new EmptyClass())
                 .setStyle(ToStringStyle.SHORT_PREFIX_STYLE)
-                .setToStringFormat("%s <> %s")
                 .build()
                 .append("test", false, true)
                 .build();
         // @formatter:on
-        assertEquals("DiffResultTest.EmptyClass[test=false] <> 
DiffResultTest.EmptyClass[test=true]", result.toString());
+        assertEquals("DiffResultTest.EmptyClass[test=false] differs from 
DiffResultTest.EmptyClass[test=true]", result.toString());
     }
 
     @Test
diff --git a/src/test/java/org/apache/commons/lang3/reflect/TypeUtilsTest.java 
b/src/test/java/org/apache/commons/lang3/reflect/TypeUtilsTest.java
index b01ee870f..ce5051413 100644
--- a/src/test/java/org/apache/commons/lang3/reflect/TypeUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/reflect/TypeUtilsTest.java
@@ -163,6 +163,10 @@ public class TypeUtilsTest<B> extends AbstractLangTest {
         }
     }
 
+    /** This non-static inner class is parameterized. */
+    private class MyInnerClass<T> {
+    }
+
     public class Other<T> implements This<String, T> {
     }
 
@@ -229,6 +233,11 @@ public class TypeUtilsTest<B> extends AbstractLangTest {
 
     public Iterable<? extends Map<Integer, ? extends Collection<?>>> iterable;
 
+    /** The inner class is used as a return type from a method. */
+    private <U> MyInnerClass<U> aMethod() {
+        return null;
+    }
+
     @Test
     public void test_LANG_1114() throws NoSuchFieldException {
         final Type nonWildcardType = 
getClass().getDeclaredField("wildcardComparable").getGenericType();
@@ -283,22 +292,6 @@ public class TypeUtilsTest<B> extends AbstractLangTest {
         assertEquals("java.util.function.Function<? super T, ? extends U>", 
typeName);
     }
 
-    @Test
-    public void test_LANG_820() {
-        final Type[] typeArray = {String.class, String.class};
-        final Type[] expectedArray = {String.class};
-        assertArrayEquals(expectedArray, 
TypeUtils.normalizeUpperBounds(typeArray));
-    }
-
-    /** This non-static inner class is parameterized. */
-    private class MyInnerClass<T> {
-    }
-
-    /** The inner class is used as a return type from a method. */
-    private <U> MyInnerClass<U> aMethod() {
-        return null;
-    }
-
     @Test
     public void test_LANG_1702() throws NoSuchMethodException, 
SecurityException {
         final Type type = 
TypeUtilsTest.class.getDeclaredMethod("aMethod").getGenericReturnType();
@@ -310,6 +303,13 @@ public class TypeUtilsTest<B> extends AbstractLangTest {
         final Type unrolledType = TypeUtils.unrollVariables(typeArguments, 
type);
     }
 
+    @Test
+    public void test_LANG_820() {
+        final Type[] typeArray = {String.class, String.class};
+        final Type[] expectedArray = {String.class};
+        assertArrayEquals(expectedArray, 
TypeUtils.normalizeUpperBounds(typeArray));
+    }
+
     @Test
     public void testContainsTypeVariables() throws NoSuchMethodException {
         
assertFalse(TypeUtils.containsTypeVariables(Test1.class.getMethod("m0").getGenericReturnType()));
@@ -582,82 +582,130 @@ public class TypeUtilsTest<B> extends AbstractLangTest {
     }
 
     @Test
-    public void testIsAssignableGenericComparableTypes() throws 
NoSuchFieldException {
-        final Type intComparableType = 
getClass().getField("intComparable").getGenericType();
-        assertTrue(TypeUtils.isAssignable(int.class, intComparableType));
+    public void testIsAssignableDirectClassHierarchy() throws 
NoSuchFieldException {
+        final Type bClassType = 
AClass.class.getField("bClass").getGenericType(); // B is superclass
+        final Type cClassType = 
AClass.class.getField("cClass").getGenericType(); // C subclass of B
+        final Type dClassType = 
AClass.class.getField("dClass").getGenericType(); // D subclass of C
+        final Type eClassType = 
AClass.class.getField("eClass").getGenericType(); // E subclass of D
+        final Type fClassType = 
AClass.class.getField("fClass").getGenericType(); // F subclass of E
 
-        final Type longComparableType = 
getClass().getField("longComparable").getGenericType();
-        assertFalse(TypeUtils.isAssignable(int.class, longComparableType));
-        assertFalse(TypeUtils.isAssignable(Integer.class, longComparableType));
+        assertTrue(TypeUtils.isAssignable(cClassType, bClassType));
+        assertTrue(TypeUtils.isAssignable(dClassType, bClassType));
+        assertTrue(TypeUtils.isAssignable(eClassType, bClassType));
+        assertTrue(TypeUtils.isAssignable(fClassType, bClassType));
 
-        final Type intComparableArrayType = 
getClass().getField("intWildcardComparable").getGenericType();
-        assertTrue(TypeUtils.isAssignable(Integer[].class, 
intComparableArrayType));
+        assertTrue(TypeUtils.isAssignable(dClassType, cClassType));
+        assertTrue(TypeUtils.isAssignable(eClassType, cClassType));
+        assertTrue(TypeUtils.isAssignable(fClassType, cClassType));
+
+        assertTrue(TypeUtils.isAssignable(eClassType, dClassType));
+        assertTrue(TypeUtils.isAssignable(fClassType, dClassType));
+
+        assertTrue(TypeUtils.isAssignable(fClassType, eClassType));
     }
 
     @Test
-    public void testIsAssignableGenericListTypes() throws NoSuchFieldException 
{
-        final Type rawListType = 
GenericTypeHolder.class.getDeclaredField("rawList").getGenericType();
-        final Type objectListType = 
GenericTypeHolder.class.getDeclaredField("objectList").getGenericType();
-        final Type unboundListType = 
GenericTypeHolder.class.getDeclaredField("unboundList").getGenericType();
-        final Type superObjectListType = 
GenericTypeHolder.class.getDeclaredField("superObjectList").getGenericType();
-        final Type stringListType = 
GenericTypeHolder.class.getDeclaredField("stringList").getGenericType();
-        final Type subStringListType = 
GenericTypeHolder.class.getDeclaredField("subStringList").getGenericType();
-        final Type superStringListType = 
GenericTypeHolder.class.getDeclaredField("superStringList").getGenericType();
+    public void testIsAssignableGenericArrayTypeToObject() {
+        final Class<Constructor> rawClass = Constructor.class;
+        final Class<Insets> typeArgClass = Insets.class;
+        // Builds a ParameterizedType for Constructor<Insets>
+        final ParameterizedType paramType = TypeUtils.parameterize(rawClass, 
typeArgClass);
+        assertEquals(rawClass, paramType.getRawType());
+        assertEquals(typeArgClass, paramType.getActualTypeArguments()[0]);
 
-        assertTrue(TypeUtils.isAssignable(rawListType, rawListType));
-        assertTrue(TypeUtils.isAssignable(rawListType, objectListType));
-        assertTrue(TypeUtils.isAssignable(objectListType, rawListType));
-        assertTrue(TypeUtils.isAssignable(rawListType, unboundListType));
-        assertTrue(TypeUtils.isAssignable(unboundListType, rawListType));
-        assertTrue(TypeUtils.isAssignable(rawListType, superObjectListType));
-        assertTrue(TypeUtils.isAssignable(superObjectListType, rawListType));
-        assertTrue(TypeUtils.isAssignable(rawListType, stringListType));
-        assertTrue(TypeUtils.isAssignable(stringListType, rawListType));
-        assertTrue(TypeUtils.isAssignable(rawListType, subStringListType));
-        assertTrue(TypeUtils.isAssignable(subStringListType, rawListType));
-        assertTrue(TypeUtils.isAssignable(rawListType, superStringListType));
-        assertTrue(TypeUtils.isAssignable(superStringListType, rawListType));
+        assertTrue(Object.class.isAssignableFrom(paramType.getClass()));
+        assertFalse(paramType.getClass().isAssignableFrom(Object.class));
 
-        assertTrue(TypeUtils.isAssignable(objectListType, objectListType));
-        assertTrue(TypeUtils.isAssignable(objectListType, unboundListType));
-        assertFalse(TypeUtils.isAssignable(unboundListType, objectListType));
-        assertTrue(TypeUtils.isAssignable(objectListType, 
superObjectListType));
-        assertFalse(TypeUtils.isAssignable(superObjectListType, 
objectListType));
-        assertFalse(TypeUtils.isAssignable(objectListType, stringListType));
-        assertFalse(TypeUtils.isAssignable(stringListType, objectListType));
-        assertFalse(TypeUtils.isAssignable(objectListType, subStringListType));
-        assertFalse(TypeUtils.isAssignable(subStringListType, objectListType));
-        assertTrue(TypeUtils.isAssignable(objectListType, 
superStringListType));
-        assertFalse(TypeUtils.isAssignable(superStringListType, 
objectListType));
+        final Type testType = Object.class;
+        assertTrue(TypeUtils.isAssignable(paramType, testType),
+                () -> String.format("TypeUtils.isAssignable(%s, %s)", 
paramType, testType));
+        assertFalse(TypeUtils.isAssignable(testType, paramType),
+                () -> String.format("TypeUtils.isAssignable(%s, %s)", 
testType, paramType));
+    }
 
-        assertTrue(TypeUtils.isAssignable(unboundListType, unboundListType));
-        assertFalse(TypeUtils.isAssignable(unboundListType, 
superObjectListType));
-        assertTrue(TypeUtils.isAssignable(superObjectListType, 
unboundListType));
-        assertFalse(TypeUtils.isAssignable(unboundListType, stringListType));
-        assertTrue(TypeUtils.isAssignable(stringListType, unboundListType));
-        assertFalse(TypeUtils.isAssignable(unboundListType, 
subStringListType));
-        assertTrue(TypeUtils.isAssignable(subStringListType, unboundListType));
-        assertFalse(TypeUtils.isAssignable(unboundListType, 
superStringListType));
-        assertTrue(TypeUtils.isAssignable(superStringListType, 
unboundListType));
+    @Test
+    public void testIsAssignableGenericArrayTypeToParameterizedType() {
+        final Class<Constructor> rawClass = Constructor.class;
+        final Class<Insets> typeArgClass = Insets.class;
+        // Builds a ParameterizedType for Constructor<Insets>
+        final ParameterizedType paramType = TypeUtils.parameterize(rawClass, 
typeArgClass);
+        assertEquals(rawClass, paramType.getRawType());
+        assertEquals(typeArgClass, paramType.getActualTypeArguments()[0]);
 
-        assertTrue(TypeUtils.isAssignable(superObjectListType, 
superObjectListType));
-        assertFalse(TypeUtils.isAssignable(superObjectListType, 
stringListType));
-        assertFalse(TypeUtils.isAssignable(stringListType, 
superObjectListType));
-        assertFalse(TypeUtils.isAssignable(superObjectListType, 
subStringListType));
-        assertFalse(TypeUtils.isAssignable(subStringListType, 
superObjectListType));
-        assertTrue(TypeUtils.isAssignable(superObjectListType, 
superStringListType));
-        assertFalse(TypeUtils.isAssignable(superStringListType, 
superObjectListType));
+        
assertFalse(GenericArrayType.class.isAssignableFrom(paramType.getClass()));
+        
assertFalse(paramType.getClass().isAssignableFrom(GenericArrayType.class));
 
-        assertTrue(TypeUtils.isAssignable(stringListType, stringListType));
-        assertTrue(TypeUtils.isAssignable(stringListType, subStringListType));
-        assertFalse(TypeUtils.isAssignable(subStringListType, stringListType));
-        assertTrue(TypeUtils.isAssignable(stringListType, 
superStringListType));
-        assertFalse(TypeUtils.isAssignable(superStringListType, 
stringListType));
+        final GenericArrayType testType = 
TypeUtils.genericArrayType(paramType);
+        assertFalse(TypeUtils.isAssignable(paramType, testType),
+                () -> String.format("TypeUtils.isAssignable(%s, %s)", 
paramType, testType));
+        assertFalse(TypeUtils.isAssignable(testType, paramType),
+                () -> String.format("TypeUtils.isAssignable(%s, %s)", 
testType, paramType));
+    }
 
-        assertTrue(TypeUtils.isAssignable(subStringListType, 
subStringListType));
-        assertFalse(TypeUtils.isAssignable(subStringListType, 
superStringListType));
-        assertFalse(TypeUtils.isAssignable(superStringListType, 
subStringListType));
-        assertTrue(TypeUtils.isAssignable(superStringListType, 
superStringListType));
+    @Test
+    @Disabled("TODO")
+    public void testIsAssignableGenericArrayTypeToWildcardType() {
+        final Class<Constructor> rawClass = Constructor.class;
+        final Class<Insets> typeArgClass = Insets.class;
+        // Builds a ParameterizedType for Constructor<Insets>
+        final ParameterizedType paramType = TypeUtils.parameterize(rawClass, 
typeArgClass);
+        assertEquals(rawClass, paramType.getRawType());
+        assertEquals(typeArgClass, paramType.getActualTypeArguments()[0]);
+
+        assertFalse(WildcardType.class.isAssignableFrom(paramType.getClass()));
+        assertFalse(paramType.getClass().isAssignableFrom(WildcardType.class));
+
+        final WildcardType testType = TypeUtils.WILDCARD_ALL;
+        // TODO This test returns true unlike the test above.
+        // Is this a bug in this test or in the main code?
+        assertFalse(TypeUtils.isAssignable(paramType, testType),
+                () -> String.format("TypeUtils.isAssignable(%s, %s)", 
paramType, testType));
+        assertFalse(TypeUtils.isAssignable(testType, paramType),
+                () -> String.format("TypeUtils.isAssignable(%s, %s)", 
testType, paramType));
+    }
+
+    @Test
+    public void testIsAssignableGenericClassHierarchy() throws 
NoSuchFieldException {
+        /*
+         *            <<This>>
+         *      /      /     \     \
+         * <<And>>   That   Other   Tester
+         *      \   /         |
+         *       The        Thing
+         */
+        final Type disType = getClass().getField("dis").getGenericType();      
 // This is superinterface
+        final Type datType = getClass().getField("dat").getGenericType();      
 // That implements This
+        final Type dat2Type = getClass().getField("dat2").getGenericType();
+        final Type dat3Type = getClass().getField("dat3").getGenericType();
+        final Type daType = getClass().getField("da").getGenericType();        
 // The extends That and implements And
+        final Type uhderType = getClass().getField("uhder").getGenericType();  
 // Other implements This
+        final Type dingType = getClass().getField("ding").getGenericType();    
 // Thing extends Other
+        final Type testerType = 
getClass().getField("tester").getGenericType(); // Tester implements This
+        final Type tester2Type = 
getClass().getField("tester2").getGenericType();
+
+        assertTrue(TypeUtils.isAssignable(datType, disType));
+        assertFalse(TypeUtils.isAssignable(daType, disType));
+        assertTrue(TypeUtils.isAssignable(uhderType, disType));
+        assertFalse(TypeUtils.isAssignable(dingType, disType));
+        assertTrue(TypeUtils.isAssignable(testerType, disType));
+        assertFalse(TypeUtils.isAssignable(tester2Type, disType));
+
+        assertFalse(TypeUtils.isAssignable(dat2Type, datType));
+        assertFalse(TypeUtils.isAssignable(datType, dat2Type));
+        assertFalse(TypeUtils.isAssignable(dat3Type, datType));
+    }
+
+    @Test
+    public void testIsAssignableGenericComparableTypes() throws 
NoSuchFieldException {
+        final Type intComparableType = 
getClass().getField("intComparable").getGenericType();
+        assertTrue(TypeUtils.isAssignable(int.class, intComparableType));
+
+        final Type longComparableType = 
getClass().getField("longComparable").getGenericType();
+        assertFalse(TypeUtils.isAssignable(int.class, longComparableType));
+        assertFalse(TypeUtils.isAssignable(Integer.class, longComparableType));
+
+        final Type intComparableArrayType = 
getClass().getField("intWildcardComparable").getGenericType();
+        assertTrue(TypeUtils.isAssignable(Integer[].class, 
intComparableArrayType));
     }
 
     @Test
@@ -727,117 +775,69 @@ public class TypeUtilsTest<B> extends AbstractLangTest {
     }
 
     @Test
-    public void testIsAssignableDirectClassHierarchy() throws 
NoSuchFieldException {
-        final Type bClassType = 
AClass.class.getField("bClass").getGenericType(); // B is superclass
-        final Type cClassType = 
AClass.class.getField("cClass").getGenericType(); // C subclass of B
-        final Type dClassType = 
AClass.class.getField("dClass").getGenericType(); // D subclass of C
-        final Type eClassType = 
AClass.class.getField("eClass").getGenericType(); // E subclass of D
-        final Type fClassType = 
AClass.class.getField("fClass").getGenericType(); // F subclass of E
-
-        assertTrue(TypeUtils.isAssignable(cClassType, bClassType));
-        assertTrue(TypeUtils.isAssignable(dClassType, bClassType));
-        assertTrue(TypeUtils.isAssignable(eClassType, bClassType));
-        assertTrue(TypeUtils.isAssignable(fClassType, bClassType));
-
-        assertTrue(TypeUtils.isAssignable(dClassType, cClassType));
-        assertTrue(TypeUtils.isAssignable(eClassType, cClassType));
-        assertTrue(TypeUtils.isAssignable(fClassType, cClassType));
-
-        assertTrue(TypeUtils.isAssignable(eClassType, dClassType));
-        assertTrue(TypeUtils.isAssignable(fClassType, dClassType));
-
-        assertTrue(TypeUtils.isAssignable(fClassType, eClassType));
-    }
-
-    @Test
-    public void testIsAssignableGenericClassHierarchy() throws 
NoSuchFieldException {
-        /*
-         *            <<This>>
-         *      /      /     \     \
-         * <<And>>   That   Other   Tester
-         *      \   /         |
-         *       The        Thing
-         */
-        final Type disType = getClass().getField("dis").getGenericType();      
 // This is superinterface
-        final Type datType = getClass().getField("dat").getGenericType();      
 // That implements This
-        final Type dat2Type = getClass().getField("dat2").getGenericType();
-        final Type dat3Type = getClass().getField("dat3").getGenericType();
-        final Type daType = getClass().getField("da").getGenericType();        
 // The extends That and implements And
-        final Type uhderType = getClass().getField("uhder").getGenericType();  
 // Other implements This
-        final Type dingType = getClass().getField("ding").getGenericType();    
 // Thing extends Other
-        final Type testerType = 
getClass().getField("tester").getGenericType(); // Tester implements This
-        final Type tester2Type = 
getClass().getField("tester2").getGenericType();
-
-        assertTrue(TypeUtils.isAssignable(datType, disType));
-        assertFalse(TypeUtils.isAssignable(daType, disType));
-        assertTrue(TypeUtils.isAssignable(uhderType, disType));
-        assertFalse(TypeUtils.isAssignable(dingType, disType));
-        assertTrue(TypeUtils.isAssignable(testerType, disType));
-        assertFalse(TypeUtils.isAssignable(tester2Type, disType));
-
-        assertFalse(TypeUtils.isAssignable(dat2Type, datType));
-        assertFalse(TypeUtils.isAssignable(datType, dat2Type));
-        assertFalse(TypeUtils.isAssignable(dat3Type, datType));
-    }
-
-    @Test
-    public void testIsAssignableGenericArrayTypeToObject() {
-        final Class<Constructor> rawClass = Constructor.class;
-        final Class<Insets> typeArgClass = Insets.class;
-        // Builds a ParameterizedType for Constructor<Insets>
-        final ParameterizedType paramType = TypeUtils.parameterize(rawClass, 
typeArgClass);
-        assertEquals(rawClass, paramType.getRawType());
-        assertEquals(typeArgClass, paramType.getActualTypeArguments()[0]);
-
-        assertTrue(Object.class.isAssignableFrom(paramType.getClass()));
-        assertFalse(paramType.getClass().isAssignableFrom(Object.class));
-
-        final Type testType = Object.class;
-        assertTrue(TypeUtils.isAssignable(paramType, testType),
-                () -> String.format("TypeUtils.isAssignable(%s, %s)", 
paramType, testType));
-        assertFalse(TypeUtils.isAssignable(testType, paramType),
-                () -> String.format("TypeUtils.isAssignable(%s, %s)", 
testType, paramType));
-    }
+    public void testIsAssignableGenericListTypes() throws NoSuchFieldException 
{
+        final Type rawListType = 
GenericTypeHolder.class.getDeclaredField("rawList").getGenericType();
+        final Type objectListType = 
GenericTypeHolder.class.getDeclaredField("objectList").getGenericType();
+        final Type unboundListType = 
GenericTypeHolder.class.getDeclaredField("unboundList").getGenericType();
+        final Type superObjectListType = 
GenericTypeHolder.class.getDeclaredField("superObjectList").getGenericType();
+        final Type stringListType = 
GenericTypeHolder.class.getDeclaredField("stringList").getGenericType();
+        final Type subStringListType = 
GenericTypeHolder.class.getDeclaredField("subStringList").getGenericType();
+        final Type superStringListType = 
GenericTypeHolder.class.getDeclaredField("superStringList").getGenericType();
 
-    @Test
-    public void testIsAssignableGenericArrayTypeToParameterizedType() {
-        final Class<Constructor> rawClass = Constructor.class;
-        final Class<Insets> typeArgClass = Insets.class;
-        // Builds a ParameterizedType for Constructor<Insets>
-        final ParameterizedType paramType = TypeUtils.parameterize(rawClass, 
typeArgClass);
-        assertEquals(rawClass, paramType.getRawType());
-        assertEquals(typeArgClass, paramType.getActualTypeArguments()[0]);
+        assertTrue(TypeUtils.isAssignable(rawListType, rawListType));
+        assertTrue(TypeUtils.isAssignable(rawListType, objectListType));
+        assertTrue(TypeUtils.isAssignable(objectListType, rawListType));
+        assertTrue(TypeUtils.isAssignable(rawListType, unboundListType));
+        assertTrue(TypeUtils.isAssignable(unboundListType, rawListType));
+        assertTrue(TypeUtils.isAssignable(rawListType, superObjectListType));
+        assertTrue(TypeUtils.isAssignable(superObjectListType, rawListType));
+        assertTrue(TypeUtils.isAssignable(rawListType, stringListType));
+        assertTrue(TypeUtils.isAssignable(stringListType, rawListType));
+        assertTrue(TypeUtils.isAssignable(rawListType, subStringListType));
+        assertTrue(TypeUtils.isAssignable(subStringListType, rawListType));
+        assertTrue(TypeUtils.isAssignable(rawListType, superStringListType));
+        assertTrue(TypeUtils.isAssignable(superStringListType, rawListType));
 
-        
assertFalse(GenericArrayType.class.isAssignableFrom(paramType.getClass()));
-        
assertFalse(paramType.getClass().isAssignableFrom(GenericArrayType.class));
+        assertTrue(TypeUtils.isAssignable(objectListType, objectListType));
+        assertTrue(TypeUtils.isAssignable(objectListType, unboundListType));
+        assertFalse(TypeUtils.isAssignable(unboundListType, objectListType));
+        assertTrue(TypeUtils.isAssignable(objectListType, 
superObjectListType));
+        assertFalse(TypeUtils.isAssignable(superObjectListType, 
objectListType));
+        assertFalse(TypeUtils.isAssignable(objectListType, stringListType));
+        assertFalse(TypeUtils.isAssignable(stringListType, objectListType));
+        assertFalse(TypeUtils.isAssignable(objectListType, subStringListType));
+        assertFalse(TypeUtils.isAssignable(subStringListType, objectListType));
+        assertTrue(TypeUtils.isAssignable(objectListType, 
superStringListType));
+        assertFalse(TypeUtils.isAssignable(superStringListType, 
objectListType));
 
-        final GenericArrayType testType = 
TypeUtils.genericArrayType(paramType);
-        assertFalse(TypeUtils.isAssignable(paramType, testType),
-                () -> String.format("TypeUtils.isAssignable(%s, %s)", 
paramType, testType));
-        assertFalse(TypeUtils.isAssignable(testType, paramType),
-                () -> String.format("TypeUtils.isAssignable(%s, %s)", 
testType, paramType));
-    }
+        assertTrue(TypeUtils.isAssignable(unboundListType, unboundListType));
+        assertFalse(TypeUtils.isAssignable(unboundListType, 
superObjectListType));
+        assertTrue(TypeUtils.isAssignable(superObjectListType, 
unboundListType));
+        assertFalse(TypeUtils.isAssignable(unboundListType, stringListType));
+        assertTrue(TypeUtils.isAssignable(stringListType, unboundListType));
+        assertFalse(TypeUtils.isAssignable(unboundListType, 
subStringListType));
+        assertTrue(TypeUtils.isAssignable(subStringListType, unboundListType));
+        assertFalse(TypeUtils.isAssignable(unboundListType, 
superStringListType));
+        assertTrue(TypeUtils.isAssignable(superStringListType, 
unboundListType));
 
-    @Test
-    @Disabled("TODO")
-    public void testIsAssignableGenericArrayTypeToWildcardType() {
-        final Class<Constructor> rawClass = Constructor.class;
-        final Class<Insets> typeArgClass = Insets.class;
-        // Builds a ParameterizedType for Constructor<Insets>
-        final ParameterizedType paramType = TypeUtils.parameterize(rawClass, 
typeArgClass);
-        assertEquals(rawClass, paramType.getRawType());
-        assertEquals(typeArgClass, paramType.getActualTypeArguments()[0]);
+        assertTrue(TypeUtils.isAssignable(superObjectListType, 
superObjectListType));
+        assertFalse(TypeUtils.isAssignable(superObjectListType, 
stringListType));
+        assertFalse(TypeUtils.isAssignable(stringListType, 
superObjectListType));
+        assertFalse(TypeUtils.isAssignable(superObjectListType, 
subStringListType));
+        assertFalse(TypeUtils.isAssignable(subStringListType, 
superObjectListType));
+        assertTrue(TypeUtils.isAssignable(superObjectListType, 
superStringListType));
+        assertFalse(TypeUtils.isAssignable(superStringListType, 
superObjectListType));
 
-        assertFalse(WildcardType.class.isAssignableFrom(paramType.getClass()));
-        assertFalse(paramType.getClass().isAssignableFrom(WildcardType.class));
+        assertTrue(TypeUtils.isAssignable(stringListType, stringListType));
+        assertTrue(TypeUtils.isAssignable(stringListType, subStringListType));
+        assertFalse(TypeUtils.isAssignable(subStringListType, stringListType));
+        assertTrue(TypeUtils.isAssignable(stringListType, 
superStringListType));
+        assertFalse(TypeUtils.isAssignable(superStringListType, 
stringListType));
 
-        final WildcardType testType = TypeUtils.WILDCARD_ALL;
-        // TODO This test returns true unlike the test above.
-        // Is this a bug in this test or in the main code?
-        assertFalse(TypeUtils.isAssignable(paramType, testType),
-                () -> String.format("TypeUtils.isAssignable(%s, %s)", 
paramType, testType));
-        assertFalse(TypeUtils.isAssignable(testType, paramType),
-                () -> String.format("TypeUtils.isAssignable(%s, %s)", 
testType, paramType));
+        assertTrue(TypeUtils.isAssignable(subStringListType, 
subStringListType));
+        assertFalse(TypeUtils.isAssignable(subStringListType, 
superStringListType));
+        assertFalse(TypeUtils.isAssignable(superStringListType, 
subStringListType));
+        assertTrue(TypeUtils.isAssignable(superStringListType, 
superStringListType));
     }
 
     @SuppressWarnings("boxing") // boxing is deliberate here

Reply via email to