1f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler/* 2f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler * Copyright (C) 2017 The Android Open Source Project 3f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler * 4f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler * Licensed under the Apache License, Version 2.0 (the "License"); 5f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler * you may not use this file except in compliance with the License. 6f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler * You may obtain a copy of the License at 7f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler * 8f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler * http://www.apache.org/licenses/LICENSE-2.0 9f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler * 10f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler * Unless required by applicable law or agreed to in writing, software 11f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler * distributed under the License is distributed on an "AS IS" BASIS, 12f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler * See the License for the specific language governing permissions and 14f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler * limitations under the License. 15f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler */ 16f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler 17f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantlerpackage com.android.settingslib.deviceinfo; 18f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler 19f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantlerimport static com.google.common.truth.Truth.assertThat; 20f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantlerimport static org.mockito.Mockito.when; 21f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler 22f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantlerimport android.content.Context; 23f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantlerimport android.support.v7.preference.Preference; 24f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantlerimport android.support.v7.preference.PreferenceScreen; 25f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler 26f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantlerimport com.android.settingslib.SettingsLibRobolectricTestRunner; 27f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler 28f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantlerimport org.junit.Before; 29f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantlerimport org.junit.Test; 30f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantlerimport org.junit.runner.RunWith; 31f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantlerimport org.mockito.Mock; 32f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantlerimport org.mockito.MockitoAnnotations; 337293cf44ba3a2cb7be4a47790d31aa294d86609fFan Zhangimport org.robolectric.RuntimeEnvironment; 34f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler 35f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler@RunWith(SettingsLibRobolectricTestRunner.class) 36f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantlerpublic class SerialNumberPreferenceControllerTest { 37f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler 387293cf44ba3a2cb7be4a47790d31aa294d86609fFan Zhang @Mock 39f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler private PreferenceScreen mScreen; 40f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler 417293cf44ba3a2cb7be4a47790d31aa294d86609fFan Zhang private Context mContext; 427293cf44ba3a2cb7be4a47790d31aa294d86609fFan Zhang private Preference mPreference; 43f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler private AbstractSerialNumberPreferenceController mController; 44f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler 45f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler @Before 46f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler public void setUp() { 47f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler MockitoAnnotations.initMocks(this); 487293cf44ba3a2cb7be4a47790d31aa294d86609fFan Zhang mContext = RuntimeEnvironment.application; 497293cf44ba3a2cb7be4a47790d31aa294d86609fFan Zhang mPreference = new Preference(mContext); 507293cf44ba3a2cb7be4a47790d31aa294d86609fFan Zhang mPreference.setKey(AbstractSerialNumberPreferenceController.KEY_SERIAL_NUMBER); 517293cf44ba3a2cb7be4a47790d31aa294d86609fFan Zhang when(mScreen.findPreference(mPreference.getKey())).thenReturn(mPreference); 52f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler } 53f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler 54f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler @Test 55f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler public void testIsAvaiable_noSerial_shouldReturnFalse() { 567293cf44ba3a2cb7be4a47790d31aa294d86609fFan Zhang mController = new TestPreferenceController(mContext, null); 57f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler 58f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler assertThat(mController.isAvailable()).isFalse(); 59f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler } 60f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler 61f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler @Test 627293cf44ba3a2cb7be4a47790d31aa294d86609fFan Zhang public void testIsAvailable_hasSerial_shouldReturnTrue() { 637293cf44ba3a2cb7be4a47790d31aa294d86609fFan Zhang mController = new TestPreferenceController(mContext, "123"); 64f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler 65f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler assertThat(mController.isAvailable()).isTrue(); 66f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler } 67f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler 68f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler @Test 69f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler public void testDisplay_noSerial_shouldHidePreference() { 707293cf44ba3a2cb7be4a47790d31aa294d86609fFan Zhang mController = new TestPreferenceController(mContext, null); 71f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler 72f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler mController.displayPreference(mScreen); 73f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler 747293cf44ba3a2cb7be4a47790d31aa294d86609fFan Zhang assertThat(mPreference.isVisible()).isFalse(); 75f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler } 76f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler 77f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler @Test 78f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler public void testDisplay_hasSerial_shouldSetSummary() { 79f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler final String serial = "123"; 80f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler 817293cf44ba3a2cb7be4a47790d31aa294d86609fFan Zhang mController = new TestPreferenceController(mContext, serial); 82f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler mController.displayPreference(mScreen); 83f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler 847293cf44ba3a2cb7be4a47790d31aa294d86609fFan Zhang assertThat(mPreference.isVisible()).isTrue(); 857293cf44ba3a2cb7be4a47790d31aa294d86609fFan Zhang assertThat(mPreference.getSummary()).isEqualTo(serial); 86f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler } 87f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler 887293cf44ba3a2cb7be4a47790d31aa294d86609fFan Zhang private static class TestPreferenceController 89f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler extends AbstractSerialNumberPreferenceController { 90f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler 917293cf44ba3a2cb7be4a47790d31aa294d86609fFan Zhang TestPreferenceController(Context context, String serialNumber) { 92f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler super(context, serialNumber); 93f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler } 94f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler } 95f43b986e2054ecf2ea70ed3f80df8cc8d586cbeaTony Mantler} 96