[go: nahoru, domu]

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