| /* |
| * 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.Parcel; |
| import android.test.AndroidTestCase; |
| import dalvik.annotation.TestTargets; |
| import dalvik.annotation.TestLevel; |
| import dalvik.annotation.TestTargetNew; |
| import dalvik.annotation.TestTargetClass; |
| |
| @TestTargetClass(Configuration.class) |
| 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.locale = 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; |
| } |
| |
| @TestTargets({ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| method = "Configuration", |
| args = {} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| method = "Configuration", |
| args = {android.content.res.Configuration.class} |
| ) |
| }) |
| public void testConstructor() { |
| new Configuration(); |
| new Configuration(mConfigDefault); |
| } |
| |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| method = "compareTo", |
| args = {android.content.res.Configuration.class} |
| ) |
| 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.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.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)); |
| } |
| |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| method = "describeContents", |
| args = {} |
| ) |
| public void testDescribeContents() { |
| assertEquals(0, mConfigDefault.describeContents()); |
| } |
| |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| method = "diff", |
| args = {android.content.res.Configuration.class} |
| ) |
| public void testDiff() { |
| assertEquals(ActivityInfo.CONFIG_FONT_SCALE |
| | ActivityInfo.CONFIG_MCC |
| | ActivityInfo.CONFIG_MNC |
| | ActivityInfo.CONFIG_TOUCHSCREEN |
| | ActivityInfo.CONFIG_KEYBOARD |
| | ActivityInfo.CONFIG_KEYBOARD_HIDDEN |
| | ActivityInfo.CONFIG_NAVIGATION |
| | ActivityInfo.CONFIG_ORIENTATION, mConfigDefault.diff(mConfig)); |
| } |
| |
| @TestTargets({ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| method = "equals", |
| args = {android.content.res.Configuration.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| method = "equals", |
| args = {java.lang.Object.class} |
| ) |
| }) |
| public void testEquals() { |
| assertFalse(mConfigDefault.equals(mConfig)); |
| assertFalse(mConfigDefault.equals(new Object())); |
| } |
| |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| method = "hashCode", |
| args = {} |
| ) |
| public void testHashCode() { |
| assertFalse(mConfigDefault.hashCode() == mConfig.hashCode()); |
| } |
| |
| @TestTargets({ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| method = "needNewResources", |
| args = {int.class, int.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| method = "updateFrom", |
| args = {android.content.res.Configuration.class} |
| ) |
| }) |
| public void testNeedNewResources() { |
| final int configChanges = mConfigDefault.updateFrom(mConfig); |
| assertEquals(ActivityInfo.CONFIG_FONT_SCALE |
| | ActivityInfo.CONFIG_MCC |
| | ActivityInfo.CONFIG_MNC |
| | ActivityInfo.CONFIG_TOUCHSCREEN |
| | ActivityInfo.CONFIG_KEYBOARD |
| | ActivityInfo.CONFIG_KEYBOARD_HIDDEN |
| | ActivityInfo.CONFIG_NAVIGATION |
| | ActivityInfo.CONFIG_ORIENTATION, configChanges); |
| final int interestingChanges = 20080917; |
| assertTrue(Configuration.needNewResources(configChanges, |
| interestingChanges)); |
| } |
| |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| method = "setToDefaults", |
| args = {} |
| ) |
| public void testSetToDefaults() { |
| final Configuration temp = new Configuration(mConfig); |
| assertFalse(temp.equals(mConfigDefault)); |
| temp.setToDefaults(); |
| assertTrue(temp.equals(mConfigDefault)); |
| } |
| |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| method = "toString", |
| args = {} |
| ) |
| public void testToString() { |
| assertNotNull(mConfigDefault.toString()); |
| } |
| |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| method = "writeToParcel", |
| args = {android.os.Parcel.class, int.class} |
| ) |
| public void testWriteToParcel() { |
| final Parcel parcel = Parcel.obtain(); |
| mConfigDefault.writeToParcel(parcel, 0); |
| |
| parcel.setDataPosition(0); |
| assertEquals(mConfigDefault.fontScale, parcel.readFloat()); |
| assertEquals(mConfigDefault.mcc, parcel.readInt()); |
| assertEquals(mConfigDefault.mnc, parcel.readInt()); |
| if (mConfigDefault.locale == null) { |
| assertEquals(0, parcel.readInt()); |
| } else { |
| assertEquals(1, parcel.readInt()); |
| assertEquals(mConfigDefault.locale.getLanguage(), |
| parcel.readString()); |
| assertEquals(mConfigDefault.locale.getCountry(), |
| parcel.readString()); |
| assertEquals(mConfigDefault.locale.getVariant(), |
| parcel.readString()); |
| } |
| assertEquals(mConfigDefault.touchscreen, parcel.readInt()); |
| assertEquals(mConfigDefault.keyboard, parcel.readInt()); |
| assertEquals(mConfigDefault.keyboardHidden, parcel.readInt()); |
| assertEquals(mConfigDefault.navigation, parcel.readInt()); |
| assertEquals(mConfigDefault.orientation, parcel.readInt()); |
| } |
| |
| } |