blob: 96b6f99eaa2664aee58c537a530bb192ab14c803 [file] [log] [blame]
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.server.wifi;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import androidx.test.filters.SmallTest;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* unit tests for {@link com.android.server.wifi.SarInfo}.
*/
@SmallTest
public class SarInfoTest extends WifiBaseTest {
private static final String TAG = "WifiSarInfoTest";
private SarInfo mSarInfo;
private static final int SAR_SCENARIO_1 = 1;
private static final int SAR_SCENARIO_2 = 2;
@Before
public void setUp() throws Exception {
mSarInfo = new SarInfo();
}
@After
public void cleanUp() throws Exception {
}
/**
* Test that at start, resetSarScenarioNeeded returns true,
* to allow for initial setting of normal scenario.
*/
@Test
public void testSarInfo_resetSarScenarioNeed_atStart() throws Exception {
assertTrue(mSarInfo.resetSarScenarioNeeded());
}
/**
* Test that at start, setSarScenarioNeeded returns true.
*/
@Test
public void testSarInfo_setSarScenarioNeeded_atStart() throws Exception {
assertTrue(mSarInfo.setSarScenarioNeeded(SAR_SCENARIO_1));
}
/**
* Test performing two successive reset of SAR scenario.
* The first should succeed, while the second should fail, since it is redundant.
*/
@Test
public void testSarInfo_repeat_reset_scenario() throws Exception {
/* Initial reset is allowed */
assertTrue(mSarInfo.resetSarScenarioNeeded());
mSarInfo.reportingSuccessful();
/* Now resetting again should not be allowed */
assertFalse(mSarInfo.resetSarScenarioNeeded());
}
/**
* Test performing set SAR scenario after reset.
* The two attempts should succeed.
*/
@Test
public void testSarInfo_set_after_reset_scenario() throws Exception {
assertTrue(mSarInfo.resetSarScenarioNeeded());
mSarInfo.reportingSuccessful();
/* Setting scenario should be allowed, since last call was for a reset */
assertTrue(mSarInfo.setSarScenarioNeeded(SAR_SCENARIO_1));
}
/**
* Test performing setting SAR scenario twice with same value.
* The second attempt should fail.
*/
@Test
public void testSarInfo_set_twice_same_value_scenario() throws Exception {
assertTrue(mSarInfo.setSarScenarioNeeded(SAR_SCENARIO_1));
mSarInfo.reportingSuccessful();
/* Second attempt should fail */
assertFalse(mSarInfo.setSarScenarioNeeded(SAR_SCENARIO_1));
}
/**
* Test performing setting SAR scenario twice with different values.
* Both attempts should succeed.
*/
@Test
public void testSarInfo_set_twice_different_values_scenario() throws Exception {
assertTrue(mSarInfo.setSarScenarioNeeded(SAR_SCENARIO_1));
mSarInfo.reportingSuccessful();
/* Setting scenario should be allowed */
assertTrue(mSarInfo.setSarScenarioNeeded(SAR_SCENARIO_2));
}
/**
* Test performing reset of SAR scenario after setting it.
* Both attempts should succeed.
*/
@Test
public void testSarInfo_reset_after_set_scenario() throws Exception {
assertTrue(mSarInfo.setSarScenarioNeeded(SAR_SCENARIO_1));
mSarInfo.reportingSuccessful();
/* Resetting scenario should be allowed */
assertTrue(mSarInfo.resetSarScenarioNeeded());
}
/**
* Test that at start, shouldReport returns false (wifi modes still disabled).
*/
@Test
public void testSarInfo_shouldReport_all_wifi_disabled() throws Exception {
assertFalse(mSarInfo.shouldReport());
}
/**
* Test that once Wifi (any mode) is enabled, shouldReport returns true.
*/
@Test
public void testSarInfo_shouldReport_wifi_enabled() throws Exception {
mSarInfo.isWifiClientEnabled = true;
assertTrue(mSarInfo.shouldReport());
}
/**
* Test having a voice call, shouldReport should return true
*/
@Test
public void testSarInfo_voice_call_wifi_enabled() throws Exception {
mSarInfo.isWifiClientEnabled = true;
assertTrue(mSarInfo.shouldReport());
mSarInfo.reportingSuccessful();
mSarInfo.isVoiceCall = true;
assertTrue(mSarInfo.shouldReport());
}
/**
* Test a change in earpiece status, shouldReport should return true
*/
@Test
public void testSarInfo_earpiece_wifi_enabled() throws Exception {
mSarInfo.isWifiClientEnabled = true;
assertTrue(mSarInfo.shouldReport());
mSarInfo.reportingSuccessful();
mSarInfo.isEarPieceActive = true;
assertTrue(mSarInfo.shouldReport());
}
/**
* Test starting SAP, shouldReport should return true
*/
@Test
public void testSarInfo_sap_wifi_enabled() throws Exception {
mSarInfo.isWifiClientEnabled = true;
assertTrue(mSarInfo.shouldReport());
mSarInfo.reportingSuccessful();
mSarInfo.isWifiSapEnabled = true;
assertTrue(mSarInfo.shouldReport());
}
}