Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e602db5f authored by Roshan Pius's avatar Roshan Pius
Browse files

WifiScannerTest: More unit tests

Bug: 130035791
Test: ./frameworks/base/wifi/tests/runtests.sh
Change-Id: Ic4eb56fc3ba6bffd3df529432d17af0ba35b6333
parent 35b304d2
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import com.android.internal.util.AsyncChannel;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * Provides an interface for the server side implementation of a bidirectional channel as described
@@ -83,4 +84,8 @@ public class BidirectionalAsyncChannelServer {
        return mMessenger;
    }

    public Set<Messenger> getClientMessengers() {
        return mClients.keySet();
    }

}
+1 −1
Original line number Diff line number Diff line
@@ -1593,7 +1593,7 @@ i * Verify that a call to cancel WPS immediately returns a failure.
    }

    /**
     * Test behavior of {@link WifiManager#isDualModeSupported()}
     * Test behavior of {@link WifiManager#isDualModeSupported()} ()}
     * @throws Exception
     */
    @Test
+70 −3
Original line number Diff line number Diff line
@@ -22,7 +22,9 @@ 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.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.validateMockitoUsage;
import static org.mockito.Mockito.verify;
@@ -36,6 +38,7 @@ import android.net.wifi.WifiScanner.ScanSettings;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Messenger;
import android.os.Parcel;
import android.os.test.TestLooper;

@@ -78,6 +81,7 @@ public class WifiScannerTest {
    private WifiScanner mWifiScanner;
    private TestLooper mLooper;
    private Handler mHandler;
    private BidirectionalAsyncChannelServer mBidirectionalAsyncChannelServer;

    /**
     * Setup before tests.
@@ -86,10 +90,10 @@ public class WifiScannerTest {
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);
        mLooper = new TestLooper();
        mHandler = mock(Handler.class);
        BidirectionalAsyncChannelServer server = new BidirectionalAsyncChannelServer(
        mHandler = spy(new Handler(mLooper.getLooper()));
        mBidirectionalAsyncChannelServer = new BidirectionalAsyncChannelServer(
                mContext, mLooper.getLooper(), mHandler);
        when(mService.getMessenger()).thenReturn(server.getMessenger());
        when(mService.getMessenger()).thenReturn(mBidirectionalAsyncChannelServer.getMessenger());
        mWifiScanner = new WifiScanner(mContext, mService, mLooper.getLooper());
        mLooper.dispatchAll();
    }
@@ -295,6 +299,69 @@ public class WifiScannerTest {

    }

    /**
     * Test behavior of {@link WifiScanner#startScan(ScanSettings, WifiScanner.ScanListener)}
     * @throws Exception
     */
    @Test
    public void testStartScanListenerOnSuccess() 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 sentMessage = messageArgumentCaptor.getValue();
        assertNotNull(sentMessage);

        assertEquals(1, mBidirectionalAsyncChannelServer.getClientMessengers().size());
        Messenger scannerMessenger =
                mBidirectionalAsyncChannelServer.getClientMessengers().iterator().next();

        Message responseMessage = Message.obtain();
        responseMessage.what = WifiScanner.CMD_OP_SUCCEEDED;
        responseMessage.arg2 = sentMessage.arg2;
        scannerMessenger.send(responseMessage);
        mLooper.dispatchAll();

        verify(scanListener).onSuccess();
    }

    /**
     * Test behavior of {@link WifiScanner#startScan(ScanSettings, WifiScanner.ScanListener)}
     * @throws Exception
     */
    @Test
    public void testStartScanListenerOnResults() 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 sentMessage = messageArgumentCaptor.getValue();
        assertNotNull(sentMessage);

        assertEquals(1, mBidirectionalAsyncChannelServer.getClientMessengers().size());
        Messenger scannerMessenger =
                mBidirectionalAsyncChannelServer.getClientMessengers().iterator().next();

        ScanResult scanResult = new ScanResult();
        ScanData scanDatas[] = new ScanData[]{new ScanData(0, 0 , new ScanResult[] {scanResult})};
        Message responseMessage = Message.obtain();
        responseMessage.what = WifiScanner.CMD_SCAN_RESULT;
        responseMessage.arg2 = sentMessage.arg2;
        responseMessage.obj = new WifiScanner.ParcelableScanData(scanDatas);
        scannerMessenger.send(responseMessage);
        mLooper.dispatchAll();

        verify(scanListener).onResults(scanDatas);
    }

    /**
     * Test behavior of {@link WifiScanner#startDisconnectedPnoScan(ScanSettings, PnoSettings,
     * WifiScanner.PnoScanListener)}