aboutsummaryrefslogtreecommitdiff
path: root/tests/telephonytests/src/com/android/internal/telephony/CellSignalStrengthNrTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/telephonytests/src/com/android/internal/telephony/CellSignalStrengthNrTest.java')
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/CellSignalStrengthNrTest.java132
1 files changed, 97 insertions, 35 deletions
diff --git a/tests/telephonytests/src/com/android/internal/telephony/CellSignalStrengthNrTest.java b/tests/telephonytests/src/com/android/internal/telephony/CellSignalStrengthNrTest.java
index a2e765ed5e..a29447102d 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/CellSignalStrengthNrTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/CellSignalStrengthNrTest.java
@@ -18,19 +18,31 @@ package com.android.internal.telephony;
import static com.google.common.truth.Truth.assertThat;
-import android.hardware.radio.V1_4.NrSignalStrength;
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.doReturn;
+
+import android.hardware.radio.V1_6.NrSignalStrength;
import android.os.Parcel;
import android.telephony.CellInfo;
import android.telephony.CellSignalStrength;
import android.telephony.CellSignalStrengthNr;
-import android.test.AndroidTestCase;
+import android.telephony.ServiceState;
import com.google.common.collect.BoundType;
import com.google.common.collect.Range;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
+import org.mockito.Mock;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
-public class CellSignalStrengthNrTest extends AndroidTestCase {
+public class CellSignalStrengthNrTest extends TelephonyTest {
private static final int CSIRSRP = -123;
private static final int CSIRSRQ = -11;
private static final int ANOTHER_CSIRSRP = -111;
@@ -38,20 +50,44 @@ public class CellSignalStrengthNrTest extends AndroidTestCase {
private static final int INVALID_CSIRSRP = Integer.MAX_VALUE;
private static final int INVALID_SSRSRP = Integer.MAX_VALUE;
private static final int CSISINR = 18;
+ private static final int CSICQI_TABLE_INDEX = 1;
+ private static final ArrayList<Byte> CSICQI_REPORT =
+ new ArrayList<>(Arrays.asList((byte) 3, (byte) 2, (byte) 1));
private static final int SSRSRP = -112;
private static final int SSRSRQ = -13;
private static final int SSSINR = 32;
+ @Mock
+ ServiceState mSS;
+
+ @Before
+ public void setUp() throws Exception {
+ super.setUp(this.getClass().getSimpleName());
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ private List<Integer> getCsiCqiList() {
+ return CSICQI_REPORT.stream()
+ .map(cqi -> new Integer(Byte.toUnsignedInt(cqi)))
+ .collect(Collectors.toList());
+ }
+
@Test
public void testGetMethod() {
// GIVEN an instance of CellSignalStrengthNr
- CellSignalStrengthNr css = new CellSignalStrengthNr(
- CSIRSRP, CSIRSRQ, CSISINR, SSRSRP, SSRSRQ, SSSINR);
+ CellSignalStrengthNr css = new CellSignalStrengthNr(CSIRSRP, CSIRSRQ, CSISINR,
+ CSICQI_TABLE_INDEX, CSICQI_REPORT, SSRSRP, SSRSRQ, SSSINR);
// THEN the get method should return correct value
assertThat(css.getCsiRsrp()).isEqualTo(CSIRSRP);
assertThat(css.getCsiRsrq()).isEqualTo(CSIRSRQ);
assertThat(css.getCsiSinr()).isEqualTo(CSISINR);
+ assertThat(css.getCsiCqiTableIndex()).isEqualTo(CSICQI_TABLE_INDEX);
+ assertThat(css.getCsiCqiReport()).isEqualTo(getCsiCqiList());
assertThat(css.getSsRsrp()).isEqualTo(SSRSRP);
assertThat(css.getSsRsrq()).isEqualTo(SSRSRQ);
assertThat(css.getSsSinr()).isEqualTo(SSSINR);
@@ -62,18 +98,22 @@ public class CellSignalStrengthNrTest extends AndroidTestCase {
public void testGetMethodWithHal() {
// GIVEN an instance of NrSignalStrength with some positive values
NrSignalStrength nrSignalStrength = new NrSignalStrength();
- nrSignalStrength.csiRsrp = -CSIRSRP;
- nrSignalStrength.csiRsrq = -CSIRSRQ;
- nrSignalStrength.csiSinr = CSISINR;
- nrSignalStrength.ssRsrp = -SSRSRP;
- nrSignalStrength.ssRsrq = -SSRSRQ;
- nrSignalStrength.ssSinr = SSSINR;
+ nrSignalStrength.base.csiRsrp = -CSIRSRP;
+ nrSignalStrength.base.csiRsrq = -CSIRSRQ;
+ nrSignalStrength.base.csiSinr = CSISINR;
+ nrSignalStrength.csiCqiTableIndex = CSICQI_TABLE_INDEX;
+ nrSignalStrength.csiCqiReport = CSICQI_REPORT;
+ nrSignalStrength.base.ssRsrp = -SSRSRP;
+ nrSignalStrength.base.ssRsrq = -SSRSRQ;
+ nrSignalStrength.base.ssSinr = SSSINR;
// THEN the get method should return the correct value
CellSignalStrengthNr css = new CellSignalStrengthNr(nrSignalStrength);
assertThat(css.getCsiRsrp()).isEqualTo(CSIRSRP);
assertThat(css.getCsiRsrq()).isEqualTo(CSIRSRQ);
assertThat(css.getCsiSinr()).isEqualTo(CSISINR);
+ assertThat(css.getCsiCqiTableIndex()).isEqualTo(CSICQI_TABLE_INDEX);
+ assertThat(css.getCsiCqiReport()).isEqualTo(getCsiCqiList());
assertThat(css.getSsRsrp()).isEqualTo(SSRSRP);
assertThat(css.getSsRsrq()).isEqualTo(SSRSRQ);
assertThat(css.getSsSinr()).isEqualTo(SSSINR);
@@ -84,18 +124,22 @@ public class CellSignalStrengthNrTest extends AndroidTestCase {
public void testUnavailableValueWithHal() {
// GIVEN an instance of NrSignalStrength
NrSignalStrength nrSignalStrength = new NrSignalStrength();
- nrSignalStrength.csiRsrp = CellInfo.UNAVAILABLE;
- nrSignalStrength.csiRsrq = CellInfo.UNAVAILABLE;
- nrSignalStrength.csiSinr = CellInfo.UNAVAILABLE;
- nrSignalStrength.ssRsrp = CellInfo.UNAVAILABLE;
- nrSignalStrength.ssRsrq = CellInfo.UNAVAILABLE;
- nrSignalStrength.ssSinr = CellInfo.UNAVAILABLE;
+ nrSignalStrength.base.csiRsrp = CellInfo.UNAVAILABLE;
+ nrSignalStrength.base.csiRsrq = CellInfo.UNAVAILABLE;
+ nrSignalStrength.base.csiSinr = CellInfo.UNAVAILABLE;
+ nrSignalStrength.csiCqiTableIndex = CellInfo.UNAVAILABLE;
+ nrSignalStrength.csiCqiReport = new ArrayList<Byte>();
+ nrSignalStrength.base.ssRsrp = CellInfo.UNAVAILABLE;
+ nrSignalStrength.base.ssRsrq = CellInfo.UNAVAILABLE;
+ nrSignalStrength.base.ssSinr = CellInfo.UNAVAILABLE;
// THEN the get method should return unavailable value
CellSignalStrengthNr css = new CellSignalStrengthNr(nrSignalStrength);
assertThat(css.getCsiRsrp()).isEqualTo(CellInfo.UNAVAILABLE);
assertThat(css.getCsiRsrq()).isEqualTo(CellInfo.UNAVAILABLE);
assertThat(css.getCsiSinr()).isEqualTo(CellInfo.UNAVAILABLE);
+ assertThat(css.getCsiCqiTableIndex()).isEqualTo(CellInfo.UNAVAILABLE);
+ assertThat(css.getCsiCqiReport()).isEqualTo(Collections.emptyList());
assertThat(css.getSsRsrp()).isEqualTo(CellInfo.UNAVAILABLE);
assertThat(css.getSsRsrq()).isEqualTo(CellInfo.UNAVAILABLE);
assertThat(css.getSsSinr()).isEqualTo(CellInfo.UNAVAILABLE);
@@ -105,10 +149,10 @@ public class CellSignalStrengthNrTest extends AndroidTestCase {
@Test
public void testEquals_sameParameters() {
// GIVEN an instance of CellSignalStrengthNr and another object with the same parameters
- CellSignalStrengthNr css = new CellSignalStrengthNr(
- CSIRSRP, CSIRSRQ, CSISINR, SSRSRP, SSRSRQ, SSSINR);
- CellSignalStrengthNr anotherCss = new CellSignalStrengthNr(
- CSIRSRP, CSIRSRQ, CSISINR, SSRSRP, SSRSRQ, SSSINR);
+ CellSignalStrengthNr css = new CellSignalStrengthNr(CSIRSRP, CSIRSRQ, CSISINR,
+ CSICQI_TABLE_INDEX, CSICQI_REPORT, SSRSRP, SSRSRQ, SSSINR);
+ CellSignalStrengthNr anotherCss = new CellSignalStrengthNr(CSIRSRP, CSIRSRQ, CSISINR,
+ CSICQI_TABLE_INDEX, CSICQI_REPORT, SSRSRP, SSRSRQ, SSSINR);
// THEN this two objects are equivalent
assertThat(css).isEqualTo(anotherCss);
@@ -118,10 +162,11 @@ public class CellSignalStrengthNrTest extends AndroidTestCase {
public void testEquals_differentParameters() {
// GIVEN an instance of CellSignalStrengthNr and another object with some different
// parameters
- CellSignalStrengthNr css = new CellSignalStrengthNr(
- CSIRSRP, CSIRSRQ, CSISINR, SSRSRP, SSRSRQ, SSSINR);
- CellSignalStrengthNr anotherCss = new CellSignalStrengthNr(
- ANOTHER_CSIRSRP, ANOTHER_CSIRSRQ, CSISINR, SSRSRP, SSRSRQ, SSSINR);
+ CellSignalStrengthNr css = new CellSignalStrengthNr(CSIRSRP, CSIRSRQ, CSISINR,
+ CSICQI_TABLE_INDEX, CSICQI_REPORT, SSRSRP, SSRSRQ, SSSINR);
+ CellSignalStrengthNr anotherCss = new CellSignalStrengthNr(ANOTHER_CSIRSRP,
+ ANOTHER_CSIRSRQ, CSISINR, CSICQI_TABLE_INDEX, CSICQI_REPORT,
+ SSRSRP, SSRSRQ, SSSINR);
// THEN this two objects are different
assertThat(css).isNotEqualTo(anotherCss);
@@ -130,8 +175,8 @@ public class CellSignalStrengthNrTest extends AndroidTestCase {
@Test
public void testAusLevel_validValue() {
// GIVEN an instance of CellSignalStrengthNr with valid csirsrp
- CellSignalStrengthNr css = new CellSignalStrengthNr(
- CSIRSRP, CSIRSRQ, CSISINR, SSRSRP, SSRSRQ, SSSINR);
+ CellSignalStrengthNr css = new CellSignalStrengthNr(CSIRSRP, CSIRSRQ, CSISINR,
+ CSICQI_TABLE_INDEX, CSICQI_REPORT, SSRSRP, SSRSRQ, SSSINR);
// THEN the asu level is in range [0, 97]
assertThat(css.getAsuLevel()).isIn(Range.range(0, BoundType.CLOSED, 97, BoundType.CLOSED));
@@ -140,8 +185,8 @@ public class CellSignalStrengthNrTest extends AndroidTestCase {
@Test
public void testAsuLevel_invalidValue() {
// GIVEN an instance of CellSignalStrengthNr with invalid csirsrp
- CellSignalStrengthNr css = new CellSignalStrengthNr(
- CSIRSRP, CSIRSRQ, CSISINR, INVALID_SSRSRP, SSRSRQ, SSSINR);
+ CellSignalStrengthNr css = new CellSignalStrengthNr(CSIRSRP, CSIRSRQ, CSISINR,
+ CSICQI_TABLE_INDEX, CSICQI_REPORT, INVALID_SSRSRP, SSRSRQ, SSSINR);
// THEN the asu level is unknown
assertThat(css.getAsuLevel()).isEqualTo(CellSignalStrengthNr.UNKNOWN_ASU_LEVEL);
@@ -151,8 +196,8 @@ public class CellSignalStrengthNrTest extends AndroidTestCase {
public void testSignalLevel_validValue() {
for (int ssRsrp = -140; ssRsrp <= -44; ssRsrp++) {
// GIVEN an instance of CellSignalStrengthNr with valid csirsrp
- CellSignalStrengthNr css = new CellSignalStrengthNr(
- CSIRSRP, CSIRSRQ, CSISINR, ssRsrp, SSRSRQ, SSSINR);
+ CellSignalStrengthNr css = new CellSignalStrengthNr(CSIRSRP, CSIRSRQ, CSISINR,
+ CSICQI_TABLE_INDEX, CSICQI_REPORT, INVALID_SSRSRP, SSRSRQ, SSSINR);
// THEN the signal level is valid
assertThat(css.getLevel()).isIn(Range.range(
@@ -164,8 +209,8 @@ public class CellSignalStrengthNrTest extends AndroidTestCase {
@Test
public void testSignalLevel_invalidValue() {
// GIVEN an instance of CellSignalStrengthNr with invalid csirsrp
- CellSignalStrengthNr css = new CellSignalStrengthNr(
- CSIRSRP, CSIRSRQ, CSISINR, INVALID_SSRSRP, SSRSRQ, SSSINR);
+ CellSignalStrengthNr css = new CellSignalStrengthNr(CSIRSRP, CSIRSRQ, CSISINR,
+ CSICQI_TABLE_INDEX, CSICQI_REPORT, SSRSRP, SSRSRQ, SSSINR);
// THEN the signal level is unknown
assertThat(css.getLevel()).isEqualTo(CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN);
@@ -174,8 +219,8 @@ public class CellSignalStrengthNrTest extends AndroidTestCase {
@Test
public void testParcel() {
// GIVEN an instance of CellSignalStrengthNr
- CellSignalStrengthNr css = new CellSignalStrengthNr(
- CSIRSRP, CSIRSRQ, CSISINR, SSRSRP, SSRSRQ, SSSINR);
+ CellSignalStrengthNr css = new CellSignalStrengthNr(CSIRSRP, CSIRSRQ, CSISINR,
+ CSICQI_TABLE_INDEX, CSICQI_REPORT, SSRSRP, SSRSRQ, SSSINR);
// WHEN write the object to parcel and create another object with that parcel
Parcel parcel = Parcel.obtain();
@@ -188,8 +233,25 @@ public class CellSignalStrengthNrTest extends AndroidTestCase {
assertThat(anotherCss.getCsiRsrp()).isEqualTo(CSIRSRP);
assertThat(anotherCss.getCsiRsrq()).isEqualTo(CSIRSRQ);
assertThat(anotherCss.getCsiSinr()).isEqualTo(CSISINR);
+ assertThat(css.getCsiCqiTableIndex()).isEqualTo(CSICQI_TABLE_INDEX);
+ assertThat(css.getCsiCqiReport()).isEqualTo(getCsiCqiList());
assertThat(anotherCss.getSsRsrp()).isEqualTo(SSRSRP);
assertThat(anotherCss.getSsRsrq()).isEqualTo(SSRSRQ);
assertThat(anotherCss.getSsSinr()).isEqualTo(SSSINR);
}
+
+ @Test
+ public void testLevel() {
+ CellSignalStrengthNr css = new CellSignalStrengthNr(CSIRSRP, CSIRSRQ, CSISINR, SSRSRP,
+ SSRSRQ, SSSINR);
+
+ // No keys in the bundle - should use RSRP and default levels.
+ css.updateLevel(null, null);
+ assertEquals(0 /* NONE or UNKNOWN */, css.getLevel());
+
+ doReturn(10).when(mSS).getArfcnRsrpBoost();
+ // Add rsrp boost and level should change to 1 - POOR
+ css.updateLevel(null, mSS);
+ assertEquals(1 /* MODERATE */, css.getLevel());
+ }
}