]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_2_1-src/src/com/ibm/icu/dev/test/format/PluralFormatTest.java
icu4jsrc
[Dictionary.git] / jars / icu4j-4_2_1-src / src / com / ibm / icu / dev / test / format / PluralFormatTest.java
1 /*\r
2  *******************************************************************************\r
3  * Copyright (C) 2007-2008, International Business Machines Corporation and    *\r
4  * others. All Rights Reserved.                                                *\r
5  *******************************************************************************\r
6  */\r
7 package com.ibm.icu.dev.test.format;\r
8 \r
9 import com.ibm.icu.dev.test.TestFmwk;\r
10 import com.ibm.icu.impl.Utility;\r
11 import com.ibm.icu.text.PluralFormat;\r
12 import com.ibm.icu.util.ULocale;\r
13 \r
14 import java.util.HashMap;\r
15 import java.util.Map;\r
16 \r
17 /**\r
18  * @author tschumann (Tim Schumann)\r
19  *\r
20  */\r
21 public class PluralFormatTest extends TestFmwk {\r
22   \r
23   public static void main(String[] args) throws Exception {\r
24     new PluralFormatTest().run(args);\r
25   }\r
26   \r
27   private void helperTestRules(String localeIDs, String testPattern, Map changes) {\r
28     String[] locales = Utility.split(localeIDs, ',');\r
29     \r
30     // Create example outputs for all supported locales.\r
31     /*\r
32     System.out.println("\n" + localeIDs);\r
33     String lastValue = (String) changes.get(new Integer(0));\r
34     int  lastNumber = 0; \r
35     \r
36     for (int i = 1; i < 199; ++i) {\r
37         if (changes.get(new Integer(i)) != null) {\r
38             if (lastNumber == i-1) {\r
39                 System.out.println(lastNumber + ": " + lastValue);\r
40             } else {\r
41                 System.out.println(lastNumber + "... " + (i-1) + ": " + lastValue);\r
42             }\r
43             lastNumber = i;\r
44             lastValue = (String) changes.get(new Integer(i));\r
45         }\r
46     }\r
47     System.out.println(lastNumber + "..." + 199 + ": " + lastValue);\r
48     */\r
49     log("test pattern: '" + testPattern + "'");\r
50     for (int i = 0; i < locales.length; ++i) {\r
51       try {\r
52         PluralFormat plf = new PluralFormat(new ULocale(locales[i]), testPattern);\r
53         log("plf: " + plf);\r
54         String expected = (String) changes.get(new Integer(0));\r
55         for (int n = 0; n < 200; ++n) {\r
56           if (changes.get(new Integer(n)) != null) {\r
57             expected = (String) changes.get(new Integer(n));\r
58           }\r
59           assertEquals("Locale: " + locales[i] + ", number: " + n,\r
60                        expected, plf.format(n));\r
61         }\r
62       } catch (IllegalArgumentException e) {\r
63         errln(e.getMessage() + " locale: " + locales[i] + " pattern: '" + testPattern + "' " + System.currentTimeMillis());\r
64       }\r
65     }\r
66   }\r
67   \r
68   public void TestOneFormLocales() {\r
69     String localeIDs = "ja,ko,tr,vi";\r
70     String testPattern = "other{other}";\r
71     Map changes = new HashMap();\r
72     changes.put(new Integer(0), "other");\r
73     helperTestRules(localeIDs, testPattern, changes);\r
74   }\r
75   \r
76   public void TestSingular1Locales() {\r
77     String localeIDs = "da,de,el,en,eo,es,et,fi,fo,he,it,nb,nl,nn,no,pt_PT,sv";\r
78     String testPattern = "one{one} other{other}";\r
79     Map changes = new HashMap();\r
80     changes.put(new Integer(0), "other");\r
81     changes.put(new Integer(1), "one");\r
82     changes.put(new Integer(2), "other");\r
83     helperTestRules(localeIDs, testPattern, changes);\r
84   }\r
85   \r
86   public void TestSingular01Locales() {\r
87     String localeIDs = "fr,pt_BR";\r
88     String testPattern = "one{one} other{other}";\r
89     Map changes = new HashMap();\r
90     changes.put(new Integer(0), "one");\r
91     changes.put(new Integer(2), "other");\r
92     helperTestRules(localeIDs, testPattern, changes);\r
93   }\r
94   \r
95   public void TestZeroSingularLocales() {\r
96     String localeIDs = "lv";\r
97     String testPattern = "zero{zero} one{one} other{other}";\r
98     Map changes = new HashMap();\r
99     changes.put(new Integer(0), "zero");\r
100     changes.put(new Integer(1), "one");\r
101     changes.put(new Integer(2), "other");\r
102     for (int i = 2; i < 20; ++i) {\r
103       if (i == 11) {\r
104         continue;\r
105       }\r
106       changes.put(new Integer(i*10 + 1), "one");\r
107       changes.put(new Integer(i*10 + 2), "other");\r
108     }\r
109     helperTestRules(localeIDs, testPattern, changes);\r
110   }\r
111   \r
112   public void TestSingularDual() {\r
113       String localeIDs = "ga";\r
114       String testPattern = "one{one} two{two} other{other}";\r
115       Map changes = new HashMap();\r
116       changes.put(new Integer(0), "other");\r
117       changes.put(new Integer(1), "one");\r
118       changes.put(new Integer(2), "two");\r
119       changes.put(new Integer(3), "other");\r
120       helperTestRules(localeIDs, testPattern, changes);\r
121   }\r
122   \r
123   public void TestSingularZeroSome() {\r
124       String localeIDs = "ro";\r
125       String testPattern = "few{few} one{one} other{other}";\r
126       Map changes = new HashMap();\r
127       changes.put(new Integer(0), "few");\r
128       changes.put(new Integer(1), "one");\r
129       changes.put(new Integer(2), "few");\r
130       changes.put(new Integer(20), "other");\r
131       changes.put(new Integer(101), "few");\r
132       changes.put(new Integer(120), "other");\r
133       helperTestRules(localeIDs, testPattern, changes);\r
134   }\r
135   \r
136   public void TestSpecial12_19() {\r
137       String localeIDs = "lt";\r
138       String testPattern = "one{one} few{few} other{other}";\r
139       Map changes = new HashMap();\r
140       changes.put(new Integer(0), "other");\r
141       changes.put(new Integer(1), "one");\r
142       changes.put(new Integer(2), "few");\r
143       changes.put(new Integer(10), "other");\r
144       for (int i = 2; i < 20; ++i) {\r
145         if (i == 11) {\r
146           continue;\r
147         }\r
148         changes.put(new Integer(i*10 + 1), "one");\r
149         changes.put(new Integer(i*10 + 2), "few");\r
150         changes.put(new Integer((i+1)*10), "other");\r
151       }\r
152       helperTestRules(localeIDs, testPattern, changes);\r
153   }\r
154   \r
155   public void TestPaucalExcept11_14() {\r
156       String localeIDs = "hr,ru,sr,uk";\r
157       String testPattern = "one{one} few{few} other{other}";\r
158       Map changes = new HashMap();\r
159       changes.put(new Integer(0), "other");\r
160       changes.put(new Integer(1), "one");\r
161       changes.put(new Integer(2), "few");\r
162       changes.put(new Integer(5), "other");\r
163       for (int i = 2; i < 20; ++i) {\r
164         if (i == 11) {\r
165           continue;\r
166         }\r
167         changes.put(new Integer(i*10 + 1), "one");\r
168         changes.put(new Integer(i*10 + 2), "few");\r
169         changes.put(new Integer(i*10 + 5), "other");\r
170       }\r
171       helperTestRules(localeIDs, testPattern, changes);\r
172   }\r
173   \r
174   public void TestSingularPaucal() {\r
175       String localeIDs = "cs,sk";\r
176       String testPattern = "one{one} few{few} other{other}";\r
177       Map changes = new HashMap();\r
178       changes.put(new Integer(0), "other");\r
179       changes.put(new Integer(1), "one");\r
180       changes.put(new Integer(2), "few");\r
181       changes.put(new Integer(5), "other");\r
182       helperTestRules(localeIDs, testPattern, changes);\r
183   }\r
184   \r
185   public void TestPaucal1_234() {\r
186       String localeIDs = "pl";\r
187       String testPattern = "one{one} few{few} other{other}";\r
188       Map changes = new HashMap();\r
189       changes.put(new Integer(0), "other");\r
190       changes.put(new Integer(1), "one");\r
191       changes.put(new Integer(2), "few");\r
192       changes.put(new Integer(5), "other");\r
193       for (int i = 2; i < 20; ++i) {\r
194         if (i == 2 || i == 11 || i == 12) {\r
195           continue;\r
196         }\r
197         changes.put(new Integer(i*10 + 2), "few");\r
198         changes.put(new Integer(i*10 + 5), "other");\r
199       }\r
200       helperTestRules(localeIDs, testPattern, changes);\r
201   }\r
202   \r
203   public void TestPaucal1_2_34() {\r
204       String localeIDs = "sl";\r
205       String testPattern = "one{one} two{two} few{few} other{other}";\r
206       Map changes = new HashMap();\r
207       changes.put(new Integer(0), "other");\r
208       changes.put(new Integer(1), "one");\r
209       changes.put(new Integer(2), "two");\r
210       changes.put(new Integer(3), "few");\r
211       changes.put(new Integer(5), "other");\r
212       changes.put(new Integer(101), "one");\r
213       changes.put(new Integer(102), "two");\r
214       changes.put(new Integer(103), "few");\r
215       changes.put(new Integer(105), "other");\r
216       helperTestRules(localeIDs, testPattern, changes);\r
217   }\r
218 }\r