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