• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package org.unicode.cldr.unittest;
2 
3 import com.ibm.icu.dev.test.TestFmwk;
4 import com.ibm.icu.lang.UCharacter;
5 import com.ibm.icu.text.UTF16;
6 import com.ibm.icu.text.UnicodeSet;
7 import org.unicode.cldr.util.CLDRConfig;
8 import org.unicode.cldr.util.CLDRFile;
9 import org.unicode.cldr.util.XPathParts;
10 
11 public class NumberingSystemsTest extends TestFmwk {
12     static CLDRConfig testInfo = CLDRConfig.getInstance();
13 
main(String[] args)14     public static void main(String[] args) {
15         new NumberingSystemsTest().run(args);
16     }
17 
TestFile()18     public void TestFile() {
19         CLDRFile file = testInfo.getSupplementalFactory().make("numberingSystems", false);
20         for (String path : file) {
21             XPathParts parts = XPathParts.getFrozenInstance(path);
22             if (!"numberingSystems".equals(parts.getElement(1))) {
23                 continue;
24             }
25             String id = parts.getAttributeValue(2, "id");
26             String digits = parts.getAttributeValue(2, "digits");
27             if (digits == null) {
28                 continue;
29             }
30             assertEquals("Must have 10 values", 10, UTF16.countCodePoint(digits));
31             int cp;
32             int value = 0;
33             for (int i = 0; i < digits.length(); i += UTF16.getCharCount(cp)) {
34                 cp = UTF16.charAt(digits, i);
35                 assertEquals("Value mismatch", value++, UCharacter.getNumericValue(cp));
36             }
37             try {
38                 UnicodeSet script = new UnicodeSet().applyPropertyAlias("script", id);
39                 if (!script.containsAll(digits)) {
40                     if (id.equals("latn") && digits.equals("0123456789")
41                             || id.equals("arab")
42                                     && digits.equals(
43                                             "\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669")) {
44                         // ok
45                     } else {
46                         errln("Script doesn't match digits: " + id + ", " + digits);
47                     }
48                 }
49             } catch (Exception e) {
50                 logln(id + " not a script");
51             }
52         }
53     }
54 }
55