Tests for android.preference.Preference

Change-Id: I1e3a605f281047fca957893e2fdec437b8b611cb
diff --git a/tests/tests/preference2/src/android/preference2/cts/PreferenceFromCodeActivity.java b/tests/tests/preference2/src/android/preference2/cts/PreferenceFromCodeActivity.java
index ee0dde1..94be86f 100755
--- a/tests/tests/preference2/src/android/preference2/cts/PreferenceFromCodeActivity.java
+++ b/tests/tests/preference2/src/android/preference2/cts/PreferenceFromCodeActivity.java
@@ -49,6 +49,7 @@
         //CheckBox Preference
         CheckBoxPreference checkboxPref = new CheckBoxPreference(this);
         checkboxPref.setKey("checkbox_preference");
+        checkboxPref.setIcon(R.drawable.ic_launcher);
         checkboxPref.setTitle(R.string.title_checkbox_preference);
         checkboxPref.setSummary(R.string.summary_checkbox_preference);
         checkboxPref.setSummaryOn(R.string.summary_on_checkbox_preference);
diff --git a/tests/tests/preference2/src/android/preference2/cts/PreferenceTest.java b/tests/tests/preference2/src/android/preference2/cts/PreferenceTest.java
new file mode 100755
index 0000000..ae3ef0a
--- /dev/null
+++ b/tests/tests/preference2/src/android/preference2/cts/PreferenceTest.java
@@ -0,0 +1,181 @@
+/*
+ * Copyright (C) 2012 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.preference2.cts;
+
+import android.graphics.drawable.Drawable;
+import android.preference.CheckBoxPreference;
+import android.preference.Preference;
+import android.test.ActivityInstrumentationTestCase2;
+
+import com.android.cts.preference2.R;
+
+public class PreferenceTest
+        extends ActivityInstrumentationTestCase2<PreferenceFromCodeActivity> {
+
+    private PreferenceFromCodeActivity mActivity;
+    private Preference mPreference;
+
+    public PreferenceTest() {
+        super(PreferenceFromCodeActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mActivity = getActivity();
+        mPreference = (CheckBoxPreference) mActivity.findPreference(
+                "checkbox_preference");
+    }
+
+    public void testNotNull() {
+        assertNotNull(mPreference);
+    }
+
+    public void testGetSummary() {
+        String summary = (String) mPreference.getSummary();
+        String summaryExp = mActivity.getResources().getString(
+                R.string.summary_checkbox_preference);
+        assertEquals(summaryExp, summary);
+    }
+
+    public void testSetSummary() throws Throwable {
+        final String summary = "New Summary";
+        this.runTestOnUiThread(new Runnable() {
+            public void run() {
+                mPreference.setSummary(summary);
+            }
+        });
+        assertEquals(summary, mPreference.getSummary());
+    }
+
+    public void testIsEnabled() {
+        assertTrue(mPreference.isEnabled());
+    }
+
+    public void testSetEnabled() throws Throwable {
+        this.runTestOnUiThread(new Runnable() {
+            public void run() {
+                mPreference.setEnabled(false);
+            }
+        });
+        assertFalse(mPreference.isEnabled());
+    }
+
+    public void testIsPersistent() {
+        assertTrue(mPreference.isPersistent());
+    }
+
+    public void testIsSelectable() {
+        assertTrue(mPreference.isSelectable());
+    }
+
+    public void testGetTitle() {
+        CharSequence title= mPreference.getTitle();
+        String titleExp = mActivity.getResources().getString(
+                R.string.title_checkbox_preference);
+        assertEquals(titleExp, title);
+    }
+
+    public void testSetTitle() throws Throwable {
+        this.runTestOnUiThread(new Runnable() {
+            public void run() {
+                mPreference.setTitle(R.string.title_my_preference);
+            }
+        });
+        String titleExp = mActivity.getResources().getString(
+                R.string.title_my_preference);
+        String title = (String) mPreference.getTitle();
+        assertEquals(titleExp, title);
+    }
+
+    public void testHasKey() {
+        assertTrue(mPreference.hasKey());
+    }
+
+    public void testGetKey() {
+        String key = mPreference.getKey();
+        String keyExp = "checkbox_preference";
+        assertEquals(keyExp, key);
+    }
+
+    public void testSetKey() throws Throwable {
+        final String key = "key1";
+        this.runTestOnUiThread(new Runnable() {
+            public void run() {
+                mPreference.setKey(key);
+            }
+        });
+        assertEquals(key, mPreference.getKey());
+    }
+
+     public void testGetPreferenceManager() {
+        assertNotNull(mPreference.getPreferenceManager());
+    }
+
+    public void testGetSharedPreferences() {
+        assertNotNull(mPreference.getSharedPreferences());
+    }
+
+    public void testSetTitle_CharSequence() throws Throwable {
+        final CharSequence titleExp = "Test Title";
+        this.runTestOnUiThread(new Runnable() {
+            public void run() {
+                mPreference.setTitle(titleExp);
+            }
+        });
+
+        assertEquals(titleExp, mPreference.getTitle());
+    }
+
+    public void testGetContext() {
+        assertNotNull(mPreference.getContext());
+    }
+
+    public void testGetOrder() throws Throwable {
+        int order = mPreference.getOrder();
+        assertEquals(0, order);
+    }
+
+    public void testSetOrder() throws Throwable {
+        int orderExp = 1;
+        mPreference.setOrder(orderExp);
+        int order = mPreference.getOrder();
+        assertEquals(orderExp, order);
+    }
+
+    public void testGetIcon() {
+        Drawable iconExp = mActivity.getResources().getDrawable(R.drawable.ic_launcher);
+        Drawable icon = mPreference.getIcon();
+        assertEquals(iconExp.getIntrinsicHeight(), icon.getIntrinsicHeight());
+        assertEquals(iconExp.getIntrinsicWidth(), icon.getIntrinsicWidth());
+        assertEquals(iconExp.getOpacity(), icon.getOpacity());
+    }
+
+    public void testgetShouldDisableView() {
+        assertTrue(mPreference.getShouldDisableView());
+    }
+
+    public void testSetShouldDisableView() throws Throwable {
+        this.runTestOnUiThread(new Runnable() {
+            public void run() {
+                mPreference.setShouldDisableView(false);
+            }
+        });
+        assertFalse(mPreference.getShouldDisableView());
+    }
+}
+