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