184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler/* 284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * Copyright (C) 2016 The Android Open Source Project 384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * 484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * Licensed under the Apache License, Version 2.0 (the "License"); 584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * you may not use this file except in compliance with the License. 684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * You may obtain a copy of the License at 784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * 884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * http://www.apache.org/licenses/LICENSE-2.0 984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * 1084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * Unless required by applicable law or agreed to in writing, software 1184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * distributed under the License is distributed on an "AS IS" BASIS, 1284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * See the License for the specific language governing permissions and 1484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * limitations under the License 1584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler */ 1684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 1784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantlerpackage android.support.v7.preference.tests; 1884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 1984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantlerimport android.content.Context; 2084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantlerimport android.graphics.Canvas; 2184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantlerimport android.graphics.ColorFilter; 2284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantlerimport android.graphics.drawable.Drawable; 2384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantlerimport android.support.test.InstrumentationRegistry; 2484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantlerimport android.support.test.filters.SmallTest; 2584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantlerimport android.support.test.runner.AndroidJUnit4; 2684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantlerimport android.support.v7.preference.CheckBoxPreference; 2784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantlerimport android.support.v7.preference.DropDownPreference; 2884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantlerimport android.support.v7.preference.Preference; 2984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantlerimport android.support.v7.preference.PreferenceManager; 3084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantlerimport android.support.v7.preference.TwoStatePreference; 3184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 3284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantlerimport org.junit.Before; 3384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantlerimport org.junit.Test; 3484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantlerimport org.junit.runner.RunWith; 3584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 3684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantlerimport static org.junit.Assert.assertFalse; 3784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantlerimport static org.junit.Assert.assertTrue; 3884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 3984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler@RunWith(AndroidJUnit4.class) 4084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler@SmallTest 4184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantlerpublic class SimplePreferenceComparisonCallbackTest { 4284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 4384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler private Preference mPref1; 4484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler private Preference mPref2; 4584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler private PreferenceManager.PreferenceComparisonCallback mComparisonCallback; 4684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 4784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler @Before 4884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler public void setup() throws Exception { 4984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler final Context context = InstrumentationRegistry.getTargetContext(); 5084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mPref1 = new Preference(context); 5184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mPref2 = new Preference(context); 5284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback = new PreferenceManager.SimplePreferenceComparisonCallback(); 5384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler } 5484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 5584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler /** 5684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * Basic sanity test, all fields blank should compare the same 5784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * @throws Exception 5884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler */ 5984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler @Test 6084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler public void testNull() throws Exception { 6184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertTrue("Compare all null", 6284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(mPref1, mPref2)); 6384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler } 6484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 6584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler /** 6684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * Two different classes should not compare the same 6784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * @throws Exception 6884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler */ 6984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler @Test 7084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler public void testClassComparison() throws Exception { 7184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler final Preference checkboxPreference = 7284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler new CheckBoxPreference(InstrumentationRegistry.getTargetContext()); 7384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertFalse("Compare class", 7484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(mPref1, checkboxPreference)); 7584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler } 7684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 7784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler /** 7884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * Same instance, but detached and reattached should not compare the same 7984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * @throws Exception 8084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler */ 8184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler @Test 8284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler public void testDetached() throws Exception { 8384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mPref1.onDetached(); 8484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mPref1.onAttached(); 8584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertFalse("Compare same, detached", 8684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(mPref1, mPref1)); 8784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler } 8884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 8984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler /** 9084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * Title differences should be detected 9184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * @throws Exception 9284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler */ 9384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler @Test 9484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler public void testTitleComparison() throws Exception { 9584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mPref1.setTitle("value 1"); 9684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 9784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertFalse("Compare non-null to null", 9884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(mPref1, mPref2)); 9984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertFalse("Compare null to non-null", 10084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(mPref2, mPref1)); 10184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 10284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mPref2.setTitle("value 1"); 10384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 10484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertTrue("Compare identical", 10584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(mPref1, mPref2)); 10684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 10784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mPref2.setTitle("value 2"); 10884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 10984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertFalse("Compare different", 11084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(mPref1, mPref2)); 11184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler } 11284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 11384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler /** 11484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * Summary differences should be detected 11584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * @throws Exception 11684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler */ 11784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler @Test 11884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler public void testSummaryComparison() throws Exception { 11984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mPref1.setSummary("value 1"); 12084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 12184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertFalse("Compare non-null to null", 12284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(mPref1, mPref2)); 12384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertFalse("Compare null to non-null", 12484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(mPref2, mPref1)); 12584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 12684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mPref2.setSummary("value 1"); 12784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 12884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertTrue("Compare identical", 12984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(mPref1, mPref2)); 13084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 13184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mPref2.setSummary("value 2"); 13284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 13384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertFalse("Compare different", 13484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(mPref1, mPref2)); 13584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler } 13684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 13784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler private static class ComparisonDrawable extends Drawable { 13884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 13984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler private final int mId; 14084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 14184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler public ComparisonDrawable(int id) { 14284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mId = id; 14384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler } 14484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 14584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler public int getId() { 14684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler return mId; 14784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler } 14884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 14984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler @Override 15084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler public void draw(Canvas canvas) {} 15184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 15284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler @Override 15384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler public void setAlpha(int alpha) {} 15484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 15584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler @Override 15684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler public void setColorFilter(ColorFilter colorFilter) {} 15784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 15884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler @Override 15984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler public int getOpacity() { 16084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler return 0; 16184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler } 16284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 16384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler @Override 16484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler public boolean equals(Object o) { 16584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler return o instanceof ComparisonDrawable && ((ComparisonDrawable)o).getId() == mId; 16684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler } 16784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 16884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler @Override 16984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler public int hashCode() { 17084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler return mId; 17184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler } 17284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler } 17384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 17484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler /** 17584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * Icon differences should be detected 17684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * @throws Exception 17784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler */ 17884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler @Test 17984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler public void testIconComparison() throws Exception { 18084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler final Drawable drawable1 = new ComparisonDrawable(1); 18184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler final Drawable drawable1a = new ComparisonDrawable(1); 18284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler final Drawable drawable2 = new ComparisonDrawable(2); 18384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 18484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mPref1.setIcon(drawable1); 18584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 18684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertFalse("Compare non-null to null", 18784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(mPref1, mPref2)); 18884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertFalse("Compare null to non-null", 18984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(mPref2, mPref1)); 19084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 19184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mPref2.setIcon(drawable1); 19284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 19384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertTrue("Compare aliased", 19484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(mPref1, mPref2)); 19584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 19684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mPref2.setIcon(drawable1a); 19784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 19884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertTrue("Compare equal", 19984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(mPref1, mPref2)); 20084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 20184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mPref2.setIcon(drawable2); 20284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 20384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertFalse("Compare unequal", 20484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(mPref1, mPref2)); 20584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler } 20684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 20784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler /** 20884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * Enabled differences should be detected 20984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * @throws Exception 21084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler */ 21184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler @Test 21284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler public void testEnabledComparison() throws Exception { 21384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mPref1.setEnabled(true); 21484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mPref2.setEnabled(true); 21584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 21684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertTrue("Compare enabled", 21784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(mPref1, mPref2)); 21884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 21984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mPref2.setEnabled(false); 22084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 22184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertFalse("Compare enabled/disabled", 22284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(mPref1, mPref2)); 22384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertFalse("Compare disable/enabled", 22484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(mPref2, mPref1)); 22584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 22684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mPref1.setEnabled(false); 22784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 22884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertTrue("Compare disabled", 22984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(mPref1, mPref2)); 23084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler } 23184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 23284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler /** 23384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * Selectable differences should be detected 23484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * @throws Exception 23584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler */ 23684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler @Test 23784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler public void testSelectableComparison() throws Exception { 23884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mPref1.setSelectable(true); 23984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mPref2.setSelectable(true); 24084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 24184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertTrue("Compare selectable", 24284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(mPref1, mPref2)); 24384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 24484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mPref2.setSelectable(false); 24584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 24684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertFalse("Compare selectable/unselectable", 24784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(mPref1, mPref2)); 24884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertFalse("Compare unselectable/selectable", 24984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(mPref2, mPref1)); 25084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 25184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mPref1.setSelectable(false); 25284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 25384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertTrue("Compare unselectable", 25484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(mPref1, mPref2)); 25584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler } 25684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 25784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler /** 25884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * For {@link TwoStatePreference} objects, checked state differences should be detected 25984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * @throws Exception 26084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler */ 26184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler @Test 26284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler public void testTwoStateComparison() throws Exception { 26384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler final TwoStatePreference checkbox1 = 26484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler new CheckBoxPreference(InstrumentationRegistry.getTargetContext()); 26584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler final TwoStatePreference checkbox2 = 26684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler new CheckBoxPreference(InstrumentationRegistry.getTargetContext()); 26784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 26884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler checkbox1.setChecked(true); 26984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler checkbox2.setChecked(true); 27084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 27184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertTrue("Compare checked", 27284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(checkbox1, checkbox2)); 27384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 27484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler checkbox2.setChecked(false); 27584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 27684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertFalse("Compare checked/unchecked", 27784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(checkbox1, checkbox2)); 27884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertFalse("Compare unchecked/checked", 27984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(checkbox2, checkbox1)); 28084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 28184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler checkbox1.setChecked(false); 28284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 28384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertTrue("Compare unchecked", 28484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(checkbox1, checkbox2)); 28584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler } 28684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 28784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler /** 28884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * {@link DropDownPreference} is a special case, the pref object will need to re-bind the 28984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * spinner when recycled, so distinct instances are never evaluated as equal 29084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler * @throws Exception 29184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler */ 29284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler @Test 29384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler public void testDropDownComparison() throws Exception { 29484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler final Preference dropdown1 = 29584352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler new DropDownPreference(InstrumentationRegistry.getTargetContext()); 29684352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler final Preference dropdown2 = 29784352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler new DropDownPreference(InstrumentationRegistry.getTargetContext()); 29884352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler 29984352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertTrue("Compare aliased drop down pref", 30084352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(dropdown1, dropdown1)); 30184352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler assertFalse("Compare distinct drop down prefs", 30284352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler mComparisonCallback.arePreferenceContentsTheSame(dropdown1, dropdown2)); 30384352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler } 30484352192fbccf572473bb953ba3e9ebede60fbcaTony Mantler} 305