]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/main/tests/collate/src/com/ibm/icu/dev/test/format/GlobalizationPreferencesTest.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / main / tests / collate / src / com / ibm / icu / dev / test / format / GlobalizationPreferencesTest.java
1 /*\r
2  *******************************************************************************\r
3  * Copyright (C) 2004-2010, International Business Machines Corporation and    *\r
4  * others. All Rights Reserved.                                                *\r
5  *******************************************************************************\r
6 */\r
7 \r
8 package com.ibm.icu.dev.test.format;\r
9 \r
10 import java.util.ArrayList;\r
11 import java.util.List;\r
12 import java.util.MissingResourceException;\r
13 import java.util.ResourceBundle;\r
14 \r
15 import com.ibm.icu.dev.test.TestFmwk;\r
16 import com.ibm.icu.text.BreakIterator;\r
17 import com.ibm.icu.text.Collator;\r
18 import com.ibm.icu.text.DateFormat;\r
19 import com.ibm.icu.text.NumberFormat;\r
20 import com.ibm.icu.text.SimpleDateFormat;\r
21 import com.ibm.icu.util.BuddhistCalendar;\r
22 import com.ibm.icu.util.Calendar;\r
23 import com.ibm.icu.util.Currency;\r
24 import com.ibm.icu.util.GlobalizationPreferences;\r
25 import com.ibm.icu.util.GregorianCalendar;\r
26 import com.ibm.icu.util.IslamicCalendar;\r
27 import com.ibm.icu.util.JapaneseCalendar;\r
28 import com.ibm.icu.util.TimeZone;\r
29 import com.ibm.icu.util.ULocale;\r
30 \r
31 \r
32 \r
33 public class GlobalizationPreferencesTest extends TestFmwk {\r
34 \r
35     public static void main(String[] args) throws Exception {\r
36         new GlobalizationPreferencesTest().run(args);\r
37     }\r
38 \r
39     public void TestDefault() {\r
40         GlobalizationPreferences gp = new GlobalizationPreferences();\r
41         ULocale defLocale = new ULocale("en_US");\r
42         ULocale defFallbackLocale = new ULocale("en");\r
43 \r
44         if (!defLocale.equals(ULocale.getDefault())) {\r
45             // Locale.US is always used as the default locale in the test environment\r
46             // If not, some test cases will fail...\r
47             errln("FAIL: The default locale of the test environment must be en_US");\r
48         }\r
49         \r
50         logln("Default locale: " + defLocale.toString());\r
51 \r
52         // First locale is en_US\r
53         ULocale gpLocale0 = gp.getLocale(0);\r
54         logln("Primary locale: " + gpLocale0.toString());\r
55         if (!gpLocale0.equals(defLocale)) {\r
56             errln("FAIL: The primary locale is not en_US");\r
57         }\r
58 \r
59         // Second locale is en\r
60         ULocale gpLocale1 = gp.getLocale(1);\r
61         logln("Secondary locale: " + gpLocale1.toString());\r
62         if (!gpLocale1.equals(defFallbackLocale)) {\r
63             errln("FAIL: The secondary locale is not en");\r
64         }\r
65 \r
66         // Third locale is null\r
67         ULocale gpLocale2 = gp.getLocale(2);\r
68         if (gpLocale2 != null) {\r
69             errln("FAIL: Number of locales must be 2");\r
70         }\r
71         \r
72         // Calendar locale\r
73         Calendar cal = gp.getCalendar();\r
74         ULocale calLocale = cal.getLocale(ULocale.VALID_LOCALE);\r
75         logln("Calendar locale: " + calLocale.toString());\r
76         if (!calLocale.equals(defLocale)) {\r
77             errln("FAIL: The calendar locale must match with the default JVM locale");\r
78         }\r
79 \r
80         // Collator locale\r
81         Collator coll = gp.getCollator();\r
82         ULocale collLocale = coll.getLocale(ULocale.VALID_LOCALE);\r
83         logln("Collator locale: " + collLocale.toString());\r
84         if (!collLocale.equals(defLocale)) {\r
85             errln("FAIL: The collator locale must match with the default JVM locale");\r
86         }\r
87 \r
88         // BreakIterator locale\r
89         BreakIterator brk = gp.getBreakIterator(GlobalizationPreferences.BI_CHARACTER);\r
90         ULocale brkLocale = brk.getLocale(ULocale.VALID_LOCALE);\r
91         logln("BreakIterator locale: " + brkLocale.toString());\r
92         if (!brkLocale.equals(defLocale)) {\r
93             errln("FAIL: The break iterator locale must match with the default JVM locale");\r
94         }\r
95 \r
96         /* Skip - Bug#5209\r
97         // DateFormat locale\r
98         DateFormat df = gp.getDateFormat(GlobalizationPreferences.DF_FULL, GlobalizationPreferences.DF_NONE);\r
99         ULocale dfLocale = df.getLocale(ULocale.VALID_LOCALE);\r
100         logln("DateFormat locale: " + dfLocale.toString());\r
101         if (!dfLocale.equals(defLocale)) {\r
102             errln("FAIL: The date format locale must match with the default JVM locale");\r
103         }\r
104         */\r
105 \r
106         // NumberFormat locale\r
107         NumberFormat nf = gp.getNumberFormat(GlobalizationPreferences.NF_NUMBER);\r
108         ULocale nfLocale = nf.getLocale(ULocale.VALID_LOCALE);\r
109         logln("NumberFormat locale: " + nfLocale.toString());\r
110         if (!nfLocale.equals(defLocale)) {\r
111             errln("FAIL: The number format locale must match with the default JVM locale");\r
112         }\r
113     }\r
114 \r
115     public void TestFreezable() {\r
116         logln("Create a new GlobalizationPreference object");\r
117         GlobalizationPreferences gp = new GlobalizationPreferences();\r
118         if (gp.isFrozen()) {\r
119             errln("FAIL: This object is not yet frozen");\r
120         }        \r
121 \r
122         logln("Call reset()");\r
123         boolean bSet = true;\r
124         try {\r
125             gp.reset();\r
126         } catch (UnsupportedOperationException uoe) {\r
127             bSet = false;\r
128         }\r
129         if (!bSet) {\r
130             errln("FAIL: reset() must not throw an exception before frozen");\r
131         }\r
132 \r
133         // Freeze the object\r
134         logln("Freeze the object");\r
135         gp.freeze();\r
136         if (!gp.isFrozen()) {\r
137             errln("FAIL: This object is already fronzen");\r
138         }\r
139 \r
140         // reset()\r
141         logln("Call reset() after frozen");\r
142         bSet = true;\r
143         try {\r
144             gp.reset();\r
145         } catch (UnsupportedOperationException uoe) {\r
146             bSet = false;\r
147         }\r
148         if (bSet) {\r
149             errln("FAIL: reset() must be blocked after frozen");\r
150         }\r
151 \r
152         // setLocales(ULocale[])\r
153         logln("Call setLocales(ULocale[]) after frozen");\r
154         bSet = true;\r
155         try {\r
156             gp.setLocales(new ULocale[] {new ULocale("fr_FR")});\r
157         } catch (UnsupportedOperationException uoe) {\r
158             bSet = false;\r
159         }\r
160         if (bSet) {\r
161             errln("FAIL: setLocales(ULocale[]) must be blocked after frozen");\r
162         }\r
163 \r
164         // setLocales(ULocale[])\r
165         logln("Call setLocales(List) after frozen");\r
166         bSet = true;\r
167         ArrayList list = new ArrayList(1);\r
168         list.add(new ULocale("fr_FR"));\r
169         try {\r
170             gp.setLocales(list);\r
171         } catch (UnsupportedOperationException uoe) {\r
172             bSet = false;\r
173         }\r
174         if (bSet) {\r
175             errln("FAIL: setLocales(List) must be blocked after frozen");\r
176         }\r
177 \r
178         // setLocales(String)\r
179         logln("Call setLocales(String) after frozen");\r
180         bSet = true;\r
181         try {\r
182             gp.setLocales("pt-BR,es;q=0.7");\r
183         } catch (UnsupportedOperationException uoe) {\r
184             bSet = false;\r
185         }\r
186         if (bSet) {\r
187             errln("FAIL: setLocales(String) must be blocked after frozen");\r
188         }\r
189 \r
190         // setLocale(ULocale)\r
191         logln("Call setLocale(ULocale) after frozen");\r
192         bSet = true;\r
193         try {\r
194             gp.setLocale(new ULocale("fi_FI"));\r
195         } catch (UnsupportedOperationException uoe) {\r
196             bSet = false;\r
197         }\r
198         if (bSet) {\r
199             errln("FAIL: setLocale(ULocale) must be blocked after frozen");\r
200         }\r
201         \r
202         // setTerritory(String)\r
203         logln("Call setTerritory(String) after frozen");\r
204         bSet = true;\r
205         try {\r
206             gp.setTerritory("AU");\r
207         } catch (UnsupportedOperationException uoe) {\r
208             bSet = false;\r
209         }\r
210         if (bSet) {\r
211             errln("FAIL: setTerritory(String) must be blocked after frozen");\r
212         }\r
213 \r
214         // Modifiable clone\r
215         logln("Create a modifiable clone");\r
216         GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();\r
217 \r
218         if (gp1.isFrozen()) {\r
219             errln("FAIL: The object returned by cloneAsThawed() must not be frozen yet");\r
220         }        \r
221 \r
222         // setLocale(ULocale)\r
223         logln("Call setLocale(ULocale) of the modifiable clone");\r
224         bSet = true;\r
225         try {\r
226             gp1.setLocale(new ULocale("fr_FR"));\r
227         } catch (UnsupportedOperationException uoe) {\r
228             bSet = false;\r
229         }\r
230         if (!bSet) {\r
231             errln("FAIL: setLocales(ULocale) must not throw an exception before frozen");\r
232         }        \r
233     }\r
234 \r
235     static String[][] INPUT_LOCALEIDS = {\r
236         {"en_US"},\r
237         {"fr_CA", "fr"},\r
238         {"fr", "fr_CA"},\r
239         {"es", "fr", "en_US"},\r
240         {"zh_CN", "zh_Hans", "zh_Hans_CN"},\r
241         {"en_US_123"},\r
242         {"es_US", "es"},\r
243         {"de_DE", "es", "fr_FR"},\r
244     };\r
245 \r
246     static String[] ACCEPT_LANGUAGES = {\r
247         "en-US",\r
248         "fr-CA,fr;q=0.5",\r
249         "fr_CA;q=0.5,fr",\r
250         "es,fr;q=0.76,en_US;q=0.75",\r
251         "zh-CN,zh-Hans;q=0.5,zh-Hans-CN;q=0.1",\r
252         "en-US-123",\r
253         "  es\t; q   =0.5 \t, es-US ;q   =1",\r
254         "fr-FR; q=0.5, de-DE, es",\r
255     };\r
256 \r
257     static String[][] RESULTS_LOCALEIDS = {\r
258         {"en_US", "en"},\r
259         {"fr_CA", "fr"},\r
260         {"fr_CA", "fr"},\r
261         {"es", "fr", "en_US", "en"},\r
262         {"zh_Hans_CN", "zh_CN", "zh_Hans", "zh"},\r
263         {"en_US_123", "en_US", "en"},\r
264         {"es_US", "es"},\r
265         {"de_DE", "de", "es", "fr_FR", "fr"},\r
266     };\r
267 \r
268     public void TestSetLocales() {\r
269         GlobalizationPreferences gp = new GlobalizationPreferences();\r
270 \r
271         // setLocales(List)\r
272         for (int i = 0; i < INPUT_LOCALEIDS.length; i++) {\r
273             String[] localeStrings = INPUT_LOCALEIDS[i];\r
274             ArrayList locales = new ArrayList();\r
275             StringBuffer sb = new StringBuffer();\r
276             for (int j = 0; j < localeStrings.length; j++) {\r
277                 locales.add(new ULocale(localeStrings[j]));\r
278                 if (j != 0) {\r
279                     sb.append(", ");\r
280                 }\r
281                 sb.append(localeStrings[j]);\r
282             }\r
283             logln("Input locales: " + sb.toString());\r
284             \r
285             gp.reset();\r
286             gp.setLocales(locales);\r
287 \r
288             List resultLocales = gp.getLocales();\r
289             if (resultLocales.size() != RESULTS_LOCALEIDS[i].length) {\r
290                 errln("FAIL: Number of locales mismatch - GP:" + resultLocales.size()\r
291                         + " Expected:" + RESULTS_LOCALEIDS[i].length);\r
292             } else {\r
293                 \r
294                 for (int j = 0; j < RESULTS_LOCALEIDS[i].length; j++) {\r
295                     ULocale loc = gp.getLocale(j);\r
296                     logln("Locale[" + j + "]: " + loc.toString());\r
297                     if (!gp.getLocale(j).toString().equals(RESULTS_LOCALEIDS[i][j])) {\r
298                         errln("FAIL: Locale index(" + j + ") does not match - GP:" + loc.toString()\r
299                                 + " Expected:" + RESULTS_LOCALEIDS[i][j]);\r
300                     }\r
301                 }    \r
302             }\r
303         }\r
304         \r
305         // setLocales(ULocale[])\r
306         for (int i = 0; i < INPUT_LOCALEIDS.length; i++) {\r
307             String[] localeStrings = INPUT_LOCALEIDS[i];\r
308             ULocale[] localeArray = new ULocale[INPUT_LOCALEIDS[i].length];\r
309             StringBuffer sb = new StringBuffer();\r
310             for (int j = 0; j < localeStrings.length; j++) {\r
311                 localeArray[j] = new ULocale(localeStrings[j]);\r
312                 if (j != 0) {\r
313                     sb.append(", ");\r
314                 }\r
315                 sb.append(localeStrings[j]);\r
316             }\r
317             logln("Input locales: " + sb.toString());\r
318             \r
319             gp.reset();\r
320             gp.setLocales(localeArray);\r
321 \r
322             List resultLocales = gp.getLocales();\r
323             if (resultLocales.size() != RESULTS_LOCALEIDS[i].length) {\r
324                 errln("FAIL: Number of locales mismatch - GP:" + resultLocales.size()\r
325                         + " Expected:" + RESULTS_LOCALEIDS[i].length);\r
326             } else {\r
327                 \r
328                 for (int j = 0; j < RESULTS_LOCALEIDS[i].length; j++) {\r
329                     ULocale loc = gp.getLocale(j);\r
330                     logln("Locale[" + j + "]: " + loc.toString());\r
331                     if (!gp.getLocale(j).toString().equals(RESULTS_LOCALEIDS[i][j])) {\r
332                         errln("FAIL: Locale index(" + j + ") does not match - GP:" + loc.toString()\r
333                                 + " Expected:" + RESULTS_LOCALEIDS[i][j]);\r
334                     }\r
335                 }    \r
336             }\r
337         }\r
338 \r
339         // setLocales(String)\r
340         for (int i = 0; i < ACCEPT_LANGUAGES.length; i++) {\r
341             String acceptLanguage = ACCEPT_LANGUAGES[i];\r
342             logln("Accept language: " + acceptLanguage);\r
343             \r
344             gp.reset();\r
345             gp.setLocales(acceptLanguage);\r
346 \r
347             List resultLocales = gp.getLocales();\r
348             if (resultLocales.size() != RESULTS_LOCALEIDS[i].length) {\r
349                 errln("FAIL: Number of locales mismatch - GP:" + resultLocales.size()\r
350                         + " Expected:" + RESULTS_LOCALEIDS[i].length);\r
351             } else {\r
352                 \r
353                 for (int j = 0; j < RESULTS_LOCALEIDS[i].length; j++) {\r
354                     ULocale loc = gp.getLocale(j);\r
355                     logln("Locale[" + j + "]: " + loc.toString());\r
356                     if (!gp.getLocale(j).toString().equals(RESULTS_LOCALEIDS[i][j])) {\r
357                         errln("FAIL: Locale index(" + j + ") does not match - GP:" + loc.toString()\r
358                                 + " Expected:" + RESULTS_LOCALEIDS[i][j]);\r
359                     }\r
360                 }    \r
361             }\r
362         }\r
363 \r
364 \r
365         // accept-language without q-value\r
366         logln("Set accept-language - de,de-AT");\r
367         gp.setLocales("de,de-AT");\r
368         if (!gp.getLocale(0).toString().equals("de_AT")) {\r
369             errln("FAIL: getLocale(0) returns " + gp.getLocale(0).toString() + " Expected: de_AT");\r
370         }\r
371         \r
372         // Invalid accept-language\r
373         logln("Set locale - ko_KR");\r
374         gp.setLocale(new ULocale("ko_KR"));\r
375         boolean bException = false;\r
376         try {\r
377             logln("Set invlaid accept-language - ko=100");\r
378             gp.setLocales("ko=100");\r
379         } catch (IllegalArgumentException iae) {\r
380             logln("IllegalArgumentException was thrown");\r
381             bException = true;\r
382         }\r
383         if (!bException) {\r
384             errln("FAIL: IllegalArgumentException was not thrown for illegal accept-language - ko=100");\r
385         }\r
386         if (!gp.getLocale(0).toString().equals("ko_KR")) {\r
387             errln("FAIL: Previous valid locale list had gone");\r
388         }\r
389     }\r
390 \r
391     public void TestResourceBundle() {\r
392         String baseName = "com.ibm.icu.dev.data.resources.TestDataElements";\r
393         ResourceBundle rb;\r
394 \r
395         logln("Get a resource bundle " + baseName + \r
396                 " using GlobalizationPreferences initialized by locales - en_GB, en_US");\r
397         GlobalizationPreferences gp = new GlobalizationPreferences();\r
398         ULocale[] locales = new ULocale[2];\r
399         locales[0] = new ULocale("en_GB");\r
400         locales[1] = new ULocale("en_US");\r
401         gp.setLocales(locales);\r
402 \r
403         try {\r
404             rb = gp.getResourceBundle(baseName);\r
405             String str = rb.getString("from_en_US");\r
406             if (!str.equals("This data comes from en_US")) {\r
407                 errln("FAIL: from_en_US is not from en_US bundle");\r
408             }\r
409         } catch (MissingResourceException mre) {\r
410             errln("FAIL: Missing resouces");\r
411         }\r
412 \r
413         gp.reset();\r
414 \r
415         logln("Get a resource bundle " + baseName + \r
416         " using GlobalizationPreferences initialized by locales - ja, en_US_California");\r
417 \r
418         locales = new ULocale[2];\r
419         locales[0] = new ULocale("ja");\r
420         locales[1] = new ULocale("en_US_California");\r
421         gp.setLocales(locales);\r
422         \r
423         try {\r
424             rb = gp.getResourceBundle(baseName, Thread.currentThread().getContextClassLoader());\r
425             String str = rb.getString("from_en_US");\r
426             if (!str.equals("This data comes from en_US")) {\r
427                 errln("FAIL: from_en_US is not from en_US bundle");\r
428             }\r
429         } catch (MissingResourceException mre) {\r
430             errln("FAIL: Missing resouces");\r
431         }\r
432 \r
433         logln("Get a resource bundle which does not exist");\r
434         boolean bException = false;\r
435         try {\r
436             rb = gp.getResourceBundle("foo.bar.XXX");\r
437         } catch (MissingResourceException mre) {\r
438             logln("Missing resource exception for getting resource bundle - foo.bar.XXX");\r
439             bException = true;\r
440         }\r
441         if (!bException) {\r
442             errln("FAIL: MissingResourceException must be thrown for RB - foo.bar.XXX");\r
443         }\r
444     }\r
445 \r
446     public void TestTerritory() {\r
447         GlobalizationPreferences gp = new GlobalizationPreferences();\r
448 \r
449         // Territory for unsupported language locale\r
450         logln("Set locale - ang");\r
451         gp.setLocale(new ULocale("ang"));\r
452         String territory = gp.getTerritory();\r
453         if (!territory.equals("US")) {\r
454             errln("FAIL: Territory is " + territory + " - Expected: US");\r
455         }\r
456 \r
457         // Territory for language only locale "fr"\r
458         logln("Set locale - fr");\r
459         gp.setLocale(new ULocale("fr"));\r
460         territory = gp.getTerritory();\r
461         if (!territory.equals("FR")) {\r
462             errln("FAIL: Territory is " + territory + " - Expected: FR");\r
463         }\r
464 \r
465 \r
466         // Set explicity territory\r
467         logln("Set explicit territory - CA");\r
468         gp.setTerritory("CA");\r
469         territory = gp.getTerritory();\r
470         if (!territory.equals("CA")) {\r
471             errln("FAIL: Territory is " + territory + " - Expected: CA");\r
472         }\r
473 \r
474         // Freeze\r
475         logln("Freeze this object");\r
476         gp.freeze();\r
477         \r
478         boolean bFrozen = false;\r
479         try {\r
480             gp.setTerritory("FR");\r
481         } catch (UnsupportedOperationException uoe) {\r
482             logln("setTerritory is blocked");\r
483             bFrozen = true;\r
484         }\r
485         if (!bFrozen) {\r
486             errln("FAIL: setTerritory must be blocked after frozen");\r
487         }\r
488         territory = gp.getTerritory();\r
489         if (!territory.equals("CA")) {\r
490             errln("FAIL: Territory is not CA");\r
491         }\r
492 \r
493         // Safe clone\r
494         GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();\r
495         territory = gp1.getTerritory();\r
496         if (!territory.equals("CA")) {\r
497             errln("FAIL: Territory is " + territory + " - Expected: CA");\r
498         }\r
499 \r
500         gp1.reset();\r
501         ULocale[] locales = new ULocale[2];\r
502         locales[0] = new ULocale("ja");\r
503         locales[1] = new ULocale("zh_Hant_TW");\r
504  \r
505         logln("Set locales - ja, zh_Hant_TW");\r
506         gp1.setLocales(locales);\r
507 \r
508         territory = gp1.getTerritory();\r
509         if (!territory.equals("TW")) {\r
510             errln("FAIL: Territory is " + territory + " - Expected: TW");\r
511         }\r
512     }\r
513 \r
514     public void TestCurrency() {\r
515         GlobalizationPreferences gp = new GlobalizationPreferences();\r
516 \r
517         // Set language only locale - ja\r
518         logln("Set locale - ja");\r
519         gp.setLocale(new ULocale("ja"));\r
520         Currency cur = gp.getCurrency();\r
521         String code = cur.getCurrencyCode();\r
522         if (!code.equals("JPY")) {\r
523             errln("FAIL: Currency is " + code + " - Expected: JPY");\r
524         }\r
525 \r
526         gp.reset();\r
527         // Set locales with territory\r
528         logln("Set locale - ja_US");\r
529         gp.setLocale(new ULocale("ja_US"));\r
530         cur = gp.getCurrency();\r
531         code = cur.getCurrencyCode();\r
532         if (!code.equals("USD")) {\r
533             errln("FAIL: Currency is " + code + " - Expected: USD");\r
534         }\r
535 \r
536         // Set locales with territory in the second locale\r
537         logln("Set locales - it, en_US");\r
538         ULocale[] locales = new ULocale[2];\r
539         locales[0] = new ULocale("it");\r
540         locales[1] = new ULocale("en_US");\r
541         gp.setLocales(locales);\r
542         cur = gp.getCurrency();\r
543         code = cur.getCurrencyCode();\r
544         if (!code.equals("USD")) {\r
545             errln("FAIL: Currency is " + code + " - Expected: USD");\r
546         }\r
547 \r
548         // Set explicit territory\r
549         logln("Set territory - DE");\r
550         gp.setTerritory("DE");\r
551         cur = gp.getCurrency();\r
552         code = cur.getCurrencyCode();\r
553         if (!code.equals("EUR")) {\r
554             errln("FAIL: Currency is " + code + " - Expected: EUR");\r
555         }\r
556 \r
557         // Set explicit currency\r
558         Currency ecur = Currency.getInstance("BRL");\r
559         gp.setCurrency(ecur);\r
560         logln("Set explicit currency - BRL");\r
561         cur = gp.getCurrency();\r
562         code = cur.getCurrencyCode();\r
563         if (!code.equals("BRL")) {\r
564             errln("FAIL: Currency is " + code + " - Expected: BRL");\r
565         }\r
566 \r
567         // Set explicit territory again\r
568         logln("Set territory - JP");\r
569         cur = gp.getCurrency();\r
570         code = cur.getCurrencyCode();\r
571         if (!code.equals("BRL")) {\r
572             errln("FAIL: Currency is " + code + " - Expected: BRL");\r
573         }\r
574 \r
575         // Freeze\r
576         logln("Freeze this object");\r
577         Currency ecur2 = Currency.getInstance("CHF");\r
578         boolean bFrozen = false;\r
579         gp.freeze();\r
580         try {\r
581             gp.setCurrency(ecur2);\r
582         } catch (UnsupportedOperationException uoe) {\r
583             logln("setCurrency is blocked");\r
584             bFrozen = true;\r
585         }\r
586         if (!bFrozen) {\r
587             errln("FAIL: setCurrency must be blocked");\r
588         }\r
589 \r
590         // Safe clone\r
591         logln("cloneAsThawed");\r
592         GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();\r
593         cur = gp.getCurrency();\r
594         code = cur.getCurrencyCode();\r
595         if (!code.equals("BRL")) {\r
596             errln("FAIL: Currency is " + code + " - Expected: BRL");\r
597         }\r
598 \r
599         // Set ecplicit currency\r
600         gp1.setCurrency(ecur2);\r
601         cur = gp1.getCurrency();\r
602         code = cur.getCurrencyCode();\r
603         if (!code.equals("CHF")) {\r
604             errln("FAIL: Currency is " + code + " - Expected: CHF");\r
605         }\r
606     }\r
607 \r
608     public void TestCalendar() {\r
609         GlobalizationPreferences gp = new GlobalizationPreferences();\r
610 \r
611         // Set locale - pt_BR\r
612         logln("Set locale - pt");\r
613         gp.setLocale(new ULocale("pt"));\r
614         Calendar cal = gp.getCalendar();\r
615         String calType = cal.getType();\r
616         if (!calType.equals("gregorian")) {\r
617             errln("FAIL: Calendar type is " + calType + " Expected: gregorian");\r
618         }\r
619 \r
620         // Set a list of locales\r
621         logln("Set locales - en, en_JP, en_GB");\r
622         ULocale[] locales = new ULocale[3];\r
623         locales[0] = new ULocale("en");\r
624         locales[1] = new ULocale("en_JP");\r
625         locales[2] = new ULocale("en_GB");\r
626         gp.setLocales(locales);\r
627 \r
628         cal = gp.getCalendar();\r
629         ULocale calLocale = cal.getLocale(ULocale.VALID_LOCALE);\r
630         if (!calLocale.equals(locales[2])) {\r
631             errln("FAIL: Calendar locale is " + calLocale.toString() + " - Expected: en_GB");\r
632         }\r
633 \r
634         // Set ecplicit calendar\r
635         logln("Set Japanese calendar to this object");\r
636         JapaneseCalendar jcal = new JapaneseCalendar();\r
637         gp.setCalendar(jcal);\r
638         cal = gp.getCalendar();\r
639         calType = cal.getType();\r
640         if (!calType.equals("japanese")) {\r
641             errln("FAIL: Calendar type is " + calType + " Expected: japanese");\r
642         }\r
643 \r
644         jcal.setFirstDayOfWeek(3);\r
645         if (cal.getFirstDayOfWeek() == jcal.getFirstDayOfWeek()) {\r
646             errln("FAIL: Calendar returned by getCalendar must be a safe copy");\r
647         }\r
648         cal.setFirstDayOfWeek(3);\r
649         Calendar cal1 = gp.getCalendar();\r
650         if (cal1.getFirstDayOfWeek() == cal.getFirstDayOfWeek()) {\r
651             errln("FAIL: Calendar returned by getCalendar must be a safe copy");\r
652         }\r
653 \r
654         // Freeze\r
655         logln("Freeze this object");\r
656         IslamicCalendar ical = new IslamicCalendar();\r
657         boolean bFrozen = false;\r
658         gp.freeze();\r
659         try {\r
660             gp.setCalendar(ical);\r
661         } catch (UnsupportedOperationException uoe) {\r
662             logln("setCalendar is blocked");\r
663             bFrozen = true;\r
664         }\r
665         if (!bFrozen) {\r
666             errln("FAIL: setCalendar must be blocked");\r
667         }\r
668 \r
669         // Safe clone\r
670         logln("cloneAsThawed");\r
671         GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();\r
672         cal = gp.getCalendar();\r
673         calType = cal.getType();\r
674         if (!calType.equals("japanese")) {\r
675             errln("FAIL: Calendar type afte clone is " + calType + " Expected: japanese");\r
676         }\r
677 \r
678         logln("Set islamic calendar");\r
679         gp1.setCalendar(ical);\r
680         cal = gp1.getCalendar();\r
681         calType = cal.getType();\r
682         if (!calType.equals("islamic")) {\r
683             errln("FAIL: Calendar type afte clone is " + calType + " Expected: islamic");\r
684         }\r
685     }\r
686 \r
687     public void TestTimeZone() {\r
688         GlobalizationPreferences gp = new GlobalizationPreferences();\r
689 \r
690         // Set locale - zh_CN \r
691         logln("Set locale - zh_CN");\r
692         gp.setLocale(new ULocale("zh_CN"));\r
693         TimeZone tz = gp.getTimeZone();\r
694         String tzid = tz.getID();\r
695         if (!tzid.equals("Asia/Shanghai")) {\r
696             errln("FAIL: Time zone ID is " + tzid + " Expected: Asia/Shanghai");\r
697         }\r
698 \r
699         // Set locale - en\r
700         logln("Set locale - en");\r
701         gp.setLocale(new ULocale("en"));\r
702         tz = gp.getTimeZone();\r
703         tzid = tz.getID();\r
704         if (!tzid.equals("America/New_York")) {\r
705             errln("FAIL: Time zone ID is " + tzid + " Expected: America/New_York");\r
706         }\r
707 \r
708         // Set territory - GB\r
709         logln("Set territory - GB");\r
710         gp.setTerritory("GB");\r
711         tz = gp.getTimeZone();\r
712         tzid = tz.getID();\r
713         if (!tzid.equals("Europe/London")) {\r
714             errln("FAIL: Time zone ID is " + tzid + " Expected: Europe/London");\r
715         }\r
716 \r
717         // Check if getTimeZone returns a safe clone\r
718         tz.setID("Bad_ID");\r
719         tz = gp.getTimeZone();\r
720         tzid = tz.getID();\r
721         if (!tzid.equals("Europe/London")) {\r
722             errln("FAIL: Time zone ID is " + tzid + " Expected: Europe/London");\r
723         }\r
724 \r
725         // Set explicit time zone\r
726         TimeZone jst = TimeZone.getTimeZone("Asia/Tokyo");\r
727         String customJstId = "Japan_Standard_Time";\r
728         jst.setID(customJstId);\r
729         gp.setTimeZone(jst);\r
730         tz = gp.getTimeZone();\r
731         tzid = tz.getID();\r
732         if (!tzid.equals(customJstId)) {\r
733             errln("FAIL: Time zone ID is " + tzid + " Expected: " + customJstId);\r
734         }\r
735 \r
736         // Freeze\r
737         logln("Freeze this object");\r
738         TimeZone cst = TimeZone.getTimeZone("Europe/Paris");\r
739         boolean bFrozen = false;\r
740         gp.freeze();\r
741         try {\r
742             gp.setTimeZone(cst);\r
743         } catch (UnsupportedOperationException uoe) {\r
744             logln("setTimeZone is blocked");\r
745             bFrozen = true;\r
746         }\r
747         if (!bFrozen) {\r
748             errln("FAIL: setTimeZone must be blocked");\r
749         }\r
750 \r
751         // Modifiable clone\r
752         logln("cloneAsThawed");\r
753         GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();\r
754         tz = gp1.getTimeZone();\r
755         tzid = tz.getID();\r
756         if (!tzid.equals(customJstId)) {\r
757             errln("FAIL: Time zone ID is " + tzid + " Expected: " + customJstId);\r
758         }\r
759 \r
760         // Set explicit time zone\r
761         gp1.setTimeZone(cst);\r
762         tz = gp1.getTimeZone();\r
763         tzid = tz.getID();\r
764         if (!tzid.equals(cst.getID())) {\r
765             errln("FAIL: Time zone ID is " + tzid + " Expected: " + cst.getID());\r
766         }        \r
767     }\r
768 \r
769     public void TestCollator() {\r
770         GlobalizationPreferences gp = new GlobalizationPreferences();\r
771 \r
772         // Set locale - tr\r
773         logln("Set locale - tr");\r
774         gp.setLocale(new ULocale("tr"));\r
775         Collator coll = gp.getCollator();\r
776         String locStr = coll.getLocale(ULocale.VALID_LOCALE).toString();\r
777         if (!locStr.equals("tr")) {\r
778             errln("FAIL: Collator locale is " + locStr + " Expected: tr");\r
779         }\r
780 \r
781         // Unsupported collator locale - zun\r
782         logln("Set locale - zun");\r
783         gp.setLocale(new ULocale("zun"));\r
784         coll = gp.getCollator();\r
785         locStr = coll.getLocale(ULocale.VALID_LOCALE).toString();\r
786         if (!locStr.equals("")) {\r
787             errln("FAIL: Collator locale is \"" + locStr + "\" Expected: \"\"(empty)");\r
788         }\r
789 \r
790         // Set locales - en_JP, fr, en_US, fr_FR\r
791         logln("Set locale - en_JP, fr, en_US, fr_FR");\r
792         ULocale[] locales = new ULocale[4];\r
793         locales[0] = new ULocale("en_JP");\r
794         locales[1] = new ULocale("fr");\r
795         locales[2] = new ULocale("en_US");\r
796         locales[3] = new ULocale("fr_FR");\r
797         gp.setLocales(locales);\r
798         coll = gp.getCollator();\r
799         locStr = coll.getLocale(ULocale.VALID_LOCALE).toString();\r
800         if (!locStr.equals("fr_FR")) {\r
801             errln("FAIL: Collator locale is " + locStr + " Expected: fr_FR");\r
802         }\r
803 \r
804         // Set explicit Collator\r
805         Collator coll1 = Collator.getInstance(new ULocale("it"));\r
806         coll1.setDecomposition(Collator.CANONICAL_DECOMPOSITION);\r
807         logln("Set collator for it in canonical deconposition mode");\r
808         gp.setCollator(coll1);\r
809         coll1.setStrength(Collator.IDENTICAL);\r
810         coll = gp.getCollator();\r
811         locStr = coll.getLocale(ULocale.VALID_LOCALE).toString();\r
812         if (!locStr.equals("it")) {\r
813             errln("FAIL: Collator locale is " + locStr + " Expected: it");\r
814         }\r
815         if (coll1.equals(coll)) {\r
816             errln("FAIL: setCollator must use a safe copy of a Collator");\r
817         }\r
818 \r
819         // Freeze\r
820         logln("Freeze this object");\r
821         boolean isFrozen = false;\r
822         gp.freeze();\r
823         try {\r
824             gp.setCollator(coll1);\r
825         } catch (UnsupportedOperationException uoe) {\r
826             logln("setCollator is blocked");\r
827             isFrozen = true;\r
828         }\r
829         if (!isFrozen) {\r
830             errln("FAIL: setCollator must be blocked after freeze");\r
831         }\r
832 \r
833         // Modifiable clone\r
834         logln("cloneAsThawed");\r
835         GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();\r
836         coll = gp1.getCollator();\r
837         locStr = coll.getLocale(ULocale.VALID_LOCALE).toString();\r
838         if (!locStr.equals("it")) {\r
839             errln("FAIL: Collator locale is " + locStr + " Expected: it");\r
840         }\r
841         if (coll.getDecomposition() != Collator.CANONICAL_DECOMPOSITION) {\r
842             errln("FAIL: Decomposition mode is not CANONICAL_DECOMPOSITION");\r
843         }\r
844 \r
845         // Set custom collator again\r
846         gp1.setCollator(coll1);\r
847         coll = gp1.getCollator();\r
848         if (coll.getStrength() != Collator.IDENTICAL) {\r
849             errln("FAIL: Strength is not IDENTICAL");\r
850         }\r
851     }\r
852 \r
853     public void TestBreakIterator() {\r
854         GlobalizationPreferences gp = new GlobalizationPreferences();\r
855 \r
856         // Unsupported break iterator locale - aar\r
857         logln("Set locale - aar");\r
858         gp.setLocale(new ULocale("aar"));\r
859         BreakIterator brk = gp.getBreakIterator(GlobalizationPreferences.BI_LINE);\r
860         String locStr = brk.getLocale(ULocale.VALID_LOCALE).toString();\r
861         if (!locStr.equals("root")) {\r
862             errln("FAIL: Line break iterator locale is " + locStr + " Expected: root");\r
863         }\r
864 \r
865         // Set locale - es\r
866         logln("Set locale - es");\r
867         gp.setLocale(new ULocale("es"));\r
868         brk = gp.getBreakIterator(GlobalizationPreferences.BI_CHARACTER);\r
869         /* TODO: JB#5383\r
870         locStr = brk.getLocale(ULocale.VALID_LOCALE).toString();\r
871         if (!locStr.equals("es")) {\r
872             errln("FAIL: Character break iterator locale is " + locStr + " Expected: es");\r
873         }\r
874         */\r
875 \r
876         // Set explicit break sentence iterator\r
877         logln("Set break iterator for sentence using locale hu_HU");\r
878         BreakIterator brk1 = BreakIterator.getSentenceInstance(new ULocale("hu_HU"));\r
879         gp.setBreakIterator(GlobalizationPreferences.BI_SENTENCE, brk1);\r
880 \r
881         brk = gp.getBreakIterator(GlobalizationPreferences.BI_SENTENCE);\r
882         /* TODO: JB#5210\r
883         locStr = brk.getLocale(ULocale.VALID_LOCALE).toString();\r
884         if (!locStr.equals("hu_HU")) {\r
885             errln("FAIL: Sentence break locale is " + locStr + " Expected: hu_HU");\r
886         }\r
887         */\r
888         brk.setText("This is a test case.  Is this a new instance?");\r
889         brk.next();\r
890         if (brk1.current() == brk.current()) {\r
891             errln("FAIL: getBreakIterator must return a new instance");\r
892         }\r
893 \r
894         // Illegal argument\r
895         logln("Get break iterator type 100");\r
896         boolean illegalArg = false;\r
897         try {\r
898             brk = gp.getBreakIterator(100);\r
899         } catch (IllegalArgumentException iae) {\r
900             logln("Break iterator type 100 is illegal");\r
901             illegalArg = true;\r
902         }\r
903         if (!illegalArg) {\r
904             errln("FAIL: getBreakIterator must throw IllegalArgumentException for type 100");\r
905         }\r
906         logln("Set break iterator type -1");\r
907         illegalArg = false;\r
908         try {\r
909             gp.setBreakIterator(-1, brk1);\r
910         } catch (IllegalArgumentException iae) {\r
911             logln("Break iterator type -1 is illegal");\r
912             illegalArg = true;\r
913         }\r
914         if (!illegalArg) {\r
915             errln("FAIL: getBreakIterator must throw IllegalArgumentException for type -1");\r
916         }\r
917 \r
918         // Freeze\r
919         logln("Freeze this object");\r
920         BreakIterator brk2 = BreakIterator.getTitleInstance(new ULocale("es_MX"));\r
921         boolean isFrozen = false;\r
922         gp.freeze();\r
923         try {\r
924             gp.setBreakIterator(GlobalizationPreferences.BI_TITLE, brk2);\r
925         } catch (UnsupportedOperationException uoe) {\r
926             logln("setBreakIterator is blocked");\r
927             isFrozen = true;\r
928         }\r
929         if (!isFrozen) {\r
930             errln("FAIL: setBreakIterator must be blocked after frozen");\r
931         }\r
932 \r
933         // Modifiable clone\r
934         logln("cloneAsThawed");\r
935         GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();\r
936         brk = gp1.getBreakIterator(GlobalizationPreferences.BI_WORD);\r
937         /* TODO: JB#5383\r
938         locStr = brk.getLocale(ULocale.VALID_LOCALE).toString();\r
939         if (!locStr.equals("es")) {\r
940             errln("FAIL: Word break iterator locale is " + locStr + " Expected: es");\r
941         }\r
942         */\r
943 \r
944         ULocale frFR = new ULocale("fr_FR");\r
945         BreakIterator brkC = BreakIterator.getCharacterInstance(frFR);\r
946         BreakIterator brkW = BreakIterator.getWordInstance(frFR);\r
947         BreakIterator brkL = BreakIterator.getLineInstance(frFR);\r
948         BreakIterator brkS = BreakIterator.getSentenceInstance(frFR);\r
949         BreakIterator brkT = BreakIterator.getTitleInstance(frFR);\r
950 \r
951         gp1.setBreakIterator(GlobalizationPreferences.BI_CHARACTER, brkC);\r
952         gp1.setBreakIterator(GlobalizationPreferences.BI_WORD, brkW);\r
953         gp1.setBreakIterator(GlobalizationPreferences.BI_LINE, brkL);\r
954         gp1.setBreakIterator(GlobalizationPreferences.BI_SENTENCE, brkS);\r
955         gp1.setBreakIterator(GlobalizationPreferences.BI_TITLE, brkT);\r
956 \r
957         /* TODO: JB#5210\r
958         locStr = brkC.getLocale(ULocale.VALID_LOCALE).toString();\r
959         if (!locStr.equals("ja_JP")) {\r
960             errln("FAIL: Character break iterator locale is " + locStr + " Expected: fr_FR");\r
961         }\r
962         locStr = brkW.getLocale(ULocale.VALID_LOCALE).toString();\r
963         if (!locStr.equals("ja_JP")) {\r
964             errln("FAIL: Word break iterator locale is " + locStr + " Expected: fr_FR");\r
965         }\r
966         locStr = brkL.getLocale(ULocale.VALID_LOCALE).toString();\r
967         if (!locStr.equals("ja_JP")) {\r
968             errln("FAIL: Line break iterator locale is " + locStr + " Expected: fr_FR");\r
969         }\r
970         locStr = brkS.getLocale(ULocale.VALID_LOCALE).toString();\r
971         if (!locStr.equals("ja_JP")) {\r
972             errln("FAIL: Sentence break iterator locale is " + locStr + " Expected: fr_FR");\r
973         }\r
974         locStr = brkT.getLocale(ULocale.VALID_LOCALE).toString();\r
975         if (!locStr.equals("ja_JP")) {\r
976             errln("FAIL: Title break iterator locale is " + locStr + " Expected: fr_FR");\r
977         }\r
978         */\r
979     }\r
980 \r
981     public void TestDisplayName() {\r
982         GlobalizationPreferences gp = new GlobalizationPreferences();\r
983 \r
984         ULocale loc_fr_FR_Paris = new ULocale("fr_FR_Paris");\r
985         ULocale loc_peo = new ULocale("peo");\r
986 \r
987         // Locale list - fr_FR_Paris\r
988         ArrayList locales1 = new ArrayList(1);\r
989         locales1.add(loc_fr_FR_Paris);\r
990 \r
991         // Locale list - ain, fr_FR_Paris\r
992         ArrayList locales2 = new ArrayList(2);\r
993         locales2.add(loc_peo);\r
994         locales2.add(loc_fr_FR_Paris);\r
995 \r
996         logln("Locales: <default> | <fr_FR_Paris> | <ain, fr_FR_Paris>");\r
997 \r
998         // ID_LOCALE\r
999         String id = "zh_Hant_HK";\r
1000         String name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_LOCALE);\r
1001         gp.setLocales(locales1);\r
1002         String name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_LOCALE);\r
1003         gp.setLocales(locales2);\r
1004         String name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_LOCALE);\r
1005 \r
1006         logln("Locale[zh_Hant_HK]: " + name1 + " | " + name2 + " | " + name3);\r
1007         if (name1.equals(name2) || !name2.equals(name3)) {\r
1008             errln("FAIL: Locale ID");\r
1009         }\r
1010 \r
1011         // ID_LANGUAGE\r
1012         gp.reset();\r
1013         id = "fr";\r
1014         name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_LANGUAGE);\r
1015         gp.setLocales(locales1);\r
1016         name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_LANGUAGE);\r
1017         gp.setLocales(locales2);\r
1018         name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_LANGUAGE);\r
1019 \r
1020         logln("Language[fr]: " + name1 + " | " + name2 + " | " + name3);\r
1021         if (name1.equals(name2) || !name2.equals(name3)) {\r
1022             errln("FAIL: Language ID");\r
1023         }\r
1024 \r
1025         // ID_SCRIPT\r
1026         gp.reset();\r
1027         id = "cyrl";\r
1028         name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_SCRIPT);\r
1029         gp.setLocales(locales1);\r
1030         name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_SCRIPT);\r
1031         gp.setLocales(locales2);\r
1032         name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_SCRIPT);\r
1033 \r
1034         logln("Script[cyrl]: " + name1 + " | " + name2 + " | " + name3);\r
1035         if (name1.equals(name2) || !name2.equals(name3)) {\r
1036             errln("FAIL: Script ID");\r
1037         }\r
1038 \r
1039         // ID_TERRITORY\r
1040         gp.reset();\r
1041         id = "JP";\r
1042         name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_TERRITORY);\r
1043         gp.setLocales(locales1);\r
1044         name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_TERRITORY);\r
1045         gp.setLocales(locales2);\r
1046         name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_TERRITORY);\r
1047 \r
1048         logln("Territory[JP]: " + name1 + " | " + name2 + " | " + name3);\r
1049         if (name1.equals(name2) || !name2.equals(name3)) {\r
1050             errln("FAIL: Territory ID");\r
1051         }\r
1052 \r
1053         // ID_VARIANT\r
1054         gp.reset();\r
1055         id = "NEDIS";\r
1056         name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_VARIANT);\r
1057         gp.setLocales(locales1);\r
1058         name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_VARIANT);\r
1059         gp.setLocales(locales2);\r
1060         name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_VARIANT);\r
1061 \r
1062         logln("Variant[NEDIS]: " + name1 + " | " + name2 + " | " + name3);\r
1063         if (name1.equals(name2) || !name2.equals(name3)) {\r
1064             errln("FAIL: Variant ID");\r
1065         }\r
1066 \r
1067         // ID_KEYWORD\r
1068         gp.reset();\r
1069         id = "collation";\r
1070         name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_KEYWORD);\r
1071         gp.setLocales(locales1);\r
1072         name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_KEYWORD);\r
1073         gp.setLocales(locales2);\r
1074         name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_KEYWORD);\r
1075 \r
1076         logln("Keyword[collation]: " + name1 + " | " + name2 + " | " + name3);\r
1077         if (name1.equals(name2) || !name2.equals(name3)) {\r
1078             errln("FAIL: Keyword ID");\r
1079         }\r
1080 \r
1081         // ID_KEYWORD_VALUE\r
1082         gp.reset();\r
1083         id = "collation=traditional";\r
1084         name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_KEYWORD_VALUE);\r
1085         gp.setLocales(locales1);\r
1086         name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_KEYWORD_VALUE);\r
1087         gp.setLocales(locales2);\r
1088         name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_KEYWORD_VALUE);\r
1089 \r
1090         logln("Keyword value[traditional]: " + name1 + " | " + name2 + " | " + name3);\r
1091         if (name1.equals(name2) || !name2.equals(name3)) {\r
1092             errln("FAIL: Keyword value ID");\r
1093         }\r
1094 \r
1095         // ID_CURRENCY_SYMBOL\r
1096         gp.reset();\r
1097         id = "USD";\r
1098         name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_CURRENCY_SYMBOL);\r
1099         gp.setLocales(locales1);\r
1100         name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_CURRENCY_SYMBOL);\r
1101         gp.setLocales(locales2);\r
1102         name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_CURRENCY_SYMBOL);\r
1103 \r
1104         logln("Currency symbol[USD]: " + name1 + " | " + name2 + " | " + name3);\r
1105         String dollar = "$";\r
1106         String us_dollar = "$US";\r
1107         if (!name1.equals(dollar) || !name2.equals(us_dollar) || !name3.equals(us_dollar)) {\r
1108             errln("FAIL: Currency symbol ID");\r
1109         }\r
1110 \r
1111         // ID_CURRENCY\r
1112         gp.reset();\r
1113         id = "USD";\r
1114         name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_CURRENCY);\r
1115         gp.setLocales(locales1);\r
1116         name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_CURRENCY);\r
1117         gp.setLocales(locales2);\r
1118         name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_CURRENCY);\r
1119 \r
1120         logln("Currency[USD]: " + name1 + " | " + name2 + " | " + name3);\r
1121         if (name1.equals(name2) || !name2.equals(name3)) {\r
1122             errln("FAIL: Currency ID");\r
1123         }\r
1124 \r
1125         // ID_TIMEZONE\r
1126         gp.reset();\r
1127         id = "Europe/Paris";\r
1128         name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_TIMEZONE);\r
1129         gp.setLocales(locales1);\r
1130         name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_TIMEZONE);\r
1131         gp.setLocales(locales2);\r
1132         name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_TIMEZONE);\r
1133 \r
1134         logln("Timezone[Europe/Paris]: " + name1 + " | " + name2 + " | " + name3);\r
1135         if (name1.equals(name2) || !name2.equals(name3)) {\r
1136             errln("FAIL: Timezone ID");\r
1137         }\r
1138 \r
1139         // Illegal ID\r
1140         gp.reset();\r
1141         boolean illegalArg = false;\r
1142         try {\r
1143             name1 = gp.getDisplayName(id, -1);\r
1144         } catch (IllegalArgumentException iae) {\r
1145             logln("Illegal type -1");\r
1146             illegalArg = true;\r
1147         }\r
1148         if (!illegalArg) {\r
1149             errln("FAIL: getDisplayName must throw IllegalArgumentException for type -1");\r
1150         }\r
1151 \r
1152         illegalArg = false;\r
1153         try {\r
1154             name1 = gp.getDisplayName(id, 100);\r
1155         } catch (IllegalArgumentException iae) {\r
1156             logln("Illegal type 100");\r
1157             illegalArg = true;\r
1158         }\r
1159         if (!illegalArg) {\r
1160             errln("FAIL: getDisplayName must throw IllegalArgumentException for type 100");\r
1161         }\r
1162     }\r
1163 \r
1164     public void TestDateFormat() {\r
1165         GlobalizationPreferences gp = new GlobalizationPreferences();\r
1166 \r
1167         String pattern;\r
1168         DateFormat df;\r
1169 \r
1170         // Set unsupported locale - ach\r
1171         logln("Set locale - ach");\r
1172         gp.setLocale(new ULocale("ach"));\r
1173 \r
1174         // Date - short\r
1175         df = gp.getDateFormat(GlobalizationPreferences.DF_SHORT, GlobalizationPreferences.DF_NONE);\r
1176         pattern = ((SimpleDateFormat)df).toPattern();\r
1177         // root pattern must be used\r
1178         if (!pattern.equals("yyyy-MM-dd")) {\r
1179             errln("FAIL: SHORT date pattern is " + pattern + " Expected: yyyy-MM-dd");\r
1180         }\r
1181 \r
1182         // Set locale - fr, fr_CA, fr_FR\r
1183         ArrayList lcls = new ArrayList(3);\r
1184         lcls.add(new ULocale("fr"));\r
1185         lcls.add(new ULocale("fr_CA"));\r
1186         lcls.add(new ULocale("fr_FR"));\r
1187         logln("Set locales - fr, fr_CA, fr_FR");\r
1188         gp.setLocales(lcls);\r
1189         // Date - short\r
1190         df = gp.getDateFormat(GlobalizationPreferences.DF_SHORT, GlobalizationPreferences.DF_NONE);\r
1191         pattern = ((SimpleDateFormat)df).toPattern();\r
1192         // fr_CA pattern must be used\r
1193         if (!pattern.equals("yy-MM-dd")) {\r
1194             errln("FAIL: SHORT date pattern is " + pattern + " Expected: yy-MM-dd");\r
1195         }\r
1196 \r
1197 \r
1198         // Set locale - en_GB\r
1199         logln("Set locale - en_GB");\r
1200         gp.setLocale(new ULocale("en_GB"));\r
1201         \r
1202         // Date - full\r
1203         df = gp.getDateFormat(GlobalizationPreferences.DF_FULL, GlobalizationPreferences.DF_NONE);\r
1204         pattern = ((SimpleDateFormat)df).toPattern();\r
1205         if (!pattern.equals("EEEE, d MMMM y")) {\r
1206             errln("FAIL: FULL date pattern is " + pattern + " Expected: EEEE, d MMMM y");\r
1207         }\r
1208 \r
1209         // Date - long\r
1210         df = gp.getDateFormat(GlobalizationPreferences.DF_LONG, GlobalizationPreferences.DF_NONE);\r
1211         pattern = ((SimpleDateFormat)df).toPattern();\r
1212         if (!pattern.equals("d MMMM y")) {\r
1213             errln("FAIL: LONG date pattern is " + pattern + " Expected: d MMMM y");\r
1214         }\r
1215 \r
1216         // Date - medium\r
1217         df = gp.getDateFormat(GlobalizationPreferences.DF_MEDIUM, GlobalizationPreferences.DF_NONE);\r
1218         pattern = ((SimpleDateFormat)df).toPattern();\r
1219         if (!pattern.equals("d MMM y")) {\r
1220             errln("FAIL: MEDIUM date pattern is " + pattern + " Expected: d MMM y");\r
1221         }\r
1222 \r
1223         // Date - short\r
1224         df = gp.getDateFormat(GlobalizationPreferences.DF_SHORT, GlobalizationPreferences.DF_NONE);\r
1225         pattern = ((SimpleDateFormat)df).toPattern();\r
1226         if (!pattern.equals("dd/MM/yyyy")) {\r
1227             errln("FAIL: SHORT date pattern is " + pattern + " Expected: dd/MM/yyyy");\r
1228         }\r
1229 \r
1230         // Time - full\r
1231         df = gp.getDateFormat(GlobalizationPreferences.DF_NONE, GlobalizationPreferences.DF_FULL);\r
1232         pattern = ((SimpleDateFormat)df).toPattern();\r
1233         if (!pattern.equals("HH:mm:ss zzzz")) {\r
1234             errln("FAIL: FULL time pattern is " + pattern + " Expected: HH:mm:ss zzzz");\r
1235         }\r
1236 \r
1237         // Time - long\r
1238         df = gp.getDateFormat(GlobalizationPreferences.DF_NONE, GlobalizationPreferences.DF_LONG);\r
1239         pattern = ((SimpleDateFormat)df).toPattern();\r
1240         if (!pattern.equals("HH:mm:ss z")) {\r
1241             errln("FAIL: LONG time pattern is " + pattern + " Expected: HH:mm:ss z");\r
1242         }\r
1243 \r
1244         // Time - medium\r
1245         df = gp.getDateFormat(GlobalizationPreferences.DF_NONE, GlobalizationPreferences.DF_MEDIUM);\r
1246         pattern = ((SimpleDateFormat)df).toPattern();\r
1247         if (!pattern.equals("HH:mm:ss")) {\r
1248             errln("FAIL: MEDIUM time pattern is " + pattern + " Expected: HH:mm:ss");\r
1249         }\r
1250 \r
1251         // Time - short\r
1252         df = gp.getDateFormat(GlobalizationPreferences.DF_NONE, GlobalizationPreferences.DF_SHORT);\r
1253         pattern = ((SimpleDateFormat)df).toPattern();\r
1254         if (!pattern.equals("HH:mm")) {\r
1255             errln("FAIL: SHORT time pattern is " + pattern + " Expected: HH:mm");\r
1256         }\r
1257 \r
1258         // Date/Time - full\r
1259         df = gp.getDateFormat(GlobalizationPreferences.DF_FULL, GlobalizationPreferences.DF_FULL);\r
1260         pattern = ((SimpleDateFormat)df).toPattern();\r
1261         if (!pattern.equals("EEEE, d MMMM y HH:mm:ss zzzz")) {\r
1262             errln("FAIL: FULL date/time pattern is " + pattern + " Expected: EEEE, d MMMM y HH:mm:ss zzzz");\r
1263         }\r
1264 \r
1265         // Invalid style\r
1266         boolean illegalArg = false;\r
1267         try {\r
1268             df = gp.getDateFormat(-1, GlobalizationPreferences.DF_NONE);\r
1269         } catch (IllegalArgumentException iae) {\r
1270             logln("Illegal date style -1");\r
1271             illegalArg = true;\r
1272         }\r
1273         if (!illegalArg) {\r
1274             errln("FAIL: getDateFormat() must throw IllegalArgumentException for dateStyle -1");\r
1275         }\r
1276 \r
1277         illegalArg = false;\r
1278         try {\r
1279             df = gp.getDateFormat(GlobalizationPreferences.DF_NONE, GlobalizationPreferences.DF_NONE);\r
1280         } catch (IllegalArgumentException iae) {\r
1281             logln("Illegal style - dateStyle:DF_NONE / timeStyle:DF_NONE");\r
1282             illegalArg = true;\r
1283         }\r
1284         if (!illegalArg) {\r
1285             errln("FAIL: getDateFormat() must throw IllegalArgumentException for dateStyle:DF_NONE/timeStyle:DF_NONE");\r
1286         }\r
1287 \r
1288         // Set explicit time zone\r
1289         logln("Set timezone - America/Sao_Paulo");\r
1290         TimeZone tz = TimeZone.getTimeZone("America/Sao_Paulo");\r
1291         gp.setTimeZone(tz);\r
1292         df = gp.getDateFormat(GlobalizationPreferences.DF_LONG, GlobalizationPreferences.DF_MEDIUM);\r
1293         String tzid = df.getTimeZone().getID();\r
1294         if (!tzid.equals("America/Sao_Paulo")) {\r
1295             errln("FAIL: The DateFormat instance must use timezone America/Sao_Paulo");\r
1296         }\r
1297 \r
1298         // Set explicit calendar\r
1299         logln("Set calendar - japanese");\r
1300         Calendar jcal = new JapaneseCalendar();\r
1301         jcal.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo"));\r
1302         gp.setCalendar(jcal);\r
1303         df = gp.getDateFormat(GlobalizationPreferences.DF_SHORT, GlobalizationPreferences.DF_SHORT);\r
1304         Calendar dfCal = df.getCalendar();\r
1305         if (!(dfCal instanceof JapaneseCalendar)) {\r
1306             errln("FAIL: The DateFormat instance must use Japanese calendar");\r
1307         }\r
1308         // TimeZone must be still America/Sao_Paulo\r
1309         tzid = df.getTimeZone().getID();\r
1310         if (!tzid.equals("America/Sao_Paulo")) {\r
1311             errln("FAIL: The DateFormat instance must use timezone America/Sao_Paulo");\r
1312         }\r
1313 \r
1314         // Set explicit DateFormat\r
1315         logln("Set explicit date format - full date");\r
1316         DateFormat customFD = DateFormat.getDateInstance(new IslamicCalendar(), DateFormat.FULL, new ULocale("ar_SA"));\r
1317         customFD.setTimeZone(TimeZone.getTimeZone("Asia/Riyadh"));\r
1318         gp.setDateFormat(GlobalizationPreferences.DF_FULL, GlobalizationPreferences.DF_NONE, customFD);\r
1319         df = gp.getDateFormat(GlobalizationPreferences.DF_FULL, GlobalizationPreferences.DF_NONE);\r
1320         dfCal = df.getCalendar();\r
1321         if (!(dfCal instanceof IslamicCalendar)) {\r
1322             errln("FAIL: The DateFormat instance must use Islamic calendar");\r
1323         }\r
1324         // TimeZone in the custom DateFormat is overridden by GP's timezone setting\r
1325         tzid = df.getTimeZone().getID();\r
1326         if (!tzid.equals("America/Sao_Paulo")) {\r
1327             errln("FAIL: The DateFormat instance must use timezone America/Sao_Paulo");\r
1328         }\r
1329 \r
1330         // Freeze\r
1331         logln("Freeze this object");\r
1332         gp.freeze();\r
1333         DateFormat customLD = DateFormat.getDateInstance(new BuddhistCalendar(), DateFormat.LONG, new ULocale("th"));\r
1334         customLD.setTimeZone(TimeZone.getTimeZone("Asia/Bangkok"));\r
1335         boolean isFrozen = false;\r
1336         try {\r
1337             gp.setDateFormat(GlobalizationPreferences.DF_LONG, GlobalizationPreferences.DF_NONE, customLD);\r
1338         } catch (UnsupportedOperationException uoe) {\r
1339             logln("setDateFormat is blocked");\r
1340             isFrozen = true;\r
1341         }\r
1342         if (!isFrozen) {\r
1343             errln("FAIL: setDateFormat must be blocked after frozen");\r
1344         }\r
1345 \r
1346         // Modifiable clone\r
1347         logln("cloneAsThawed");\r
1348         GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();\r
1349         gp1.setDateFormat(GlobalizationPreferences.DF_LONG, GlobalizationPreferences.DF_NONE, customLD);\r
1350         \r
1351         df = gp1.getDateFormat(GlobalizationPreferences.DF_SHORT, GlobalizationPreferences.DF_SHORT);\r
1352         dfCal = df.getCalendar();\r
1353         if (!(dfCal instanceof JapaneseCalendar)) {\r
1354             errln("FAIL: The DateFormat instance must use Japanese calendar");\r
1355         }\r
1356         // TimeZone must be still America/Sao_Paulo\r
1357         tzid = df.getTimeZone().getID();\r
1358         if (!tzid.equals("America/Sao_Paulo")) {\r
1359             errln("FAIL: The DateFormat instance must use timezone America/Sao_Paulo");\r
1360         }\r
1361 \r
1362         df = gp1.getDateFormat(GlobalizationPreferences.DF_LONG, GlobalizationPreferences.DF_NONE);\r
1363         dfCal = df.getCalendar();\r
1364         if (!(dfCal instanceof BuddhistCalendar)) {\r
1365             errln("FAIL: The DateFormat instance must use Buddhist calendar");\r
1366         }\r
1367         // TimeZone must be still America/Sao_Paulo\r
1368         tzid = df.getTimeZone().getID();\r
1369         if (!tzid.equals("America/Sao_Paulo")) {\r
1370             errln("FAIL: The DateFormat instance must use timezone America/Sao_Paulo");\r
1371         }\r
1372 \r
1373     }\r
1374 \r
1375     public void TestNumberFormat() {\r
1376         GlobalizationPreferences gp = new GlobalizationPreferences();\r
1377 \r
1378         NumberFormat nf;\r
1379         String numStr;\r
1380         double num = 123456.789;\r
1381 \r
1382         // Set unsupported locale with supported territory ang_KR\r
1383         logln("Set locale - ang_KR");\r
1384         gp.setLocale(new ULocale("ang_KR"));\r
1385         nf = gp.getNumberFormat(GlobalizationPreferences.NF_CURRENCY);\r
1386         numStr = nf.format(num);\r
1387         if (!numStr.equals("\u20a9\u00a0123,457")) {\r
1388             errln("FAIL: Number string is " + numStr + " Expected: \u20a9\u00a0123,457");\r
1389         }\r
1390         \r
1391         // Set locale - de_DE\r
1392         logln("Set locale - de_DE");\r
1393         gp.setLocale(new ULocale("de_DE"));\r
1394 \r
1395         // NF_NUMBER\r
1396         logln("NUMBER type");\r
1397         nf = gp.getNumberFormat(GlobalizationPreferences.NF_NUMBER);\r
1398         numStr = nf.format(num);\r
1399         if (!numStr.equals("123.456,789")) {\r
1400             errln("FAIL: Number string is " + numStr + " Expected: 123.456,789");\r
1401         }\r
1402 \r
1403         // NF_CURRENCY\r
1404         logln("CURRENCY type");\r
1405         nf = gp.getNumberFormat(GlobalizationPreferences.NF_CURRENCY);\r
1406         numStr = nf.format(num);\r
1407         if (!numStr.equals("123.456,79\u00a0\u20AC")) {\r
1408             errln("FAIL: Number string is " + numStr + " Expected: 123.456,79\u00a0\u20AC");\r
1409         }\r
1410 \r
1411         // NF_PERCENT\r
1412         logln("PERCENT type");\r
1413         nf = gp.getNumberFormat(GlobalizationPreferences.NF_PERCENT);\r
1414         numStr = nf.format(num);\r
1415         if (!numStr.equals("12.345.679\u00a0%")) {\r
1416             errln("FAIL: Number string is " + numStr + " Expected: 12.345.679\u00a0%");\r
1417         }\r
1418 \r
1419         // NF_SCIENTIFIC\r
1420         logln("SCIENTIFIC type");\r
1421         nf = gp.getNumberFormat(GlobalizationPreferences.NF_SCIENTIFIC);\r
1422         numStr = nf.format(num);\r
1423         if (!numStr.equals("1,23456789E5")) {\r
1424             errln("FAIL: Number string is " + numStr + " Expected: 1,23456789E5");\r
1425         }\r
1426 \r
1427         // NF_INTEGER\r
1428         logln("INTEGER type");\r
1429         nf = gp.getNumberFormat(GlobalizationPreferences.NF_INTEGER);\r
1430         numStr = nf.format(num);\r
1431         if (!numStr.equals("123.457")) {\r
1432             errln("FAIL: Number string is " + numStr + " Expected: 123.457");\r
1433         }\r
1434 \r
1435         // Invalid number type\r
1436         logln("INVALID type");\r
1437         boolean illegalArg = false;\r
1438         try {\r
1439             nf = gp.getNumberFormat(100);\r
1440         } catch (IllegalArgumentException iae) {\r
1441             logln("Illegal number format type 100");\r
1442             illegalArg = true;\r
1443         }\r
1444         if (!illegalArg) {\r
1445             errln("FAIL: getNumberFormat must throw IllegalArgumentException for type 100");\r
1446         }\r
1447         illegalArg = false;\r
1448         try {\r
1449             nf = gp.getNumberFormat(-1);\r
1450         } catch (IllegalArgumentException iae) {\r
1451             logln("Illegal number format type -1");\r
1452             illegalArg = true;\r
1453         }\r
1454         if (!illegalArg) {\r
1455             errln("FAIL: getNumberFormat must throw IllegalArgumentException for type -1");\r
1456         }\r
1457         \r
1458         // Set explicit territory\r
1459         logln("Set territory - US");\r
1460         gp.setTerritory("US");\r
1461         nf = gp.getNumberFormat(GlobalizationPreferences.NF_CURRENCY);\r
1462         numStr = nf.format(num);\r
1463         if (!numStr.equals("123.456,79\u00a0$")) {\r
1464             errln("FAIL: Number string is " + numStr + " Expected: 123.456,79\u00a0$");\r
1465         }\r
1466 \r
1467         // Set explicit currency\r
1468         logln("Set currency - GBP");\r
1469         gp.setCurrency(Currency.getInstance("GBP"));\r
1470         nf = gp.getNumberFormat(GlobalizationPreferences.NF_CURRENCY);\r
1471         numStr = nf.format(num);\r
1472         if (!numStr.equals("123.456,79\u00a0\u00A3")) {\r
1473             errln("FAIL: Number string is " + numStr + " Expected: 123.456,79\u00a0\u00A3");\r
1474         }\r
1475 \r
1476         // Set exliplicit NumberFormat\r
1477         logln("Set explicit NumberFormat objects");\r
1478         NumberFormat customNum = NumberFormat.getNumberInstance(new ULocale("he_IL"));\r
1479         gp.setNumberFormat(GlobalizationPreferences.NF_NUMBER, customNum);\r
1480         NumberFormat customCur = NumberFormat.getCurrencyInstance(new ULocale("zh_CN"));\r
1481         gp.setNumberFormat(GlobalizationPreferences.NF_CURRENCY, customCur);\r
1482         NumberFormat customPct = NumberFormat.getPercentInstance(new ULocale("el_GR"));\r
1483         gp.setNumberFormat(GlobalizationPreferences.NF_PERCENT, customPct);\r
1484         NumberFormat customSci = NumberFormat.getScientificInstance(new ULocale("ru_RU"));\r
1485         gp.setNumberFormat(GlobalizationPreferences.NF_SCIENTIFIC, customSci);\r
1486         NumberFormat customInt = NumberFormat.getIntegerInstance(new ULocale("pt_PT"));\r
1487         gp.setNumberFormat(GlobalizationPreferences.NF_INTEGER, customInt);\r
1488 \r
1489         \r
1490         nf = gp.getNumberFormat(GlobalizationPreferences.NF_NUMBER);\r
1491         if (!nf.getLocale(ULocale.VALID_LOCALE).toString().equals("he_IL")) {\r
1492             errln("FAIL: The NumberFormat instance must use locale he_IL");\r
1493         }\r
1494         nf = gp.getNumberFormat(GlobalizationPreferences.NF_CURRENCY);\r
1495         if (!nf.getLocale(ULocale.VALID_LOCALE).toString().equals("zh_CN")) {\r
1496             errln("FAIL: The NumberFormat instance must use locale zh_CN");\r
1497         }\r
1498         nf = gp.getNumberFormat(GlobalizationPreferences.NF_PERCENT);\r
1499         if (!nf.getLocale(ULocale.VALID_LOCALE).toString().equals("el_GR")) {\r
1500             errln("FAIL: The NumberFormat instance must use locale el_GR");\r
1501         }\r
1502         nf = gp.getNumberFormat(GlobalizationPreferences.NF_SCIENTIFIC);\r
1503         if (!nf.getLocale(ULocale.VALID_LOCALE).toString().equals("ru_RU")) {\r
1504             errln("FAIL: The NumberFormat instance must use locale ru_RU");\r
1505         }\r
1506         nf = gp.getNumberFormat(GlobalizationPreferences.NF_INTEGER);\r
1507         if (!nf.getLocale(ULocale.VALID_LOCALE).toString().equals("pt_PT")) {\r
1508             errln("FAIL: The NumberFormat instance must use locale pt_PT");\r
1509         }\r
1510 \r
1511         NumberFormat customNum1 = NumberFormat.getNumberInstance(new ULocale("hi_IN"));\r
1512 \r
1513         // Freeze\r
1514         logln("Freeze this object");\r
1515         boolean isFrozen = false;\r
1516         gp.freeze();\r
1517         try {\r
1518             gp.setNumberFormat(GlobalizationPreferences.NF_NUMBER, customNum1);\r
1519         } catch (UnsupportedOperationException uoe) {\r
1520             logln("setNumberFormat is blocked");\r
1521             isFrozen = true;\r
1522         }\r
1523         if (!isFrozen) {\r
1524             errln("FAIL: setNumberFormat must be blocked after frozen");\r
1525         }\r
1526 \r
1527         // Create a modifiable clone\r
1528         GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();\r
1529 \r
1530         // Number type format's locale is still he_IL\r
1531         nf = gp1.getNumberFormat(GlobalizationPreferences.NF_NUMBER);\r
1532         if (!nf.getLocale(ULocale.VALID_LOCALE).toString().equals("he_IL")) {\r
1533             errln("FAIL: The NumberFormat instance must use locale he_IL");\r
1534         }\r
1535 \r
1536         logln("Set custom number format using locale hi_IN");\r
1537         gp1.setNumberFormat(GlobalizationPreferences.NF_NUMBER, customNum1);\r
1538         nf = gp1.getNumberFormat(GlobalizationPreferences.NF_NUMBER);\r
1539         if (!nf.getLocale(ULocale.VALID_LOCALE).toString().equals("hi_IN")) {\r
1540             errln("FAIL: The NumberFormat instance must use locale hi_IN");\r
1541         }\r
1542     }\r
1543 \r
1544     /*\r
1545      * JB#5380 GlobalizationPreferences#getCalendar() should return a Calendar object\r
1546      * initialized with the current time\r
1547      */\r
1548     public void TestJB5380() {\r
1549         GlobalizationPreferences gp = new GlobalizationPreferences();\r
1550         GregorianCalendar gcal = new GregorianCalendar();\r
1551 \r
1552         // set way old date\r
1553         gcal.set(Calendar.YEAR, 1950);\r
1554 \r
1555         // set calendar to GP\r
1556         gp.setCalendar(gcal);\r
1557 \r
1558         Calendar cal = gp.getCalendar();\r
1559         // Calendar instance returned from GP should be initialized\r
1560         // by the current time\r
1561         long timeDiff = System.currentTimeMillis() - cal.getTimeInMillis();\r
1562         if (Math.abs(timeDiff) > 1000) {\r
1563             // if difference is more than 1 second..\r
1564             errln("FAIL: The Calendar was not initialized by current time - difference:" + timeDiff);\r
1565         }\r
1566     }\r
1567 }\r