1/*
2 * Copyright (C) 2014 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.providers.contacts;
18
19import android.test.suitebuilder.annotation.SmallTest;
20import java.util.Locale;
21import junit.framework.TestCase;
22
23@SmallTest
24public class LocaleSetTest extends TestCase {
25    public void testPrimaryLocale() {
26        final Locale previousDefault = Locale.getDefault();
27        try {
28            assertEquals(Locale.CANADA, LocaleSet.newForTest(Locale.CANADA).getPrimaryLocale());
29            assertEquals(Locale.GERMAN, LocaleSet.newForTest(Locale.GERMAN).getPrimaryLocale());
30            assertEquals(Locale.GERMAN, LocaleSet.newForTest(Locale.GERMAN, Locale.CANADA)
31                    .getPrimaryLocale());
32
33            assertEquals(Locale.getDefault(), LocaleSet.newDefault().getPrimaryLocale());
34
35            Locale.setDefault(Locale.JAPANESE);
36
37            assertEquals(Locale.JAPANESE, LocaleSet.newDefault().getPrimaryLocale());
38        } finally {
39            Locale.setDefault(previousDefault);
40        }
41    }
42
43    public void testIsLanguageChinese() {
44        assertTrue(LocaleSet.isLanguageChinese(Locale.CHINESE));
45        assertTrue(LocaleSet.isLanguageChinese(Locale.TRADITIONAL_CHINESE));
46        assertTrue(LocaleSet.isLanguageChinese(Locale.SIMPLIFIED_CHINESE));
47
48        assertFalse(LocaleSet.isLanguageChinese(Locale.JAPANESE));
49        assertFalse(LocaleSet.isLanguageChinese(Locale.ENGLISH));
50    }
51
52    public void testGetScriptIfChinese() {
53        assertEquals("Hans", LocaleSet.getScriptIfChinese(Locale.forLanguageTag("zh")));
54        assertEquals("Hans", LocaleSet.getScriptIfChinese(Locale.forLanguageTag("zh-SG")));
55
56        assertEquals("Hant", LocaleSet.getScriptIfChinese(Locale.forLanguageTag("zh-TW")));
57        assertEquals("Hant", LocaleSet.getScriptIfChinese(Locale.forLanguageTag("zh-HK")));
58
59        assertEquals(null, LocaleSet.getScriptIfChinese(Locale.ENGLISH));
60        assertEquals(null, LocaleSet.getScriptIfChinese(Locale.forLanguageTag("ja")));
61        assertEquals(null, LocaleSet.getScriptIfChinese(Locale.forLanguageTag("ja-JP")));
62    }
63
64    public void testIsLocaleSimplifiedChinese() {
65        assertTrue(LocaleSet.isLocaleSimplifiedChinese(Locale.SIMPLIFIED_CHINESE));
66        assertTrue(LocaleSet.isLocaleSimplifiedChinese(Locale.forLanguageTag("zh-SG")));
67
68        assertFalse(LocaleSet.isLocaleSimplifiedChinese(Locale.TRADITIONAL_CHINESE));
69        assertFalse(LocaleSet.isLocaleTraditionalChinese(Locale.CHINESE));
70        assertFalse(LocaleSet.isLocaleSimplifiedChinese(Locale.JAPANESE));
71        assertFalse(LocaleSet.isLocaleSimplifiedChinese(Locale.JAPAN));
72        assertFalse(LocaleSet.isLocaleSimplifiedChinese(Locale.KOREA));
73        assertFalse(LocaleSet.isLocaleSimplifiedChinese(Locale.KOREAN));
74        assertFalse(LocaleSet.isLocaleSimplifiedChinese(Locale.ENGLISH));
75    }
76
77    public void testIsLocaleTraditionalChinese() {
78        assertTrue(LocaleSet.isLocaleTraditionalChinese(Locale.TRADITIONAL_CHINESE));
79        assertTrue(LocaleSet.isLocaleTraditionalChinese(Locale.forLanguageTag("zh-TW")));
80
81        assertFalse(LocaleSet.isLocaleTraditionalChinese(Locale.SIMPLIFIED_CHINESE));
82        assertFalse(LocaleSet.isLocaleTraditionalChinese(Locale.CHINESE));
83        assertFalse(LocaleSet.isLocaleTraditionalChinese(Locale.JAPANESE));
84        assertFalse(LocaleSet.isLocaleTraditionalChinese(Locale.JAPAN));
85        assertFalse(LocaleSet.isLocaleTraditionalChinese(Locale.KOREA));
86        assertFalse(LocaleSet.isLocaleTraditionalChinese(Locale.KOREAN));
87        assertFalse(LocaleSet.isLocaleTraditionalChinese(Locale.ENGLISH));
88    }
89
90    public void testIsLanguageJapanese() {
91        assertTrue(LocaleSet.isLanguageJapanese(Locale.JAPANESE));
92        assertTrue(LocaleSet.isLanguageJapanese(Locale.JAPAN));
93
94        assertFalse(LocaleSet.isLanguageJapanese(Locale.TRADITIONAL_CHINESE));
95        assertFalse(LocaleSet.isLanguageJapanese(Locale.SIMPLIFIED_CHINESE));
96        assertFalse(LocaleSet.isLanguageJapanese(Locale.ENGLISH));
97    }
98
99    public void testIsLanguageKorean() {
100        assertTrue(LocaleSet.isLanguageKorean(Locale.KOREAN));
101        assertTrue(LocaleSet.isLanguageKorean(Locale.KOREA));
102
103        assertFalse(LocaleSet.isLanguageKorean(Locale.TRADITIONAL_CHINESE));
104        assertFalse(LocaleSet.isLanguageKorean(Locale.SIMPLIFIED_CHINESE));
105        assertFalse(LocaleSet.isLanguageKorean(Locale.JAPANESE));
106        assertFalse(LocaleSet.isLanguageKorean(Locale.JAPAN));
107        assertFalse(LocaleSet.isLanguageKorean(Locale.ENGLISH));
108    }
109
110    public void testIsLocaleCJK() {
111        assertTrue(LocaleSet.isLocaleCJK(Locale.TRADITIONAL_CHINESE));
112        assertTrue(LocaleSet.isLocaleCJK(Locale.SIMPLIFIED_CHINESE));
113        assertTrue(LocaleSet.isLocaleCJK(Locale.JAPANESE));
114        assertTrue(LocaleSet.isLocaleCJK(Locale.JAPAN));
115        assertTrue(LocaleSet.isLocaleCJK(Locale.KOREA));
116        assertTrue(LocaleSet.isLocaleCJK(Locale.KOREAN));
117
118        assertFalse(LocaleSet.isLocaleCJK(Locale.ENGLISH));
119    }
120
121    public void testShouldPreferJapanese() {
122        assertFalse(LocaleSet.newForTest(Locale.ENGLISH)
123                .shouldPreferJapanese());
124
125        assertTrue(LocaleSet.newForTest(Locale.JAPAN)
126                .shouldPreferJapanese());
127        assertTrue(LocaleSet.newForTest(Locale.ENGLISH, Locale.KOREAN, Locale.JAPAN)
128                .shouldPreferJapanese());
129        assertTrue(LocaleSet.newForTest(Locale.JAPAN, Locale.TRADITIONAL_CHINESE)
130                .shouldPreferJapanese());
131        assertTrue(LocaleSet.newForTest(Locale.JAPAN, Locale.SIMPLIFIED_CHINESE)
132                .shouldPreferJapanese());
133        assertFalse(LocaleSet.newForTest(Locale.TRADITIONAL_CHINESE, Locale.JAPAN)
134                .shouldPreferJapanese());
135
136        // Simplified Chinese wins.
137        assertFalse(LocaleSet.newForTest(Locale.SIMPLIFIED_CHINESE, Locale.JAPAN)
138                .shouldPreferJapanese());
139        assertFalse(LocaleSet.newForTest(Locale.ENGLISH, Locale.SIMPLIFIED_CHINESE, Locale.JAPAN)
140                .shouldPreferJapanese());
141    }
142
143    public void testShouldPreferSimplifiedChinese() {
144        assertFalse(LocaleSet.newForTest(Locale.ENGLISH)
145                .shouldPreferSimplifiedChinese());
146        assertFalse(LocaleSet.newForTest(Locale.TRADITIONAL_CHINESE)
147                .shouldPreferSimplifiedChinese());
148
149        assertTrue(LocaleSet.newForTest(Locale.SIMPLIFIED_CHINESE)
150                .shouldPreferSimplifiedChinese());
151        assertTrue(LocaleSet.newForTest(Locale.ENGLISH, Locale.KOREAN, Locale.SIMPLIFIED_CHINESE)
152                .shouldPreferSimplifiedChinese());
153        assertTrue(LocaleSet.newForTest(Locale.SIMPLIFIED_CHINESE, Locale.JAPANESE)
154                .shouldPreferSimplifiedChinese());
155        assertTrue(LocaleSet.newForTest(Locale.SIMPLIFIED_CHINESE, Locale.TRADITIONAL_CHINESE)
156                .shouldPreferSimplifiedChinese());
157
158        // Simplified Chinese wins.
159        assertFalse(LocaleSet.newForTest(Locale.JAPAN, Locale.SIMPLIFIED_CHINESE)
160                .shouldPreferSimplifiedChinese());
161        assertFalse(LocaleSet.newForTest(Locale.TRADITIONAL_CHINESE, Locale.SIMPLIFIED_CHINESE)
162                .shouldPreferSimplifiedChinese());
163    }
164}
165