12b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader/* 22b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader * Copyright (C) 2015 The Android Open Source Project 32b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader * 42b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader * Licensed under the Apache License, Version 2.0 (the "License"); 52b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader * you may not use this file except in compliance with the License. 62b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader * You may obtain a copy of the License at 72b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader * 82b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader * http://www.apache.org/licenses/LICENSE-2.0 92b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader * 102b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader * Unless required by applicable law or agreed to in writing, software 112b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader * distributed under the License is distributed on an "AS IS" BASIS, 122b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader * See the License for the specific language governing permissions and 142b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader * limitations under the License. 152b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader */ 1623cbe85610f780134cc77dd4a54732a22ed6e86eYohei Yukawapackage android.os; 172b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader 182b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournaderimport android.test.suitebuilder.annotation.SmallTest; 192b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader 202b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournaderimport java.util.Locale; 212b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader 222b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournaderimport junit.framework.TestCase; 232b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader 242b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournaderpublic class LocaleListTest extends TestCase { 252b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader @SmallTest 262b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader public void testConstructor() throws Exception { 272b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader LocaleList ll; 282b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader ll = new LocaleList(Locale.forLanguageTag("fr"), null); 292b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader assertEquals("fr", ll.toLanguageTags()); 302b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader 312b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader ll = new LocaleList(Locale.forLanguageTag("fr"), LocaleList.getEmptyLocaleList()); 322b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader assertEquals("fr", ll.toLanguageTags()); 332b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader 342b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader ll = new LocaleList(Locale.forLanguageTag("fr"), LocaleList.forLanguageTags("fr")); 352b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader assertEquals("fr", ll.toLanguageTags()); 362b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader 372b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader ll = new LocaleList(Locale.forLanguageTag("fr"), LocaleList.forLanguageTags("de")); 382b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader assertEquals("fr,de", ll.toLanguageTags()); 392b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader 402b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader ll = new LocaleList(Locale.forLanguageTag("fr"), LocaleList.forLanguageTags("de,ja")); 412b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader assertEquals("fr,de,ja", ll.toLanguageTags()); 422b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader 432b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader ll = new LocaleList(Locale.forLanguageTag("fr"), LocaleList.forLanguageTags("de,fr,ja")); 442b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader assertEquals("fr,de,ja", ll.toLanguageTags()); 452b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader 462b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader ll = new LocaleList(Locale.forLanguageTag("fr"), LocaleList.forLanguageTags("de,fr")); 472b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader assertEquals("fr,de", ll.toLanguageTags()); 482b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader 492b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader ll = new LocaleList(Locale.forLanguageTag("fr"), LocaleList.forLanguageTags("fr,de")); 502b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader assertEquals("fr,de", ll.toLanguageTags()); 512b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader } 522b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader 532b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader @SmallTest 542b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader public void testConstructor_nullThrows() throws Exception { 552b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader try { 562b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader final LocaleList ll = new LocaleList(null, LocaleList.getEmptyLocaleList()); 572b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader fail("Constructing with locale and locale list should throw with a null locale."); 582b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader } catch (Throwable e) { 592b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader assertEquals(NullPointerException.class, e.getClass()); 602b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader } 612b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader } 622b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader 632b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader @SmallTest 642b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader public void testGetDefault_localeSetDefaultCalledButNoChangeNecessary() throws Exception { 652b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader final Locale originalLocale = Locale.getDefault(); 662b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader final LocaleList originalLocaleList = LocaleList.getDefault(); 672b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader final int originalLocaleIndex = originalLocaleList.indexOf(originalLocale); 682b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader 692b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader // This simulates a situation potentially set by the system processes 702b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader LocaleList.setDefault(LocaleList.forLanguageTags("ae,en,ja"), 1 /* en */); 712b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader 722b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader // check our assumptions about input 732b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader assertEquals("en", Locale.getDefault().toLanguageTag()); 742b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader final LocaleList firstResult = LocaleList.getDefault(); 752b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader assertEquals("ae,en,ja", LocaleList.getDefault().toLanguageTags()); 762b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader 772b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader Locale.setDefault(Locale.forLanguageTag("ae")); 782b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader assertSame(firstResult, LocaleList.getDefault()); 792b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader 802b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader // restore the original values 812b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader LocaleList.setDefault(originalLocaleList, originalLocaleIndex); 822b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader } 832b5ab1829476d839c24b06efaa92a6460bef3286Roozbeh Pournader} 84