]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_2_1-src/src/com/ibm/icu/dev/test/collator/IndexCharactersTest.java
icu4jsrc
[Dictionary.git] / jars / icu4j-4_2_1-src / src / com / ibm / icu / dev / test / collator / IndexCharactersTest.java
1 //##header\r
2 //#if defined(FOUNDATION10) || defined(J2SE13)\r
3 //#else\r
4 /*\r
5  *******************************************************************************\r
6  * Copyright (C) 2008-2009, International Business Machines Corporation and    *\r
7  * others. All Rights Reserved.                                                *\r
8  *******************************************************************************\r
9  */\r
10 package com.ibm.icu.dev.test.collator;\r
11 \r
12 import java.util.ArrayList;\r
13 import java.util.Collection;\r
14 import java.util.Iterator;\r
15 import java.util.List;\r
16 import java.util.Map;\r
17 \r
18 import com.ibm.icu.dev.test.TestFmwk;\r
19 import com.ibm.icu.text.Collator;\r
20 import com.ibm.icu.text.IndexCharacters;\r
21 import com.ibm.icu.util.ULocale;\r
22 \r
23 /**\r
24  * @author markdavis\r
25  *\r
26  */\r
27 public class IndexCharactersTest extends TestFmwk {\r
28     public static void main(String[] args) throws Exception{\r
29         new IndexCharactersTest().run(args);\r
30     }\r
31 \r
32     public void TestBasics() {\r
33         ULocale[] list = ULocale.getAvailableLocales();\r
34         // get keywords combinations\r
35         // don't bother with multiple combinations at this poin\r
36         List keywords = new ArrayList();\r
37         keywords.add("");\r
38 \r
39         String[] collationValues = Collator.getKeywordValues("collation");\r
40         for (int j = 0; j < collationValues.length; ++j) {\r
41             keywords.add("@collation=" + collationValues[j]);\r
42         }\r
43         \r
44         for (int i = 0; i < list.length; ++i) {\r
45             for (Iterator it = keywords.iterator(); it.hasNext();) {\r
46                 String collationValue = (String) it.next();\r
47                 ULocale locale = new ULocale(list[i].toString() + collationValue);\r
48                 if (collationValue.length() > 0 && !Collator.getFunctionalEquivalent("collation", locale).equals(locale)) {\r
49                     //logln("Skipping " + locale);\r
50                     continue;\r
51                 }\r
52 \r
53                 if (locale.getCountry().length() != 0) {\r
54                     continue;\r
55                 }\r
56                 IndexCharacters indexCharacters = new IndexCharacters(locale);\r
57                 final Collection mainChars = indexCharacters.getIndexCharacters();\r
58                 String mainCharString = mainChars.toString();\r
59                 if (mainCharString.length() > 500) {\r
60                     mainCharString = mainCharString.substring(0,500) + "...";\r
61                 }\r
62                 logln(mainChars.size() + "\t" + locale + "\t" + locale.getDisplayName(ULocale.ENGLISH));\r
63                 logln("Index:\t" + mainCharString);\r
64                 if (mainChars.size() > 100) {\r
65                     errln("Index character set too large");\r
66                 }\r
67                 showIfNotEmpty("A sequence sorting the same is already present", indexCharacters.getAlreadyIn());\r
68                 showIfNotEmpty("A sequence sorts the same as components", indexCharacters.getNoDistinctSorting());\r
69                 showIfNotEmpty("A sequence has only Marks or Nonalphabetics", indexCharacters.getNotAlphabetic());\r
70             }\r
71         }\r
72     }\r
73     private void showIfNotEmpty(String title, List alreadyIn) {\r
74         if (alreadyIn.size() != 0) {\r
75             logln("\t" + title + ":\t" + alreadyIn);\r
76         }\r
77     }\r
78     private void showIfNotEmpty(String title, Map alreadyIn) {\r
79         if (alreadyIn.size() != 0) {\r
80             logln("\t" + title + ":\t" + alreadyIn);\r
81         }\r
82     }\r
83 }\r
84 //#endif\r