]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleMatcherTest.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / main / tests / core / src / com / ibm / icu / dev / test / util / LocaleMatcherTest.java
1 /*\r
2  ******************************************************************************************\r
3  * Copyright (C) 2009-2010, Google, Inc.; 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.util;\r
9 \r
10 import com.ibm.icu.dev.test.TestFmwk;\r
11 import com.ibm.icu.util.LocaleMatcher;\r
12 import com.ibm.icu.util.LocalePriorityList;\r
13 import com.ibm.icu.util.ULocale;\r
14 \r
15 /**\r
16  * Test the LanguageMatcher.\r
17  * \r
18  * @author markdavis\r
19  */\r
20 public class LocaleMatcherTest extends TestFmwk {\r
21     \r
22     public static void main(String[] args) throws Exception {\r
23         new LocaleMatcherTest().run(args);\r
24       }\r
25 \r
26   public void testBasics() {\r
27     final LocaleMatcher matcher = new LocaleMatcher(LocalePriorityList\r
28         .add(ULocale.FRENCH).add(ULocale.UK)\r
29         .add(ULocale.ENGLISH).build());\r
30     logln(matcher.toString());\r
31 \r
32     assertEquals(ULocale.UK, matcher.getBestMatch(ULocale.UK));\r
33     assertEquals(ULocale.ENGLISH, matcher.getBestMatch(ULocale.US));\r
34     assertEquals(ULocale.FRENCH, matcher.getBestMatch(ULocale.FRANCE));\r
35     assertEquals(ULocale.FRENCH, matcher.getBestMatch(ULocale.JAPAN));\r
36   }\r
37 \r
38   public void testFallback() {\r
39     // check that script fallbacks are handled right\r
40     final LocaleMatcher matcher = new LocaleMatcher("zh_CN, zh_TW, iw");\r
41     assertEquals(new ULocale("zh_TW"), matcher.getBestMatch("zh_Hant"));\r
42     assertEquals(new ULocale("zh_CN"), matcher.getBestMatch("zh"));\r
43     assertEquals(new ULocale("zh_CN"), matcher.getBestMatch("zh_Hans_CN"));\r
44     assertEquals(new ULocale("zh_TW"), matcher.getBestMatch("zh_Hant_HK"));\r
45     assertEquals(new ULocale("he"), matcher.getBestMatch("iw_IT"));\r
46   }\r
47 \r
48   public void testSpecials() {\r
49     // check that nearby languages are handled\r
50     final LocaleMatcher matcher = new LocaleMatcher("en, fil, ro, nn");\r
51     assertEquals(new ULocale("fil"), matcher.getBestMatch("tl"));\r
52     assertEquals(new ULocale("ro"), matcher.getBestMatch("mo"));\r
53     assertEquals(new ULocale("nn"), matcher.getBestMatch("nb"));\r
54     // make sure default works\r
55     assertEquals(new ULocale("en"), matcher.getBestMatch("ja"));\r
56   }\r
57 \r
58   public void testRegionalSpecials() {\r
59     // verify that en_AU is closer to en_GB than to en (which is en_US)\r
60     final LocaleMatcher matcher = new LocaleMatcher("en, en_GB, es, es_419");\r
61     assertEquals("en_AU in {en, en_GB, es, es_419}", new ULocale("en_GB"), matcher.getBestMatch("en_AU"));\r
62     assertEquals("es_MX in {en, en_GB, es, es_419}", new ULocale("es_419"), matcher.getBestMatch("es_MX"));\r
63     assertEquals("es_ES in {en, en_GB, es, es_419}", new ULocale("es"), matcher.getBestMatch("es_ES"));\r
64   }\r
65   \r
66   private void assertEquals(Object expected, Object string) {\r
67       assertEquals("", expected, string);\r
68   }\r
69 \r
70 }\r