From 6041c249f4612ee556d56ae4cd056450258e460e Mon Sep 17 00:00:00 2001 From: Mihai Nita Date: Tue, 30 Apr 2024 21:26:48 +0000 Subject: [PATCH] ICU-21757 Remove ICU dependencies on CollectionUtilities --- .../test/collator/AlphabeticIndexTest.java | 4 +-- .../icu/dev/test/format/PluralRulesTest.java | 30 +++++++++++++++---- .../ibm/icu/dev/test/lang/UnicodeSetTest.java | 8 +++-- .../dev/test/util/DataDrivenTestHelper.java | 3 +- .../icu/dev/test/translit/UnicodeMapTest.java | 8 +++-- 5 files changed, 40 insertions(+), 13 deletions(-) diff --git a/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/collator/AlphabeticIndexTest.java b/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/collator/AlphabeticIndexTest.java index 99aa101733b..35b3c4f729b 100644 --- a/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/collator/AlphabeticIndexTest.java +++ b/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/collator/AlphabeticIndexTest.java @@ -22,7 +22,6 @@ import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import com.ibm.icu.dev.test.TestFmwk; -import com.ibm.icu.dev.util.CollectionUtilities; import com.ibm.icu.impl.ICUDebug; import com.ibm.icu.impl.Row; import com.ibm.icu.impl.Row.R4; @@ -384,7 +383,8 @@ public class AlphabeticIndexTest extends TestFmwk { indexCharacters2.addLabels((UnicodeSet)test[i]); } } - List> buckets = CollectionUtilities.addAll(alphabeticIndex.iterator(), new ArrayList>()); + List> buckets = new ArrayList<>(alphabeticIndex.getBucketCount()); + alphabeticIndex.iterator().forEachRemaining(buckets::add); logln(buckets.toString()); } assertEquals(LabelType.OVERFLOW + "\t" + printList, 1, counter.get(LabelType.OVERFLOW)); diff --git a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/PluralRulesTest.java b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/PluralRulesTest.java index 8093d5eb581..cce79c09cb7 100644 --- a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/PluralRulesTest.java +++ b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/PluralRulesTest.java @@ -23,6 +23,7 @@ import java.util.Comparator; import java.util.EnumSet; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; @@ -44,7 +45,6 @@ import org.junit.runners.JUnit4; import com.ibm.icu.dev.test.CoreTestFmwk; import com.ibm.icu.dev.test.serializable.SerializableTestUtility; -import com.ibm.icu.dev.util.CollectionUtilities; import com.ibm.icu.impl.Relation; import com.ibm.icu.impl.Utility; import com.ibm.icu.impl.number.DecimalQuantity; @@ -1505,12 +1505,31 @@ public class PluralRulesTest extends CoreTestFmwk { } }; + private static final Comparator> STDPLURALCATEG_COLLECTION_COMPARATOR = (o1, o2) -> { + int diff = o1.size() - o2.size(); + if (diff != 0) { + return diff; + } + Iterator iterator1 = o1.iterator(); + Iterator iterator2 = o2.iterator(); + while (true) { + // We already know they have the same length, we tested if first thing. + if (!iterator1.hasNext() || !iterator2.hasNext()) { + // At the end of both iterators, and everything was equal until here. + return 0; + } + diff = iterator1.next().compareTo(iterator2.next()); + if (diff != 0) { + return diff; + } + } + }; + private void generateLOCALE_SNAPSHOT() { - Comparator c = new CollectionUtilities.CollectionComparator<>(); Relation, PluralRules> setsToRules = Relation.of( - new TreeMap, Set>(c), TreeSet.class, PLURAL_RULE_COMPARATOR); + new TreeMap<>(STDPLURALCATEG_COLLECTION_COMPARATOR), TreeSet.class, PLURAL_RULE_COMPARATOR); Relation data = Relation.of( - new TreeMap>(PLURAL_RULE_COMPARATOR), TreeSet.class); + new TreeMap<>(PLURAL_RULE_COMPARATOR), TreeSet.class); for (ULocale locale : PluralRules.getAvailableULocales()) { PluralRules pr = PluralRules.forLocale(locale); EnumSet set = getCanonicalSet(pr.getKeywords()); @@ -1523,7 +1542,8 @@ public class PluralRulesTest extends CoreTestFmwk { System.out.println("\n // " + set); for (PluralRules rule : rules) { Set locales = data.get(rule); - System.out.print(" \"" + CollectionUtilities.join(locales, ",")); + String toShow = locales.stream().map(ULocale::toString).collect(Collectors.joining(",")); + System.out.print(" \"" + toShow); for (StandardPluralCategories spc : set) { String keyword = spc.toString(); DecimalQuantitySamples samples = rule.getDecimalSamples(keyword, SampleType.INTEGER); diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/UnicodeSetTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/UnicodeSetTest.java index 74c35ca4bde..e4cbe062ef1 100644 --- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/UnicodeSetTest.java +++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/UnicodeSetTest.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.SortedSet; +import java.util.StringJoiner; import java.util.TreeSet; import org.junit.Test; @@ -31,7 +32,6 @@ import org.junit.runners.JUnit4; import com.ibm.icu.dev.test.CoreTestFmwk; import com.ibm.icu.dev.test.TestFmwk; -import com.ibm.icu.dev.util.CollectionUtilities; import com.ibm.icu.impl.SortedSetRelation; import com.ibm.icu.impl.Utility; import com.ibm.icu.lang.CharacterProperties; @@ -2649,7 +2649,11 @@ public class UnicodeSetTest extends CoreTestFmwk { @Test public void TestIteration() { UnicodeSet us1 = new UnicodeSet("[abcM{xy}]"); - assertEquals("", "M, a-c", CollectionUtilities.join(us1.ranges(), ", ")); + StringJoiner joiner = new StringJoiner(", "); + for (EntryRange range : us1.ranges()) { + joiner.add(range.toString()); + } + assertEquals("", "M, a-c", joiner.toString()); // Sample code for (@SuppressWarnings("unused") EntryRange range : us1.ranges()) { diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/DataDrivenTestHelper.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/DataDrivenTestHelper.java index 274dd15a128..cd564f43217 100644 --- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/DataDrivenTestHelper.java +++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/DataDrivenTestHelper.java @@ -11,7 +11,6 @@ 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.locale.XCldrStub.FileUtilities; import com.ibm.icu.impl.locale.XCldrStub.Splitter; import com.ibm.icu.util.ICUUncheckedIOException; @@ -46,7 +45,7 @@ abstract public class DataDrivenTestHelper { } else { String first = components.iterator().next(); String sep = first.startsWith("@") ? "=" : SEPARATOR; - out.append(CollectionUtilities.join(components, sep)); + out.append(String.join(sep, components)); if (!comment.isEmpty()) { out.append("\t# ").append(comment); } diff --git a/icu4j/main/translit/src/test/java/com/ibm/icu/dev/test/translit/UnicodeMapTest.java b/icu4j/main/translit/src/test/java/com/ibm/icu/dev/test/translit/UnicodeMapTest.java index 9dbf040ad77..b4b106d6673 100644 --- a/icu4j/main/translit/src/test/java/com/ibm/icu/dev/test/translit/UnicodeMapTest.java +++ b/icu4j/main/translit/src/test/java/com/ibm/icu/dev/test/translit/UnicodeMapTest.java @@ -18,6 +18,7 @@ import java.util.Random; import java.util.Set; import java.util.SortedMap; import java.util.SortedSet; +import java.util.StringJoiner; import java.util.TreeMap; import java.util.TreeSet; @@ -27,7 +28,6 @@ import org.junit.runners.JUnit4; import com.ibm.icu.dev.test.TestBoilerplate; import com.ibm.icu.dev.test.TestFmwk; -import com.ibm.icu.dev.util.CollectionUtilities; import com.ibm.icu.dev.util.UnicodeMap; import com.ibm.icu.dev.util.UnicodeMap.EntryRange; import com.ibm.icu.dev.util.UnicodeMapIterator; @@ -66,7 +66,11 @@ public class UnicodeMapTest extends TestFmwk { } public void checkToString(UnicodeMap foo, String expected) { - assertEquals("EntryRange", expected, CollectionUtilities.join(foo.entryRanges(), "\n") + (foo.size() == 0 ? "" : "\n")); + StringJoiner joiner = new StringJoiner("\n"); + for (EntryRange range : foo.entryRanges()) { + joiner.add(range.toString()); + } + assertEquals("EntryRange", expected, joiner.toString() + (foo.size() == 0 ? "" : "\n")); assertEquals("EntryRange", expected, foo.toString()); }