1 /**
2  * Copyright (C) 2023 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.telephony.imsmedia;
18 
19 import static com.google.common.truth.Truth.assertThat;
20 
21 import android.os.Parcel;
22 import android.telephony.imsmedia.MediaQualityStatus;
23 
24 import androidx.test.runner.AndroidJUnit4;
25 
26 import org.junit.Test;
27 import org.junit.runner.RunWith;
28 
29 @RunWith(AndroidJUnit4.class)
30 public class MediaQualityStatusTest {
31     private static final int RTP_INACTIVITY_TIME = 10000;
32     private static final int RTCP_INACTIVITY_TIME = 15000;
33     private static final int RTP_PACKET_LOSS_RATE = 1;
34     private static final int RTP_JITTER = 100;
35 
createMediaQualityStatus()36     static MediaQualityStatus createMediaQualityStatus() {
37         return new MediaQualityStatus.Builder()
38                 .setRtpInactivityTimeMillis(RTP_INACTIVITY_TIME)
39                 .setRtcpInactivityTimeMillis(RTCP_INACTIVITY_TIME)
40                 .setRtpPacketLossRate(RTP_PACKET_LOSS_RATE)
41                 .setRtpJitterMillis(RTP_JITTER)
42                 .build();
43     }
44 
createHalMediaQualityStatus()45     static android.hardware.radio.ims.media.MediaQualityStatus createHalMediaQualityStatus() {
46         final android.hardware.radio.ims.media.MediaQualityStatus status =
47                 new android.hardware.radio.ims.media.MediaQualityStatus();
48         status.rtpInactivityTimeMillis = RTP_INACTIVITY_TIME;
49         status.rtcpInactivityTimeMillis = RTCP_INACTIVITY_TIME;
50         status.rtpPacketLossRate = RTP_PACKET_LOSS_RATE;
51         status.rtpJitterMillis = RTP_JITTER;
52         return status;
53     }
54 
55     @Test
testConstructorAndGetters()56     public void testConstructorAndGetters() {
57         MediaQualityStatus status = createMediaQualityStatus();
58         assertThat(status.getRtpInactivityTimeMillis()).isEqualTo(RTP_INACTIVITY_TIME);
59         assertThat(status.getRtcpInactivityTimeMillis()).isEqualTo(RTCP_INACTIVITY_TIME);
60         assertThat(status.getRtpPacketLossRate()).isEqualTo(RTP_PACKET_LOSS_RATE);
61         assertThat(status.getRtpJitterMillis()).isEqualTo(RTP_JITTER);
62     }
63 
64     @Test
testParcel()65     public void testParcel() {
66         MediaQualityStatus status = createMediaQualityStatus();
67 
68         Parcel parcel = Parcel.obtain();
69         status.writeToParcel(parcel, 0);
70         parcel.setDataPosition(0);
71 
72         MediaQualityStatus parcelConfig = MediaQualityStatus.CREATOR.createFromParcel(parcel);
73         assertThat(status).isEqualTo(parcelConfig);
74     }
75 
76     @Test
testEqual()77     public void testEqual() {
78         MediaQualityStatus status1 = createMediaQualityStatus();
79         MediaQualityStatus status2 = createMediaQualityStatus();
80         assertThat(status1).isEqualTo(status2);
81     }
82 
83     @Test
testNotEqual()84     public void testNotEqual() {
85         MediaQualityStatus status1 = createMediaQualityStatus();
86         MediaQualityStatus status2 = new MediaQualityStatus.Builder()
87                 .setRtpInactivityTimeMillis(RTP_INACTIVITY_TIME + 1)
88                 .setRtcpInactivityTimeMillis(RTCP_INACTIVITY_TIME)
89                 .setRtpPacketLossRate(RTP_PACKET_LOSS_RATE)
90                 .setRtpJitterMillis(RTP_JITTER)
91                 .build();
92 
93         assertThat(status1).isNotEqualTo(status2);
94 
95         MediaQualityStatus status3 = new MediaQualityStatus.Builder()
96                 .setRtpInactivityTimeMillis(RTP_INACTIVITY_TIME)
97                 .setRtcpInactivityTimeMillis(RTCP_INACTIVITY_TIME + 1)
98                 .setRtpPacketLossRate(RTP_PACKET_LOSS_RATE)
99                 .setRtpJitterMillis(RTP_JITTER)
100                 .build();
101 
102         assertThat(status1).isNotEqualTo(status3);
103 
104         MediaQualityStatus status4 = new MediaQualityStatus.Builder()
105                 .setRtpInactivityTimeMillis(RTP_INACTIVITY_TIME)
106                 .setRtcpInactivityTimeMillis(RTCP_INACTIVITY_TIME)
107                 .setRtpPacketLossRate(RTP_PACKET_LOSS_RATE + 1)
108                 .setRtpJitterMillis(RTP_JITTER)
109                 .build();
110 
111         assertThat(status1).isNotEqualTo(status4);
112 
113         MediaQualityStatus status5 = new MediaQualityStatus.Builder()
114                 .setRtpInactivityTimeMillis(RTP_INACTIVITY_TIME)
115                 .setRtcpInactivityTimeMillis(RTCP_INACTIVITY_TIME)
116                 .setRtpPacketLossRate(RTP_PACKET_LOSS_RATE)
117                 .setRtpJitterMillis(RTP_JITTER + 1)
118                 .build();
119 
120         assertThat(status1).isNotEqualTo(status5);
121     }
122 }
123