blob: 8323ba3689999c3e74606d1a5b305ddc35d27c57 [file] [log] [blame]
/*
* Copyright (C) 2019 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.internal.telephony;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import android.os.Parcel;
import android.os.PersistableBundle;
import android.telephony.CarrierConfigManager;
import android.telephony.CellInfo;
import android.telephony.CellSignalStrengthWcdma;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
/** Unit tests for {@link CellSignalStrengthCdma}. */
public class CellSignalStrengthWcdmaTest extends AndroidTestCase {
private static final int RSSI = -95;
private static final int BER = 3;
private static final int RSCP = -106;
private static final int ECNO = -5;
@SmallTest
public void testConstructor() {
CellSignalStrengthWcdma css = new CellSignalStrengthWcdma(RSSI, BER, RSCP, ECNO);
assertEquals(RSSI, css.getRssi());
assertEquals(BER, css.getBitErrorRate());
assertEquals(RSCP, css.getRscp());
assertEquals(ECNO, css.getEcNo());
}
@SmallTest
public void testInvalidConstructor() {
CellSignalStrengthWcdma css = new CellSignalStrengthWcdma(-1, -1, -1, 10);
assertEquals(CellInfo.UNAVAILABLE, css.getRssi());
assertEquals(CellInfo.UNAVAILABLE, css.getBitErrorRate());
assertEquals(CellInfo.UNAVAILABLE, css.getRscp());
assertEquals(CellInfo.UNAVAILABLE, css.getEcNo());
}
@SmallTest
public void testDefaultConstructor() {
CellSignalStrengthWcdma css = new CellSignalStrengthWcdma();
assertEquals(CellInfo.UNAVAILABLE, css.getRssi());
assertEquals(CellInfo.UNAVAILABLE, css.getBitErrorRate());
assertEquals(CellInfo.UNAVAILABLE, css.getRscp());
assertEquals(CellInfo.UNAVAILABLE, css.getEcNo());
}
@SmallTest
public void testEquals() {
assertTrue(new CellSignalStrengthWcdma(RSSI, BER, RSCP, ECNO).equals(
new CellSignalStrengthWcdma(RSSI, BER, RSCP, ECNO)));
assertFalse(new CellSignalStrengthWcdma(RSSI, BER, RSCP, ECNO).equals(
new CellSignalStrengthWcdma(RSSI, BER, RSCP + 1, ECNO)));
}
@SmallTest
public void testParcel() {
CellSignalStrengthWcdma css = new CellSignalStrengthWcdma(-1, -1, -1, 10);
Parcel p = Parcel.obtain();
css.writeToParcel(p, 0);
p.setDataPosition(0);
CellSignalStrengthWcdma newCss = CellSignalStrengthWcdma.CREATOR.createFromParcel(p);
assertEquals(css, newCss);
}
@SmallTest
public void testLevel() {
CellSignalStrengthWcdma css = new CellSignalStrengthWcdma(RSSI, BER, RSCP, ECNO);
PersistableBundle b = new PersistableBundle();
// No keys in the bundle - should use RSSI and default levels.
css.updateLevel(b, null); // ServiceState isn't used in WCDMA (yet)
assertEquals(2 /* MODERATE */, css.getLevel());
// Add RSCP levels but set the measurement as an invalid (empty string), should still use
// RSSI.
b.putIntArray(CarrierConfigManager.KEY_WCDMA_RSCP_THRESHOLDS_INT_ARRAY,
new int[] {
-115, /* SIGNAL_STRENGTH_POOR */
-105, /* SIGNAL_STRENGTH_MODERATE */
-95, /* SIGNAL_STRENGTH_GOOD */
-85 /* SIGNAL_STRENGTH_GREAT */
});
b.putString(CarrierConfigManager.KEY_WCDMA_DEFAULT_SIGNAL_STRENGTH_MEASUREMENT_STRING, "");
css.updateLevel(b, null); // ServiceState isn't used in WCDMA (yet)
assertEquals(2 /* MODERATE */, css.getLevel());
// Update the calculation to use RSCP, and expect the level to be calculated accordingly.
b.putString(CarrierConfigManager.KEY_WCDMA_DEFAULT_SIGNAL_STRENGTH_MEASUREMENT_STRING,
"rscp");
css.updateLevel(b, null); // ServiceState isn't used in WCDMA (yet)
assertEquals(1 /* POOR */, css.getLevel());
}
}