From: Yoshito Umaoka Date: Mon, 20 Mar 2017 16:09:08 +0000 (+0000) Subject: ICU-12812 Fixed some build and test issues introduced by LoicaleMatcher changes ... X-Git-Tag: release-59-rc~78 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=634c4a202318c50736a1e471d58a0bcc8eed2fb8;p=icu ICU-12812 Fixed some build and test issues introduced by LoicaleMatcher changes (and DecimalFormat changes done by #7467) X-SVN-Rev: 39883 --- diff --git a/icu4j/build.xml b/icu4j/build.xml index a604b95d4c2..03d10a11f06 100644 --- a/icu4j/build.xml +++ b/icu4j/build.xml @@ -292,6 +292,7 @@ + diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/TextTrieMap.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/TextTrieMap.java index 2576ff18d1c..c7b8d443cda 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/TextTrieMap.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/TextTrieMap.java @@ -14,6 +14,7 @@ import java.util.List; import java.util.ListIterator; import com.ibm.icu.lang.UCharacter; +import com.ibm.icu.text.UTF16; /** * TextTrieMap is a trie implementation for supporting @@ -118,7 +119,7 @@ public class TextTrieMap { startingCp = UCharacter.foldCase(startingCp, true); } int count = Character.charCount(startingCp); - char ch1 = (count == 1) ? (char) startingCp : Character.highSurrogate(startingCp); + char ch1 = (count == 1) ? (char) startingCp : UTF16.getLeadSurrogate(startingCp); if (!_root.hasChildFor(ch1)) { return null; } @@ -152,10 +153,10 @@ public class TextTrieMap { cp = UCharacter.foldCase(cp, true); } int count = Character.charCount(cp); - char ch1 = (count == 1) ? (char) cp : Character.highSurrogate(cp); + char ch1 = (count == 1) ? (char) cp : UTF16.getLeadSurrogate(cp); node.takeStep(ch1, offset, result); if (count == 2 && result.node != null) { - char ch2 = Character.lowSurrogate(cp); + char ch2 = UTF16.getTrailSurrogate(cp); result.node.takeStep(ch2, result.offset, result); } node = result.node; diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/Utility.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/Utility.java index c1790a53f06..061956379f7 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/Utility.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/Utility.java @@ -10,6 +10,7 @@ package com.ibm.icu.impl; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Locale; import java.util.regex.Pattern; @@ -1807,4 +1808,44 @@ public final class Utility { } return buffer.toString(); } + + /** + * This implementation is equivalent to Java 7+ Objects#equals(Object a, Object b) + * + * @param a an object + * @param b an object to be compared with a for equality + * @return true if the arguments are equal to each other and false otherwise + */ + public static boolean equals(Object a, Object b) { + return (a == b) + || (a != null && b != null && a.equals(b)); + } + + /** + * This implementation is equivalent to Java 7+ Objects#hash(Object... values) + * @param values the values to be hashed + * @return a hash value of the sequence of input values + */ + public static int hash(Object... values) { + return Arrays.hashCode(values); + } + + /** + * This implementation is equivalent to Java 7+ Objects#hashCode(Object o) + * @param o an object + * @return a hash value of a non-null argument and 0 for null argument + */ + public static int hashCode(Object o) { + return o == null ? 0 : o.hashCode(); + } + + /** + * This implementation is equivalent to Java 7+ Objects#toString(Object o) + * @param o an object + * @return the result of calling toStirng for a non-null argument and "null" for a + * null argument + */ + public static String toString(Object o) { + return o == null ? "null" : o.toString(); + } } diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/XLikelySubtags.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/XLikelySubtags.java index 28c406e1a90..5279bcdaaab 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/XLikelySubtags.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/XLikelySubtags.java @@ -8,12 +8,12 @@ import java.util.Enumeration; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; -import java.util.Objects; import java.util.Set; import java.util.TreeMap; import com.ibm.icu.impl.ICUData; import com.ibm.icu.impl.ICUResourceBundle; +import com.ibm.icu.impl.Utility; import com.ibm.icu.impl.locale.XCldrStub.HashMultimap; import com.ibm.icu.impl.locale.XCldrStub.Multimap; import com.ibm.icu.impl.locale.XCldrStub.Multimaps; @@ -206,7 +206,7 @@ public class XLikelySubtags { } @Override public int hashCode() { - return Objects.hash(language, script, region); + return Utility.hash(language, script, region); } } @@ -483,7 +483,7 @@ public class XLikelySubtags { if (value instanceof Map) { show((Map)value, indent+"\t", output); } else { - output.append("\t" + Objects.toString(value)).append("\n"); + output.append("\t" + Utility.toString(value)).append("\n"); } first = indent; } diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/XLocaleDistance.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/XLocaleDistance.java index 9e10715f969..6e1c1f138c0 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/XLocaleDistance.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/XLocaleDistance.java @@ -14,7 +14,6 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; -import java.util.Objects; import java.util.Set; import java.util.TreeMap; import java.util.TreeSet; @@ -22,6 +21,7 @@ import java.util.TreeSet; import com.ibm.icu.impl.ICUResourceBundle; import com.ibm.icu.impl.Row; import com.ibm.icu.impl.Row.R4; +import com.ibm.icu.impl.Utility; import com.ibm.icu.impl.locale.XCldrStub.CollectionUtilities; import com.ibm.icu.impl.locale.XCldrStub.ImmutableMap; import com.ibm.icu.impl.locale.XCldrStub.ImmutableMultimap; @@ -357,11 +357,11 @@ public class XLocaleDistance { return false; } StringDistanceNode other = (StringDistanceNode) obj; - return distance == other.distance && Objects.equals(distanceTable, other.distanceTable); + return distance == other.distance && Utility.equals(distanceTable, other.distanceTable); } @Override public int hashCode() { - return distance ^ Objects.hashCode(distanceTable); + return distance ^ Utility.hashCode(distanceTable); } StringDistanceNode(int distance) { diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTest.java index 9c940fafc7f..d3f92feb643 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTest.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTest.java @@ -4903,7 +4903,8 @@ public class NumberFormatTest extends TestFmwk { new CurrencyAmount(2.34, Currency.getInstance("XSU")), result); // pass } catch (Exception e) { - throw new AssertionError("Should have been able to parse XSU", e); + //throw new AssertionError("Should have been able to parse XSU", e); + throw new AssertionError("Should have been able to parse XSU: " + e.getMessage()); } } diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberRegressionTests.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberRegressionTests.java index 5a2e63e967f..0b03a846b7d 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberRegressionTests.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberRegressionTests.java @@ -1573,7 +1573,8 @@ public class NumberRegressionTests extends TestFmwk { assertEquals("Localized FAIL on maxInt", df.getMaximumIntegerDigits(), f2.getMaximumIntegerDigits()); }catch(IllegalArgumentException ex){ - throw new AssertionError("For locale " + avail[i], ex); + //throw new AssertionError("For locale " + avail[i], ex); + throw new AssertionError("For locale " + avail[i] + ": " + ex.getMessage()); } diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/FormatQuantityTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/FormatQuantityTest.java index 9b491ca80ec..31dc279bb80 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/FormatQuantityTest.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/FormatQuantityTest.java @@ -8,7 +8,7 @@ import java.math.RoundingMode; import java.text.ParseException; import java.util.ArrayList; import java.util.List; -import java.util.concurrent.ThreadLocalRandom; +import java.util.Random; import org.junit.Test; @@ -404,8 +404,9 @@ public class FormatQuantityTest extends TestFmwk { // Generate random doubles String alert = "UNEXPECTED FAILURE: PLEASE REPORT THIS MESSAGE TO THE ICU TEAM: "; + Random rnd = new Random(); for (int i = 0; i < 1000000; i++) { - double d = Double.longBitsToDouble(ThreadLocalRandom.current().nextLong()); + double d = Double.longBitsToDouble(rnd.nextLong()); if (Double.isNaN(d) || Double.isInfinite(d)) continue; checkDoubleBehavior(d, false, alert); } diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DataDrivenTestHelper.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DataDrivenTestHelper.java index 308be8c34e7..eaf84eafe32 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DataDrivenTestHelper.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DataDrivenTestHelper.java @@ -7,11 +7,11 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.Objects; import com.ibm.icu.dev.test.AbstractTestLog; import com.ibm.icu.dev.test.TestFmwk; import com.ibm.icu.dev.util.CollectionUtilities; +import com.ibm.icu.impl.Utility; import com.ibm.icu.impl.locale.XCldrStub.FileUtilities; import com.ibm.icu.impl.locale.XCldrStub.Splitter; import com.ibm.icu.util.ICUUncheckedIOException; @@ -165,7 +165,7 @@ abstract public class DataDrivenTestHelper { } protected boolean assertEquals(String message, Object expected, Object actual) { - return TestFmwk.handleAssert(Objects.equals(expected, actual), message, stringFor(expected), stringFor(actual), null, false); + return TestFmwk.handleAssert(Utility.equals(expected, actual), message, stringFor(expected), stringFor(actual), null, false); } private final String stringFor(Object obj) {