You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2024/01/25 03:38:33 UTC
(commons-lang) 01/02: Sort members
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 <ga...@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