xref: /aosp_15_r20/external/webrtc/api/rtp_packet_info_unittest.cc (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1 /*
2  *  Copyright (c) 2019 The WebRTC project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #include "api/rtp_packet_infos.h"
12 #include "api/units/time_delta.h"
13 #include "test/gmock.h"
14 #include "test/gtest.h"
15 
16 namespace webrtc {
17 
TEST(RtpPacketInfoTest,Ssrc)18 TEST(RtpPacketInfoTest, Ssrc) {
19   constexpr uint32_t kValue = 4038189233;
20 
21   RtpPacketInfo lhs;
22   RtpPacketInfo rhs;
23 
24   EXPECT_TRUE(lhs == rhs);
25   EXPECT_FALSE(lhs != rhs);
26 
27   rhs.set_ssrc(kValue);
28   EXPECT_EQ(rhs.ssrc(), kValue);
29 
30   EXPECT_FALSE(lhs == rhs);
31   EXPECT_TRUE(lhs != rhs);
32 
33   lhs = rhs;
34 
35   EXPECT_TRUE(lhs == rhs);
36   EXPECT_FALSE(lhs != rhs);
37 
38   rhs = RtpPacketInfo();
39   EXPECT_NE(rhs.ssrc(), kValue);
40 
41   rhs = RtpPacketInfo(/*ssrc=*/kValue, /*csrcs=*/{}, /*rtp_timestamp=*/{},
42                       /*receive_time=*/Timestamp::Zero());
43   EXPECT_EQ(rhs.ssrc(), kValue);
44 }
45 
TEST(RtpPacketInfoTest,Csrcs)46 TEST(RtpPacketInfoTest, Csrcs) {
47   const std::vector<uint32_t> value = {4038189233, 3016333617, 1207992985};
48 
49   RtpPacketInfo lhs;
50   RtpPacketInfo rhs;
51 
52   EXPECT_TRUE(lhs == rhs);
53   EXPECT_FALSE(lhs != rhs);
54 
55   rhs.set_csrcs(value);
56   EXPECT_EQ(rhs.csrcs(), value);
57 
58   EXPECT_FALSE(lhs == rhs);
59   EXPECT_TRUE(lhs != rhs);
60 
61   lhs = rhs;
62 
63   EXPECT_TRUE(lhs == rhs);
64   EXPECT_FALSE(lhs != rhs);
65 
66   rhs = RtpPacketInfo();
67   EXPECT_NE(rhs.csrcs(), value);
68 
69   rhs = RtpPacketInfo(/*ssrc=*/{}, /*csrcs=*/value, /*rtp_timestamp=*/{},
70                       /*receive_time=*/Timestamp::Zero());
71   EXPECT_EQ(rhs.csrcs(), value);
72 }
73 
TEST(RtpPacketInfoTest,RtpTimestamp)74 TEST(RtpPacketInfoTest, RtpTimestamp) {
75   constexpr uint32_t kValue = 4038189233;
76 
77   RtpPacketInfo lhs;
78   RtpPacketInfo rhs;
79 
80   EXPECT_TRUE(lhs == rhs);
81   EXPECT_FALSE(lhs != rhs);
82 
83   rhs.set_rtp_timestamp(kValue);
84   EXPECT_EQ(rhs.rtp_timestamp(), kValue);
85 
86   EXPECT_FALSE(lhs == rhs);
87   EXPECT_TRUE(lhs != rhs);
88 
89   lhs = rhs;
90 
91   EXPECT_TRUE(lhs == rhs);
92   EXPECT_FALSE(lhs != rhs);
93 
94   rhs = RtpPacketInfo();
95   EXPECT_NE(rhs.rtp_timestamp(), kValue);
96 
97   rhs = RtpPacketInfo(/*ssrc=*/{}, /*csrcs=*/{}, /*rtp_timestamp=*/kValue,
98                       /*receive_time=*/Timestamp::Zero());
99   EXPECT_EQ(rhs.rtp_timestamp(), kValue);
100 }
101 
TEST(RtpPacketInfoTest,ReceiveTimeMs)102 TEST(RtpPacketInfoTest, ReceiveTimeMs) {
103   constexpr Timestamp kValue = Timestamp::Micros(8868963877546349045LL);
104 
105   RtpPacketInfo lhs;
106   RtpPacketInfo rhs;
107 
108   EXPECT_TRUE(lhs == rhs);
109   EXPECT_FALSE(lhs != rhs);
110 
111   rhs.set_receive_time(kValue);
112   EXPECT_EQ(rhs.receive_time(), kValue);
113 
114   EXPECT_FALSE(lhs == rhs);
115   EXPECT_TRUE(lhs != rhs);
116 
117   lhs = rhs;
118 
119   EXPECT_TRUE(lhs == rhs);
120   EXPECT_FALSE(lhs != rhs);
121 
122   rhs = RtpPacketInfo();
123   EXPECT_NE(rhs.receive_time(), kValue);
124 
125   rhs = RtpPacketInfo(/*ssrc=*/{}, /*csrcs=*/{}, /*rtp_timestamp=*/{},
126                       /*receive_time=*/kValue);
127   EXPECT_EQ(rhs.receive_time(), kValue);
128 }
129 
TEST(RtpPacketInfoTest,AudioLevel)130 TEST(RtpPacketInfoTest, AudioLevel) {
131   constexpr absl::optional<uint8_t> kValue = 31;
132 
133   RtpPacketInfo lhs;
134   RtpPacketInfo rhs;
135 
136   EXPECT_TRUE(lhs == rhs);
137   EXPECT_FALSE(lhs != rhs);
138 
139   rhs.set_audio_level(kValue);
140   EXPECT_EQ(rhs.audio_level(), kValue);
141 
142   EXPECT_FALSE(lhs == rhs);
143   EXPECT_TRUE(lhs != rhs);
144 
145   lhs = rhs;
146 
147   EXPECT_TRUE(lhs == rhs);
148   EXPECT_FALSE(lhs != rhs);
149 
150   rhs = RtpPacketInfo();
151   EXPECT_NE(rhs.audio_level(), kValue);
152 
153   rhs = RtpPacketInfo(/*ssrc=*/{}, /*csrcs=*/{}, /*rtp_timestamp=*/{},
154                       /*receive_time=*/Timestamp::Zero());
155   rhs.set_audio_level(kValue);
156   EXPECT_EQ(rhs.audio_level(), kValue);
157 }
158 
TEST(RtpPacketInfoTest,AbsoluteCaptureTime)159 TEST(RtpPacketInfoTest, AbsoluteCaptureTime) {
160   constexpr absl::optional<AbsoluteCaptureTime> kValue = AbsoluteCaptureTime{
161       .absolute_capture_timestamp = 12, .estimated_capture_clock_offset = 34};
162 
163   RtpPacketInfo lhs;
164   RtpPacketInfo rhs;
165 
166   EXPECT_TRUE(lhs == rhs);
167   EXPECT_FALSE(lhs != rhs);
168 
169   rhs.set_absolute_capture_time(kValue);
170   EXPECT_EQ(rhs.absolute_capture_time(), kValue);
171 
172   EXPECT_FALSE(lhs == rhs);
173   EXPECT_TRUE(lhs != rhs);
174 
175   lhs = rhs;
176 
177   EXPECT_TRUE(lhs == rhs);
178   EXPECT_FALSE(lhs != rhs);
179 
180   rhs = RtpPacketInfo();
181   EXPECT_NE(rhs.absolute_capture_time(), kValue);
182 
183   rhs = RtpPacketInfo(/*ssrc=*/{}, /*csrcs=*/{}, /*rtp_timestamp=*/{},
184                       /*receive_time=*/Timestamp::Zero());
185   rhs.set_absolute_capture_time(kValue);
186   EXPECT_EQ(rhs.absolute_capture_time(), kValue);
187 }
188 
TEST(RtpPacketInfoTest,LocalCaptureClockOffset)189 TEST(RtpPacketInfoTest, LocalCaptureClockOffset) {
190   constexpr TimeDelta kValue = TimeDelta::Micros(8868963877546349045LL);
191 
192   RtpPacketInfo lhs;
193   RtpPacketInfo rhs;
194 
195   EXPECT_TRUE(lhs == rhs);
196   EXPECT_FALSE(lhs != rhs);
197 
198   rhs.set_local_capture_clock_offset(kValue);
199   EXPECT_EQ(rhs.local_capture_clock_offset(), kValue);
200 
201   EXPECT_FALSE(lhs == rhs);
202   EXPECT_TRUE(lhs != rhs);
203 
204   lhs = rhs;
205 
206   EXPECT_TRUE(lhs == rhs);
207   EXPECT_FALSE(lhs != rhs);
208 
209   rhs = RtpPacketInfo();
210   EXPECT_EQ(rhs.local_capture_clock_offset(), absl::nullopt);
211 
212   rhs = RtpPacketInfo(/*ssrc=*/{}, /*csrcs=*/{}, /*rtp_timestamp=*/{},
213                       /*receive_time=*/Timestamp::Zero());
214   rhs.set_local_capture_clock_offset(kValue);
215   EXPECT_EQ(rhs.local_capture_clock_offset(), kValue);
216 }
217 
218 }  // namespace webrtc
219