13c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao/* 23c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao * Copyright (C) 2016 The Android Open Source Project 33c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao * 43c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao * Licensed under the Apache License, Version 2.0 (the "License"); 53c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao * you may not use this file except in compliance with the License. 63c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao * You may obtain a copy of the License at 73c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao * 83c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao * http://www.apache.org/licenses/LICENSE-2.0 93c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao * 103c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao * Unless required by applicable law or agreed to in writing, software 113c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao * distributed under the License is distributed on an "AS IS" BASIS, 123c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao * See the License for the specific language governing permissions and 143c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao * limitations under the License. 153c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao */ 163c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao 173c0eb618a6398926893508f9d05fa39a99cf4894Sohani Raopackage com.android.server.wifi; 183c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao 193c0eb618a6398926893508f9d05fa39a99cf4894Sohani Raoimport com.android.internal.app.IBatteryStats; 203c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao 2130a29085c09339ff9faf12f105da6f80ffb77389Sohani Raoimport static org.mockito.Mockito.any; 223c0eb618a6398926893508f9d05fa39a99cf4894Sohani Raoimport static org.mockito.Mockito.anyInt; 233c0eb618a6398926893508f9d05fa39a99cf4894Sohani Raoimport static org.mockito.Mockito.times; 243c0eb618a6398926893508f9d05fa39a99cf4894Sohani Raoimport static org.mockito.Mockito.verify; 253c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao 267f2a1e30dd5d14320ffc7b185ac25fdb79fe52b0Etan Cohenimport android.support.test.filters.SmallTest; 273c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao 283c0eb618a6398926893508f9d05fa39a99cf4894Sohani Raoimport org.junit.Before; 293c0eb618a6398926893508f9d05fa39a99cf4894Sohani Raoimport org.junit.Test; 303c0eb618a6398926893508f9d05fa39a99cf4894Sohani Raoimport org.mockito.Mock; 313c0eb618a6398926893508f9d05fa39a99cf4894Sohani Raoimport org.mockito.MockitoAnnotations; 323c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao 333c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao/* 343c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao * Unit tests for {@link com.android.server.wifi.WifiStateTracker}. 353c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao */ 363c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao@SmallTest 373c0eb618a6398926893508f9d05fa39a99cf4894Sohani Raopublic class WifiStateTrackerTest { 383c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao 393c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao private static final String TAG = "WifiStateTrackerTest"; 403c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao @Mock IBatteryStats mBatteryStats; 413c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao private WifiStateTracker mWifiStateTracker; 423c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao 433c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao /** 443c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao * Setup test. 453c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao */ 463c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao @Before 473c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao public void setUp() { 483c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao MockitoAnnotations.initMocks(this); 493c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao mWifiStateTracker = new WifiStateTracker(mBatteryStats); 503c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao } 513c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao 523c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao /** 533c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao * Ensure BatteryStats's noteWifiState() is called when the method 543c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao * updateState() is invoked on WifiStateTracker for relevant states. 553c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao */ 563c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao @Test 573c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao public void testBatteryStatsUpdated() throws Exception { 583c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao int[] relevantStates = new int[] { WifiStateTracker.SCAN_MODE, 593c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao WifiStateTracker.CONNECTED, WifiStateTracker.DISCONNECTED, 603c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao WifiStateTracker.SOFT_AP}; 613c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao for (int i = 0; i < relevantStates.length; i++) { 623c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao mWifiStateTracker.updateState(relevantStates[i]); 633c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao } 6430a29085c09339ff9faf12f105da6f80ffb77389Sohani Rao verify(mBatteryStats, times(relevantStates.length)).noteWifiState(anyInt(), any()); 653c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao } 663c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao 673c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao /** 683c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao * Ensure BatteryStats's noteWifiState() is not called when the method 693c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao * updateState() is invoked on WifiStateTracker for irrelevant states. 703c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao */ 713c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao @Test 723c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao public void testBatteryStatsNotUpdated() throws Exception { 733c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao int[] irrelevantStates = new int[] { WifiStateTracker.SCAN_MODE - 1, 743c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao WifiStateTracker.SOFT_AP + 1}; 753c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao for (int i = 0; i < irrelevantStates.length; i++) { 763c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao mWifiStateTracker.updateState(irrelevantStates[i]); 773c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao } 7830a29085c09339ff9faf12f105da6f80ffb77389Sohani Rao verify(mBatteryStats, times(0)).noteWifiState(anyInt(), any()); 793c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao } 803c0eb618a6398926893508f9d05fa39a99cf4894Sohani Rao} 81