1d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk/* 2d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk * Copyright (C) 2015 The Android Open Source Project 3d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk * 4d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk * Licensed under the Apache License, Version 2.0 (the "License"); 5d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk * you may not use this file except in compliance with the License. 6d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk * You may obtain a copy of the License at 7d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk * 8d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk * http://www.apache.org/licenses/LICENSE-2.0 9d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk * 10d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk * Unless required by applicable law or agreed to in writing, software 11d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk * distributed under the License is distributed on an "AS IS" BASIS, 12d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk * See the License for the specific language governing permissions and 14d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk * limitations under the License. 15d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk */ 16d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monkpackage com.android.settingslib.wifi; 17d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk 18d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monkimport android.net.wifi.ScanResult; 19d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monkimport android.net.wifi.WifiConfiguration; 20d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monkimport android.net.wifi.WifiInfo; 21d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk 22d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monkimport com.android.settingslib.BaseTest; 23d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monkimport com.android.settingslib.wifi.AccessPoint.AccessPointListener; 24d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk 25d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monkimport org.mockito.ArgumentCaptor; 26d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monkimport org.mockito.Mockito; 27d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk 28d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk// TODO: Add some coverage 29d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monkpublic class AccessPointTest extends BaseTest { 30d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk 31d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk private static final String TEST_SSID = "TestSsid"; 32d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk private static final int NETWORK_ID = 0; 33d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk 34d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk private AccessPointListener mAccessPointListener; 35d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk private AccessPoint mAccessPoint; 36d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk 37d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk @Override 38d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk protected void setUp() throws Exception { 39d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk super.setUp(); 40d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk mAccessPointListener = Mockito.mock(AccessPointListener.class); 41d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk 42d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk WifiConfiguration wifiConfig = new WifiConfiguration(); 43d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk wifiConfig.networkId = NETWORK_ID; 44d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk wifiConfig.SSID = TEST_SSID; 45d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk 46d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk mAccessPoint = new AccessPoint(mContext, wifiConfig); 47d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk mAccessPoint.setListener(mAccessPointListener); 48d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk } 49d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk 50d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk public void testOnLevelChanged() { 51d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk ScanResult result = new ScanResult(); 52d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk result.capabilities = ""; 53d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk result.SSID = TEST_SSID; 54d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk 55d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk // Give it a level. 56d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk result.level = WifiTrackerTest.levelToRssi(1); 57d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk mAccessPoint.update(result); 58d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk verifyOnLevelChangedCallback(1); 59d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk 60d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk // Give it a better level. 61d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk result.level = WifiTrackerTest.levelToRssi(2); 62d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk mAccessPoint.update(result); 63d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk verifyOnLevelChangedCallback(1); 64d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk } 65d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk 66d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk public void testOnAccessPointChangedCallback() { 67d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk WifiInfo wifiInfo = Mockito.mock(WifiInfo.class); 68d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk Mockito.when(wifiInfo.getNetworkId()).thenReturn(NETWORK_ID); 69d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk 70d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk mAccessPoint.update(wifiInfo, null); 71d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk verifyOnAccessPointsCallback(1); 72d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk 73d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk mAccessPoint.update(null, null); 74d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk verifyOnAccessPointsCallback(2); 75d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk 76d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk ScanResult result = new ScanResult(); 77d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk result.capabilities = ""; 78d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk result.SSID = TEST_SSID; 79d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk mAccessPoint.update(result); 80d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk verifyOnAccessPointsCallback(3); 81d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk } 82d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk 83d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk private void verifyOnLevelChangedCallback(int num) { 84d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk ArgumentCaptor<AccessPoint> accessPoint = ArgumentCaptor.forClass(AccessPoint.class); 85d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk Mockito.verify(mAccessPointListener, Mockito.atLeast(num)) 86d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk .onLevelChanged(accessPoint.capture()); 87d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk assertEquals(mAccessPoint, accessPoint.getValue()); 88d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk } 89d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk 90d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk private void verifyOnAccessPointsCallback(int num) { 91d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk ArgumentCaptor<AccessPoint> accessPoint = ArgumentCaptor.forClass(AccessPoint.class); 92d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk Mockito.verify(mAccessPointListener, Mockito.atLeast(num)) 93d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk .onAccessPointChanged(accessPoint.capture()); 94d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk assertEquals(mAccessPoint, accessPoint.getValue()); 95d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk } 96d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk 97d52356aa5e82c7c5db61672bbe8d0f44861f3e59Jason Monk} 98