From c97eed26e610db4a7c0f75a48b44dc076910272a Mon Sep 17 00:00:00 2001 From: Yoshito Umaoka Date: Thu, 29 Sep 2016 10:50:23 +0000 Subject: [PATCH] ICU-12716 Corrected API comment for newly added hashCode() methods, added a test case for VersionInfo#hashCode() and updated coverage-exclusion.txt. Also updated the API change report and API signature file. X-SVN-Rev: 39394 --- icu4j/APIChangeReport.html | 7 +- icu4j/coverage-exclusion.txt | 2 + .../src/com/ibm/icu/text/Collator.java | 10 ++ .../src/com/ibm/icu/util/VersionInfo.java | 2 +- .../icu/dev/test/util/VersionInfoTest.java | 91 +++++++++++-------- icu4j/tools/build/icu4j58.api3.gz | 4 +- 6 files changed, 74 insertions(+), 42 deletions(-) diff --git a/icu4j/APIChangeReport.html b/icu4j/APIChangeReport.html index 92dfd1bd2b8..35406708c1e 100644 --- a/icu4j/APIChangeReport.html +++ b/icu4j/APIChangeReport.html @@ -276,6 +276,10 @@ ChineseDateFormatSymbols +Collator + DecimalFormatSymbols
-

Contents generated by ReportAPI tool on Wed Sep 21 15:35:29 EDT 2016
© 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html#License

+

Contents generated by ReportAPI tool on Thu Sep 29 06:32:57 EDT 2016
© 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html#License

diff --git a/icu4j/coverage-exclusion.txt b/icu4j/coverage-exclusion.txt index 7c94e2d10f1..58d0a42dff8 100644 --- a/icu4j/coverage-exclusion.txt +++ b/icu4j/coverage-exclusion.txt @@ -68,6 +68,7 @@ com/ibm/icu/impl/coll/CollationIterator#equals:(Ljava/lang/Object;)Z com/ibm/icu/impl/coll/CollationIterator#getCE32FromBuilderData:(I)I com/ibm/icu/impl/coll/CollationIterator#handleGetTrailSurrogate:()C com/ibm/icu/impl/coll/CollationIterator#handleNextCE32:()J +com/ibm/icu/impl/coll/CollationIterator#hashCode:()I com/ibm/icu/impl/coll/CollationKeys#:()V com/ibm/icu/impl/coll/CollationKeys$SortKeyByteSink#GetRemainingCapacity:()I com/ibm/icu/impl/coll/CollationKeys$SortKeyByteSink#Overflowed:()Z @@ -617,6 +618,7 @@ com/ibm/icu/text/CjkBreakEngine#hashCode:()I com/ibm/icu/text/CollationElementIterator#strengthOrder:(I)I com/ibm/icu/text/CollationKey$BoundMode#:()V com/ibm/icu/text/Collator$ASCII#:()V +com/ibm/icu/text/Collator#hashCode:()I com/ibm/icu/text/CollatorServiceShim$CService#handleDefault:(Lcom/ibm/icu/impl/ICUService$Key;[Ljava/lang/String;)Ljava/lang/Object; com/ibm/icu/text/CompactDecimalDataCache#localeAndStyle:(Lcom/ibm/icu/util/ULocale;Ljava/lang/String;)Ljava/lang/String; com/ibm/icu/text/CompactDecimalDataCache$FormatsTableKey#valueOf:(Ljava/lang/String;)Lcom/ibm/icu/text/CompactDecimalDataCache$FormatsTableKey; diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/text/Collator.java b/icu4j/main/classes/collate/src/com/ibm/icu/text/Collator.java index 286e1b28ec1..79889c4296f 100644 --- a/icu4j/main/classes/collate/src/com/ibm/icu/text/Collator.java +++ b/icu4j/main/classes/collate/src/com/ibm/icu/text/Collator.java @@ -321,6 +321,16 @@ public abstract class Collator implements Comparator, FreezableThe implementation exists just for consistency with {@link #equals(Object)} + * implementation in this class and does not generate a useful hash code. + * Subclasses should override this implementation. + * + * @return a hash code value. + * @stable ICU 58 + */ @Override public int hashCode() { // Dummy return to prevent compile warnings. diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/VersionInfo.java b/icu4j/main/classes/core/src/com/ibm/icu/util/VersionInfo.java index b844d00aed8..c3aa4fd50f4 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/util/VersionInfo.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/util/VersionInfo.java @@ -470,7 +470,7 @@ public final class VersionInfo implements Comparable * * @return the hash code value for this set. * @see java.lang.Object#hashCode() - * @stable ICU 2.0 + * @stable ICU 58 */ @Override public int hashCode() { diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/VersionInfoTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/VersionInfoTest.java index b9fef73725b..40b5199f9bc 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/VersionInfoTest.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/VersionInfoTest.java @@ -24,10 +24,10 @@ import com.ibm.icu.util.VersionInfo; * @author Syn Wee Quek * @since release 2.1 March 01 2002 */ -public final class VersionInfoTest extends TestFmwk -{ +public final class VersionInfoTest extends TestFmwk +{ // constructor --------------------------------------------------- - + /** * Constructor */ @@ -36,7 +36,7 @@ public final class VersionInfoTest extends TestFmwk } // public methods ----------------------------------------------- - + /** * Test that the instantiation works */ @@ -46,10 +46,10 @@ public final class VersionInfoTest extends TestFmwk for (int i = 0; i < INSTANCE_INVALID_STRING_.length; i ++) { try { VersionInfo.getInstance(INSTANCE_INVALID_STRING_[i]); - errln("\"" + INSTANCE_INVALID_STRING_[i] + + errln("\"" + INSTANCE_INVALID_STRING_[i] + "\" should produce an exception"); } catch (RuntimeException e) { - logln("PASS: \"" + INSTANCE_INVALID_STRING_[i] + + logln("PASS: \"" + INSTANCE_INVALID_STRING_[i] + "\" failed as expected"); } } @@ -57,7 +57,7 @@ public final class VersionInfoTest extends TestFmwk try { VersionInfo.getInstance(INSTANCE_VALID_STRING_[i]); } catch (RuntimeException e) { - errln("\"" + INSTANCE_VALID_STRING_[i] + + errln("\"" + INSTANCE_VALID_STRING_[i] + "\" should produce an valid version"); } } @@ -66,7 +66,7 @@ public final class VersionInfoTest extends TestFmwk getInstance(INSTANCE_INVALID_INT_[i]); errln("invalid ints should produce an exception"); } catch (RuntimeException e) { - logln("PASS: \"" + Arrays.toString(INSTANCE_INVALID_INT_[i]) + + logln("PASS: \"" + Arrays.toString(INSTANCE_INVALID_INT_[i]) + "\" failed as expected"); } } @@ -78,7 +78,7 @@ public final class VersionInfoTest extends TestFmwk } } } - + /** * Test that the comparison works */ @@ -86,9 +86,9 @@ public final class VersionInfoTest extends TestFmwk public void TestCompare() { for (int i = 0; i < COMPARE_NOT_EQUAL_STRING_.length; i += 2) { - VersionInfo v1 = + VersionInfo v1 = VersionInfo.getInstance(COMPARE_NOT_EQUAL_STRING_[i]); - VersionInfo v2 = + VersionInfo v2 = VersionInfo.getInstance(COMPARE_NOT_EQUAL_STRING_[i + 1]); if (v1.compareTo(v2) == 0) { errln(COMPARE_NOT_EQUAL_STRING_[i] + " should not equal " + @@ -104,9 +104,9 @@ public final class VersionInfoTest extends TestFmwk } } for (int i = 0; i < COMPARE_EQUAL_STRING_.length - 1; i ++) { - VersionInfo v1 = + VersionInfo v1 = VersionInfo.getInstance(COMPARE_EQUAL_STRING_[i]); - VersionInfo v2 = + VersionInfo v2 = VersionInfo.getInstance(COMPARE_EQUAL_STRING_[i + 1]); if (v1.compareTo(v2) != 0) { errln(COMPARE_EQUAL_STRING_[i] + " should equal " + @@ -125,16 +125,16 @@ public final class VersionInfoTest extends TestFmwk VersionInfo v1 = VersionInfo.getInstance(COMPARE_LESS_[i]); VersionInfo v2 = VersionInfo.getInstance(COMPARE_LESS_[i + 1]); if (v1.compareTo(v2) >= 0) { - errln(COMPARE_LESS_[i] + " should be less than " + + errln(COMPARE_LESS_[i] + " should be less than " + COMPARE_LESS_[i + 1]); } if (v2.compareTo(v1) <= 0) { - errln(COMPARE_LESS_[i + 1] + " should be greater than " + + errln(COMPARE_LESS_[i + 1] + " should be greater than " + COMPARE_LESS_[i]); } } } - + /** * Test that the getter function works */ @@ -147,36 +147,36 @@ public final class VersionInfoTest extends TestFmwk v.getMinor() != GET_RESULT_[(i << 2) + 1] || v.getMilli() != GET_RESULT_[(i << 2) + 2] || v.getMicro() != GET_RESULT_[(i << 2) + 3]) { - errln(GET_STRING_[i] + " should return major=" + - GET_RESULT_[i << 2] + " minor=" + - GET_RESULT_[(i << 2) + 1] + " milli=" + + errln(GET_STRING_[i] + " should return major=" + + GET_RESULT_[i << 2] + " minor=" + + GET_RESULT_[(i << 2) + 1] + " milli=" + GET_RESULT_[(i << 2) + 2] + " micro=" + - GET_RESULT_[(i << 2) + 3]); + GET_RESULT_[(i << 2) + 3]); } v = getInstance(GET_INT_[i]); if (v.getMajor() != GET_RESULT_[i << 2] || v.getMinor() != GET_RESULT_[(i << 2) + 1] || v.getMilli() != GET_RESULT_[(i << 2) + 2] || v.getMicro() != GET_RESULT_[(i << 2) + 3]) { - errln(GET_STRING_[i] + " should return major=" + - GET_RESULT_[i << 2] + " minor=" + - GET_RESULT_[(i << 2) + 1] + " milli=" + + errln(GET_STRING_[i] + " should return major=" + + GET_RESULT_[i << 2] + " minor=" + + GET_RESULT_[(i << 2) + 1] + " milli=" + GET_RESULT_[(i << 2) + 2] + " micro=" + - GET_RESULT_[(i << 2) + 3]); + GET_RESULT_[(i << 2) + 3]); } } } - + /** * Test toString() */ @Test - public void TesttoString() + public void TesttoString() { for (int i = 0; i < TOSTRING_STRING_.length; i ++) { VersionInfo v = VersionInfo.getInstance(TOSTRING_STRING_[i]); if (!v.toString().equals(TOSTRING_RESULT_[i])) { - errln("toString() for " + TOSTRING_STRING_[i] + + errln("toString() for " + TOSTRING_STRING_[i] + " should produce " + TOSTRING_RESULT_[i]); } v = getInstance(TOSTRING_INT_[i]); @@ -186,7 +186,7 @@ public final class VersionInfoTest extends TestFmwk } } } - + /** * Test Comparable interface */ @@ -209,8 +209,22 @@ public final class VersionInfoTest extends TestFmwk } } } + + /** + * Test equals and hashCode + */ + @Test + public void TestEqualsAndHashCode() { + VersionInfo v1234a = VersionInfo.getInstance(1, 2, 3, 4); + VersionInfo v1234b = VersionInfo.getInstance(1, 2, 3, 4); + VersionInfo v1235 = VersionInfo.getInstance(1, 2, 3, 5); + + assertEquals("v1234a and v1234b", v1234a, v1234b); + assertEquals("v1234a.hashCode() and v1234b.hashCode()", v1234a.hashCode(), v1234b.hashCode()); + assertNotEquals("v1234a and v1235", v1234a, v1235); + } // private methods -------------------------------------------------- - + /** * int array versioninfo creation */ @@ -224,13 +238,13 @@ public final class VersionInfoTest extends TestFmwk case 3: return VersionInfo.getInstance(data[0], data[1], data[2]); default: - return VersionInfo.getInstance(data[0], data[1], data[2], + return VersionInfo.getInstance(data[0], data[1], data[2], data[3]); } } - + // private data members -------------------------------------------- - + /** * Test instance data */ @@ -280,7 +294,7 @@ public final class VersionInfoTest extends TestFmwk {255, 255, 255}, {255, 255, 255, 255} }; - + /** * Test compare data */ @@ -294,12 +308,12 @@ public final class VersionInfoTest extends TestFmwk "2.0.0.0", "2.0.0", "2.0", "2" }; private static final int COMPARE_EQUAL_INT_[][] = { - {2}, {2, 0}, {2, 0, 0}, {2, 0, 0, 0} + {2}, {2, 0}, {2, 0, 0}, {2, 0, 0, 0} }; private static final String COMPARE_LESS_[] = { "0", "0.0.0.1", "0.0.1", "0.1", "1", "2", "2.1", "2.1.1", "2.1.1.1" }; - + /** * Test Getter data */ @@ -321,7 +335,7 @@ public final class VersionInfoTest extends TestFmwk 2, 1, 255, 0, 3, 1, 255, 100 }; - + /** * Test toString data */ @@ -329,7 +343,7 @@ public final class VersionInfoTest extends TestFmwk "0", "1.1", "2.1.255", - "3.1.255.100" + "3.1.255.100" }; private static final int TOSTRING_INT_[][] = { {0}, @@ -341,7 +355,7 @@ public final class VersionInfoTest extends TestFmwk "0.0.0.0", "1.1.0.0", "2.1.255.0", - "3.1.255.100" + "3.1.255.100" }; /* @@ -390,6 +404,7 @@ public final class VersionInfoTest extends TestFmwk this.results = results; } + @Override public void run() { for (int i = 0; i < results.length; i++) { results[i] = VersionInfo.getInstance(i); diff --git a/icu4j/tools/build/icu4j58.api3.gz b/icu4j/tools/build/icu4j58.api3.gz index 5887789faac..2b8a283fe2b 100644 --- a/icu4j/tools/build/icu4j58.api3.gz +++ b/icu4j/tools/build/icu4j58.api3.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dbf812a1c20a17d0718e064e6f3e6917f7345d0e8fc6bbed09b747cb3c12cb88 -size 55342 +oid sha256:7b103275ea76672bccc814e88238aa24269e34ccb59bc1fe2980bfbfbd64c4f3 +size 55361