Merge "Correct detail page UI once user change MAC randomized setting" into qt-dev
This commit is contained in:
@@ -146,7 +146,8 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
|
|||||||
private static final long TIMEOUT = Duration.ofSeconds(10).toMillis();
|
private static final long TIMEOUT = Duration.ofSeconds(10).toMillis();
|
||||||
|
|
||||||
// Be static to avoid too much object not be reset.
|
// Be static to avoid too much object not be reset.
|
||||||
private static CountDownTimer mTimer;
|
@VisibleForTesting
|
||||||
|
static CountDownTimer mTimer;
|
||||||
|
|
||||||
private AccessPoint mAccessPoint;
|
private AccessPoint mAccessPoint;
|
||||||
private final ConnectivityManager mConnectivityManager;
|
private final ConnectivityManager mConnectivityManager;
|
||||||
@@ -256,20 +257,15 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLost(Network network) {
|
public void onLost(Network network) {
|
||||||
final boolean lostCurrentNetwork = network.equals(mNetwork);
|
// Ephemeral network not a saved network, leave detail page once disconnected
|
||||||
if (lostCurrentNetwork) {
|
if (mIsEphemeral && network.equals(mNetwork)) {
|
||||||
// Should update as disconnect but not exit. Except for ephemeral network which
|
|
||||||
// should not show on saved network list.
|
|
||||||
if (!mIsEphemeral) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
exitActivity();
|
exitActivity();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private final WifiTracker.WifiListener mWifiListener = new WifiTracker.WifiListener() {
|
@VisibleForTesting
|
||||||
|
final WifiTracker.WifiListener mWifiListener = new WifiTracker.WifiListener() {
|
||||||
/** Called when the state of Wifi has changed. */
|
/** Called when the state of Wifi has changed. */
|
||||||
public void onWifiStateChanged(int state) {
|
public void onWifiStateChanged(int state) {
|
||||||
Log.d(TAG, "onWifiStateChanged(" + state + ")");
|
Log.d(TAG, "onWifiStateChanged(" + state + ")");
|
||||||
@@ -284,16 +280,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
|
|||||||
|
|
||||||
/** Called when the connection state of wifi has changed. */
|
/** Called when the connection state of wifi has changed. */
|
||||||
public void onConnectedChanged() {
|
public void onConnectedChanged() {
|
||||||
updateAccessPointFromScannedList();
|
refreshPage();
|
||||||
if (mConnected != mAccessPoint.isActive()) {
|
|
||||||
Log.d(TAG, "Connection state changed!");
|
|
||||||
mConnected = mAccessPoint.isActive();
|
|
||||||
if (mAccessPoint.isActive()) {
|
|
||||||
updateConnectingState(STATE_CONNECTED);
|
|
||||||
} else {
|
|
||||||
updateConnectingState(STATE_DISCONNECTED);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -516,42 +503,41 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
|
|||||||
refreshMacAddress();
|
refreshMacAddress();
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean updateAccessPoint() {
|
@VisibleForTesting
|
||||||
|
boolean updateAccessPoint() {
|
||||||
boolean changed = false;
|
boolean changed = false;
|
||||||
if (mWifiTracker != null) {
|
// remember mIsOutOfRange as old before updated
|
||||||
// remember mIsOutOfRange as old before updated
|
boolean oldState = mIsOutOfRange;
|
||||||
boolean oldState = mIsOutOfRange;
|
updateAccessPointFromScannedList();
|
||||||
updateAccessPointFromScannedList();
|
|
||||||
// refresh UI if signal level changed for disconnect network.
|
|
||||||
changed = mRssiSignalLevel != mAccessPoint.getLevel();
|
|
||||||
changed |= oldState != mIsOutOfRange;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mAccessPoint.isActive()) {
|
if (mAccessPoint.isActive()) {
|
||||||
// Sometimes {@link WifiManager#getCurrentNetwork()} return null after connected,
|
updateNetworkInfo();
|
||||||
// refresh it if needed.
|
|
||||||
if (mNetwork == null) {
|
|
||||||
updateNetworkInfo();
|
|
||||||
}
|
|
||||||
mNetworkInfo = mConnectivityManager.getNetworkInfo(mNetwork);
|
mNetworkInfo = mConnectivityManager.getNetworkInfo(mNetwork);
|
||||||
mWifiInfo = mWifiManager.getConnectionInfo();
|
mWifiInfo = mWifiManager.getConnectionInfo();
|
||||||
if (mNetwork == null || mNetworkInfo == null || mWifiInfo == null) {
|
if (mNetwork == null || mNetworkInfo == null || mWifiInfo == null) {
|
||||||
// Once connected, can't get mNetworkInfo immediately, return false and wait for
|
// Once connected, can't get mNetwork immediately, return false and wait for
|
||||||
// next time to update UI.
|
// next time to update UI. also reset {@code mIsOutOfRange}
|
||||||
|
mIsOutOfRange = oldState;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
changed |= mAccessPoint.update(mWifiConfig, mWifiInfo, mNetworkInfo);
|
changed |= mAccessPoint.update(mWifiConfig, mWifiInfo, mNetworkInfo);
|
||||||
// If feature for saved network not enabled, always return true.
|
}
|
||||||
return mWifiTracker == null || changed;
|
|
||||||
|
// signal level changed
|
||||||
|
changed |= mRssiSignalLevel != mAccessPoint.getLevel();
|
||||||
|
// In/Out of range changed
|
||||||
|
changed |= oldState != mIsOutOfRange;
|
||||||
|
// connect state changed
|
||||||
|
if (mConnected != mAccessPoint.isActive()) {
|
||||||
|
mConnected = mAccessPoint.isActive();
|
||||||
|
changed = true;
|
||||||
|
updateConnectingState(mAccessPoint.isActive() ? STATE_CONNECTED : STATE_DISCONNECTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
return changed;
|
return changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateAccessPointFromScannedList() {
|
private void updateAccessPointFromScannedList() {
|
||||||
if (mWifiTracker == null) return;
|
|
||||||
|
|
||||||
mIsOutOfRange = true;
|
mIsOutOfRange = true;
|
||||||
|
|
||||||
for (AccessPoint ap : mWifiTracker.getAccessPoints()) {
|
for (AccessPoint ap : mWifiTracker.getAccessPoints()) {
|
||||||
@@ -967,7 +953,8 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
|
|||||||
return FeatureFlagUtils.isEnabled(context, FeatureFlags.WIFI_DETAILS_DATAUSAGE_HEADER);
|
return FeatureFlagUtils.isEnabled(context, FeatureFlags.WIFI_DETAILS_DATAUSAGE_HEADER);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void connectNetwork() {
|
@VisibleForTesting
|
||||||
|
void connectNetwork() {
|
||||||
final Activity activity = mFragment.getActivity();
|
final Activity activity = mFragment.getActivity();
|
||||||
// error handling, connected/saved network should have mWifiConfig.
|
// error handling, connected/saved network should have mWifiConfig.
|
||||||
if (mWifiConfig == null) {
|
if (mWifiConfig == null) {
|
||||||
@@ -1045,7 +1032,6 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
|
|||||||
mAccessPoint.getTitle()),
|
mAccessPoint.getTitle()),
|
||||||
Toast.LENGTH_SHORT).show();
|
Toast.LENGTH_SHORT).show();
|
||||||
|
|
||||||
updateNetworkInfo();
|
|
||||||
refreshPage();
|
refreshPage();
|
||||||
} else if (state == STATE_NOT_IN_RANGE) {
|
} else if (state == STATE_NOT_IN_RANGE) {
|
||||||
Log.d(TAG, "AP not in range");
|
Log.d(TAG, "AP not in range");
|
||||||
@@ -1084,7 +1070,11 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
|
|||||||
.setButton3Enabled(false);
|
.setButton3Enabled(false);
|
||||||
break;
|
break;
|
||||||
case STATE_CONNECTED:
|
case STATE_CONNECTED:
|
||||||
mButtonsPref.setButton3Visible(false);
|
// init button state and set as invisible
|
||||||
|
mButtonsPref.setButton3Text(R.string.wifi_connect)
|
||||||
|
.setButton3Icon(R.drawable.ic_settings_wireless)
|
||||||
|
.setButton3Enabled(true)
|
||||||
|
.setButton3Visible(false);
|
||||||
break;
|
break;
|
||||||
case STATE_DISCONNECTED:
|
case STATE_DISCONNECTED:
|
||||||
case STATE_NOT_IN_RANGE:
|
case STATE_NOT_IN_RANGE:
|
||||||
|
@@ -35,6 +35,7 @@ import static org.mockito.Mockito.when;
|
|||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.res.Resources;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.graphics.drawable.BitmapDrawable;
|
import android.graphics.drawable.BitmapDrawable;
|
||||||
import android.graphics.drawable.ColorDrawable;
|
import android.graphics.drawable.ColorDrawable;
|
||||||
@@ -96,6 +97,7 @@ import org.mockito.MockitoAnnotations;
|
|||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
import org.robolectric.shadows.ShadowToast;
|
||||||
|
|
||||||
import java.net.Inet4Address;
|
import java.net.Inet4Address;
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
@@ -1309,6 +1311,406 @@ public class WifiDetailPreferenceControllerTest {
|
|||||||
verify(mockButtonsPref).setButton2Visible(false);
|
verify(mockButtonsPref).setButton2Visible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConnectButton_shouldInvisibleForConnectNetwork() {
|
||||||
|
setUpForConnectedNetwork();
|
||||||
|
|
||||||
|
displayAndResume();
|
||||||
|
|
||||||
|
verify(mockButtonsPref, times(1)).setButton3Visible(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConnectButton_shouldVisibleForDisconnectNetwork() {
|
||||||
|
setUpForDisconnectedNetwork();
|
||||||
|
|
||||||
|
displayAndResume();
|
||||||
|
|
||||||
|
verify(mockButtonsPref, times(1)).setButton3Visible(true);
|
||||||
|
verify(mockButtonsPref, times(1)).setButton3Text(R.string.wifi_connect);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setUpForToast() {
|
||||||
|
Resources res = mContext.getResources();
|
||||||
|
when(mockActivity.getResources()).thenReturn(res);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConnectButton_clickConnect_displayAsSuccess() {
|
||||||
|
setUpForDisconnectedNetwork();
|
||||||
|
when(mockWifiManager.isWifiEnabled()).thenReturn(true);
|
||||||
|
InOrder inOrder = inOrder(mockButtonsPref);
|
||||||
|
String label = "title";
|
||||||
|
when(mockAccessPoint.getTitle()).thenReturn(label);
|
||||||
|
setUpForToast();
|
||||||
|
|
||||||
|
displayAndResume();
|
||||||
|
|
||||||
|
// check connect button exist
|
||||||
|
verifyConnectBtnSetUpAsVisible(inOrder);
|
||||||
|
|
||||||
|
// click connect button
|
||||||
|
mController.connectNetwork();
|
||||||
|
|
||||||
|
// check display button as connecting
|
||||||
|
verify(mockWifiManager, times(1)).connect(anyInt(), any(WifiManager.ActionListener.class));
|
||||||
|
verifyConnectBtnSetUpAsConnecting(inOrder);
|
||||||
|
|
||||||
|
// update as connected
|
||||||
|
when(mockAccessPoint.isActive()).thenReturn(true);
|
||||||
|
mController.updateAccessPoint();
|
||||||
|
|
||||||
|
// check connect button invisible, be init as default state and toast success message
|
||||||
|
verifyConnectBtnBeInitAsDefault(inOrder);
|
||||||
|
inOrder.verify(mockButtonsPref, times(1)).setButton3Visible(false);
|
||||||
|
assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
|
||||||
|
mContext.getString(R.string.wifi_connected_to_message, label));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConnectButton_clickConnectButFailed_displayFailMessage() {
|
||||||
|
setUpForDisconnectedNetwork();
|
||||||
|
ArgumentCaptor<WifiManager.ActionListener> connectListenerCaptor =
|
||||||
|
ArgumentCaptor.forClass(WifiManager.ActionListener.class);
|
||||||
|
when(mockWifiManager.isWifiEnabled()).thenReturn(true);
|
||||||
|
InOrder inOrder = inOrder(mockButtonsPref);
|
||||||
|
setUpForToast();
|
||||||
|
|
||||||
|
displayAndResume();
|
||||||
|
|
||||||
|
// check connect button exist
|
||||||
|
verifyConnectBtnSetUpAsVisible(inOrder);
|
||||||
|
|
||||||
|
// click connect button
|
||||||
|
mController.connectNetwork();
|
||||||
|
|
||||||
|
// check display button as connecting
|
||||||
|
verify(mockWifiManager, times(1)).connect(anyInt(), connectListenerCaptor.capture());
|
||||||
|
verifyConnectBtnSetUpAsConnecting(inOrder);
|
||||||
|
|
||||||
|
// update as failed
|
||||||
|
connectListenerCaptor.getValue().onFailure(-1);
|
||||||
|
|
||||||
|
// check connect button visible, be init as default and toast failed message
|
||||||
|
verifyConnectBtnBeInitAsDefault(inOrder);
|
||||||
|
inOrder.verify(mockButtonsPref, times(1)).setButton3Visible(true);
|
||||||
|
assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
|
||||||
|
mContext.getString(R.string.wifi_failed_connect_message));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void verifyConnectBtnSetUpAsVisible(InOrder inOrder) {
|
||||||
|
inOrder.verify(mockButtonsPref, times(1)).setButton3Text(R.string.wifi_connect);
|
||||||
|
inOrder.verify(mockButtonsPref, times(1)).setButton3Icon(R.drawable.ic_settings_wireless);
|
||||||
|
inOrder.verify(mockButtonsPref, times(1)).setButton3Visible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void verifyConnectBtnSetUpAsConnecting(InOrder inOrder) {
|
||||||
|
inOrder.verify(mockButtonsPref, times(1)).setButton3Text(R.string.wifi_connecting);
|
||||||
|
inOrder.verify(mockButtonsPref, times(1)).setButton3Enabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void verifyConnectBtnBeInitAsDefault(InOrder inOrder) {
|
||||||
|
inOrder.verify(mockButtonsPref, times(1)).setButton3Text(R.string.wifi_connect);
|
||||||
|
inOrder.verify(mockButtonsPref, times(1)).setButton3Icon(R.drawable.ic_settings_wireless);
|
||||||
|
inOrder.verify(mockButtonsPref, times(1)).setButton3Enabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConnectButton_clickConnectButTimeout_displayFailMessage() {
|
||||||
|
setUpForDisconnectedNetwork();
|
||||||
|
when(mockWifiManager.isWifiEnabled()).thenReturn(true);
|
||||||
|
InOrder inOrder = inOrder(mockButtonsPref);
|
||||||
|
setUpForToast();
|
||||||
|
|
||||||
|
displayAndResume();
|
||||||
|
|
||||||
|
// check connect button exist
|
||||||
|
verifyConnectBtnSetUpAsVisible(inOrder);
|
||||||
|
|
||||||
|
// click connect button
|
||||||
|
mController.connectNetwork();
|
||||||
|
|
||||||
|
// check display button as connecting
|
||||||
|
verify(mockWifiManager, times(1)).connect(anyInt(), any(WifiManager.ActionListener.class));
|
||||||
|
verifyConnectBtnSetUpAsConnecting(inOrder);
|
||||||
|
|
||||||
|
// update as failed
|
||||||
|
mController.mTimer.onFinish();
|
||||||
|
|
||||||
|
// check connect button visible, be init as default and toast failed message
|
||||||
|
verifyConnectBtnBeInitAsDefault(inOrder);
|
||||||
|
inOrder.verify(mockButtonsPref, times(1)).setButton3Visible(true);
|
||||||
|
assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
|
||||||
|
mContext.getString(R.string.wifi_failed_connect_message));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConnectButton_clickConnectButTimeout_displayNotInRangeMessage() {
|
||||||
|
setUpForNotInRangeNetwork();
|
||||||
|
when(mockWifiManager.isWifiEnabled()).thenReturn(true);
|
||||||
|
InOrder inOrder = inOrder(mockButtonsPref);
|
||||||
|
setUpForToast();
|
||||||
|
|
||||||
|
displayAndResume();
|
||||||
|
|
||||||
|
// check connect button exist
|
||||||
|
verifyConnectBtnSetUpAsVisible(inOrder);
|
||||||
|
|
||||||
|
// click connect button
|
||||||
|
mController.connectNetwork();
|
||||||
|
|
||||||
|
// check display button as connecting
|
||||||
|
verify(mockWifiManager, times(1)).connect(anyInt(), any(WifiManager.ActionListener.class));
|
||||||
|
verifyConnectBtnSetUpAsConnecting(inOrder);
|
||||||
|
|
||||||
|
// update as failed
|
||||||
|
mController.mTimer.onFinish();
|
||||||
|
|
||||||
|
// check connect button visible, be init as default and toast failed message
|
||||||
|
verifyConnectBtnBeInitAsDefault(inOrder);
|
||||||
|
inOrder.verify(mockButtonsPref, times(1)).setButton3Visible(true);
|
||||||
|
assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
|
||||||
|
mContext.getString(R.string.wifi_not_in_range_message));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConnectButton_clickConnectWhenWiFiDisabled_displaySuccessMessage() {
|
||||||
|
setUpForDisconnectedNetwork();
|
||||||
|
when(mockWifiManager.isWifiEnabled()).thenReturn(false); // wifi disabled
|
||||||
|
InOrder inOrder = inOrder(mockButtonsPref);
|
||||||
|
String label = "title";
|
||||||
|
when(mockAccessPoint.getTitle()).thenReturn(label);
|
||||||
|
setUpForToast();
|
||||||
|
|
||||||
|
displayAndResume();
|
||||||
|
|
||||||
|
// check connect button exist
|
||||||
|
verifyConnectBtnSetUpAsVisible(inOrder);
|
||||||
|
|
||||||
|
// click connect button
|
||||||
|
mController.connectNetwork();
|
||||||
|
|
||||||
|
// check turn on Wi-Fi, display button as connecting and toast turn on Wi-Fi message
|
||||||
|
verify(mockWifiManager, times(1)).setWifiEnabled(true);
|
||||||
|
verifyConnectBtnSetUpAsConnecting(inOrder);
|
||||||
|
assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
|
||||||
|
mContext.getString(R.string.wifi_turned_on_message));
|
||||||
|
|
||||||
|
// notify Wi-Fi enabled
|
||||||
|
mController.mWifiListener.onWifiStateChanged(WifiManager.WIFI_STATE_ENABLED);
|
||||||
|
|
||||||
|
// check had connect network and icon display as expected
|
||||||
|
verify(mockWifiManager, times(1)).connect(anyInt(), any(WifiManager.ActionListener.class));
|
||||||
|
verifyConnectBtnSetUpAsConnecting(inOrder);
|
||||||
|
|
||||||
|
// update as connected
|
||||||
|
when(mockAccessPoint.isActive()).thenReturn(true);
|
||||||
|
mController.updateAccessPoint();
|
||||||
|
|
||||||
|
// check connect button invisible, be init as default state and toast success message
|
||||||
|
verifyConnectBtnBeInitAsDefault(inOrder);
|
||||||
|
inOrder.verify(mockButtonsPref, times(1)).setButton3Visible(false);
|
||||||
|
assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
|
||||||
|
mContext.getString(R.string.wifi_connected_to_message, label));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConnectButton_clickConnectWhenWiFiDisabled_failedToConnectWiFi() {
|
||||||
|
setUpForDisconnectedNetwork();
|
||||||
|
when(mockWifiManager.isWifiEnabled()).thenReturn(false); // wifi disabled
|
||||||
|
InOrder inOrder = inOrder(mockButtonsPref);
|
||||||
|
setUpForToast();
|
||||||
|
|
||||||
|
displayAndResume();
|
||||||
|
|
||||||
|
// check connect button exist
|
||||||
|
verifyConnectBtnSetUpAsVisible(inOrder);
|
||||||
|
|
||||||
|
// click connect button
|
||||||
|
mController.connectNetwork();
|
||||||
|
|
||||||
|
// check turn on Wi-Fi, display button as connecting and toast turn on Wi-Fi message
|
||||||
|
verify(mockWifiManager, times(1)).setWifiEnabled(true);
|
||||||
|
verifyConnectBtnSetUpAsConnecting(inOrder);
|
||||||
|
assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
|
||||||
|
mContext.getString(R.string.wifi_turned_on_message));
|
||||||
|
|
||||||
|
// notify Wi-Fi enabled
|
||||||
|
mController.mWifiListener.onWifiStateChanged(WifiManager.WIFI_STATE_ENABLED);
|
||||||
|
|
||||||
|
// check had connect network and icon display as expected
|
||||||
|
verify(mockWifiManager, times(1)).connect(anyInt(), any(WifiManager.ActionListener.class));
|
||||||
|
verifyConnectBtnSetUpAsConnecting(inOrder);
|
||||||
|
|
||||||
|
// update as failed
|
||||||
|
mController.mTimer.onFinish();
|
||||||
|
|
||||||
|
// check connect button visible, be init as default and toast failed message
|
||||||
|
verifyConnectBtnBeInitAsDefault(inOrder);
|
||||||
|
inOrder.verify(mockButtonsPref, times(1)).setButton3Visible(true);
|
||||||
|
assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
|
||||||
|
mContext.getString(R.string.wifi_failed_connect_message));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void
|
||||||
|
testConnectButton_clickConnectWhenWiFiDisabled_failedToConnectWifiBecauseNotInRange() {
|
||||||
|
setUpForNotInRangeNetwork();
|
||||||
|
when(mockWifiManager.isWifiEnabled()).thenReturn(false); // wifi disabled
|
||||||
|
InOrder inOrder = inOrder(mockButtonsPref);
|
||||||
|
setUpForToast();
|
||||||
|
|
||||||
|
displayAndResume();
|
||||||
|
|
||||||
|
// check connect button exist
|
||||||
|
verifyConnectBtnSetUpAsVisible(inOrder);
|
||||||
|
|
||||||
|
// click connect button
|
||||||
|
mController.connectNetwork();
|
||||||
|
|
||||||
|
// check turn on Wi-Fi, display button as connecting and toast turn on Wi-Fi message
|
||||||
|
verify(mockWifiManager, times(1)).setWifiEnabled(true);
|
||||||
|
verifyConnectBtnSetUpAsConnecting(inOrder);
|
||||||
|
assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
|
||||||
|
mContext.getString(R.string.wifi_turned_on_message));
|
||||||
|
|
||||||
|
// notify Wi-Fi enabled
|
||||||
|
mController.mWifiListener.onWifiStateChanged(WifiManager.WIFI_STATE_ENABLED);
|
||||||
|
|
||||||
|
// check had connect network and icon display as expected
|
||||||
|
verify(mockWifiManager, times(1)).connect(anyInt(), any(WifiManager.ActionListener.class));
|
||||||
|
verifyConnectBtnSetUpAsConnecting(inOrder);
|
||||||
|
|
||||||
|
// update as failed
|
||||||
|
mController.mTimer.onFinish();
|
||||||
|
|
||||||
|
// check connect button visible, be init as default and toast failed message
|
||||||
|
verifyConnectBtnBeInitAsDefault(inOrder);
|
||||||
|
inOrder.verify(mockButtonsPref, times(1)).setButton3Visible(true);
|
||||||
|
assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
|
||||||
|
mContext.getString(R.string.wifi_not_in_range_message));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConnectButton_clickConnectWhenWiFiDisabled_failedToEnableWifi() {
|
||||||
|
setUpForDisconnectedNetwork();
|
||||||
|
when(mockWifiManager.isWifiEnabled()).thenReturn(false); // wifi disabled
|
||||||
|
InOrder inOrder = inOrder(mockButtonsPref);
|
||||||
|
setUpForToast();
|
||||||
|
|
||||||
|
displayAndResume();
|
||||||
|
|
||||||
|
// check connect button exist
|
||||||
|
verifyConnectBtnSetUpAsVisible(inOrder);
|
||||||
|
|
||||||
|
// click connect button
|
||||||
|
mController.connectNetwork();
|
||||||
|
|
||||||
|
// check turn on Wi-Fi, display button as connecting and toast turn on Wi-Fi message
|
||||||
|
verify(mockWifiManager, times(1)).setWifiEnabled(true);
|
||||||
|
verifyConnectBtnSetUpAsConnecting(inOrder);
|
||||||
|
assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
|
||||||
|
mContext.getString(R.string.wifi_turned_on_message));
|
||||||
|
|
||||||
|
// notify turn on Wi-Fi failed
|
||||||
|
mController.mTimer.onFinish();
|
||||||
|
|
||||||
|
// check connect button visible, be init as default and toast failed message
|
||||||
|
verifyConnectBtnBeInitAsDefault(inOrder);
|
||||||
|
inOrder.verify(mockButtonsPref, times(1)).setButton3Visible(true);
|
||||||
|
assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
|
||||||
|
mContext.getString(R.string.wifi_failed_connect_message));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateAccessPoint_returnFalseForNothingChanged() {
|
||||||
|
setUpForDisconnectedNetwork();
|
||||||
|
|
||||||
|
displayAndResume();
|
||||||
|
boolean changed = mController.updateAccessPoint();
|
||||||
|
|
||||||
|
assertThat(changed).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateAccessPoint_returnTrueForSignalLevelChanged() {
|
||||||
|
setUpForDisconnectedNetwork();
|
||||||
|
|
||||||
|
displayAndResume();
|
||||||
|
|
||||||
|
// Level changed
|
||||||
|
when(mockAccessPoint.getLevel()).thenReturn(LEVEL + 1);
|
||||||
|
boolean changed = mController.updateAccessPoint();
|
||||||
|
|
||||||
|
assertThat(changed).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateAccessPoint_returnTrueForChangeAsNotInRange() {
|
||||||
|
setUpForDisconnectedNetwork();
|
||||||
|
|
||||||
|
displayAndResume();
|
||||||
|
|
||||||
|
// change as not in range
|
||||||
|
when(mockAccessPoint.matches(any(WifiConfiguration.class))).thenReturn(false);
|
||||||
|
boolean changed = mController.updateAccessPoint();
|
||||||
|
|
||||||
|
assertThat(changed).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateAccessPoint_returnTrueForChangeAsInRange() {
|
||||||
|
setUpForNotInRangeNetwork();
|
||||||
|
|
||||||
|
displayAndResume();
|
||||||
|
|
||||||
|
// change as in range
|
||||||
|
when(mockAccessPoint.matches(any(WifiConfiguration.class))).thenReturn(true);
|
||||||
|
boolean changed = mController.updateAccessPoint();
|
||||||
|
|
||||||
|
assertThat(changed).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateAccessPoint_returnTrueForChangeAsConnected() {
|
||||||
|
setUpForDisconnectedNetwork();
|
||||||
|
|
||||||
|
displayAndResume();
|
||||||
|
|
||||||
|
// change as connected
|
||||||
|
when(mockAccessPoint.isActive()).thenReturn(true);
|
||||||
|
boolean changed = mController.updateAccessPoint();
|
||||||
|
|
||||||
|
assertThat(changed).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateAccessPoint_returnTrueForChangeAsDisconnected() {
|
||||||
|
setUpForConnectedNetwork();
|
||||||
|
|
||||||
|
displayAndResume();
|
||||||
|
|
||||||
|
// change as disconnected
|
||||||
|
when(mockAccessPoint.isActive()).thenReturn(false);
|
||||||
|
boolean changed = mController.updateAccessPoint();
|
||||||
|
|
||||||
|
assertThat(changed).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateAccessPoint_returnTrueForAccessPointUpdated() {
|
||||||
|
setUpForConnectedNetwork();
|
||||||
|
|
||||||
|
displayAndResume();
|
||||||
|
|
||||||
|
// change as disconnected
|
||||||
|
when(mockAccessPoint.update(mockWifiConfig, mockWifiInfo, mockNetworkInfo))
|
||||||
|
.thenReturn(true);
|
||||||
|
boolean changed = mController.updateAccessPoint();
|
||||||
|
|
||||||
|
assertThat(changed).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testRefreshRssiViews_shouldNotUpdateIfLevelIsSameForConnectedNetwork() {
|
public void testRefreshRssiViews_shouldNotUpdateIfLevelIsSameForConnectedNetwork() {
|
||||||
setUpForConnectedNetwork();
|
setUpForConnectedNetwork();
|
||||||
|
Reference in New Issue
Block a user