WifiScannerTest: Add unit tests

Bug: 130035791
Test: ./frameworks/base/wifi/tests/runtests.sh
Change-Id: I7ba66213363cfd43a3c7d42e000165368dadeb8d
This commit is contained in:
Roshan Pius
2019-04-05 11:36:21 -07:00
parent aca5281331
commit 35b304d2ff

View File

@@ -18,10 +18,14 @@ package android.net.wifi;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.validateMockitoUsage;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context;
@@ -29,7 +33,9 @@ import android.net.wifi.WifiScanner.PnoSettings;
import android.net.wifi.WifiScanner.PnoSettings.PnoNetwork;
import android.net.wifi.WifiScanner.ScanData;
import android.net.wifi.WifiScanner.ScanSettings;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Parcel;
import android.os.test.TestLooper;
@@ -40,6 +46,7 @@ import com.android.internal.util.test.BidirectionalAsyncChannelServer;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
@@ -230,4 +237,145 @@ public class WifiScannerTest {
parcel.setDataPosition(0); // Rewind data position back to the beginning for read.
return ScanData.CREATOR.createFromParcel(parcel);
}
/**
* Test behavior of {@link WifiScanner#startScan(ScanSettings, WifiScanner.ScanListener)}
* @throws Exception
*/
@Test
public void testStartScan() throws Exception {
ScanSettings scanSettings = new ScanSettings();
WifiScanner.ScanListener scanListener = mock(WifiScanner.ScanListener.class);
mWifiScanner.startScan(scanSettings, scanListener);
mLooper.dispatchAll();
ArgumentCaptor<Message> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class);
verify(mHandler).handleMessage(messageArgumentCaptor.capture());
Message message = messageArgumentCaptor.getValue();
assertNotNull(message);
assertEquals(WifiScanner.CMD_START_SINGLE_SCAN, message.what);
assertTrue(message.obj instanceof Bundle);
Bundle messageBundle = (Bundle) message.obj;
assertEquals(scanSettings,
messageBundle.getParcelable(WifiScanner.SCAN_PARAMS_SCAN_SETTINGS_KEY));
assertNull(messageBundle.getParcelable(WifiScanner.SCAN_PARAMS_WORK_SOURCE_KEY));
assertEquals(mContext.getOpPackageName(),
messageBundle.getParcelable(WifiScanner.REQUEST_PACKAGE_NAME_KEY));
}
/**
* Test behavior of {@link WifiScanner#stopScan(WifiScanner.ScanListener)}
* @throws Exception
*/
@Test
public void testStopScan() throws Exception {
ScanSettings scanSettings = new ScanSettings();
WifiScanner.ScanListener scanListener = mock(WifiScanner.ScanListener.class);
mWifiScanner.startScan(scanSettings, scanListener);
mLooper.dispatchAll();
mWifiScanner.stopScan(scanListener);
mLooper.dispatchAll();
ArgumentCaptor<Message> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class);
verify(mHandler, times(2)).handleMessage(messageArgumentCaptor.capture());
Message message = messageArgumentCaptor.getValue();
assertNotNull(message);
assertEquals(WifiScanner.CMD_STOP_SINGLE_SCAN, message.what);
assertTrue(message.obj instanceof Bundle);
Bundle messageBundle = (Bundle) message.obj;
assertEquals(mContext.getOpPackageName(),
messageBundle.getParcelable(WifiScanner.REQUEST_PACKAGE_NAME_KEY));
}
/**
* Test behavior of {@link WifiScanner#startDisconnectedPnoScan(ScanSettings, PnoSettings,
* WifiScanner.PnoScanListener)}
* @throws Exception
*/
@Test
public void testStartDisconnectedPnoScan() throws Exception {
ScanSettings scanSettings = new ScanSettings();
PnoSettings pnoSettings = new PnoSettings();
WifiScanner.PnoScanListener pnoScanListener = mock(WifiScanner.PnoScanListener.class);
mWifiScanner.startDisconnectedPnoScan(scanSettings, pnoSettings, pnoScanListener);
mLooper.dispatchAll();
ArgumentCaptor<Message> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class);
verify(mHandler).handleMessage(messageArgumentCaptor.capture());
Message message = messageArgumentCaptor.getValue();
assertNotNull(message);
assertEquals(WifiScanner.CMD_START_PNO_SCAN, message.what);
assertTrue(message.obj instanceof Bundle);
Bundle messageBundle = (Bundle) message.obj;
assertEquals(scanSettings,
messageBundle.getParcelable(WifiScanner.PNO_PARAMS_SCAN_SETTINGS_KEY));
assertTrue(scanSettings.isPnoScan);
assertFalse(pnoSettings.isConnected);
assertEquals(pnoSettings,
messageBundle.getParcelable(WifiScanner.PNO_PARAMS_PNO_SETTINGS_KEY));
}
/**
* Test behavior of {@link WifiScanner#startConnectedPnoScan(ScanSettings, PnoSettings,
* WifiScanner.PnoScanListener)}
* @throws Exception
*/
@Test
public void testStartConnectedPnoScan() throws Exception {
ScanSettings scanSettings = new ScanSettings();
PnoSettings pnoSettings = new PnoSettings();
WifiScanner.PnoScanListener pnoScanListener = mock(WifiScanner.PnoScanListener.class);
mWifiScanner.startConnectedPnoScan(scanSettings, pnoSettings, pnoScanListener);
mLooper.dispatchAll();
ArgumentCaptor<Message> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class);
verify(mHandler).handleMessage(messageArgumentCaptor.capture());
Message message = messageArgumentCaptor.getValue();
assertNotNull(message);
assertEquals(WifiScanner.CMD_START_PNO_SCAN, message.what);
assertTrue(message.obj instanceof Bundle);
Bundle messageBundle = (Bundle) message.obj;
assertEquals(scanSettings,
messageBundle.getParcelable(WifiScanner.PNO_PARAMS_SCAN_SETTINGS_KEY));
assertTrue(scanSettings.isPnoScan);
assertTrue(pnoSettings.isConnected);
assertEquals(pnoSettings,
messageBundle.getParcelable(WifiScanner.PNO_PARAMS_PNO_SETTINGS_KEY));
}
/**
* Test behavior of {@link WifiScanner#stopPnoScan(WifiScanner.ScanListener)}
* WifiScanner.PnoScanListener)}
* @throws Exception
*/
@Test
public void testStopPnoScan() throws Exception {
ScanSettings scanSettings = new ScanSettings();
PnoSettings pnoSettings = new PnoSettings();
WifiScanner.PnoScanListener pnoScanListener = mock(WifiScanner.PnoScanListener.class);
mWifiScanner.startDisconnectedPnoScan(scanSettings, pnoSettings, pnoScanListener);
mLooper.dispatchAll();
mWifiScanner.stopPnoScan(pnoScanListener);
mLooper.dispatchAll();
ArgumentCaptor<Message> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class);
verify(mHandler, times(2)).handleMessage(messageArgumentCaptor.capture());
Message message = messageArgumentCaptor.getValue();
assertNotNull(message);
assertEquals(WifiScanner.CMD_STOP_PNO_SCAN, message.what);
}
}