xref: /aosp_15_r20/external/cldr/tools/cldr-code/src/test/java/org/unicode/cldr/unittest/TestCollationMapMaker.java (revision 912701f9769bb47905792267661f0baf2b85bed5)
1 package org.unicode.cldr.unittest;
2 
3 import com.ibm.icu.impl.Relation;
4 import com.ibm.icu.text.Collator;
5 import com.ibm.icu.text.RuleBasedCollator;
6 import com.ibm.icu.text.Transliterator;
7 import com.ibm.icu.text.UnicodeSet;
8 import com.ibm.icu.util.ULocale;
9 import java.io.IOException;
10 import java.util.Comparator;
11 import java.util.Map;
12 import java.util.TreeMap;
13 import java.util.TreeSet;
14 import org.unicode.cldr.tool.GenerateTransformCharts;
15 import org.unicode.cldr.util.CLDRPaths;
16 import org.unicode.cldr.util.CaseIterator;
17 import org.unicode.cldr.util.CldrUtility;
18 import org.unicode.cldr.util.CollationMapMaker;
19 import org.unicode.cldr.util.Log;
20 import org.unicode.cldr.util.UnicodeSetPrettyPrinter;
21 
22 public class TestCollationMapMaker {
23     static Transliterator javaEscape =
24             Transliterator.getInstance("[^ \\u0009 \\u000A \\u000D \\u0020-\\u007F] hex/java");
25 
main(String[] args)26     public static void main(String[] args) throws IOException {
27         testTranslit();
28         Log.setLog(CLDRPaths.GEN_DIRECTORY + "CollationMapLog.txt");
29         CaseIterator caseIterator = new CaseIterator();
30         caseIterator.reset("aa");
31         while (true) {
32             String item = caseIterator.next();
33             if (item == null) break;
34             System.out.println(item);
35         }
36         RuleBasedCollator col = (RuleBasedCollator) Collator.getInstance(new ULocale("da_DK"));
37         col.setStrength(Collator.SECONDARY);
38         col.setAlternateHandlingShifted(true);
39 
40         Comparator c =
41                 new org.unicode.cldr.util.MultiComparator(
42                         new Comparator[] {
43                             col, new com.ibm.icu.text.UTF16.StringComparator(true, false, 0)
44                         });
45         Map mapping =
46                 new CollationMapMaker()
47                         .generateCollatorFolding(col, new TreeMap<CharSequence, String>());
48         Relation<String, String> inverse = new Relation(new TreeMap(c), TreeSet.class);
49         inverse.addAllInverted(mapping);
50         UnicodeSet unicodeSet = new UnicodeSet();
51         UnicodeSetPrettyPrinter pretty =
52                 UnicodeSetPrettyPrinter.fromIcuLocale(ULocale.ROOT.toString());
53         for (String target : inverse.keySet()) {
54             unicodeSet.clear();
55             unicodeSet.addAll(inverse.getAll(target));
56             if (target.length() > 0) {
57                 unicodeSet.add(target);
58             }
59             String unicodeSetName = pretty.format(unicodeSet);
60             String name = GenerateTransformCharts.getName(target, ", ");
61             Log.logln(
62                     com.ibm.icu.impl.Utility.hex(target)
63                             + " ( "
64                             + target
65                             + " ) "
66                             + name
67                             + "\t"
68                             + unicodeSetName);
69         }
70     }
71 
testTranslit()72     private static void testTranslit() {
73         System.out.println(
74                 javaEscape.transform(
75                         "\u0001\u001F"
76                                 + CldrUtility.LINE_SEPARATOR
77                                 + "\u0061\u00A5\uFFFF\uD800\uDC00"));
78     }
79 }
80