From 35b304d2ffd089cc4334cd200ad9ce7b92955671 Mon Sep 17 00:00:00 2001 From: Roshan Pius Date: Fri, 5 Apr 2019 11:36:21 -0700 Subject: [PATCH] WifiScannerTest: Add unit tests Bug: 130035791 Test: ./frameworks/base/wifi/tests/runtests.sh Change-Id: I7ba66213363cfd43a3c7d42e000165368dadeb8d --- .../src/android/net/wifi/WifiScannerTest.java | 148 +++++++++++++++++++++ 1 file changed, 148 insertions(+) diff --git a/wifi/tests/src/android/net/wifi/WifiScannerTest.java b/wifi/tests/src/android/net/wifi/WifiScannerTest.java index 76bfff065f4d..949a757c26a4 100644 --- a/wifi/tests/src/android/net/wifi/WifiScannerTest.java +++ b/wifi/tests/src/android/net/wifi/WifiScannerTest.java @@ -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 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 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 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 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 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); + } } -- 2.11.0