1601964b92795860610262cabfc920765d174fd93Peter Qiu/* 2601964b92795860610262cabfc920765d174fd93Peter Qiu * Copyright (C) 2016 The Android Open Source Project 3601964b92795860610262cabfc920765d174fd93Peter Qiu * 4601964b92795860610262cabfc920765d174fd93Peter Qiu * Licensed under the Apache License, Version 2.0 (the "License"); 5601964b92795860610262cabfc920765d174fd93Peter Qiu * you may not use this file except in compliance with the License. 6601964b92795860610262cabfc920765d174fd93Peter Qiu * You may obtain a copy of the License at 7601964b92795860610262cabfc920765d174fd93Peter Qiu * 8601964b92795860610262cabfc920765d174fd93Peter Qiu * http://www.apache.org/licenses/LICENSE-2.0 9601964b92795860610262cabfc920765d174fd93Peter Qiu * 10601964b92795860610262cabfc920765d174fd93Peter Qiu * Unless required by applicable law or agreed to in writing, software 11601964b92795860610262cabfc920765d174fd93Peter Qiu * distributed under the License is distributed on an "AS IS" BASIS, 12601964b92795860610262cabfc920765d174fd93Peter Qiu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13601964b92795860610262cabfc920765d174fd93Peter Qiu * See the License for the specific language governing permissions and 14601964b92795860610262cabfc920765d174fd93Peter Qiu * limitations under the License. 15601964b92795860610262cabfc920765d174fd93Peter Qiu */ 16601964b92795860610262cabfc920765d174fd93Peter Qiu 17601964b92795860610262cabfc920765d174fd93Peter Qiupackage android.net.wifi; 18601964b92795860610262cabfc920765d174fd93Peter Qiu 1900bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Piusimport static org.junit.Assert.assertEquals; 20601964b92795860610262cabfc920765d174fd93Peter Qiuimport static org.mockito.Mockito.mock; 21601964b92795860610262cabfc920765d174fd93Peter Qiuimport static org.mockito.Mockito.validateMockitoUsage; 22601964b92795860610262cabfc920765d174fd93Peter Qiuimport static org.mockito.Mockito.when; 23601964b92795860610262cabfc920765d174fd93Peter Qiu 24601964b92795860610262cabfc920765d174fd93Peter Qiuimport android.content.Context; 25601964b92795860610262cabfc920765d174fd93Peter Qiuimport android.os.Handler; 2600bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Piusimport android.os.Parcel; 27601964b92795860610262cabfc920765d174fd93Peter Qiuimport android.os.test.TestLooper; 28caf9b531f7a78353be575dcaa8bb7fe83c9988adEtan Cohenimport android.support.test.filters.SmallTest; 2900bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Piusimport android.net.wifi.WifiScanner.ScanSettings; 30601964b92795860610262cabfc920765d174fd93Peter Qiu 31601964b92795860610262cabfc920765d174fd93Peter Qiuimport com.android.internal.util.test.BidirectionalAsyncChannelServer; 32601964b92795860610262cabfc920765d174fd93Peter Qiu 33601964b92795860610262cabfc920765d174fd93Peter Qiuimport org.junit.After; 34601964b92795860610262cabfc920765d174fd93Peter Qiuimport org.junit.Before; 3500bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Piusimport org.junit.Test; 36601964b92795860610262cabfc920765d174fd93Peter Qiuimport org.mockito.Mock; 37601964b92795860610262cabfc920765d174fd93Peter Qiuimport org.mockito.MockitoAnnotations; 38601964b92795860610262cabfc920765d174fd93Peter Qiu 3931225c466e5146bc37a7846f67462c1bdf5b60baMichael Plass 40601964b92795860610262cabfc920765d174fd93Peter Qiu/** 41601964b92795860610262cabfc920765d174fd93Peter Qiu * Unit tests for {@link android.net.wifi.WifiScanner}. 42601964b92795860610262cabfc920765d174fd93Peter Qiu */ 43601964b92795860610262cabfc920765d174fd93Peter Qiu@SmallTest 44601964b92795860610262cabfc920765d174fd93Peter Qiupublic class WifiScannerTest { 45601964b92795860610262cabfc920765d174fd93Peter Qiu @Mock 46601964b92795860610262cabfc920765d174fd93Peter Qiu private Context mContext; 47601964b92795860610262cabfc920765d174fd93Peter Qiu @Mock 48601964b92795860610262cabfc920765d174fd93Peter Qiu private IWifiScanner mService; 49601964b92795860610262cabfc920765d174fd93Peter Qiu 50601964b92795860610262cabfc920765d174fd93Peter Qiu private WifiScanner mWifiScanner; 51601964b92795860610262cabfc920765d174fd93Peter Qiu private TestLooper mLooper; 52601964b92795860610262cabfc920765d174fd93Peter Qiu private Handler mHandler; 53601964b92795860610262cabfc920765d174fd93Peter Qiu 54601964b92795860610262cabfc920765d174fd93Peter Qiu /** 55601964b92795860610262cabfc920765d174fd93Peter Qiu * Setup before tests. 56601964b92795860610262cabfc920765d174fd93Peter Qiu */ 57601964b92795860610262cabfc920765d174fd93Peter Qiu @Before 58601964b92795860610262cabfc920765d174fd93Peter Qiu public void setUp() throws Exception { 59601964b92795860610262cabfc920765d174fd93Peter Qiu MockitoAnnotations.initMocks(this); 60601964b92795860610262cabfc920765d174fd93Peter Qiu mLooper = new TestLooper(); 61601964b92795860610262cabfc920765d174fd93Peter Qiu mHandler = mock(Handler.class); 62601964b92795860610262cabfc920765d174fd93Peter Qiu BidirectionalAsyncChannelServer server = new BidirectionalAsyncChannelServer( 63601964b92795860610262cabfc920765d174fd93Peter Qiu mContext, mLooper.getLooper(), mHandler); 64601964b92795860610262cabfc920765d174fd93Peter Qiu when(mService.getMessenger()).thenReturn(server.getMessenger()); 65601964b92795860610262cabfc920765d174fd93Peter Qiu mWifiScanner = new WifiScanner(mContext, mService, mLooper.getLooper()); 66601964b92795860610262cabfc920765d174fd93Peter Qiu mLooper.dispatchAll(); 67601964b92795860610262cabfc920765d174fd93Peter Qiu } 68601964b92795860610262cabfc920765d174fd93Peter Qiu 69601964b92795860610262cabfc920765d174fd93Peter Qiu /** 70601964b92795860610262cabfc920765d174fd93Peter Qiu * Clean up after tests. 71601964b92795860610262cabfc920765d174fd93Peter Qiu */ 72601964b92795860610262cabfc920765d174fd93Peter Qiu @After 73601964b92795860610262cabfc920765d174fd93Peter Qiu public void cleanup() { 74601964b92795860610262cabfc920765d174fd93Peter Qiu validateMockitoUsage(); 75601964b92795860610262cabfc920765d174fd93Peter Qiu } 76601964b92795860610262cabfc920765d174fd93Peter Qiu 7700bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius /** 7800bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius * Verify parcel read/write for ScanSettings. 7900bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius */ 8000bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius @Test 8100bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius public void verifyScanSettingsParcelWithBand() throws Exception { 8200bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius ScanSettings writeSettings = new ScanSettings(); 8300bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius writeSettings.type = WifiScanner.TYPE_LOW_POWER; 8400bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius writeSettings.band = WifiScanner.WIFI_BAND_BOTH_WITH_DFS; 8500bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius 8600bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius ScanSettings readSettings = parcelWriteRead(writeSettings); 8700bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius assertEquals(readSettings.type, writeSettings.type); 8800bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius assertEquals(readSettings.band, writeSettings.band); 8900bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius assertEquals(0, readSettings.channels.length); 9000bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius } 9100bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius 9200bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius /** 9300bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius * Verify parcel read/write for ScanSettings. 9400bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius */ 9500bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius @Test 9600bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius public void verifyScanSettingsParcelWithChannels() throws Exception { 9700bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius ScanSettings writeSettings = new ScanSettings(); 9800bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius writeSettings.type = WifiScanner.TYPE_HIGH_ACCURACY; 9900bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius writeSettings.band = WifiScanner.WIFI_BAND_UNSPECIFIED; 10000bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius writeSettings.channels = new WifiScanner.ChannelSpec[] { 10100bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius new WifiScanner.ChannelSpec(5), 10200bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius new WifiScanner.ChannelSpec(7) 10300bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius }; 10400bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius 10500bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius ScanSettings readSettings = parcelWriteRead(writeSettings); 10600bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius assertEquals(writeSettings.type, readSettings.type); 10700bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius assertEquals(writeSettings.band, readSettings.band); 10800bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius assertEquals(2, readSettings.channels.length); 10900bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius assertEquals(5, readSettings.channels[0].frequency); 11000bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius assertEquals(7, readSettings.channels[1].frequency); 11100bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius } 11200bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius 11300bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius /** 11400bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius * Write the provided {@link ScanSettings} to a parcel and deserialize it. 11500bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius */ 11600bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius private static ScanSettings parcelWriteRead(ScanSettings writeSettings) throws Exception { 11700bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius Parcel parcel = Parcel.obtain(); 11800bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius writeSettings.writeToParcel(parcel, 0); 11900bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius parcel.setDataPosition(0); // Rewind data position back to the beginning for read. 12000bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius return ScanSettings.CREATOR.createFromParcel(parcel); 12100bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius } 12200bbf34e3e0b12918181afc8dd6450c6d6a00004Roshan Pius 123601964b92795860610262cabfc920765d174fd93Peter Qiu} 124