aboutsummaryrefslogtreecommitdiff
path: root/tests/src/com/android/ims/rcs/uce/UceStatsWriterTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/com/android/ims/rcs/uce/UceStatsWriterTest.java')
-rw-r--r--tests/src/com/android/ims/rcs/uce/UceStatsWriterTest.java292
1 files changed, 292 insertions, 0 deletions
diff --git a/tests/src/com/android/ims/rcs/uce/UceStatsWriterTest.java b/tests/src/com/android/ims/rcs/uce/UceStatsWriterTest.java
new file mode 100644
index 00000000..49edf198
--- /dev/null
+++ b/tests/src/com/android/ims/rcs/uce/UceStatsWriterTest.java
@@ -0,0 +1,292 @@
+/*
+ * Copyright (C) 2021 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.ims.rcs.uce;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+
+import android.telephony.ims.RcsContactPresenceTuple;
+import android.telephony.ims.RcsContactUceCapability;
+
+import com.android.ims.rcs.uce.UceStatsWriter;
+import com.android.ims.rcs.uce.UceStatsWriter.UceStatsCallback;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class UceStatsWriterTest {
+ private int mSubId = 3;
+ private long mTaskId = 5;
+ private int mRegistrationTech = 3;
+ private int mType = 2;
+ private boolean mSuccessful = true;
+ private int mCommandCode = 4;
+ private int mNetworkResponse = 200;
+ private String mReason = "noresource";
+
+ private Callback mCallback;
+ private TestableUceStatsWriter mWrite;
+
+ class Callback implements UceStatsCallback {
+ int subId;
+ List<String> featureTagList;
+ List<String> serviceIdList;
+ List<String> versions;
+ int registrationTech;
+ int type;
+ boolean successful;
+ int commandCode;
+ int networkResponse;
+ long taskId;
+ List<RcsContactUceCapability> updatedCapList;
+ String reason;
+
+ Callback() {
+ }
+
+ public void onImsRegistrationFeatureTagStats(int subId, List<String> featureTagList,
+ int registrationTech) {
+ this.subId = subId;
+ this.featureTagList = featureTagList;
+ this.registrationTech = registrationTech;
+ }
+
+ public void onStoreCompleteImsRegistrationFeatureTagStats(int subId) {}
+
+ public void onImsRegistrationServiceDescStats(int subId, List<String> serviceIdList,
+ List<String> serviceIdVersionList, int registrationTech) {
+ this.subId = subId;
+ this.serviceIdList = serviceIdList;
+ this.versions = serviceIdVersionList;
+ this.registrationTech = registrationTech;
+ }
+
+ public void onSubscribeResponse(int subId, long taskId, int networkResponse) {
+ this.subId = subId;
+ this.taskId = taskId;
+ this.successful = true;
+ this.commandCode = 0;
+ this.networkResponse = networkResponse;
+ }
+
+ public void onUceEvent(int subId, int type, boolean successful, int commandCode,
+ int networkResponse) {
+ this.subId = subId;
+ this.type = type;
+ this.successful = successful;
+ this.commandCode = commandCode;
+ this.networkResponse = networkResponse;
+ }
+
+ public void onSubscribeTerminated(int subId, long taskId, String reason) {
+ this.subId = subId;
+ this.taskId = taskId;
+ this.reason = reason;
+ }
+
+ public void onPresenceNotifyEvent(int subId, long taskId,
+ List<RcsContactUceCapability> updatedCapList) {
+ this.subId = subId;
+ this.taskId = taskId;
+ this.updatedCapList = updatedCapList;
+ }
+
+ public void onStoreCompleteImsRegistrationServiceDescStats(int subId) {
+ this.subId = subId;
+ }
+ }
+
+ private class TestableUceStatsWriter extends UceStatsWriter {
+ public TestableUceStatsWriter(UceStatsCallback callback) {
+ super(callback);
+ }
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ mCallback = new Callback();
+ mWrite = new TestableUceStatsWriter(mCallback);
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ @Test
+ @SmallTest
+ public void setImsRegistrationFeatureTagStats() throws Exception {
+ List<String> featureTags = new ArrayList<>();
+ featureTags.add("+g.3gpp.iari-ref=\"urn%3Aurn-7%3A3gpp-application.ims.iari.rcse.im\"");
+ featureTags.add("+g.3gpp.icsi-ref=\"urn%3Aurn-7%3A3gpp-service.ims.icsi.oma.cpm.session\"");
+ featureTags.add("+g.3gpp.iari-ref=\"urn%3Aurn-7%3A3gpp-application.ims.iari.rcs.ftsms\"");
+ mWrite.setImsRegistrationFeatureTagStats(mSubId, featureTags, mRegistrationTech);
+ assertEquals(mSubId, mCallback.subId);
+ for (int index = 0; index < featureTags.size(); index++) {
+ assertEquals(featureTags.get(index), mCallback.featureTagList.get(index));
+ }
+ assertEquals(mRegistrationTech, mCallback.registrationTech);
+ }
+
+ @Test
+ @SmallTest
+ public void setImsRegistrationServiceDescStats() throws Exception {
+ List<RcsContactPresenceTuple> tupleList = new ArrayList<>();
+ tupleList.add(getContactChatTuple());
+ tupleList.add(getContactFtTuple());
+ tupleList.add(getContactUnknown1Tuple());
+ tupleList.add(getContactUnknown2Tuple());
+ mWrite.setImsRegistrationServiceDescStats(mSubId, tupleList, mRegistrationTech);
+ assertEquals(mSubId, mCallback.subId);
+ for (int index = 0; index < tupleList.size(); index++) {
+ assertEquals(tupleList.get(index).getServiceId(), mCallback.serviceIdList.get(index));
+ assertEquals(tupleList.get(index).getServiceVersion(), mCallback.versions.get(index));
+ }
+ assertEquals(mRegistrationTech, mCallback.registrationTech);
+ }
+
+ @Test
+ @SmallTest
+ public void setSubscribeEvent() throws Exception {
+ mWrite.setSubscribeResponse(mSubId, mTaskId, mNetworkResponse);
+ assertEquals(mSubId, mCallback.subId);
+ assertEquals(mTaskId, mCallback.taskId);
+ assertTrue(mCallback.successful);
+ assertEquals(0, mCallback.commandCode);
+ assertEquals(mNetworkResponse, mCallback.networkResponse);
+ }
+
+ @Test
+ @SmallTest
+ public void setSubscribeTerminated() throws Exception {
+ mWrite.setSubscribeResponse(mSubId, mTaskId, mNetworkResponse);
+ mWrite.setSubscribeTerminated(mSubId, mTaskId, mReason);
+ assertEquals(mSubId, mCallback.subId);
+ assertEquals(mTaskId, mCallback.taskId);
+ assertEquals(mReason, mCallback.reason);
+ }
+
+ @Test
+ @SmallTest
+ public void setUceEvent() throws Exception {
+ mWrite.setUceEvent(mSubId, mType, mSuccessful, mCommandCode, mNetworkResponse);
+ assertEquals(mSubId, mCallback.subId);
+ assertEquals(mType, mCallback.type);
+ assertEquals(mSuccessful, mCallback.successful);
+ assertEquals(mCommandCode, mCallback.commandCode);
+ assertEquals(mNetworkResponse, mCallback.networkResponse);
+ }
+
+ @Test
+ @SmallTest
+ public void setPresenceNotifyEvent() throws Exception {
+ List<RcsContactUceCapability> updatedCapList = new ArrayList<>();
+ RcsContactUceCapability.PresenceBuilder builder =
+ new RcsContactUceCapability.PresenceBuilder(null, 0, 2);
+ builder.addCapabilityTuple(getContactChatTuple());
+ builder.addCapabilityTuple(getContactCallComposer2Tuple());
+ builder.addCapabilityTuple(getContactUnknown1Tuple());
+ updatedCapList.add(builder.build());
+
+ mWrite.setPresenceNotifyEvent(mSubId, mTaskId, updatedCapList);
+ assertEquals(mSubId, mCallback.subId);
+ assertEquals(mTaskId, mCallback.taskId);
+ assertEquals(updatedCapList.size(), mCallback.updatedCapList.size());
+ for (int index = 0; index < updatedCapList.size(); index++) {
+ RcsContactUceCapability input = updatedCapList.get(index);
+ RcsContactUceCapability output = mCallback.updatedCapList.get(index);
+ assertEquals(input.getCapabilityTuples().size(), output.getCapabilityTuples().size());
+ }
+ }
+
+ @Test
+ @SmallTest
+ public void setPresenceNotifyEvent_withCallComposer2Caps() throws Exception {
+ RcsContactPresenceTuple tuple = getContactCallComposer2Tuple();
+ List<RcsContactUceCapability> updatedCapList = new ArrayList<>();
+ RcsContactUceCapability.PresenceBuilder builder =
+ new RcsContactUceCapability.PresenceBuilder(null, 0, 2);
+ builder.addCapabilityTuple(getContactCallComposer2Tuple());
+ updatedCapList.add(builder.build());
+
+ mWrite.setPresenceNotifyEvent(mSubId, mTaskId, updatedCapList);
+ assertEquals(mSubId, mCallback.subId);
+ assertEquals(mTaskId, mCallback.taskId);
+ assertEquals(updatedCapList.size(), mCallback.updatedCapList.size());
+ }
+
+ @Test
+ @SmallTest
+ public void setUnPublish() throws Exception {
+ mWrite.setUnPublish(mSubId);
+ assertEquals(mSubId, mCallback.subId);
+ }
+
+ private RcsContactPresenceTuple getContactChatTuple() {
+ RcsContactPresenceTuple.Builder builder =
+ new RcsContactPresenceTuple.Builder("open", RcsContactPresenceTuple.SERVICE_ID_CHAT_V1,
+ "1.0");
+ return builder.build();
+ }
+
+ private RcsContactPresenceTuple getContactMmtelTuple() {
+ RcsContactPresenceTuple.Builder builder =
+ new RcsContactPresenceTuple.Builder("open", RcsContactPresenceTuple.SERVICE_ID_MMTEL,
+ "1.0");
+ return builder.build();
+ }
+
+ private RcsContactPresenceTuple getContactFtTuple() {
+ RcsContactPresenceTuple.Builder builder =
+ new RcsContactPresenceTuple.Builder("open", RcsContactPresenceTuple.SERVICE_ID_FT,
+ "1.0");
+ return builder.build();
+ }
+
+ private RcsContactPresenceTuple getContactCallComposer2Tuple() {
+ RcsContactPresenceTuple.Builder builder =
+ new RcsContactPresenceTuple.Builder("open",
+ RcsContactPresenceTuple.SERVICE_ID_CALL_COMPOSER,
+ "2.0");
+ return builder.build();
+ }
+
+ private RcsContactPresenceTuple getContactUnknown1Tuple() {
+ RcsContactPresenceTuple.Builder builder =
+ new RcsContactPresenceTuple.Builder("open", "Unknown1",
+ "8.0");
+ return builder.build();
+ }
+
+ private RcsContactPresenceTuple getContactUnknown2Tuple() {
+ RcsContactPresenceTuple.Builder builder =
+ new RcsContactPresenceTuple.Builder("open", "Unknown2",
+ "9.0");
+ return builder.build();
+ }
+}