Loading packages/SettingsLib/src/com/android/settingslib/core/AbstractPreferenceController.java +4 −30 Original line number Diff line number Diff line Loading @@ -20,14 +20,16 @@ public abstract class AbstractPreferenceController { * Displays preference in this controller. */ public void displayPreference(PreferenceScreen screen) { final String prefKey = getPreferenceKey(); if (isAvailable()) { setVisible(screen, prefKey, true /* visible */); if (this instanceof Preference.OnPreferenceChangeListener) { final Preference preference = screen.findPreference(getPreferenceKey()); final Preference preference = screen.findPreference(prefKey); preference.setOnPreferenceChangeListener( (Preference.OnPreferenceChangeListener) this); } } else { removePreference(screen, getPreferenceKey()); setVisible(screen, prefKey, false /* visible */); } } Loading Loading @@ -58,13 +60,6 @@ public abstract class AbstractPreferenceController { */ public abstract String getPreferenceKey(); /** * Removes preference from screen. */ protected final void removePreference(PreferenceScreen screen, String key) { findAndRemovePreference(screen, key); } /** * Show/hide a preference. */ Loading @@ -74,25 +69,4 @@ public abstract class AbstractPreferenceController { pref.setVisible(isVisible); } } // finds the preference recursively and removes it from its parent private boolean findAndRemovePreference(PreferenceGroup prefGroup, String key) { final int preferenceCount = prefGroup.getPreferenceCount(); for (int i = 0; i < preferenceCount; i++) { final Preference preference = prefGroup.getPreference(i); final String curKey = preference.getKey(); if (curKey != null && curKey.equals(key)) { return prefGroup.removePreference(preference); } if (preference instanceof PreferenceGroup) { if (findAndRemovePreference((PreferenceGroup) preference, key)) { return true; } } } return false; } } packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractSerialNumberPreferenceController.java +4 −2 Original line number Diff line number Diff line Loading @@ -18,18 +18,20 @@ package com.android.settingslib.deviceinfo; import android.content.Context; import android.os.Build; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import android.text.TextUtils; import com.android.internal.annotations.VisibleForTesting; import com.android.settingslib.core.AbstractPreferenceController; /** * Preference controller for displaying device serial number. Wraps {@link Build#getSerial()}. */ public class AbstractSerialNumberPreferenceController extends AbstractPreferenceController { private static final String KEY_SERIAL_NUMBER = "serial_number"; @VisibleForTesting static final String KEY_SERIAL_NUMBER = "serial_number"; private final String mSerialNumber; Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/AbstractPreferenceControllerTest.java +8 −91 Original line number Diff line number Diff line Loading @@ -16,17 +16,10 @@ package com.android.settingslib.core; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceGroup; import android.support.v7.preference.PreferenceManager; import android.support.v7.preference.PreferenceScreen; import com.android.settingslib.TestConfig; Loading @@ -39,134 +32,58 @@ import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowApplication; @RunWith(RobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class AbstractPreferenceControllerTest { @Mock private Context mContext; @Mock private PreferenceScreen mScreen; private Context mContext; private Preference mPreference; private TestPrefController mTestPrefController; @Before public void setUp() { MockitoAnnotations.initMocks(this); mPreference = new Preference(RuntimeEnvironment.application); mContext = RuntimeEnvironment.application; mPreference = new Preference(mContext); mPreference.setKey(TestPrefController.KEY_PREF); when(mScreen.findPreference(TestPrefController.KEY_PREF)).thenReturn(mPreference); mTestPrefController = new TestPrefController(mContext); } @Test public void removeExistingPref_shouldBeRemoved() { when(mScreen.getPreferenceCount()).thenReturn(1); when(mScreen.getPreference(0)).thenReturn(mPreference); mTestPrefController.removePreference(mScreen, TestPrefController.KEY_PREF); verify(mScreen).removePreference(mPreference); } @Test public void removeNonExistingPref_shouldNotRemoveAnything() { mTestPrefController.removePreference(mScreen, TestPrefController.KEY_PREF); verify(mScreen, never()).removePreference(any(Preference.class)); } @Test public void displayPref_ifAvailable() { mTestPrefController.isAvailable = true; mTestPrefController.displayPreference(mScreen); verify(mScreen, never()).removePreference(any(Preference.class)); assertThat(mPreference.isVisible()).isTrue(); } @Test public void setVisible_prefIsVisible_shouldSetToVisible() { when(mScreen.findPreference(TestPrefController.KEY_PREF)).thenReturn(mPreference); mTestPrefController.setVisible(mScreen, TestPrefController.KEY_PREF, true /* visible */); assertThat(mPreference.isVisible()).isTrue(); } @Test public void setVisible_prefNotVisible_shouldSetToInvisible() { when(mScreen.findPreference(TestPrefController.KEY_PREF)).thenReturn(mPreference); mTestPrefController.setVisible(mScreen, TestPrefController.KEY_PREF, false /* visible */); assertThat(mPreference.isVisible()).isFalse(); } @Test public void doNotDisplayPref_ifNotAvailable() { when(mScreen.getPreferenceCount()).thenReturn(1); when(mScreen.getPreference(0)).thenReturn(mPreference); mTestPrefController.isAvailable = false; mTestPrefController.displayPreference(mScreen); verify(mScreen).removePreference(any(Preference.class)); } @Test public void removePreference_shouldRemoveRecursively() { final Context context = ShadowApplication.getInstance().getApplicationContext(); final PreferenceManager preferenceManager = mock(PreferenceManager.class); // Top level PreferenceScreen prefRoot = spy(new PreferenceScreen(context, null)); when(prefRoot.getPreferenceManager()).thenReturn(preferenceManager); Preference pref1 = mock(Preference.class); when(pref1.getKey()).thenReturn("key1"); PreferenceGroup prefGroup2 = spy(new PreferenceScreen(context, null)); when(prefGroup2.getPreferenceManager()).thenReturn(preferenceManager); when(prefGroup2.getKey()).thenReturn("group2"); Preference pref3 = mock(Preference.class); when(pref3.getKey()).thenReturn("key3"); PreferenceGroup prefGroup4 = spy(new PreferenceScreen(context, null)); when(prefGroup4.getPreferenceManager()).thenReturn(preferenceManager); when(prefGroup4.getKey()).thenReturn("group4"); prefRoot.addPreference(pref1); prefRoot.addPreference(prefGroup2); prefRoot.addPreference(pref3); prefRoot.addPreference(prefGroup4); // 2nd level Preference pref21 = mock(Preference.class); when(pref21.getKey()).thenReturn("key21"); Preference pref22 = mock(Preference.class); when(pref22.getKey()).thenReturn("key22"); prefGroup2.addPreference(pref21); prefGroup2.addPreference(pref22); PreferenceGroup prefGroup41 = spy(new PreferenceScreen(context, null)); when(prefGroup41.getKey()).thenReturn("group41"); when(prefGroup41.getPreferenceManager()).thenReturn(preferenceManager); Preference pref42 = mock(Preference.class); when(pref42.getKey()).thenReturn("key42"); prefGroup4.addPreference(prefGroup41); prefGroup4.addPreference(pref42); // 3rd level Preference pref411 = mock(Preference.class); when(pref411.getKey()).thenReturn("key411"); Preference pref412 = mock(Preference.class); when(pref412.getKey()).thenReturn("key412"); prefGroup41.addPreference(pref411); prefGroup41.addPreference(pref412); mTestPrefController.removePreference(prefRoot, "key1"); verify(prefRoot).removePreference(pref1); mTestPrefController.removePreference(prefRoot, "key411"); verify(prefGroup41).removePreference(pref411); mTestPrefController.removePreference(prefRoot, "group41"); verify(prefGroup4).removePreference(prefGroup41); assertThat(mPreference.isVisible()).isFalse(); } private class TestPrefController extends AbstractPreferenceController { Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/development/EnableAdbPreferenceControllerTest.java +4 −11 Original line number Diff line number Diff line Loading @@ -17,14 +17,9 @@ package com.android.settingslib.development; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Answers.RETURNS_DEEP_STUBS; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; Loading Loading @@ -67,21 +62,19 @@ public class EnableAdbPreferenceControllerTest { shadowContext.setSystemService(Context.USER_SERVICE, mUserManager); mContext = spy(shadowContext.getApplicationContext()); when(mContext.getPackageManager()).thenReturn(mPackageManager); mPreference = new SwitchPreference(mContext); when(mScreen.findPreference(anyString())).thenReturn(mPreference); mController = new ConcreteEnableAdbPreferenceController(mContext); mPreference = new SwitchPreference(mContext); mPreference.setKey(mController.getPreferenceKey()); when(mScreen.findPreference(mPreference.getKey())).thenReturn(mPreference); } @Test public void displayPreference_isNotAdmin_shouldRemovePreference() { when(mUserManager.isAdminUser()).thenReturn(false); when(mScreen.getPreferenceCount()).thenReturn(1); when(mScreen.getPreference(0)).thenReturn(mPreference); mController.displayPreference(mScreen); verify(mScreen).removePreference(any(Preference.class)); assertThat(mPreference.isVisible()).isFalse(); } @Test Loading @@ -90,7 +83,7 @@ public class EnableAdbPreferenceControllerTest { mController.displayPreference(mScreen); verify(mScreen, never()).removePreference(any(Preference.class)); assertThat(mPreference.isVisible()).isTrue(); } Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/SerialNumberPreferenceControllerTest.java +18 −26 Original line number Diff line number Diff line Loading @@ -17,13 +17,6 @@ package com.android.settingslib.deviceinfo; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Answers.RETURNS_DEEP_STUBS; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; Loading @@ -38,68 +31,67 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; @RunWith(SettingsLibRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class SerialNumberPreferenceControllerTest { @Mock(answer = RETURNS_DEEP_STUBS) private Context mContext; @Mock(answer = RETURNS_DEEP_STUBS) @Mock private PreferenceScreen mScreen; private Context mContext; private Preference mPreference; private AbstractSerialNumberPreferenceController mController; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; mPreference = new Preference(mContext); mPreference.setKey(AbstractSerialNumberPreferenceController.KEY_SERIAL_NUMBER); when(mScreen.findPreference(mPreference.getKey())).thenReturn(mPreference); } @Test public void testIsAvaiable_noSerial_shouldReturnFalse() { mController = new ConcreteSerialNumberPreferenceController(mContext, null); mController = new TestPreferenceController(mContext, null); assertThat(mController.isAvailable()).isFalse(); } @Test public void testIsAvaiable_hasSerial_shouldReturnTrue() { mController = new ConcreteSerialNumberPreferenceController(mContext, "123"); public void testIsAvailable_hasSerial_shouldReturnTrue() { mController = new TestPreferenceController(mContext, "123"); assertThat(mController.isAvailable()).isTrue(); } @Test public void testDisplay_noSerial_shouldHidePreference() { final Preference preference = mock(Preference.class); when(mScreen.getPreferenceCount()).thenReturn(1); when(mScreen.getPreference(0)).thenReturn(preference); mController = new ConcreteSerialNumberPreferenceController(mContext, null); when(preference.getKey()).thenReturn(mController.getPreferenceKey()); mController = new TestPreferenceController(mContext, null); mController.displayPreference(mScreen); verify(mScreen).removePreference(any(Preference.class)); assertThat(mPreference.isVisible()).isFalse(); } @Test public void testDisplay_hasSerial_shouldSetSummary() { final String serial = "123"; final Preference preference = mock(Preference.class); when(mScreen.findPreference(anyString())).thenReturn(preference); mController = new ConcreteSerialNumberPreferenceController(mContext, serial); mController = new TestPreferenceController(mContext, serial); mController.displayPreference(mScreen); verify(mScreen, never()).removePreference(any(Preference.class)); verify(preference).setSummary(serial); assertThat(mPreference.isVisible()).isTrue(); assertThat(mPreference.getSummary()).isEqualTo(serial); } private static class ConcreteSerialNumberPreferenceController private static class TestPreferenceController extends AbstractSerialNumberPreferenceController { ConcreteSerialNumberPreferenceController(Context context, String serialNumber) { TestPreferenceController(Context context, String serialNumber) { super(context, serialNumber); } } Loading Loading
packages/SettingsLib/src/com/android/settingslib/core/AbstractPreferenceController.java +4 −30 Original line number Diff line number Diff line Loading @@ -20,14 +20,16 @@ public abstract class AbstractPreferenceController { * Displays preference in this controller. */ public void displayPreference(PreferenceScreen screen) { final String prefKey = getPreferenceKey(); if (isAvailable()) { setVisible(screen, prefKey, true /* visible */); if (this instanceof Preference.OnPreferenceChangeListener) { final Preference preference = screen.findPreference(getPreferenceKey()); final Preference preference = screen.findPreference(prefKey); preference.setOnPreferenceChangeListener( (Preference.OnPreferenceChangeListener) this); } } else { removePreference(screen, getPreferenceKey()); setVisible(screen, prefKey, false /* visible */); } } Loading Loading @@ -58,13 +60,6 @@ public abstract class AbstractPreferenceController { */ public abstract String getPreferenceKey(); /** * Removes preference from screen. */ protected final void removePreference(PreferenceScreen screen, String key) { findAndRemovePreference(screen, key); } /** * Show/hide a preference. */ Loading @@ -74,25 +69,4 @@ public abstract class AbstractPreferenceController { pref.setVisible(isVisible); } } // finds the preference recursively and removes it from its parent private boolean findAndRemovePreference(PreferenceGroup prefGroup, String key) { final int preferenceCount = prefGroup.getPreferenceCount(); for (int i = 0; i < preferenceCount; i++) { final Preference preference = prefGroup.getPreference(i); final String curKey = preference.getKey(); if (curKey != null && curKey.equals(key)) { return prefGroup.removePreference(preference); } if (preference instanceof PreferenceGroup) { if (findAndRemovePreference((PreferenceGroup) preference, key)) { return true; } } } return false; } }
packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractSerialNumberPreferenceController.java +4 −2 Original line number Diff line number Diff line Loading @@ -18,18 +18,20 @@ package com.android.settingslib.deviceinfo; import android.content.Context; import android.os.Build; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import android.text.TextUtils; import com.android.internal.annotations.VisibleForTesting; import com.android.settingslib.core.AbstractPreferenceController; /** * Preference controller for displaying device serial number. Wraps {@link Build#getSerial()}. */ public class AbstractSerialNumberPreferenceController extends AbstractPreferenceController { private static final String KEY_SERIAL_NUMBER = "serial_number"; @VisibleForTesting static final String KEY_SERIAL_NUMBER = "serial_number"; private final String mSerialNumber; Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/AbstractPreferenceControllerTest.java +8 −91 Original line number Diff line number Diff line Loading @@ -16,17 +16,10 @@ package com.android.settingslib.core; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceGroup; import android.support.v7.preference.PreferenceManager; import android.support.v7.preference.PreferenceScreen; import com.android.settingslib.TestConfig; Loading @@ -39,134 +32,58 @@ import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowApplication; @RunWith(RobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class AbstractPreferenceControllerTest { @Mock private Context mContext; @Mock private PreferenceScreen mScreen; private Context mContext; private Preference mPreference; private TestPrefController mTestPrefController; @Before public void setUp() { MockitoAnnotations.initMocks(this); mPreference = new Preference(RuntimeEnvironment.application); mContext = RuntimeEnvironment.application; mPreference = new Preference(mContext); mPreference.setKey(TestPrefController.KEY_PREF); when(mScreen.findPreference(TestPrefController.KEY_PREF)).thenReturn(mPreference); mTestPrefController = new TestPrefController(mContext); } @Test public void removeExistingPref_shouldBeRemoved() { when(mScreen.getPreferenceCount()).thenReturn(1); when(mScreen.getPreference(0)).thenReturn(mPreference); mTestPrefController.removePreference(mScreen, TestPrefController.KEY_PREF); verify(mScreen).removePreference(mPreference); } @Test public void removeNonExistingPref_shouldNotRemoveAnything() { mTestPrefController.removePreference(mScreen, TestPrefController.KEY_PREF); verify(mScreen, never()).removePreference(any(Preference.class)); } @Test public void displayPref_ifAvailable() { mTestPrefController.isAvailable = true; mTestPrefController.displayPreference(mScreen); verify(mScreen, never()).removePreference(any(Preference.class)); assertThat(mPreference.isVisible()).isTrue(); } @Test public void setVisible_prefIsVisible_shouldSetToVisible() { when(mScreen.findPreference(TestPrefController.KEY_PREF)).thenReturn(mPreference); mTestPrefController.setVisible(mScreen, TestPrefController.KEY_PREF, true /* visible */); assertThat(mPreference.isVisible()).isTrue(); } @Test public void setVisible_prefNotVisible_shouldSetToInvisible() { when(mScreen.findPreference(TestPrefController.KEY_PREF)).thenReturn(mPreference); mTestPrefController.setVisible(mScreen, TestPrefController.KEY_PREF, false /* visible */); assertThat(mPreference.isVisible()).isFalse(); } @Test public void doNotDisplayPref_ifNotAvailable() { when(mScreen.getPreferenceCount()).thenReturn(1); when(mScreen.getPreference(0)).thenReturn(mPreference); mTestPrefController.isAvailable = false; mTestPrefController.displayPreference(mScreen); verify(mScreen).removePreference(any(Preference.class)); } @Test public void removePreference_shouldRemoveRecursively() { final Context context = ShadowApplication.getInstance().getApplicationContext(); final PreferenceManager preferenceManager = mock(PreferenceManager.class); // Top level PreferenceScreen prefRoot = spy(new PreferenceScreen(context, null)); when(prefRoot.getPreferenceManager()).thenReturn(preferenceManager); Preference pref1 = mock(Preference.class); when(pref1.getKey()).thenReturn("key1"); PreferenceGroup prefGroup2 = spy(new PreferenceScreen(context, null)); when(prefGroup2.getPreferenceManager()).thenReturn(preferenceManager); when(prefGroup2.getKey()).thenReturn("group2"); Preference pref3 = mock(Preference.class); when(pref3.getKey()).thenReturn("key3"); PreferenceGroup prefGroup4 = spy(new PreferenceScreen(context, null)); when(prefGroup4.getPreferenceManager()).thenReturn(preferenceManager); when(prefGroup4.getKey()).thenReturn("group4"); prefRoot.addPreference(pref1); prefRoot.addPreference(prefGroup2); prefRoot.addPreference(pref3); prefRoot.addPreference(prefGroup4); // 2nd level Preference pref21 = mock(Preference.class); when(pref21.getKey()).thenReturn("key21"); Preference pref22 = mock(Preference.class); when(pref22.getKey()).thenReturn("key22"); prefGroup2.addPreference(pref21); prefGroup2.addPreference(pref22); PreferenceGroup prefGroup41 = spy(new PreferenceScreen(context, null)); when(prefGroup41.getKey()).thenReturn("group41"); when(prefGroup41.getPreferenceManager()).thenReturn(preferenceManager); Preference pref42 = mock(Preference.class); when(pref42.getKey()).thenReturn("key42"); prefGroup4.addPreference(prefGroup41); prefGroup4.addPreference(pref42); // 3rd level Preference pref411 = mock(Preference.class); when(pref411.getKey()).thenReturn("key411"); Preference pref412 = mock(Preference.class); when(pref412.getKey()).thenReturn("key412"); prefGroup41.addPreference(pref411); prefGroup41.addPreference(pref412); mTestPrefController.removePreference(prefRoot, "key1"); verify(prefRoot).removePreference(pref1); mTestPrefController.removePreference(prefRoot, "key411"); verify(prefGroup41).removePreference(pref411); mTestPrefController.removePreference(prefRoot, "group41"); verify(prefGroup4).removePreference(prefGroup41); assertThat(mPreference.isVisible()).isFalse(); } private class TestPrefController extends AbstractPreferenceController { Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/development/EnableAdbPreferenceControllerTest.java +4 −11 Original line number Diff line number Diff line Loading @@ -17,14 +17,9 @@ package com.android.settingslib.development; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Answers.RETURNS_DEEP_STUBS; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; Loading Loading @@ -67,21 +62,19 @@ public class EnableAdbPreferenceControllerTest { shadowContext.setSystemService(Context.USER_SERVICE, mUserManager); mContext = spy(shadowContext.getApplicationContext()); when(mContext.getPackageManager()).thenReturn(mPackageManager); mPreference = new SwitchPreference(mContext); when(mScreen.findPreference(anyString())).thenReturn(mPreference); mController = new ConcreteEnableAdbPreferenceController(mContext); mPreference = new SwitchPreference(mContext); mPreference.setKey(mController.getPreferenceKey()); when(mScreen.findPreference(mPreference.getKey())).thenReturn(mPreference); } @Test public void displayPreference_isNotAdmin_shouldRemovePreference() { when(mUserManager.isAdminUser()).thenReturn(false); when(mScreen.getPreferenceCount()).thenReturn(1); when(mScreen.getPreference(0)).thenReturn(mPreference); mController.displayPreference(mScreen); verify(mScreen).removePreference(any(Preference.class)); assertThat(mPreference.isVisible()).isFalse(); } @Test Loading @@ -90,7 +83,7 @@ public class EnableAdbPreferenceControllerTest { mController.displayPreference(mScreen); verify(mScreen, never()).removePreference(any(Preference.class)); assertThat(mPreference.isVisible()).isTrue(); } Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/SerialNumberPreferenceControllerTest.java +18 −26 Original line number Diff line number Diff line Loading @@ -17,13 +17,6 @@ package com.android.settingslib.deviceinfo; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Answers.RETURNS_DEEP_STUBS; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; Loading @@ -38,68 +31,67 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; @RunWith(SettingsLibRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class SerialNumberPreferenceControllerTest { @Mock(answer = RETURNS_DEEP_STUBS) private Context mContext; @Mock(answer = RETURNS_DEEP_STUBS) @Mock private PreferenceScreen mScreen; private Context mContext; private Preference mPreference; private AbstractSerialNumberPreferenceController mController; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; mPreference = new Preference(mContext); mPreference.setKey(AbstractSerialNumberPreferenceController.KEY_SERIAL_NUMBER); when(mScreen.findPreference(mPreference.getKey())).thenReturn(mPreference); } @Test public void testIsAvaiable_noSerial_shouldReturnFalse() { mController = new ConcreteSerialNumberPreferenceController(mContext, null); mController = new TestPreferenceController(mContext, null); assertThat(mController.isAvailable()).isFalse(); } @Test public void testIsAvaiable_hasSerial_shouldReturnTrue() { mController = new ConcreteSerialNumberPreferenceController(mContext, "123"); public void testIsAvailable_hasSerial_shouldReturnTrue() { mController = new TestPreferenceController(mContext, "123"); assertThat(mController.isAvailable()).isTrue(); } @Test public void testDisplay_noSerial_shouldHidePreference() { final Preference preference = mock(Preference.class); when(mScreen.getPreferenceCount()).thenReturn(1); when(mScreen.getPreference(0)).thenReturn(preference); mController = new ConcreteSerialNumberPreferenceController(mContext, null); when(preference.getKey()).thenReturn(mController.getPreferenceKey()); mController = new TestPreferenceController(mContext, null); mController.displayPreference(mScreen); verify(mScreen).removePreference(any(Preference.class)); assertThat(mPreference.isVisible()).isFalse(); } @Test public void testDisplay_hasSerial_shouldSetSummary() { final String serial = "123"; final Preference preference = mock(Preference.class); when(mScreen.findPreference(anyString())).thenReturn(preference); mController = new ConcreteSerialNumberPreferenceController(mContext, serial); mController = new TestPreferenceController(mContext, serial); mController.displayPreference(mScreen); verify(mScreen, never()).removePreference(any(Preference.class)); verify(preference).setSummary(serial); assertThat(mPreference.isVisible()).isTrue(); assertThat(mPreference.getSummary()).isEqualTo(serial); } private static class ConcreteSerialNumberPreferenceController private static class TestPreferenceController extends AbstractSerialNumberPreferenceController { ConcreteSerialNumberPreferenceController(Context context, String serialNumber) { TestPreferenceController(Context context, String serialNumber) { super(context, serialNumber); } } Loading