From d59d32e106c1f10df7a0002a6bcd20b1aa6292e3 Mon Sep 17 00:00:00 2001 From: govenliu Date: Thu, 23 Apr 2020 12:46:47 +0800 Subject: [PATCH] [Wi-Fi] Add new unit test file WifiP2pSettingsTest.java. Add new unit test file WifiP2pSettingsTest.java. Bug: 151696220 Test: make RunSettingsRoboTests ROBOTEST_FILTER=WifiP2pSettingsTest Change-Id: I686658969a801e385a102022c6854d8bb8972d3c --- .../settings/wifi/p2p/WifiP2pSettings.java | 11 +- .../wifi/p2p/WifiP2pSettingsTest.java | 105 ++++++++++++++++++ 2 files changed, 111 insertions(+), 5 deletions(-) create mode 100644 tests/robotests/src/com/android/settings/wifi/p2p/WifiP2pSettingsTest.java diff --git a/src/com/android/settings/wifi/p2p/WifiP2pSettings.java b/src/com/android/settings/wifi/p2p/WifiP2pSettings.java index 8544a53cdb3..7f82359de93 100644 --- a/src/com/android/settings/wifi/p2p/WifiP2pSettings.java +++ b/src/com/android/settings/wifi/p2p/WifiP2pSettings.java @@ -50,6 +50,7 @@ import android.view.View; import android.widget.EditText; import android.widget.Toast; +import androidx.annotation.VisibleForTesting; import androidx.appcompat.app.AlertDialog; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; @@ -79,9 +80,9 @@ public class WifiP2pSettings extends DashboardFragment private OnClickListener mDisconnectListener; private OnClickListener mCancelConnectListener; private OnClickListener mDeleteGroupListener; - private WifiP2pPeer mSelectedWifiPeer; + @VisibleForTesting WifiP2pPeer mSelectedWifiPeer; private WifiP2pPersistentGroup mSelectedGroup; - private String mSelectedGroupName; + @VisibleForTesting String mSelectedGroupName; private EditText mDeviceNameText; private boolean mWifiP2pEnabled; @@ -100,13 +101,13 @@ public class WifiP2pSettings extends DashboardFragment private static final int DIALOG_DELETE_GROUP = 4; private static final String SAVE_DIALOG_PEER = "PEER_STATE"; - private static final String SAVE_DEVICE_NAME = "DEV_NAME"; - private static final String SAVE_SELECTED_GROUP = "GROUP_NAME"; + @VisibleForTesting static final String SAVE_DEVICE_NAME = "DEV_NAME"; + @VisibleForTesting static final String SAVE_SELECTED_GROUP = "GROUP_NAME"; private WifiP2pDevice mThisDevice; private WifiP2pDeviceList mPeers = new WifiP2pDeviceList(); - private String mSavedDeviceName; + @VisibleForTesting String mSavedDeviceName; private final BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override diff --git a/tests/robotests/src/com/android/settings/wifi/p2p/WifiP2pSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/p2p/WifiP2pSettingsTest.java new file mode 100644 index 00000000000..ba6a0758393 --- /dev/null +++ b/tests/robotests/src/com/android/settings/wifi/p2p/WifiP2pSettingsTest.java @@ -0,0 +1,105 @@ +/* + * Copyright (C) 2020 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 com.android.settings.wifi.p2p; + +import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.when; + +import android.content.Context; +import android.os.Bundle; + +import androidx.fragment.app.FragmentActivity; + +import com.android.settings.testutils.XmlTestUtils; +import com.android.settingslib.core.AbstractPreferenceController; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.MockitoAnnotations; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.RuntimeEnvironment; + +import java.util.ArrayList; +import java.util.List; + +@RunWith(RobolectricTestRunner.class) +public class WifiP2pSettingsTest { + + private Context mContext; + private FragmentActivity mActivity; + private WifiP2pSettings mFragment; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + mContext = RuntimeEnvironment.application; + mActivity = Robolectric.setupActivity(FragmentActivity.class); + mFragment = spy(new WifiP2pSettings()); + } + + @Test + public void preferenceScreenKey_shouldContainsAllControllerKeys() { + final List preferenceScreenKeys = XmlTestUtils.getKeysFromPreferenceXml(mContext, + mFragment.getPreferenceScreenResId()); + final List preferenceKeys = new ArrayList<>(); + + for (AbstractPreferenceController controller : mFragment.createPreferenceControllers( + mContext)) { + preferenceKeys.add(controller.getPreferenceKey()); + } + + assertThat(preferenceScreenKeys).containsAllIn(preferenceKeys); + } + + @Test + public void onActivityCreate_withNullBundle_canNotGetValue() { + when(mFragment.getActivity()).thenReturn(mActivity); + + mFragment.onActivityCreated(null); + + assertThat(mFragment.mSelectedWifiPeer).isNull(); + } + + @Test + public void onActivityCreate_withDeviceName_shouldGetDeviceName() { + when(mFragment.getActivity()).thenReturn(mActivity); + final String fakeDeviceName = "fakename"; + final Bundle bundle = new Bundle(); + bundle.putString(WifiP2pSettings.SAVE_DEVICE_NAME, fakeDeviceName); + + mFragment.onActivityCreated(bundle); + + assertThat(mFragment.mSavedDeviceName).isEqualTo(fakeDeviceName); + } + + @Test + public void onActivityCreate_withGroupName_shouldGetGroupName() { + when(mFragment.getActivity()).thenReturn(mActivity); + final String fakeGroupName = "fakegroup"; + final Bundle bundle = new Bundle(); + bundle.putString(WifiP2pSettings.SAVE_SELECTED_GROUP, fakeGroupName); + + mFragment.onActivityCreated(bundle); + + assertThat(mFragment.mSelectedGroupName).isEqualTo(fakeGroupName); + assertThat(mFragment.mSavedDeviceName).isNull(); + } +}