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
The following commit(s) were added to refs/heads/master by this push: new 84b475ae4 Address minor redundancies after code inspection (#1148) 84b475ae4 is described below commit 84b475ae4983ced77e868c0467a52f217f8bcc8e Author: Capt. Cutlass <5120290+paranoidu...@users.noreply.github.com> AuthorDate: Wed Jan 24 22:10:17 2024 -0500 Address minor redundancies after code inspection (#1148) * refactor: remove redundant string conversion * refactor: remove unused assignments (minor) * refactor: remove unused assignments (major) Keeping this "bulky" cleanup as a separate commit for review convenience (can be squashed afterward). * refactor: address feedback * refactor: split testIsAssignable by groups * refactor: remove unnecessary boxing * refactor: extract null-locale case into separate test * refactor: use named fields for generic types * refactor: more specific checked exception in method declaration * refactor: remove pseudo-comment variables * refactor: revert remove unnecessary boxing --- .../java/org/apache/commons/lang3/StringUtils.java | 4 +- .../lang3/concurrent/ConstantInitializer.java | 3 +- .../apache/commons/lang3/reflect/TypeUtils.java | 2 +- .../commons/lang3/CharSequenceUtilsTest.java | 2 +- .../commons/lang3/RandomStringUtilsTest.java | 6 +- .../java/org/apache/commons/lang3/RangeTest.java | 12 +- .../commons/lang3/StringEscapeUtilsTest.java | 2 +- .../org/apache/commons/lang3/StringUtilsTest.java | 8 +- .../lang3/builder/JsonToStringStyleTest.java | 4 +- .../lang3/exception/ExceptionUtilsTest.java | 2 - .../commons/lang3/function/MethodFixtures.java | 10 - .../apache/commons/lang3/math/FractionTest.java | 3 +- .../apache/commons/lang3/math/NumberUtilsTest.java | 29 +- .../commons/lang3/reflect/TypeUtilsTest.java | 668 ++++++++------------- .../lang3/reflect/testbed/GenericTypeHolder.java | 15 + .../lang3/text/ExtendedMessageFormatTest.java | 66 +- .../lang3/text/StrBuilderAppendInsertTest.java | 4 +- .../apache/commons/lang3/time/DateUtilsTest.java | 2 +- .../commons/lang3/time/FastDateParserSDFTest.java | 6 +- .../time/FastDateParser_TimeZoneStrategyTest.java | 2 +- .../commons/lang3/util/FluentBitSetTest.java | 2 +- 21 files changed, 363 insertions(+), 489 deletions(-) diff --git a/src/main/java/org/apache/commons/lang3/StringUtils.java b/src/main/java/org/apache/commons/lang3/StringUtils.java index 19f13c597..bb52b383f 100644 --- a/src/main/java/org/apache/commons/lang3/StringUtils.java +++ b/src/main/java/org/apache/commons/lang3/StringUtils.java @@ -438,7 +438,7 @@ public class StringUtils { } } } - return str + suffix.toString(); + return str + suffix; } /** @@ -5681,7 +5681,7 @@ public class StringUtils { } } } - return prefix.toString() + str; + return prefix + str; } /** diff --git a/src/main/java/org/apache/commons/lang3/concurrent/ConstantInitializer.java b/src/main/java/org/apache/commons/lang3/concurrent/ConstantInitializer.java index cfa407b77..3d2bdaee2 100644 --- a/src/main/java/org/apache/commons/lang3/concurrent/ConstantInitializer.java +++ b/src/main/java/org/apache/commons/lang3/concurrent/ConstantInitializer.java @@ -133,7 +133,6 @@ public class ConstantInitializer<T> implements ConcurrentInitializer<T> { */ @Override public String toString() { - return String.format(FMT_TO_STRING, Integer.valueOf(System.identityHashCode(this)), - String.valueOf(getObject())); + return String.format(FMT_TO_STRING, Integer.valueOf(System.identityHashCode(this)), getObject()); } } diff --git a/src/main/java/org/apache/commons/lang3/reflect/TypeUtils.java b/src/main/java/org/apache/commons/lang3/reflect/TypeUtils.java index 264c7dea5..610418c4f 100644 --- a/src/main/java/org/apache/commons/lang3/reflect/TypeUtils.java +++ b/src/main/java/org/apache/commons/lang3/reflect/TypeUtils.java @@ -1591,7 +1591,7 @@ public class TypeUtils { if (useOwner instanceof Class<?>) { builder.append(((Class<?>) useOwner).getName()); } else { - builder.append(useOwner.toString()); + builder.append(useOwner); } builder.append('.').append(raw.getSimpleName()); } diff --git a/src/test/java/org/apache/commons/lang3/CharSequenceUtilsTest.java b/src/test/java/org/apache/commons/lang3/CharSequenceUtilsTest.java index 47d76466a..e9022a465 100644 --- a/src/test/java/org/apache/commons/lang3/CharSequenceUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/CharSequenceUtilsTest.java @@ -219,7 +219,7 @@ public class CharSequenceUtilsTest extends AbstractLangTest { if (random.nextDouble() < 0.5) { original.append(random.nextInt() % 10); } else { - original = new StringBuilder().append(String.valueOf(random.nextInt() % 100)).append(original); + original = new StringBuilder().append(random.nextInt() % 100).append(original); } testNewLastIndexOfSingle(original, seg); } diff --git a/src/test/java/org/apache/commons/lang3/RandomStringUtilsTest.java b/src/test/java/org/apache/commons/lang3/RandomStringUtilsTest.java index 0ff72e0e0..bc6a33287 100644 --- a/src/test/java/org/apache/commons/lang3/RandomStringUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/RandomStringUtilsTest.java @@ -51,9 +51,8 @@ public class RandomStringUtilsTest extends AbstractLangTest { */ private double chiSquare(final int[] expected, final int[] observed) { double sumSq = 0.0d; - double dev = 0.0d; for (int i = 0; i < observed.length; i++) { - dev = observed[i] - expected[i]; + double dev = observed[i] - expected[i]; sumSq += dev * dev / expected[i]; } return sumSq; @@ -511,11 +510,10 @@ public class RandomStringUtilsTest extends AbstractLangTest { public void testRandomStringUtilsHomog() { final String set = "abc"; final char[] chars = set.toCharArray(); - String gen = ""; final int[] counts = {0, 0, 0}; final int[] expected = {200, 200, 200}; for (int i = 0; i < 100; i++) { - gen = RandomStringUtils.random(6, chars); + String gen = RandomStringUtils.random(6, chars); for (int j = 0; j < 6; j++) { switch (gen.charAt(j)) { case 'a': { diff --git a/src/test/java/org/apache/commons/lang3/RangeTest.java b/src/test/java/org/apache/commons/lang3/RangeTest.java index 641f0f165..619688525 100644 --- a/src/test/java/org/apache/commons/lang3/RangeTest.java +++ b/src/test/java/org/apache/commons/lang3/RangeTest.java @@ -117,20 +117,16 @@ public class RangeTest extends AbstractLangTest { final DerivedComparableA derivedComparableA = new DerivedComparableA(); final DerivedComparableB derivedComparableB = new DerivedComparableB(); - Range<AbstractComparable> mixed = Range.between(derivedComparableA, derivedComparableB); - mixed = Range.between(derivedComparableA, derivedComparableB, null); + Range<AbstractComparable> mixed = Range.between(derivedComparableA, derivedComparableB, null); assertTrue(mixed.contains(derivedComparableA)); - Range<AbstractComparable> same = Range.between(derivedComparableA, derivedComparableA); - same = Range.between(derivedComparableA, derivedComparableA, null); + Range<AbstractComparable> same = Range.between(derivedComparableA, derivedComparableA, null); assertTrue(same.contains(derivedComparableA)); - Range<DerivedComparableA> rangeA = Range.between(derivedComparableA, derivedComparableA); - rangeA = Range.between(derivedComparableA, derivedComparableA, null); + Range<DerivedComparableA> rangeA = Range.between(derivedComparableA, derivedComparableA, null); assertTrue(rangeA.contains(derivedComparableA)); - Range<DerivedComparableB> rangeB = Range.is(derivedComparableB); - rangeB = Range.is(derivedComparableB, null); + Range<DerivedComparableB> rangeB = Range.is(derivedComparableB, null); assertTrue(rangeB.contains(derivedComparableB)); } diff --git a/src/test/java/org/apache/commons/lang3/StringEscapeUtilsTest.java b/src/test/java/org/apache/commons/lang3/StringEscapeUtilsTest.java index 8fe649833..faa6544cf 100644 --- a/src/test/java/org/apache/commons/lang3/StringEscapeUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/StringEscapeUtilsTest.java @@ -487,7 +487,7 @@ public class StringEscapeUtilsTest extends AbstractLangTest { for (char i = Character.MIN_VALUE; i < Character.MAX_VALUE; i++) { final Character c1 = Character.valueOf(i); final Character c2 = Character.valueOf((char) (i+1)); - final String expected = c1.toString() + c2.toString(); + final String expected = c1.toString() + c2; final String escapedC1 = "&#x" + Integer.toHexString((c1.charValue())) + ";"; final String escapedC2 = "&#x" + Integer.toHexString((c2.charValue())) + ";"; assertEquals(expected, StringEscapeUtils.unescapeHtml4(escapedC1 + escapedC2), "hex number unescape index " + (int) i); diff --git a/src/test/java/org/apache/commons/lang3/StringUtilsTest.java b/src/test/java/org/apache/commons/lang3/StringUtilsTest.java index 9094633f8..96004a4f3 100644 --- a/src/test/java/org/apache/commons/lang3/StringUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/StringUtilsTest.java @@ -73,16 +73,16 @@ public class StringUtilsTest extends AbstractLangTest { final StringBuilder ntr = new StringBuilder(); for (int i = 0; i < Character.MAX_VALUE; i++) { if (Character.isWhitespace((char) i)) { - ws.append(String.valueOf((char) i)); + ws.append((char) i); if (i > 32) { - ntr.append(String.valueOf((char) i)); + ntr.append((char) i); } } else if (i < 40) { - nws.append(String.valueOf((char) i)); + nws.append((char) i); } } for (int i = 0; i <= 32; i++) { - tr.append(String.valueOf((char) i)); + tr.append((char) i); } WHITESPACE = ws.toString(); NON_WHITESPACE = nws.toString(); diff --git a/src/test/java/org/apache/commons/lang3/builder/JsonToStringStyleTest.java b/src/test/java/org/apache/commons/lang3/builder/JsonToStringStyleTest.java index ac0b516c7..5370960bc 100644 --- a/src/test/java/org/apache/commons/lang3/builder/JsonToStringStyleTest.java +++ b/src/test/java/org/apache/commons/lang3/builder/JsonToStringStyleTest.java @@ -333,9 +333,9 @@ public class JsonToStringStyleTest extends AbstractLangTest { assertThrows(UnsupportedOperationException.class, () -> new ToStringBuilder(base).append(now).toString()); - assertEquals("{\"now\":\"" + now.toString() +"\"}", new ToStringBuilder(base).append("now", now) + assertEquals("{\"now\":\"" + now +"\"}", new ToStringBuilder(base).append("now", now) .toString()); - assertEquals("{\"now\":\"" + now.toString() +"\",\"after\":\"" + afterNow.toString() + "\"}", new ToStringBuilder(base).append("now", now).append("after", afterNow) + assertEquals("{\"now\":\"" + now +"\",\"after\":\"" + afterNow + "\"}", new ToStringBuilder(base).append("now", now).append("after", afterNow) .toString()); } diff --git a/src/test/java/org/apache/commons/lang3/exception/ExceptionUtilsTest.java b/src/test/java/org/apache/commons/lang3/exception/ExceptionUtilsTest.java index e3d39b48f..6ce2fdd80 100644 --- a/src/test/java/org/apache/commons/lang3/exception/ExceptionUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/exception/ExceptionUtilsTest.java @@ -695,7 +695,6 @@ public class ExceptionUtilsTest extends AbstractLangTest { ExceptionUtils.printRootCauseStackTrace(null, new PrintStream(out)); assertEquals(0, out.toString().length()); - out = new ByteArrayOutputStream(1024); assertThrows( NullPointerException.class, () -> ExceptionUtils.printRootCauseStackTrace(withCause, (PrintStream) null)); @@ -719,7 +718,6 @@ public class ExceptionUtilsTest extends AbstractLangTest { ExceptionUtils.printRootCauseStackTrace(null, new PrintWriter(writer)); assertEquals(0, writer.getBuffer().length()); - writer = new StringWriter(1024); assertThrows( NullPointerException.class, () -> ExceptionUtils.printRootCauseStackTrace(withCause, (PrintWriter) null)); diff --git a/src/test/java/org/apache/commons/lang3/function/MethodFixtures.java b/src/test/java/org/apache/commons/lang3/function/MethodFixtures.java index 527154dc0..2a35533c2 100644 --- a/src/test/java/org/apache/commons/lang3/function/MethodFixtures.java +++ b/src/test/java/org/apache/commons/lang3/function/MethodFixtures.java @@ -23,8 +23,6 @@ import java.lang.reflect.Method; import org.apache.commons.lang3.AbstractLangTest; import org.apache.commons.lang3.exception.CustomCheckedException; import org.apache.commons.lang3.exception.CustomUncheckedException; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; class MethodFixtures extends AbstractLangTest { @@ -120,14 +118,6 @@ class MethodFixtures extends AbstractLangTest { private String[] valueArray; - @BeforeEach - @AfterEach - public void clear() { - value1 = null; - value1 = null; - valueArray = null; - } - public String geStringtVarStringArgs(final String... strings) { return "XYZ"; } diff --git a/src/test/java/org/apache/commons/lang3/math/FractionTest.java b/src/test/java/org/apache/commons/lang3/math/FractionTest.java index feb3f458b..684a9e55c 100644 --- a/src/test/java/org/apache/commons/lang3/math/FractionTest.java +++ b/src/test/java/org/apache/commons/lang3/math/FractionTest.java @@ -357,7 +357,7 @@ public class FractionTest extends AbstractLangTest { assertEquals(1, f.getDenominator()); // normal - Fraction f2 = null; + Fraction f2; for (int i = 1; i <= 100; i++) { // denominator for (int j = 1; j <= i; j++) { // numerator f = Fraction.getFraction((double) j / (double) i); @@ -1036,7 +1036,6 @@ public class FractionTest extends AbstractLangTest { assertThrows( ArithmeticException.class, () -> Fraction.getFraction(1, Integer.MAX_VALUE).subtract(Fraction.getFraction(1, Integer.MAX_VALUE - 1))); - f = f1.subtract(f2); // denominator should not be a multiple of 2 or 3 to trigger overflow assertThrows( diff --git a/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java b/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java index 2db7878f9..8677afe36 100644 --- a/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java @@ -646,7 +646,7 @@ public class NumberUtilsTest extends AbstractLangTest { // Requested type is parsed as zero but the value is not zero final Double nonZero1 = Double.valueOf(((double) Float.MIN_VALUE) / 2); assertEquals(nonZero1, NumberUtils.createNumber(nonZero1.toString())); - assertEquals(nonZero1, NumberUtils.createNumber(nonZero1.toString() + "F")); + assertEquals(nonZero1, NumberUtils.createNumber(nonZero1 + "F")); // Smallest double is 4.9e-324. // Test a number with zero before and/or after the decimal place to hit edge cases. final BigDecimal nonZero2 = new BigDecimal("4.9e-325"); @@ -1415,12 +1415,9 @@ public class NumberUtilsTest extends AbstractLangTest { */ @Test public void testStringCreateNumberEnsureNoPrecisionLoss() { - final String shouldBeFloat = "1.23"; - final String shouldBeDouble = "3.40282354e+38"; - final String shouldBeBigDecimal = "1.797693134862315759e+308"; - assertTrue(NumberUtils.createNumber(shouldBeFloat) instanceof Float); - assertTrue(NumberUtils.createNumber(shouldBeDouble) instanceof Double); - assertTrue(NumberUtils.createNumber(shouldBeBigDecimal) instanceof BigDecimal); + assertTrue(NumberUtils.createNumber("1.23") instanceof Float); + assertTrue(NumberUtils.createNumber("3.40282354e+38") instanceof Double); + assertTrue(NumberUtils.createNumber("1.797693134862315759e+308") instanceof BigDecimal); // LANG-1060 assertTrue(NumberUtils.createNumber("001.12") instanceof Float); assertTrue(NumberUtils.createNumber("-001.12") instanceof Float); @@ -1432,15 +1429,15 @@ public class NumberUtilsTest extends AbstractLangTest { assertTrue(NumberUtils.createNumber("-001.797693134862315759e+308") instanceof BigDecimal); assertTrue(NumberUtils.createNumber("+001.797693134862315759e+308") instanceof BigDecimal); //LANG-1613 - assertTrue(NumberUtils.createNumber(Double.toString(Double.MIN_NORMAL)) instanceof Double); - assertTrue(NumberUtils.createNumber(Double.toString(Double.MIN_NORMAL) + "D") instanceof Double); - assertTrue(NumberUtils.createNumber(Double.toString(Double.MIN_NORMAL) + "F") instanceof Double); - assertTrue(NumberUtils.createNumber(Double.toString(Double.MIN_VALUE)) instanceof Double); - assertTrue(NumberUtils.createNumber(Double.toString(Double.MIN_VALUE) + "D") instanceof Double); - assertTrue(NumberUtils.createNumber(Double.toString(Double.MIN_VALUE) + "F") instanceof Double); - assertTrue(NumberUtils.createNumber(Double.toString(Double.MAX_VALUE)) instanceof Double); - assertTrue(NumberUtils.createNumber(Double.toString(Double.MAX_VALUE) + "D") instanceof Double); - assertTrue(NumberUtils.createNumber(Double.toString(Double.MAX_VALUE) + "F") instanceof Double); + assertTrue(NumberUtils.createNumber("2.2250738585072014E-308") instanceof Double); + assertTrue(NumberUtils.createNumber("2.2250738585072014E-308D") instanceof Double); + assertTrue(NumberUtils.createNumber("2.2250738585072014E-308F") instanceof Double); + assertTrue(NumberUtils.createNumber("4.9E-324") instanceof Double); + assertTrue(NumberUtils.createNumber("4.9E-324D") instanceof Double); + assertTrue(NumberUtils.createNumber("4.9E-324F") instanceof Double); + assertTrue(NumberUtils.createNumber("1.7976931348623157E308") instanceof Double); + assertTrue(NumberUtils.createNumber("1.7976931348623157E308D") instanceof Double); + assertTrue(NumberUtils.createNumber("1.7976931348623157E308F") instanceof Double); assertTrue(NumberUtils.createNumber("4.9e-324D") instanceof Double); assertTrue(NumberUtils.createNumber("4.9e-324F") instanceof Double); } 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 c5a546cb0..b01ee870f 100644 --- a/src/test/java/org/apache/commons/lang3/reflect/TypeUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/reflect/TypeUtilsTest.java @@ -229,33 +229,8 @@ public class TypeUtilsTest<B> extends AbstractLangTest { public Iterable<? extends Map<Integer, ? extends Collection<?>>> iterable; - public void delegateBooleanAssertion(final Type[] types, final int i2, final int i1, final boolean expected) { - final Type type1 = types[i1]; - final Type type2 = types[i2]; - final boolean isAssignable = TypeUtils.isAssignable(type2, type1); - - if (expected) { - assertTrue(isAssignable, - "[" + i1 + ", " + i2 + "]: From " - + String.valueOf(type2) + " to " - + String.valueOf(type1)); - } else { - assertFalse(isAssignable, - "[" + i1 + ", " + i2 + "]: From " - + String.valueOf(type2) + " to " - + String.valueOf(type1)); - } - } - - public void dummyMethod(final List list0, final List<Object> list1, final List<?> list2, - final List<? super Object> list3, final List<String> list4, final List<? extends String> list5, - final List<? super String> list6, final List[] list7, final List<Object>[] list8, final List<?>[] list9, - final List<? super Object>[] list10, final List<String>[] list11, final List<? extends String>[] list12, - final List<? super String>[] list13) { - } - @Test - public void test_LANG_1114() throws Exception { + public void test_LANG_1114() throws NoSuchFieldException { final Type nonWildcardType = getClass().getDeclaredField("wildcardComparable").getGenericType(); final Type wildcardType = ((ParameterizedType) nonWildcardType).getActualTypeArguments()[0]; @@ -264,7 +239,7 @@ public class TypeUtilsTest<B> extends AbstractLangTest { } @Test - public void test_LANG_1190() throws Exception { + public void test_LANG_1190() throws NoSuchMethodException { final Type fromType = ClassWithSuperClassWithGenericType.class.getDeclaredMethod("methodWithGenericReturnType").getGenericReturnType(); final Type failingToType = TypeUtils.wildcardType().withLowerBounds(ClassWithSuperClassWithGenericType.class).build(); @@ -272,7 +247,7 @@ public class TypeUtilsTest<B> extends AbstractLangTest { } @Test - public void test_LANG_1348() throws Exception { + public void test_LANG_1348() throws NoSuchMethodException { final Method method = Enum.class.getMethod("valueOf", Class.class, String.class); assertEquals("T extends java.lang.Enum<T>", TypeUtils.toString(method.getGenericReturnType())); } @@ -336,7 +311,7 @@ public class TypeUtilsTest<B> extends AbstractLangTest { } @Test - public void testContainsTypeVariables() throws Exception { + public void testContainsTypeVariables() throws NoSuchMethodException { assertFalse(TypeUtils.containsTypeVariables(Test1.class.getMethod("m0").getGenericReturnType())); assertFalse(TypeUtils.containsTypeVariables(Test1.class.getMethod("m1").getGenericReturnType())); assertTrue(TypeUtils.containsTypeVariables(Test1.class.getMethod("m2").getGenericReturnType())); @@ -358,8 +333,7 @@ public class TypeUtilsTest<B> extends AbstractLangTest { } @Test - public void testDetermineTypeVariableAssignments() throws SecurityException, - NoSuchFieldException { + public void testDetermineTypeVariableAssignments() throws NoSuchFieldException { final ParameterizedType iterableType = (ParameterizedType) getClass().getField("iterable") .getGenericType(); final Map<TypeVariable<?>, Type> typeVarAssigns = TypeUtils.determineTypeArguments(TreeSet.class, @@ -376,7 +350,7 @@ public class TypeUtilsTest<B> extends AbstractLangTest { } @Test - public void testGenericArrayType() throws Exception { + public void testGenericArrayType() throws NoSuchFieldException { final Type expected = getClass().getField("intWildcardComparable").getGenericType(); final GenericArrayType actual = TypeUtils.genericArrayType(TypeUtils.parameterize(Comparable.class, TypeUtils.wildcardType() @@ -386,27 +360,38 @@ public class TypeUtilsTest<B> extends AbstractLangTest { } @Test - public void testGetArrayComponentType() throws Exception { - final Method method = getClass().getMethod("dummyMethod", List.class, List.class, List.class, - List.class, List.class, List.class, List.class, List[].class, List[].class, - List[].class, List[].class, List[].class, List[].class, List[].class); - - final Type[] types = method.getGenericParameterTypes(); - - assertNull(TypeUtils.getArrayComponentType(types[0])); - assertNull(TypeUtils.getArrayComponentType(types[1])); - assertNull(TypeUtils.getArrayComponentType(types[2])); - assertNull(TypeUtils.getArrayComponentType(types[3])); - assertNull(TypeUtils.getArrayComponentType(types[4])); - assertNull(TypeUtils.getArrayComponentType(types[5])); - assertNull(TypeUtils.getArrayComponentType(types[6])); - assertEquals(types[0], TypeUtils.getArrayComponentType(types[7])); - assertEquals(types[1], TypeUtils.getArrayComponentType(types[8])); - assertEquals(types[2], TypeUtils.getArrayComponentType(types[9])); - assertEquals(types[3], TypeUtils.getArrayComponentType(types[10])); - assertEquals(types[4], TypeUtils.getArrayComponentType(types[11])); - assertEquals(types[5], TypeUtils.getArrayComponentType(types[12])); - assertEquals(types[6], TypeUtils.getArrayComponentType(types[13])); + public void testGetArrayComponentType() 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(); + + assertNull(TypeUtils.getArrayComponentType(rawListType)); + assertNull(TypeUtils.getArrayComponentType(objectListType)); + assertNull(TypeUtils.getArrayComponentType(unboundListType)); + assertNull(TypeUtils.getArrayComponentType(superObjectListType)); + assertNull(TypeUtils.getArrayComponentType(stringListType)); + assertNull(TypeUtils.getArrayComponentType(subStringListType)); + assertNull(TypeUtils.getArrayComponentType(superStringListType)); + + final Type rawListTypeArray = GenericTypeHolder.class.getDeclaredField("rawListArray").getGenericType(); + final Type objectListTypeArray = GenericTypeHolder.class.getDeclaredField("objectListArray").getGenericType(); + final Type unboundListTypeArray = GenericTypeHolder.class.getDeclaredField("unboundListArray").getGenericType(); + final Type superObjectListTypeArray = GenericTypeHolder.class.getDeclaredField("superObjectListArray").getGenericType(); + final Type stringListTypeArray = GenericTypeHolder.class.getDeclaredField("stringListArray").getGenericType(); + final Type subStringListTypeArray = GenericTypeHolder.class.getDeclaredField("subStringListArray").getGenericType(); + final Type superStringListTypeArray = GenericTypeHolder.class.getDeclaredField("superStringListArray").getGenericType(); + + assertEquals(rawListType, TypeUtils.getArrayComponentType(rawListTypeArray)); + assertEquals(objectListType, TypeUtils.getArrayComponentType(objectListTypeArray)); + assertEquals(unboundListType, TypeUtils.getArrayComponentType(unboundListTypeArray)); + assertEquals(superObjectListType, TypeUtils.getArrayComponentType(superObjectListTypeArray)); + assertEquals(stringListType, TypeUtils.getArrayComponentType(stringListTypeArray)); + assertEquals(subStringListType, TypeUtils.getArrayComponentType(subStringListTypeArray)); + assertEquals(superStringListType, TypeUtils.getArrayComponentType(superStringListTypeArray)); } @Test @@ -431,7 +416,7 @@ public class TypeUtilsTest<B> extends AbstractLangTest { } @Test - public void testGetRawType() throws SecurityException, NoSuchFieldException { + public void testGetRawType() throws NoSuchFieldException { final Type stringParentFieldType = GenericTypeHolder.class.getDeclaredField("stringParent").getGenericType(); final Type integerParentFieldType = GenericTypeHolder.class.getDeclaredField("integerParent").getGenericType(); final Type foosFieldType = GenericTypeHolder.class.getDeclaredField("foos").getGenericType(); @@ -451,7 +436,7 @@ public class TypeUtilsTest<B> extends AbstractLangTest { * Tests https://issues.apache.org/jira/browse/LANG-1697 */ @Test - public void testGetRawType_LANG_1697() throws NoSuchFieldException { + public void testGetRawType_LANG_1697() { assertEquals(int[].class, TypeUtils.getRawType(TypeUtils.genericArrayType(Integer.TYPE), Integer.TYPE)); // LANG-1697: assertNull(TypeUtils.getRawType(TypeUtils.genericArrayType(TypeUtils.WILDCARD_ALL), null)); @@ -511,27 +496,38 @@ public class TypeUtilsTest<B> extends AbstractLangTest { } @Test - public void testIsArrayGenericTypes() throws Exception { - final Method method = getClass().getMethod("dummyMethod", List.class, List.class, List.class, - List.class, List.class, List.class, List.class, List[].class, List[].class, - List[].class, List[].class, List[].class, List[].class, List[].class); - - final Type[] types = method.getGenericParameterTypes(); - - assertFalse(TypeUtils.isArrayType(types[0])); - assertFalse(TypeUtils.isArrayType(types[1])); - assertFalse(TypeUtils.isArrayType(types[2])); - assertFalse(TypeUtils.isArrayType(types[3])); - assertFalse(TypeUtils.isArrayType(types[4])); - assertFalse(TypeUtils.isArrayType(types[5])); - assertFalse(TypeUtils.isArrayType(types[6])); - assertTrue(TypeUtils.isArrayType(types[7])); - assertTrue(TypeUtils.isArrayType(types[8])); - assertTrue(TypeUtils.isArrayType(types[9])); - assertTrue(TypeUtils.isArrayType(types[10])); - assertTrue(TypeUtils.isArrayType(types[11])); - assertTrue(TypeUtils.isArrayType(types[12])); - assertTrue(TypeUtils.isArrayType(types[13])); + public void testIsArrayGenericTypes() 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(); + + assertFalse(TypeUtils.isArrayType(rawListType)); + assertFalse(TypeUtils.isArrayType(objectListType)); + assertFalse(TypeUtils.isArrayType(unboundListType)); + assertFalse(TypeUtils.isArrayType(superObjectListType)); + assertFalse(TypeUtils.isArrayType(stringListType)); + assertFalse(TypeUtils.isArrayType(subStringListType)); + assertFalse(TypeUtils.isArrayType(superStringListType)); + + final Type rawListTypeArray = GenericTypeHolder.class.getDeclaredField("rawListArray").getGenericType(); + final Type objectListTypeArray = GenericTypeHolder.class.getDeclaredField("objectListArray").getGenericType(); + final Type unboundListTypeArray = GenericTypeHolder.class.getDeclaredField("unboundListArray").getGenericType(); + final Type superObjectListTypeArray = GenericTypeHolder.class.getDeclaredField("superObjectListArray").getGenericType(); + final Type stringListTypeArray = GenericTypeHolder.class.getDeclaredField("stringListArray").getGenericType(); + final Type subStringListTypeArray = GenericTypeHolder.class.getDeclaredField("subStringListArray").getGenericType(); + final Type superStringListTypeArray = GenericTypeHolder.class.getDeclaredField("superStringListArray").getGenericType(); + + assertTrue(TypeUtils.isArrayType(rawListTypeArray)); + assertTrue(TypeUtils.isArrayType(objectListTypeArray)); + assertTrue(TypeUtils.isArrayType(unboundListTypeArray)); + assertTrue(TypeUtils.isArrayType(superObjectListTypeArray)); + assertTrue(TypeUtils.isArrayType(stringListTypeArray)); + assertTrue(TypeUtils.isArrayType(subStringListTypeArray)); + assertTrue(TypeUtils.isArrayType(superStringListTypeArray)); } @Test @@ -559,360 +555,229 @@ public class TypeUtilsTest<B> extends AbstractLangTest { assertFalse(TypeUtils.isArrayType(String.class)); } - @SuppressWarnings("boxing") // deliberately used here @Test - public void testIsAssignable() throws SecurityException, NoSuchMethodException, - NoSuchFieldException { - List list0 = null; - List<Object> list1; - List<?> list2; - List<? super Object> list3; - List<String> list4; - List<? extends String> list5; - List<? super String> list6; - List[] list7 = null; - List<Object>[] list8; - List<?>[] list9; - List<? super Object>[] list10; - List<String>[] list11; - List<? extends String>[] list12; - List<? super String>[] list13; - final Class<?> clazz = getClass(); - final Method method = clazz.getMethod("dummyMethod", List.class, List.class, List.class, - List.class, List.class, List.class, List.class, List[].class, List[].class, - List[].class, List[].class, List[].class, List[].class, List[].class); - final Type[] types = method.getGenericParameterTypes(); -// list0 = list0; - delegateBooleanAssertion(types, 0, 0, true); - list1 = list0; - delegateBooleanAssertion(types, 0, 1, true); - list0 = list1; - delegateBooleanAssertion(types, 1, 0, true); - list2 = list0; - delegateBooleanAssertion(types, 0, 2, true); - list0 = list2; - delegateBooleanAssertion(types, 2, 0, true); - list3 = list0; - delegateBooleanAssertion(types, 0, 3, true); - list0 = list3; - delegateBooleanAssertion(types, 3, 0, true); - list4 = list0; - delegateBooleanAssertion(types, 0, 4, true); - list0 = list4; - delegateBooleanAssertion(types, 4, 0, true); - list5 = list0; - delegateBooleanAssertion(types, 0, 5, true); - list0 = list5; - delegateBooleanAssertion(types, 5, 0, true); - list6 = list0; - delegateBooleanAssertion(types, 0, 6, true); - list0 = list6; - delegateBooleanAssertion(types, 6, 0, true); -// list1 = list1; - delegateBooleanAssertion(types, 1, 1, true); - list2 = list1; - delegateBooleanAssertion(types, 1, 2, true); - list1 = (List<Object>) list2; - delegateBooleanAssertion(types, 2, 1, false); - list3 = list1; - delegateBooleanAssertion(types, 1, 3, true); - list1 = (List<Object>) list3; - delegateBooleanAssertion(types, 3, 1, false); - // list4 = list1; - delegateBooleanAssertion(types, 1, 4, false); - // list1 = list4; - delegateBooleanAssertion(types, 4, 1, false); - // list5 = list1; - delegateBooleanAssertion(types, 1, 5, false); - // list1 = list5; - delegateBooleanAssertion(types, 5, 1, false); - list6 = list1; - delegateBooleanAssertion(types, 1, 6, true); - list1 = (List<Object>) list6; - delegateBooleanAssertion(types, 6, 1, false); -// list2 = list2; - delegateBooleanAssertion(types, 2, 2, true); - list2 = list3; - delegateBooleanAssertion(types, 2, 3, false); - list2 = list4; - delegateBooleanAssertion(types, 3, 2, true); - list3 = (List<? super Object>) list2; - delegateBooleanAssertion(types, 2, 4, false); - list2 = list5; - delegateBooleanAssertion(types, 4, 2, true); - list4 = (List<String>) list2; - delegateBooleanAssertion(types, 2, 5, false); - list2 = list6; - delegateBooleanAssertion(types, 5, 2, true); - list5 = (List<? extends String>) list2; - delegateBooleanAssertion(types, 2, 6, false); -// list3 = list3; - delegateBooleanAssertion(types, 6, 2, true); - list6 = (List<? super String>) list2; - delegateBooleanAssertion(types, 3, 3, true); - // list4 = list3; - delegateBooleanAssertion(types, 3, 4, false); - // list3 = list4; - delegateBooleanAssertion(types, 4, 3, false); - // list5 = list3; - delegateBooleanAssertion(types, 3, 5, false); - // list3 = list5; - delegateBooleanAssertion(types, 5, 3, false); - list6 = list3; - delegateBooleanAssertion(types, 3, 6, true); - list3 = (List<? super Object>) list6; - delegateBooleanAssertion(types, 6, 3, false); -// list4 = list4; - delegateBooleanAssertion(types, 4, 4, true); - list5 = list4; - delegateBooleanAssertion(types, 4, 5, true); - list4 = (List<String>) list5; - delegateBooleanAssertion(types, 5, 4, false); - list6 = list4; - delegateBooleanAssertion(types, 4, 6, true); - list4 = (List<String>) list6; - delegateBooleanAssertion(types, 6, 4, false); -// list5 = list5; - delegateBooleanAssertion(types, 5, 5, true); - list6 = (List<? super String>) list5; - delegateBooleanAssertion(types, 5, 6, false); - list5 = (List<? extends String>) list6; - delegateBooleanAssertion(types, 6, 5, false); -// list6 = list6; - delegateBooleanAssertion(types, 6, 6, true); - -// list7 = list7; - delegateBooleanAssertion(types, 7, 7, true); - list8 = list7; - delegateBooleanAssertion(types, 7, 8, true); - list7 = list8; - delegateBooleanAssertion(types, 8, 7, true); - list9 = list7; - delegateBooleanAssertion(types, 7, 9, true); - list7 = list9; - delegateBooleanAssertion(types, 9, 7, true); - list10 = list7; - delegateBooleanAssertion(types, 7, 10, true); - list7 = list10; - delegateBooleanAssertion(types, 10, 7, true); - list11 = list7; - delegateBooleanAssertion(types, 7, 11, true); - list7 = list11; - delegateBooleanAssertion(types, 11, 7, true); - list12 = list7; - delegateBooleanAssertion(types, 7, 12, true); - list7 = list12; - delegateBooleanAssertion(types, 12, 7, true); - list13 = list7; - delegateBooleanAssertion(types, 7, 13, true); - list7 = list13; - delegateBooleanAssertion(types, 13, 7, true); -// list8 = list8; - delegateBooleanAssertion(types, 8, 8, true); - list9 = list8; - delegateBooleanAssertion(types, 8, 9, true); - list8 = (List<Object>[]) list9; - delegateBooleanAssertion(types, 9, 8, false); - list10 = list8; - delegateBooleanAssertion(types, 8, 10, true); - list8 = (List<Object>[]) list10; // NOTE cast is required by Sun Java, but not by Eclipse - delegateBooleanAssertion(types, 10, 8, false); - // list11 = list8; - delegateBooleanAssertion(types, 8, 11, false); - // list8 = list11; - delegateBooleanAssertion(types, 11, 8, false); - // list12 = list8; - delegateBooleanAssertion(types, 8, 12, false); - // list8 = list12; - delegateBooleanAssertion(types, 12, 8, false); - list13 = list8; - delegateBooleanAssertion(types, 8, 13, true); - list8 = (List<Object>[]) list13; - delegateBooleanAssertion(types, 13, 8, false); -// list9 = list9; - delegateBooleanAssertion(types, 9, 9, true); - list10 = (List<? super Object>[]) list9; - delegateBooleanAssertion(types, 9, 10, false); - list9 = list10; - delegateBooleanAssertion(types, 10, 9, true); - list11 = (List<String>[]) list9; - delegateBooleanAssertion(types, 9, 11, false); - list9 = list11; - delegateBooleanAssertion(types, 11, 9, true); - list12 = (List<? extends String>[]) list9; - delegateBooleanAssertion(types, 9, 12, false); - list9 = list12; - delegateBooleanAssertion(types, 12, 9, true); - list13 = (List<? super String>[]) list9; - delegateBooleanAssertion(types, 9, 13, false); - list9 = list13; - delegateBooleanAssertion(types, 13, 9, true); -// list10 = list10; - delegateBooleanAssertion(types, 10, 10, true); - // list11 = list10; - delegateBooleanAssertion(types, 10, 11, false); - // list10 = list11; - delegateBooleanAssertion(types, 11, 10, false); - // list12 = list10; - delegateBooleanAssertion(types, 10, 12, false); - // list10 = list12; - delegateBooleanAssertion(types, 12, 10, false); - list13 = list10; - delegateBooleanAssertion(types, 10, 13, true); - list10 = (List<? super Object>[]) list13; - delegateBooleanAssertion(types, 13, 10, false); -// list11 = list11; - delegateBooleanAssertion(types, 11, 11, true); - list12 = list11; - delegateBooleanAssertion(types, 11, 12, true); - list11 = (List<String>[]) list12; - delegateBooleanAssertion(types, 12, 11, false); - list13 = list11; - delegateBooleanAssertion(types, 11, 13, true); - list11 = (List<String>[]) list13; - delegateBooleanAssertion(types, 13, 11, false); -// list12 = list12; - delegateBooleanAssertion(types, 12, 12, true); - list13 = (List<? super String>[]) list12; - delegateBooleanAssertion(types, 12, 13, false); - list12 = (List<? extends String>[]) list13; - delegateBooleanAssertion(types, 13, 12, false); -// list13 = list13; - delegateBooleanAssertion(types, 13, 13, true); - final Type disType = getClass().getField("dis").getGenericType(); - // Reporter.log( ( ( ParameterizedType ) disType - // ).getOwnerType().getClass().toString() ); - final Type datType = getClass().getField("dat").getGenericType(); - final Type daType = getClass().getField("da").getGenericType(); - final Type uhderType = getClass().getField("uhder").getGenericType(); - final Type dingType = getClass().getField("ding").getGenericType(); - final Type testerType = getClass().getField("tester").getGenericType(); - final Type tester2Type = getClass().getField("tester2").getGenericType(); - final Type dat2Type = getClass().getField("dat2").getGenericType(); - final Type dat3Type = getClass().getField("dat3").getGenericType(); - dis = dat; - assertTrue(TypeUtils.isAssignable(datType, disType)); - // dis = da; - assertFalse(TypeUtils.isAssignable(daType, disType)); - dis = uhder; - assertTrue(TypeUtils.isAssignable(uhderType, disType)); - dis = ding; - assertFalse(TypeUtils.isAssignable(dingType, disType), - String.format("type %s not assignable to %s!", dingType, disType)); - dis = tester; - assertTrue(TypeUtils.isAssignable(testerType, disType)); - // dis = tester2; - assertFalse(TypeUtils.isAssignable(tester2Type, disType)); - // dat = dat2; - assertFalse(TypeUtils.isAssignable(dat2Type, datType)); - // dat2 = dat; - assertFalse(TypeUtils.isAssignable(datType, dat2Type)); - // dat = dat3; - assertFalse(TypeUtils.isAssignable(dat3Type, datType)); - final char ch = 0; - final boolean bo = false; - final byte by = 0; - final short sh = 0; - int in = 0; - long lo = 0; - final float fl = 0; - double du; - du = ch; + public void testIsAssignableClasses() { assertTrue(TypeUtils.isAssignable(char.class, double.class)); - du = by; assertTrue(TypeUtils.isAssignable(byte.class, double.class)); - du = sh; assertTrue(TypeUtils.isAssignable(short.class, double.class)); - du = in; assertTrue(TypeUtils.isAssignable(int.class, double.class)); - du = lo; assertTrue(TypeUtils.isAssignable(long.class, double.class)); - du = fl; assertTrue(TypeUtils.isAssignable(float.class, double.class)); - lo = in; + assertTrue(TypeUtils.isAssignable(int.class, long.class)); - lo = Integer.valueOf(0); assertTrue(TypeUtils.isAssignable(Integer.class, long.class)); - // Long lngW = 1; assertFalse(TypeUtils.isAssignable(int.class, Long.class)); - // lngW = Integer.valueOf( 0 ); assertFalse(TypeUtils.isAssignable(Integer.class, Long.class)); - in = Integer.valueOf(0); assertTrue(TypeUtils.isAssignable(Integer.class, int.class)); - final Integer inte = in; assertTrue(TypeUtils.isAssignable(int.class, Integer.class)); assertTrue(TypeUtils.isAssignable(int.class, Number.class)); assertTrue(TypeUtils.isAssignable(int.class, Object.class)); - final Type intComparableType = getClass().getField("intComparable").getGenericType(); - intComparable = 1; - assertTrue(TypeUtils.isAssignable(int.class, intComparableType)); assertTrue(TypeUtils.isAssignable(int.class, Comparable.class)); - final Serializable ser = 1; assertTrue(TypeUtils.isAssignable(int.class, Serializable.class)); - final Type longComparableType = getClass().getField("longComparable").getGenericType(); - // longComparable = 1; - assertFalse(TypeUtils.isAssignable(int.class, longComparableType)); - // longComparable = Integer.valueOf( 0 ); - assertFalse(TypeUtils.isAssignable(Integer.class, longComparableType)); - // int[] ia; - // long[] la = ia; + assertFalse(TypeUtils.isAssignable(int[].class, long[].class)); - final Integer[] ia = null; - final Type caType = getClass().getField("intWildcardComparable").getGenericType(); - intWildcardComparable = ia; - assertTrue(TypeUtils.isAssignable(Integer[].class, caType)); - // int[] ina = ia; assertFalse(TypeUtils.isAssignable(Integer[].class, int[].class)); - final int[] ina = null; - final Object[] oa; - // oa = ina; assertFalse(TypeUtils.isAssignable(int[].class, Object[].class)); - oa = new Integer[0]; assertTrue(TypeUtils.isAssignable(Integer[].class, Object[].class)); - final Type bClassType = AClass.class.getField("bClass").getGenericType(); - final Type cClassType = AClass.class.getField("cClass").getGenericType(); - final Type dClassType = AClass.class.getField("dClass").getGenericType(); - final Type eClassType = AClass.class.getField("eClass").getGenericType(); - final Type fClassType = AClass.class.getField("fClass").getGenericType(); - final AClass aClass = new AClass(new AAClass<>()); - aClass.bClass = aClass.cClass; + } + + @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 + 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(); + + 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(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)); + + 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)); + + 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)); + + 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)); + + assertTrue(TypeUtils.isAssignable(subStringListType, subStringListType)); + assertFalse(TypeUtils.isAssignable(subStringListType, superStringListType)); + assertFalse(TypeUtils.isAssignable(superStringListType, subStringListType)); + assertTrue(TypeUtils.isAssignable(superStringListType, superStringListType)); + } + + @Test + public void testIsAssignableGenericListArrays() throws NoSuchFieldException { + final Type rawListTypeArray = GenericTypeHolder.class.getDeclaredField("rawListArray").getGenericType(); + final Type objectListTypeArray = GenericTypeHolder.class.getDeclaredField("objectListArray").getGenericType(); + final Type unboundListTypeArray = GenericTypeHolder.class.getDeclaredField("unboundListArray").getGenericType(); + final Type superObjectListTypeArray = GenericTypeHolder.class.getDeclaredField("superObjectListArray").getGenericType(); + final Type stringListTypeArray = GenericTypeHolder.class.getDeclaredField("stringListArray").getGenericType(); + final Type subStringListTypeArray = GenericTypeHolder.class.getDeclaredField("subStringListArray").getGenericType(); + final Type superStringListTypeArray = GenericTypeHolder.class.getDeclaredField("superStringListArray").getGenericType(); + + assertTrue(TypeUtils.isAssignable(rawListTypeArray, rawListTypeArray)); + assertTrue(TypeUtils.isAssignable(rawListTypeArray, objectListTypeArray)); + assertTrue(TypeUtils.isAssignable(objectListTypeArray, rawListTypeArray)); + assertTrue(TypeUtils.isAssignable(rawListTypeArray, unboundListTypeArray)); + assertTrue(TypeUtils.isAssignable(unboundListTypeArray, rawListTypeArray)); + assertTrue(TypeUtils.isAssignable(rawListTypeArray, superObjectListTypeArray)); + assertTrue(TypeUtils.isAssignable(superObjectListTypeArray, rawListTypeArray)); + assertTrue(TypeUtils.isAssignable(rawListTypeArray, stringListTypeArray)); + assertTrue(TypeUtils.isAssignable(stringListTypeArray, rawListTypeArray)); + assertTrue(TypeUtils.isAssignable(rawListTypeArray, subStringListTypeArray)); + assertTrue(TypeUtils.isAssignable(subStringListTypeArray, rawListTypeArray)); + assertTrue(TypeUtils.isAssignable(rawListTypeArray, superStringListTypeArray)); + assertTrue(TypeUtils.isAssignable(superStringListTypeArray, rawListTypeArray)); + + assertTrue(TypeUtils.isAssignable(objectListTypeArray, objectListTypeArray)); + assertTrue(TypeUtils.isAssignable(objectListTypeArray, unboundListTypeArray)); + assertFalse(TypeUtils.isAssignable(unboundListTypeArray, objectListTypeArray)); + assertTrue(TypeUtils.isAssignable(objectListTypeArray, superObjectListTypeArray)); + assertFalse(TypeUtils.isAssignable(superObjectListTypeArray, objectListTypeArray)); + assertFalse(TypeUtils.isAssignable(objectListTypeArray, stringListTypeArray)); + assertFalse(TypeUtils.isAssignable(stringListTypeArray, objectListTypeArray)); + assertFalse(TypeUtils.isAssignable(objectListTypeArray, subStringListTypeArray)); + assertFalse(TypeUtils.isAssignable(subStringListTypeArray, objectListTypeArray)); + assertTrue(TypeUtils.isAssignable(objectListTypeArray, superStringListTypeArray)); + assertFalse(TypeUtils.isAssignable(superStringListTypeArray, objectListTypeArray)); + + assertTrue(TypeUtils.isAssignable(unboundListTypeArray, unboundListTypeArray)); + assertFalse(TypeUtils.isAssignable(unboundListTypeArray, superObjectListTypeArray)); + assertTrue(TypeUtils.isAssignable(superObjectListTypeArray, unboundListTypeArray)); + assertFalse(TypeUtils.isAssignable(unboundListTypeArray, stringListTypeArray)); + assertTrue(TypeUtils.isAssignable(stringListTypeArray, unboundListTypeArray)); + assertFalse(TypeUtils.isAssignable(unboundListTypeArray, subStringListTypeArray)); + assertTrue(TypeUtils.isAssignable(subStringListTypeArray, unboundListTypeArray)); + assertFalse(TypeUtils.isAssignable(unboundListTypeArray, superStringListTypeArray)); + assertTrue(TypeUtils.isAssignable(superStringListTypeArray, unboundListTypeArray)); + + assertTrue(TypeUtils.isAssignable(superObjectListTypeArray, superObjectListTypeArray)); + assertFalse(TypeUtils.isAssignable(superObjectListTypeArray, stringListTypeArray)); + assertFalse(TypeUtils.isAssignable(stringListTypeArray, superObjectListTypeArray)); + assertFalse(TypeUtils.isAssignable(superObjectListTypeArray, subStringListTypeArray)); + assertFalse(TypeUtils.isAssignable(subStringListTypeArray, superObjectListTypeArray)); + assertTrue(TypeUtils.isAssignable(superObjectListTypeArray, superStringListTypeArray)); + assertFalse(TypeUtils.isAssignable(superStringListTypeArray, superObjectListTypeArray)); + + assertTrue(TypeUtils.isAssignable(stringListTypeArray, stringListTypeArray)); + assertTrue(TypeUtils.isAssignable(stringListTypeArray, subStringListTypeArray)); + assertFalse(TypeUtils.isAssignable(subStringListTypeArray, stringListTypeArray)); + assertTrue(TypeUtils.isAssignable(stringListTypeArray, superStringListTypeArray)); + assertFalse(TypeUtils.isAssignable(superStringListTypeArray, stringListTypeArray)); + + assertTrue(TypeUtils.isAssignable(subStringListTypeArray, subStringListTypeArray)); + assertFalse(TypeUtils.isAssignable(subStringListTypeArray, superStringListTypeArray)); + assertFalse(TypeUtils.isAssignable(superStringListTypeArray, subStringListTypeArray)); + assertTrue(TypeUtils.isAssignable(superStringListTypeArray, superStringListTypeArray)); + } + + @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)); - aClass.bClass = aClass.dClass; assertTrue(TypeUtils.isAssignable(dClassType, bClassType)); - aClass.bClass = aClass.eClass; assertTrue(TypeUtils.isAssignable(eClassType, bClassType)); - aClass.bClass = aClass.fClass; assertTrue(TypeUtils.isAssignable(fClassType, bClassType)); - aClass.cClass = aClass.dClass; + assertTrue(TypeUtils.isAssignable(dClassType, cClassType)); - aClass.cClass = aClass.eClass; assertTrue(TypeUtils.isAssignable(eClassType, cClassType)); - aClass.cClass = aClass.fClass; assertTrue(TypeUtils.isAssignable(fClassType, cClassType)); - aClass.dClass = aClass.eClass; + assertTrue(TypeUtils.isAssignable(eClassType, dClassType)); - aClass.dClass = aClass.fClass; assertTrue(TypeUtils.isAssignable(fClassType, dClassType)); - aClass.eClass = aClass.fClass; + assertTrue(TypeUtils.isAssignable(fClassType, eClassType)); } - private void testIsAssignable(final Class testUnassignableClass) { - 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]); + @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(); - assertFalse(testUnassignableClass.isAssignableFrom(paramType.getClass())); - assertFalse(paramType.getClass().isAssignableFrom(testUnassignableClass)); + 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)); - final GenericArrayType arrayType = TypeUtils.genericArrayType(paramType); - assertFalse(TypeUtils.isAssignable(arrayType, paramType), - () -> String.format("TypeUtils.isAssignable(%s, %s)", arrayType, paramType)); - assertFalse(TypeUtils.isAssignable(paramType, arrayType), - () -> String.format("TypeUtils.isAssignable(%s, %s)", paramType, arrayType)); + assertFalse(TypeUtils.isAssignable(dat2Type, datType)); + assertFalse(TypeUtils.isAssignable(datType, dat2Type)); + assertFalse(TypeUtils.isAssignable(dat3Type, datType)); } @Test @@ -977,12 +842,10 @@ public class TypeUtilsTest<B> extends AbstractLangTest { @SuppressWarnings("boxing") // boxing is deliberate here @Test - public void testIsInstance() throws SecurityException, NoSuchFieldException { + public void testIsInstance() throws NoSuchFieldException { final Type intComparableType = getClass().getField("intComparable").getGenericType(); final Type uriComparableType = getClass().getField("uriComparable").getGenericType(); - intComparable = 1; assertTrue(TypeUtils.isInstance(1, intComparableType)); - // uriComparable = 1; assertFalse(TypeUtils.isInstance(1, uriComparableType)); } @@ -999,7 +862,7 @@ public class TypeUtilsTest<B> extends AbstractLangTest { } @Test - public void testParameterize() throws Exception { + public void testParameterize() throws NoSuchFieldException { final ParameterizedType stringComparableType = TypeUtils.parameterize(Comparable.class, String.class); assertTrue(TypeUtils.equals(getClass().getField("stringComparable").getGenericType(), stringComparableType)); @@ -1028,7 +891,7 @@ public class TypeUtilsTest<B> extends AbstractLangTest { } @Test - public void testParameterizeWithOwner() throws Exception { + public void testParameterizeWithOwner() throws NoSuchFieldException { final Type owner = TypeUtils.parameterize(TypeUtilsTest.class, String.class); final ParameterizedType dat2Type = TypeUtils.parameterizeWithOwner(owner, That.class, String.class, String.class); assertTrue(TypeUtils.equals(getClass().getField("dat2").getGenericType(), dat2Type)); @@ -1064,8 +927,7 @@ public class TypeUtilsTest<B> extends AbstractLangTest { } @Test - public void testTypesSatisfyVariables() throws SecurityException, - NoSuchMethodException { + public void testTypesSatisfyVariables() throws NoSuchMethodException { final Map<TypeVariable<?>, Type> typeVarAssigns = new HashMap<>(); final Integer max = TypeUtilsTest.<Integer>stub(); typeVarAssigns.put(getClass().getMethod("stub").getTypeParameters()[0], Integer.class); @@ -1096,7 +958,7 @@ public class TypeUtilsTest<B> extends AbstractLangTest { } @Test - public void testWildcardType() throws Exception { + public void testWildcardType() throws NoSuchFieldException { final WildcardType simpleWildcard = TypeUtils.wildcardType().withUpperBounds(String.class).build(); final Field cClass = AClass.class.getField("cClass"); assertTrue(TypeUtils.equals(((ParameterizedType) cClass.getGenericType()).getActualTypeArguments()[0], diff --git a/src/test/java/org/apache/commons/lang3/reflect/testbed/GenericTypeHolder.java b/src/test/java/org/apache/commons/lang3/reflect/testbed/GenericTypeHolder.java index 390044cdd..be8008f5d 100644 --- a/src/test/java/org/apache/commons/lang3/reflect/testbed/GenericTypeHolder.java +++ b/src/test/java/org/apache/commons/lang3/reflect/testbed/GenericTypeHolder.java @@ -21,9 +21,24 @@ import java.util.List; /** * Holds generic testbed types. */ +@SuppressWarnings("rawtypes") public class GenericTypeHolder { public GenericParent<String> stringParent; public GenericParent<Integer> integerParent; public List<Foo> foos; public GenericParent<Bar>[] barParents; + public List rawList; + public List<Object> objectList; + public List<?> unboundList; + public List<? super Object> superObjectList; + public List<String> stringList; + public List<? extends String> subStringList; + public List<? super String> superStringList; + public List[] rawListArray; + public List<Object>[] objectListArray; + public List<?>[] unboundListArray; + public List<? super Object>[] superObjectListArray; + public List<String>[] stringListArray; + public List<? extends String>[] subStringListArray; + public List<? super String>[] superStringListArray; } diff --git a/src/test/java/org/apache/commons/lang3/text/ExtendedMessageFormatTest.java b/src/test/java/org/apache/commons/lang3/text/ExtendedMessageFormatTest.java index a7c5fb47e..e4127e295 100644 --- a/src/test/java/org/apache/commons/lang3/text/ExtendedMessageFormatTest.java +++ b/src/test/java/org/apache/commons/lang3/text/ExtendedMessageFormatTest.java @@ -201,14 +201,14 @@ public class ExtendedMessageFormatTest extends AbstractLangTest { buffer.append(locale); buffer.append("]"); final MessageFormat mf = createMessageFormat(pattern, locale); - ExtendedMessageFormat emf = null; + ExtendedMessageFormat emf; if (locale == null) { emf = new ExtendedMessageFormat(pattern); } else { emf = new ExtendedMessageFormat(pattern, locale); } - assertEquals(mf.format(args), emf.format(args), "format " + buffer.toString()); - assertEquals(mf.toPattern(), emf.toPattern(), "toPattern " + buffer.toString()); + assertEquals(mf.format(args), emf.format(args), "format " + buffer); + assertEquals(mf.toPattern(), emf.toPattern(), "toPattern " + buffer); } /** @@ -395,47 +395,67 @@ public class ExtendedMessageFormatTest extends AbstractLangTest { assertEquals("it's a dummy test!", emf.format(new Object[] {"DUMMY"})); } /** - * Test extended and built in formats. + * Test extended and built-in formats with available locales. */ @Test - public void testExtendedAndBuiltInFormats() { + public void testExtendedAndBuiltInFormatsWithAvailableLocales() { + final String extendedPattern = "Name: {0,upper} "; + final String builtinsPattern = "DOB: {1,date,short} Salary: {2,number,currency}"; + final String pattern = extendedPattern + builtinsPattern; + final Calendar cal = Calendar.getInstance(); cal.set(2007, Calendar.JANUARY, 23, 18, 33, 5); final Object[] args = {"John Doe", cal.getTime(), Double.valueOf("12345.67")}; - final String builtinsPattern = "DOB: {1,date,short} Salary: {2,number,currency}"; - final String extendedPattern = "Name: {0,upper} "; - final String pattern = extendedPattern + builtinsPattern; final HashSet<Locale> testLocales = new HashSet<>(Arrays.asList(DateFormat.getAvailableLocales())); testLocales.retainAll(Arrays.asList(NumberFormat.getAvailableLocales())); - testLocales.add(null); for (final Locale locale : testLocales) { final MessageFormat builtins = createMessageFormat(builtinsPattern, locale); final String expectedPattern = extendedPattern + builtins.toPattern(); - DateFormat df = null; - NumberFormat nf = null; - ExtendedMessageFormat emf = null; - if (locale == null) { - df = DateFormat.getDateInstance(DateFormat.SHORT); - nf = NumberFormat.getCurrencyInstance(); - emf = new ExtendedMessageFormat(pattern, registry); - } else { - df = DateFormat.getDateInstance(DateFormat.SHORT, locale); - nf = NumberFormat.getCurrencyInstance(locale); - emf = new ExtendedMessageFormat(pattern, locale, registry); - } + final ExtendedMessageFormat emf = new ExtendedMessageFormat(pattern, locale, registry); + assertEquals(expectedPattern, emf.toPattern(), "pattern comparison for locale " + locale); + + final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale); + final NumberFormat nf = NumberFormat.getCurrencyInstance(locale); final StringBuilder expected = new StringBuilder(); expected.append("Name: "); - expected.append(args[0].toString().toUpperCase(Locale.ROOT)); + expected.append(args[0].toString().toUpperCase(locale)); expected.append(" DOB: "); expected.append(df.format(args[1])); expected.append(" Salary: "); expected.append(nf.format(args[2])); - assertEquals(expectedPattern, emf.toPattern(), "pattern comparison for locale " + locale); assertEquals(expected.toString(), emf.format(args), String.valueOf(locale)); } } + /** + * Test extended and built-in formats with the default locale. + */ + @Test + public void testExtendedAndBuiltInFormatsWithDefaultLocale() { + final String extendedPattern = "Name: {0,upper} "; + final String builtinsPattern = "DOB: {1,date,short} Salary: {2,number,currency}"; + final String pattern = extendedPattern + builtinsPattern; + + final ExtendedMessageFormat emf = new ExtendedMessageFormat(pattern, registry); + final MessageFormat builtins = createMessageFormat(builtinsPattern, null); + final String expectedPattern = extendedPattern + builtins.toPattern(); + assertEquals(expectedPattern, emf.toPattern(), "pattern comparison for default locale"); + + final Calendar cal = Calendar.getInstance(); + cal.set(2007, Calendar.JANUARY, 23, 18, 33, 5); + final Object[] args = {"John Doe", cal.getTime(), Double.valueOf("12345.67")}; + final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT); + final NumberFormat nf = NumberFormat.getCurrencyInstance(); + final StringBuilder expected = new StringBuilder(); + expected.append("Name: "); + expected.append(args[0].toString().toUpperCase()); + expected.append(" DOB: "); + expected.append(df.format(args[1])); + expected.append(" Salary: "); + expected.append(nf.format(args[2])); + assertEquals(expected.toString(), emf.format(args)); + } /** * Test extended formats. */ diff --git a/src/test/java/org/apache/commons/lang3/text/StrBuilderAppendInsertTest.java b/src/test/java/org/apache/commons/lang3/text/StrBuilderAppendInsertTest.java index e088a257e..634606953 100644 --- a/src/test/java/org/apache/commons/lang3/text/StrBuilderAppendInsertTest.java +++ b/src/test/java/org/apache/commons/lang3/text/StrBuilderAppendInsertTest.java @@ -994,9 +994,9 @@ public class StrBuilderAppendInsertTest extends AbstractLangTest { sb.appendSeparator(standardSeparator, startSeparator); // no effect assertEquals(String.valueOf(startSeparator), sb.toString()); sb.append(foo); - assertEquals(String.valueOf(startSeparator) + foo, sb.toString()); + assertEquals(startSeparator + foo, sb.toString()); sb.appendSeparator(standardSeparator, startSeparator); - assertEquals(String.valueOf(startSeparator) + foo + standardSeparator, sb.toString()); + assertEquals(startSeparator + foo + standardSeparator, sb.toString()); } @Test diff --git a/src/test/java/org/apache/commons/lang3/time/DateUtilsTest.java b/src/test/java/org/apache/commons/lang3/time/DateUtilsTest.java index cb9700754..49bb8ae2a 100644 --- a/src/test/java/org/apache/commons/lang3/time/DateUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/time/DateUtilsTest.java @@ -82,7 +82,7 @@ public class DateUtilsTest extends AbstractLangTest { private static void assertWeekIterator(final Iterator<?> it, final Calendar start, final Calendar end) { Calendar cal = (Calendar) it.next(); assertCalendarsEquals("", start, cal, 0); - Calendar last = null; + Calendar last; int count = 1; while (it.hasNext()) { //Check this is just a date (no time component) diff --git a/src/test/java/org/apache/commons/lang3/time/FastDateParserSDFTest.java b/src/test/java/org/apache/commons/lang3/time/FastDateParserSDFTest.java index 7ce2b4720..fbff75e3a 100644 --- a/src/test/java/org/apache/commons/lang3/time/FastDateParserSDFTest.java +++ b/src/test/java/org/apache/commons/lang3/time/FastDateParserSDFTest.java @@ -136,9 +136,9 @@ public class FastDateParserSDFTest extends AbstractLangTest { fdfE = e.getClass(); } if (valid) { - assertEquals(expectedTime, actualTime, locale.toString()+" "+formattedDate +"\n"); + assertEquals(expectedTime, actualTime, locale + " " + formattedDate + "\n"); } else { - assertEquals(sdfE, fdfE, locale.toString()+" "+formattedDate + " expected same Exception "); + assertEquals(sdfE, fdfE, locale + " " + formattedDate + " expected same Exception "); } } @@ -173,7 +173,7 @@ public class FastDateParserSDFTest extends AbstractLangTest { final int endIndex = fdfP.getIndex(); final int length = formattedDate.length(); assertEquals(length, endIndex, "Expected FDF to parse full string " + fdfP); - assertEquals(expectedTime, actualTime, locale.toString()+" "+formattedDate +"\n"); + assertEquals(expectedTime, actualTime, locale +" "+formattedDate +"\n"); } else { assertNotEquals(-1, fdferrorIndex, "Test data error: expected FDF parse to fail, but got " + actualTime); assertTrue(sdferrorIndex - fdferrorIndex <= 4, diff --git a/src/test/java/org/apache/commons/lang3/time/FastDateParser_TimeZoneStrategyTest.java b/src/test/java/org/apache/commons/lang3/time/FastDateParser_TimeZoneStrategyTest.java index c46498caf..b75aeb748 100644 --- a/src/test/java/org/apache/commons/lang3/time/FastDateParser_TimeZoneStrategyTest.java +++ b/src/test/java/org/apache/commons/lang3/time/FastDateParser_TimeZoneStrategyTest.java @@ -145,7 +145,7 @@ public class FastDateParser_TimeZoneStrategyTest extends AbstractLangTest { } // Hack End fail(String.format("%s: with locale = %s, zIndex = %,d, tzDisplay = '%s', parser = '%s'", e, - localeStr, zIndex, tzDisplay, parser.toString()), e); + localeStr, zIndex, tzDisplay, parser), e); } } } diff --git a/src/test/java/org/apache/commons/lang3/util/FluentBitSetTest.java b/src/test/java/org/apache/commons/lang3/util/FluentBitSetTest.java index 285b4ddcd..cde857ecc 100644 --- a/src/test/java/org/apache/commons/lang3/util/FluentBitSetTest.java +++ b/src/test/java/org/apache/commons/lang3/util/FluentBitSetTest.java @@ -506,7 +506,7 @@ public class FluentBitSetTest extends AbstractLangTest { public void test_ConstructorInt() { FluentBitSet bs = newInstance(128); assertEquals(128, bs.size(), "Create FluentBitSet of incorrect size"); - assertEquals("{}", bs.toString(), "New FluentBitSet had invalid string representation: " + bs.toString()); + assertEquals("{}", bs.toString(), "New FluentBitSet had invalid string representation: " + bs); // All BitSets are created with elements of multiples of 64 bs = newInstance(89); assertEquals(128, bs.size(), "Failed to round FluentBitSet element size");