| /* |
| * Copyright (C) 2006 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package android.content.res.cts; |
| |
| import java.util.Locale; |
| |
| import android.content.pm.ActivityInfo; |
| import android.content.res.Configuration; |
| import android.os.LocaleList; |
| import android.os.Parcel; |
| import android.test.AndroidTestCase; |
| import android.view.View; |
| |
| public class ConfigurationTest extends AndroidTestCase { |
| |
| private Configuration mConfigDefault; |
| private Configuration mConfig; |
| |
| @Override |
| protected void setUp() throws Exception { |
| super.setUp(); |
| mConfigDefault = new Configuration(); |
| makeConfiguration(); |
| } |
| |
| private void makeConfiguration() { |
| mConfig = new Configuration(); |
| mConfig.fontScale = 2; |
| mConfig.mcc = mConfig.mnc = 1; |
| mConfig.setLocale(Locale.getDefault()); |
| mConfig.touchscreen = Configuration.TOUCHSCREEN_NOTOUCH; |
| mConfig.keyboard = Configuration.KEYBOARD_NOKEYS; |
| mConfig.keyboardHidden = Configuration.KEYBOARDHIDDEN_NO; |
| mConfig.navigation = Configuration.NAVIGATION_NONAV; |
| mConfig.orientation = Configuration.ORIENTATION_PORTRAIT; |
| } |
| |
| public void testConstructor() { |
| new Configuration(); |
| new Configuration(mConfigDefault); |
| } |
| |
| public void testCompareTo() { |
| final Configuration cfg1 = new Configuration(); |
| final Configuration cfg2 = new Configuration(); |
| assertEquals(0, cfg1.compareTo(cfg2)); |
| |
| cfg1.orientation = 2; |
| cfg2.orientation = 3; |
| assertEquals(-1, cfg1.compareTo(cfg2)); |
| cfg1.orientation = 3; |
| cfg2.orientation = 2; |
| assertEquals(1, cfg1.compareTo(cfg2)); |
| |
| cfg1.navigation = 2; |
| cfg2.navigation = 3; |
| assertEquals(-1, cfg1.compareTo(cfg2)); |
| cfg1.navigation = 3; |
| cfg2.navigation = 2; |
| assertEquals(1, cfg1.compareTo(cfg2)); |
| |
| cfg1.keyboardHidden = 2; |
| cfg2.keyboardHidden = 3; |
| assertEquals(-1, cfg1.compareTo(cfg2)); |
| cfg1.keyboardHidden = 3; |
| cfg2.keyboardHidden = 2; |
| assertEquals(1, cfg1.compareTo(cfg2)); |
| |
| cfg1.keyboard = 2; |
| cfg2.keyboard = 3; |
| assertEquals(-1, cfg1.compareTo(cfg2)); |
| cfg1.keyboard = 3; |
| cfg2.keyboard = 2; |
| assertEquals(1, cfg1.compareTo(cfg2)); |
| |
| cfg1.touchscreen = 2; |
| cfg2.touchscreen = 3; |
| assertEquals(-1, cfg1.compareTo(cfg2)); |
| cfg1.touchscreen = 3; |
| cfg2.touchscreen = 2; |
| assertEquals(1, cfg1.compareTo(cfg2)); |
| |
| cfg1.setLocales(LocaleList.forLanguageTags("fr")); |
| cfg2.setLocales(LocaleList.forLanguageTags("fr,en")); |
| assertTrue(cfg1.compareTo(cfg2) < 0); |
| cfg1.setLocales(LocaleList.forLanguageTags("fr,en")); |
| cfg2.setLocales(LocaleList.forLanguageTags("fr")); |
| assertTrue(cfg1.compareTo(cfg2) > 0); |
| |
| cfg1.setLocales(LocaleList.forLanguageTags("fr,en")); |
| cfg2.setLocales(LocaleList.forLanguageTags("fr,en-US")); |
| assertTrue(cfg1.compareTo(cfg2) < 0); |
| cfg1.setLocales(LocaleList.forLanguageTags("fr,en-US")); |
| cfg2.setLocales(LocaleList.forLanguageTags("fr,en")); |
| assertTrue(cfg1.compareTo(cfg2) > 0); |
| |
| cfg1.locale = Locale.forLanguageTag("en"); |
| cfg2.locale = Locale.forLanguageTag("en-Shaw"); |
| assertTrue(cfg1.compareTo(cfg2) < 0); |
| cfg1.locale = Locale.forLanguageTag("en-Shaw"); |
| cfg2.locale = Locale.forLanguageTag("en"); |
| assertTrue(cfg1.compareTo(cfg2) > 0); |
| |
| cfg1.locale = new Locale("", "", "2"); |
| cfg2.locale = new Locale("", "", "3"); |
| assertEquals(-1, cfg1.compareTo(cfg2)); |
| cfg1.locale = new Locale("", "", "3"); |
| cfg2.locale = new Locale("", "", "2"); |
| assertEquals(1, cfg1.compareTo(cfg2)); |
| |
| cfg1.locale = new Locale("", "2", ""); |
| cfg2.locale = new Locale("", "3", ""); |
| assertEquals(-1, cfg1.compareTo(cfg2)); |
| cfg1.locale = new Locale("", "3", ""); |
| cfg2.locale = new Locale("", "2", ""); |
| assertEquals(1, cfg1.compareTo(cfg2)); |
| |
| cfg1.locale = new Locale("2", "", ""); |
| cfg2.locale = new Locale("3", "", ""); |
| assertEquals(-1, cfg1.compareTo(cfg2)); |
| cfg1.locale = new Locale("3", "", ""); |
| cfg2.locale = new Locale("2", "", ""); |
| assertEquals(1, cfg1.compareTo(cfg2)); |
| |
| cfg1.locale = new Locale(""); |
| cfg2.locale = null; |
| assertTrue(cfg1.compareTo(cfg2) < 0); |
| cfg1.locale = null; |
| cfg2.locale = new Locale(""); |
| assertTrue(cfg1.compareTo(cfg2) > 0); |
| |
| cfg1.mnc = 2; |
| cfg2.mnc = 3; |
| assertEquals(-1, cfg1.compareTo(cfg2)); |
| cfg1.mnc = 3; |
| cfg2.mnc = 2; |
| assertEquals(1, cfg1.compareTo(cfg2)); |
| |
| cfg1.mcc = 2; |
| cfg2.mcc = 3; |
| assertEquals(-1, cfg1.compareTo(cfg2)); |
| cfg1.mcc = 3; |
| cfg2.mcc = 2; |
| assertEquals(1, cfg1.compareTo(cfg2)); |
| |
| cfg1.fontScale = 2; |
| cfg2.fontScale = 3; |
| assertEquals(-1, cfg1.compareTo(cfg2)); |
| cfg1.fontScale = 3; |
| cfg2.fontScale = 2; |
| assertEquals(1, cfg1.compareTo(cfg2)); |
| } |
| |
| public void testDescribeContents() { |
| assertEquals(0, mConfigDefault.describeContents()); |
| } |
| |
| void doConfigCompare(int expectedFlags, Configuration c1, Configuration c2) { |
| assertEquals(expectedFlags, c1.diff(c2)); |
| Configuration tmpc1 = new Configuration(c1); |
| assertEquals(expectedFlags, tmpc1.updateFrom(c2)); |
| assertEquals(0, tmpc1.diff(c2)); |
| } |
| |
| public void testDiff() { |
| Configuration config = new Configuration(); |
| config.mcc = 1; |
| doConfigCompare(ActivityInfo.CONFIG_MCC, mConfigDefault, config); |
| config.mnc = 1; |
| doConfigCompare(ActivityInfo.CONFIG_MCC |
| | ActivityInfo.CONFIG_MNC, mConfigDefault, config); |
| config.locale = Locale.getDefault(); |
| config.setLayoutDirection(config.locale); |
| doConfigCompare(ActivityInfo.CONFIG_MCC |
| | ActivityInfo.CONFIG_MNC |
| | ActivityInfo.CONFIG_LOCALE |
| | ActivityInfo.CONFIG_LAYOUT_DIRECTION, mConfigDefault, config); |
| config.setLocales(LocaleList.forLanguageTags("fr,en")); |
| doConfigCompare(ActivityInfo.CONFIG_MCC |
| | ActivityInfo.CONFIG_MNC |
| | ActivityInfo.CONFIG_LOCALE |
| | ActivityInfo.CONFIG_LAYOUT_DIRECTION, mConfigDefault, config); |
| config.screenLayout = 1; |
| doConfigCompare(ActivityInfo.CONFIG_MCC |
| | ActivityInfo.CONFIG_MNC |
| | ActivityInfo.CONFIG_LOCALE |
| | ActivityInfo.CONFIG_LAYOUT_DIRECTION |
| | ActivityInfo.CONFIG_SCREEN_LAYOUT, mConfigDefault, config); |
| config.touchscreen = 1; |
| doConfigCompare(ActivityInfo.CONFIG_MCC |
| | ActivityInfo.CONFIG_MNC |
| | ActivityInfo.CONFIG_LOCALE |
| | ActivityInfo.CONFIG_LAYOUT_DIRECTION |
| | ActivityInfo.CONFIG_SCREEN_LAYOUT |
| | ActivityInfo.CONFIG_TOUCHSCREEN, mConfigDefault, config); |
| config.keyboard = 1; |
| doConfigCompare(ActivityInfo.CONFIG_MCC |
| | ActivityInfo.CONFIG_MNC |
| | ActivityInfo.CONFIG_LOCALE |
| | ActivityInfo.CONFIG_LAYOUT_DIRECTION |
| | ActivityInfo.CONFIG_SCREEN_LAYOUT |
| | ActivityInfo.CONFIG_TOUCHSCREEN |
| | ActivityInfo.CONFIG_KEYBOARD, mConfigDefault, config); |
| config.keyboardHidden = 1; |
| doConfigCompare(ActivityInfo.CONFIG_MCC |
| | ActivityInfo.CONFIG_MNC |
| | ActivityInfo.CONFIG_LOCALE |
| | ActivityInfo.CONFIG_LAYOUT_DIRECTION |
| | ActivityInfo.CONFIG_SCREEN_LAYOUT |
| | ActivityInfo.CONFIG_TOUCHSCREEN |
| | ActivityInfo.CONFIG_KEYBOARD |
| | ActivityInfo.CONFIG_KEYBOARD_HIDDEN, mConfigDefault, config); |
| config.keyboardHidden = 0; |
| config.hardKeyboardHidden = 1; |
| doConfigCompare(ActivityInfo.CONFIG_MCC |
| | ActivityInfo.CONFIG_MNC |
| | ActivityInfo.CONFIG_LOCALE |
| | ActivityInfo.CONFIG_LAYOUT_DIRECTION |
| | ActivityInfo.CONFIG_SCREEN_LAYOUT |
| | ActivityInfo.CONFIG_TOUCHSCREEN |
| | ActivityInfo.CONFIG_KEYBOARD |
| | ActivityInfo.CONFIG_KEYBOARD_HIDDEN, mConfigDefault, config); |
| config.hardKeyboardHidden = 0; |
| config.navigationHidden = 1; |
| doConfigCompare(ActivityInfo.CONFIG_MCC |
| | ActivityInfo.CONFIG_MNC |
| | ActivityInfo.CONFIG_LOCALE |
| | ActivityInfo.CONFIG_LAYOUT_DIRECTION |
| | ActivityInfo.CONFIG_SCREEN_LAYOUT |
| | ActivityInfo.CONFIG_TOUCHSCREEN |
| | ActivityInfo.CONFIG_KEYBOARD |
| | ActivityInfo.CONFIG_KEYBOARD_HIDDEN, mConfigDefault, config); |
| config.navigation = 1; |
| doConfigCompare(ActivityInfo.CONFIG_MCC |
| | ActivityInfo.CONFIG_MNC |
| | ActivityInfo.CONFIG_LOCALE |
| | ActivityInfo.CONFIG_LAYOUT_DIRECTION |
| | ActivityInfo.CONFIG_SCREEN_LAYOUT |
| | ActivityInfo.CONFIG_TOUCHSCREEN |
| | ActivityInfo.CONFIG_KEYBOARD |
| | ActivityInfo.CONFIG_KEYBOARD_HIDDEN |
| | ActivityInfo.CONFIG_NAVIGATION, mConfigDefault, config); |
| config.orientation = 1; |
| doConfigCompare(ActivityInfo.CONFIG_MCC |
| | ActivityInfo.CONFIG_MNC |
| | ActivityInfo.CONFIG_LOCALE |
| | ActivityInfo.CONFIG_LAYOUT_DIRECTION |
| | ActivityInfo.CONFIG_SCREEN_LAYOUT |
| | ActivityInfo.CONFIG_TOUCHSCREEN |
| | ActivityInfo.CONFIG_KEYBOARD |
| | ActivityInfo.CONFIG_KEYBOARD_HIDDEN |
| | ActivityInfo.CONFIG_NAVIGATION |
| | ActivityInfo.CONFIG_ORIENTATION, mConfigDefault, config); |
| config.uiMode = 1; |
| doConfigCompare(ActivityInfo.CONFIG_MCC |
| | ActivityInfo.CONFIG_MNC |
| | ActivityInfo.CONFIG_LOCALE |
| | ActivityInfo.CONFIG_LAYOUT_DIRECTION |
| | ActivityInfo.CONFIG_SCREEN_LAYOUT |
| | ActivityInfo.CONFIG_TOUCHSCREEN |
| | ActivityInfo.CONFIG_KEYBOARD |
| | ActivityInfo.CONFIG_KEYBOARD_HIDDEN |
| | ActivityInfo.CONFIG_NAVIGATION |
| | ActivityInfo.CONFIG_ORIENTATION |
| | ActivityInfo.CONFIG_UI_MODE, mConfigDefault, config); |
| config.fontScale = 2; |
| doConfigCompare(ActivityInfo.CONFIG_MCC |
| | ActivityInfo.CONFIG_MNC |
| | ActivityInfo.CONFIG_LOCALE |
| | ActivityInfo.CONFIG_LAYOUT_DIRECTION |
| | ActivityInfo.CONFIG_SCREEN_LAYOUT |
| | ActivityInfo.CONFIG_TOUCHSCREEN |
| | ActivityInfo.CONFIG_KEYBOARD |
| | ActivityInfo.CONFIG_KEYBOARD_HIDDEN |
| | ActivityInfo.CONFIG_NAVIGATION |
| | ActivityInfo.CONFIG_ORIENTATION |
| | ActivityInfo.CONFIG_UI_MODE |
| | ActivityInfo.CONFIG_FONT_SCALE, mConfigDefault, config); |
| } |
| |
| public void testEquals() { |
| assertFalse(mConfigDefault.equals(mConfig)); |
| assertFalse(mConfigDefault.equals(new Object())); |
| } |
| |
| public void testHashCode() { |
| assertFalse(mConfigDefault.hashCode() == mConfig.hashCode()); |
| } |
| |
| public void testNeedNewResources() { |
| assertTrue(Configuration.needNewResources(ActivityInfo.CONFIG_MCC, |
| ActivityInfo.CONFIG_MCC)); |
| assertFalse(Configuration.needNewResources(ActivityInfo.CONFIG_MNC, |
| ActivityInfo.CONFIG_MCC)); |
| assertTrue(Configuration.needNewResources( |
| ActivityInfo.CONFIG_MNC|ActivityInfo.CONFIG_FONT_SCALE, |
| ActivityInfo.CONFIG_MCC)); |
| } |
| |
| public void testSetToDefaults() { |
| final Configuration temp = new Configuration(mConfig); |
| assertFalse(temp.equals(mConfigDefault)); |
| temp.setToDefaults(); |
| assertTrue(temp.equals(mConfigDefault)); |
| assertTrue(temp.getLocales().isEmpty()); |
| } |
| |
| public void testToString() { |
| assertNotNull(mConfigDefault.toString()); |
| } |
| |
| public void testWriteToParcel() { |
| assertWriteToParcel(createConfig((Locale) null), Parcel.obtain()); |
| assertWriteToParcel(createConfig(new Locale("")), Parcel.obtain()); |
| assertWriteToParcel(createConfig(Locale.JAPAN), Parcel.obtain()); |
| assertWriteToParcel(createConfig(Locale.forLanguageTag("en-Shaw")), Parcel.obtain()); |
| assertWriteToParcel(createConfig(LocaleList.forLanguageTags("fr,en-US")), Parcel.obtain()); |
| } |
| |
| public void testSetLocale() { |
| Configuration config = new Configuration(); |
| |
| config.setLocale(null); |
| assertNull(config.locale); |
| assertTrue(config.getLocales().isEmpty()); |
| |
| config.setLocale(Locale.getDefault()); |
| assertEquals(Locale.getDefault(), config.locale); |
| assertEquals(new LocaleList(Locale.getDefault()), config.getLocales()); |
| |
| config.setLocale(Locale.ENGLISH); |
| assertEquals(Locale.ENGLISH, config.locale); |
| assertEquals(new LocaleList(Locale.ENGLISH), config.getLocales()); |
| assertEquals(View.LAYOUT_DIRECTION_LTR, config.getLayoutDirection()); |
| |
| config.setLocale(Locale.US); |
| assertEquals(Locale.US, config.locale); |
| assertEquals(new LocaleList(Locale.US), config.getLocales()); |
| assertEquals(View.LAYOUT_DIRECTION_LTR, config.getLayoutDirection()); |
| |
| final Locale arEGLocale = new Locale("ar", "EG"); |
| config.setLocale(arEGLocale); |
| assertEquals(arEGLocale, config.locale); |
| assertEquals(new LocaleList(arEGLocale), config.getLocales()); |
| assertEquals(View.LAYOUT_DIRECTION_RTL, config.getLayoutDirection()); |
| |
| final Locale faIRLocale = new Locale("fa", "IR"); |
| config.setLocale(faIRLocale); |
| assertEquals(faIRLocale, config.locale); |
| assertEquals(new LocaleList(faIRLocale), config.getLocales()); |
| assertEquals(View.LAYOUT_DIRECTION_RTL, config.getLayoutDirection()); |
| |
| final Locale iwILLocale = new Locale("iw", "IL"); |
| config.setLocale(iwILLocale); |
| assertEquals(iwILLocale, config.locale); |
| assertEquals(new LocaleList(iwILLocale), config.getLocales()); |
| assertEquals(View.LAYOUT_DIRECTION_RTL, config.getLayoutDirection()); |
| |
| final Locale urPKLocale = new Locale("ur", "PK"); |
| config.setLocale(urPKLocale); |
| assertEquals(urPKLocale, config.locale); |
| assertEquals(new LocaleList(urPKLocale), config.getLocales()); |
| assertEquals(View.LAYOUT_DIRECTION_RTL, config.getLayoutDirection()); |
| } |
| |
| public void testSetGetLayoutDirection() { |
| Configuration config = new Configuration(); |
| |
| config.setLayoutDirection(Locale.ENGLISH); |
| assertEquals(View.LAYOUT_DIRECTION_LTR, config.getLayoutDirection()); |
| |
| config.setLayoutDirection(Locale.US); |
| assertEquals(View.LAYOUT_DIRECTION_LTR, config.getLayoutDirection()); |
| |
| final Locale arEGLocale = new Locale("ar", "EG"); |
| config.setLayoutDirection(arEGLocale); |
| assertEquals(View.LAYOUT_DIRECTION_RTL, config.getLayoutDirection()); |
| |
| final Locale faIRLocale = new Locale("fa", "IR"); |
| config.setLayoutDirection(faIRLocale); |
| assertEquals(View.LAYOUT_DIRECTION_RTL, config.getLayoutDirection()); |
| |
| final Locale iwILLocale = new Locale("iw", "IL"); |
| config.setLayoutDirection(iwILLocale); |
| assertEquals(View.LAYOUT_DIRECTION_RTL, config.getLayoutDirection()); |
| |
| final Locale urPKLocale = new Locale("ur", "PK"); |
| config.setLayoutDirection(urPKLocale); |
| assertEquals(View.LAYOUT_DIRECTION_RTL, config.getLayoutDirection()); |
| } |
| |
| public void testIsScreenRound() { |
| Configuration config = new Configuration(); |
| assertFalse(config.isScreenRound()); |
| |
| config.screenLayout |= Configuration.SCREENLAYOUT_ROUND_YES; |
| assertTrue(config.isScreenRound()); |
| } |
| |
| public void testFixUpLocaleList() { |
| Configuration config = new Configuration(); |
| |
| config.setLocales(LocaleList.forLanguageTags("fr")); |
| config.locale = null; |
| assertEquals(LocaleList.getEmptyLocaleList(), config.getLocales()); |
| |
| config.setLocales(LocaleList.forLanguageTags("fr,en")); |
| config.locale = Locale.forLanguageTag("en"); |
| assertEquals(LocaleList.forLanguageTags("en"), config.getLocales()); |
| |
| config.setLocales(LocaleList.forLanguageTags("fr,en")); |
| config.locale = Locale.forLanguageTag("fr"); |
| assertEquals(LocaleList.forLanguageTags("fr,en"), config.getLocales()); |
| } |
| |
| public void testSetTo_nullLocale() { |
| Configuration config1 = new Configuration(); |
| Configuration config2 = new Configuration(); |
| assertEquals(null, config2.locale); |
| |
| config1.setLocale(Locale.FRENCH); |
| config1.setTo(config2); |
| assertEquals(null, config1.locale); |
| } |
| |
| public void testSetTo_localeFixUp() { |
| Configuration config1 = new Configuration(); |
| Configuration config2 = new Configuration(); |
| config2.locale = Locale.FRENCH; |
| |
| config1.setTo(config2); |
| assertEquals(Locale.FRENCH, config1.locale); |
| assertEquals(new LocaleList(Locale.FRENCH), config1.getLocales()); |
| assertEquals(new LocaleList(Locale.FRENCH), config2.getLocales()); |
| } |
| |
| public void testToString_localeFixUp() { |
| Configuration config1 = new Configuration(); |
| Configuration config2 = new Configuration(); |
| config1.setLocales(LocaleList.forLanguageTags("fr,en")); |
| config1.locale = Locale.forLanguageTag("en"); |
| config2.setLocales(LocaleList.forLanguageTags("en")); |
| |
| assertEquals(config1.toString(), config2.toString()); |
| } |
| |
| public void testUpdateFrom_localeFixUp() { |
| Configuration config1, config2; |
| int changed; |
| |
| config1 = new Configuration(); |
| config2 = new Configuration(); |
| config1.locale = Locale.FRENCH; |
| changed = config1.updateFrom(config2); |
| assertEquals(0, changed); |
| assertEquals(Locale.FRENCH, config1.locale); |
| assertEquals(new LocaleList(Locale.FRENCH), config1.getLocales()); |
| |
| config1 = new Configuration(); |
| config2 = new Configuration(); |
| config2.locale = Locale.FRENCH; |
| changed = config1.updateFrom(config2); |
| assertEquals(ActivityInfo.CONFIG_LOCALE | ActivityInfo.CONFIG_LAYOUT_DIRECTION, changed); |
| assertEquals(Locale.FRENCH, config1.locale); |
| assertEquals(new LocaleList(Locale.FRENCH), config1.getLocales()); |
| assertEquals(new LocaleList(Locale.FRENCH), config2.getLocales()); |
| |
| config1 = new Configuration(); |
| config2 = new Configuration(); |
| config1.setLocales(LocaleList.forLanguageTags("en,fr")); |
| config1.locale = Locale.forLanguageTag("fr"); |
| config2.setLocales(LocaleList.forLanguageTags("en,de")); |
| config2.locale = Locale.forLanguageTag("fr"); |
| changed = config1.updateFrom(config2); |
| assertEquals(0, changed); |
| assertEquals(Locale.forLanguageTag("fr"), config1.locale); |
| assertEquals(LocaleList.forLanguageTags("fr"), config1.getLocales()); |
| assertEquals(LocaleList.forLanguageTags("fr"), config2.getLocales()); |
| } |
| |
| public void testUpdateFrom_layoutDirection() { |
| Configuration config1, config2; |
| int changed; |
| |
| config1 = new Configuration(); |
| config2 = new Configuration(); |
| config1.setLocales(LocaleList.forLanguageTags("fr,en")); |
| config2.setLocales(LocaleList.forLanguageTags("de,en")); |
| changed = config1.updateFrom(config2); |
| assertTrue((changed & ActivityInfo.CONFIG_LAYOUT_DIRECTION) != 0); |
| |
| config1 = new Configuration(); |
| config2 = new Configuration(); |
| config1.setLocales(LocaleList.forLanguageTags("fr,en")); |
| config2.setLocales(LocaleList.forLanguageTags("fr,de")); |
| changed = config1.updateFrom(config2); |
| assertEquals(0, changed & ActivityInfo.CONFIG_LAYOUT_DIRECTION); |
| } |
| |
| public void testDiff_localeFixUp() { |
| Configuration config1 = new Configuration(); |
| Configuration config2 = new Configuration(); |
| config1.setLocales(LocaleList.forLanguageTags("en,fr")); |
| config1.locale = Locale.forLanguageTag("fr"); |
| config2.setLocales(LocaleList.forLanguageTags("en,de")); |
| config2.locale = Locale.forLanguageTag("fr"); |
| |
| int diff = config1.diff(config2); |
| assertEquals(0, diff); |
| } |
| |
| public void testCompareTo_localeFixUp() { |
| Configuration config1 = new Configuration(); |
| Configuration config2 = new Configuration(); |
| config1.setLocales(LocaleList.forLanguageTags("en,fr")); |
| config2.setLocales(LocaleList.forLanguageTags("en,fr")); |
| assertEquals(0, config1.compareTo(config2)); |
| config1.locale = new Locale("2"); |
| config2.locale = new Locale("3"); |
| assertEquals(-1, config1.compareTo(config2)); |
| } |
| |
| public void testSetLocales_null() { |
| Configuration config = new Configuration(); |
| config.setLocales(null); |
| assertNull(config.locale); |
| assertNotNull(config.getLocales()); |
| assertTrue(config.getLocales().isEmpty()); |
| assertEquals(View.LAYOUT_DIRECTION_LTR, config.getLayoutDirection()); |
| } |
| |
| public void testSetLocales_emptyList() { |
| Configuration config = new Configuration(); |
| config.setLocales(LocaleList.getEmptyLocaleList()); |
| assertNull(config.locale); |
| assertNotNull(config.getLocales()); |
| assertTrue(config.getLocales().isEmpty()); |
| assertEquals(View.LAYOUT_DIRECTION_LTR, config.getLayoutDirection()); |
| } |
| |
| public void testSetLocales_oneLtr() { |
| Configuration config = new Configuration(); |
| Locale loc = Locale.forLanguageTag("en"); |
| LocaleList ll = new LocaleList(loc); |
| config.setLocales(ll); |
| assertEquals(loc, config.locale); |
| assertEquals(ll, config.getLocales()); |
| assertEquals(View.LAYOUT_DIRECTION_LTR, config.getLayoutDirection()); |
| } |
| |
| public void testSetLocales_oneRtl() { |
| Configuration config = new Configuration(); |
| Locale loc = Locale.forLanguageTag("az-Arab"); |
| LocaleList ll = new LocaleList(loc); |
| config.setLocales(ll); |
| assertEquals(loc, config.locale); |
| assertEquals(ll, config.getLocales()); |
| assertEquals(View.LAYOUT_DIRECTION_RTL, config.getLayoutDirection()); |
| } |
| |
| public void testSetLocales_twoLocales() { |
| Configuration config = new Configuration(); |
| Locale rtlLoc = Locale.forLanguageTag("az-Arab"); |
| Locale ltrLoc = Locale.forLanguageTag("en"); |
| LocaleList ll = LocaleList.forLanguageTags("az-Arab,en"); |
| config.setLocales(ll); |
| assertEquals(rtlLoc, config.locale); |
| assertEquals(ll, config.getLocales()); |
| assertEquals(View.LAYOUT_DIRECTION_RTL, config.getLayoutDirection()); |
| } |
| |
| public void testSetLocales_overridesLocale() { |
| Configuration config = new Configuration(); |
| config.locale = Locale.forLanguageTag("en"); |
| LocaleList ll = LocaleList.forLanguageTags("az-Arab,en"); |
| config.setLocales(ll); |
| |
| assertEquals(Locale.forLanguageTag("az-Arab"), config.locale); |
| assertEquals(ll, config.getLocales()); |
| assertEquals(View.LAYOUT_DIRECTION_RTL, config.getLayoutDirection()); |
| } |
| |
| public void testSetLocales_overridesSetLocale() { |
| Configuration config = new Configuration(); |
| config.setLocale(Locale.forLanguageTag("en")); |
| LocaleList ll = LocaleList.forLanguageTags("az-Arab,en"); |
| config.setLocales(ll); |
| |
| assertEquals(Locale.forLanguageTag("az-Arab"), config.locale); |
| assertEquals(ll, config.getLocales()); |
| assertEquals(View.LAYOUT_DIRECTION_RTL, config.getLayoutDirection()); |
| } |
| |
| public void testSetLocale_overridesSetLocales() { |
| Configuration config = new Configuration(); |
| config.setLocales(LocaleList.forLanguageTags("az-Arab,en")); |
| config.setLocale(Locale.ENGLISH); |
| |
| assertEquals(Locale.ENGLISH, config.locale); |
| assertEquals(new LocaleList(Locale.ENGLISH), config.getLocales()); |
| assertEquals(View.LAYOUT_DIRECTION_LTR, config.getLayoutDirection()); |
| } |
| |
| private Configuration createConfig(LocaleList list) { |
| Configuration config = createConfig(); |
| config.setLocales(list); |
| return config; |
| } |
| |
| private Configuration createConfig(Locale locale) { |
| Configuration config = createConfig(); |
| config.locale = locale; |
| return config; |
| } |
| |
| private Configuration createConfig() { |
| Configuration config = new Configuration(); |
| config.fontScale = 13.37f; |
| config.mcc = 0; |
| config.mnc = 1; |
| config.touchscreen = Configuration.TOUCHSCREEN_STYLUS; |
| config.keyboard = Configuration.KEYBOARD_UNDEFINED; |
| config.keyboardHidden = Configuration.KEYBOARDHIDDEN_YES; |
| config.hardKeyboardHidden = Configuration.KEYBOARDHIDDEN_UNDEFINED; |
| config.navigation = Configuration.NAVIGATION_DPAD; |
| config.navigationHidden = Configuration.NAVIGATIONHIDDEN_UNDEFINED; |
| config.orientation = Configuration.ORIENTATION_PORTRAIT; |
| config.screenLayout = Configuration.SCREENLAYOUT_LONG_UNDEFINED; |
| return config; |
| } |
| |
| private void assertWriteToParcel(Configuration config, Parcel parcel) { |
| config.writeToParcel(parcel, 0); |
| parcel.setDataPosition(0); |
| Configuration readConf = new Configuration(); |
| readConf.readFromParcel(parcel); |
| assertEquals(config, readConf); |
| } |
| } |