blob: 80abccca6ca3b86ca97f936fc4d776774aa54205 [file] [log] [blame]
Chen Xingd2a66862019-06-03 14:53:42 +02001/*
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"
Chen Xingd2a66862019-06-03 14:53:42 +020012#include "test/gmock.h"
13#include "test/gtest.h"
14
15namespace webrtc {
16
17TEST(RtpPacketInfoTest, Ssrc) {
Alessio Bazzicaa1d03562022-09-19 18:05:29 +020018 constexpr uint32_t kValue = 4038189233;
Chen Xingd2a66862019-06-03 14:53:42 +020019
20 RtpPacketInfo lhs;
21 RtpPacketInfo rhs;
22
23 EXPECT_TRUE(lhs == rhs);
24 EXPECT_FALSE(lhs != rhs);
25
Alessio Bazzicaa1d03562022-09-19 18:05:29 +020026 rhs.set_ssrc(kValue);
27 EXPECT_EQ(rhs.ssrc(), kValue);
Chen Xingd2a66862019-06-03 14:53:42 +020028
29 EXPECT_FALSE(lhs == rhs);
30 EXPECT_TRUE(lhs != rhs);
31
32 lhs = rhs;
33
34 EXPECT_TRUE(lhs == rhs);
35 EXPECT_FALSE(lhs != rhs);
36
37 rhs = RtpPacketInfo();
Alessio Bazzicaa1d03562022-09-19 18:05:29 +020038 EXPECT_NE(rhs.ssrc(), kValue);
Chen Xingd2a66862019-06-03 14:53:42 +020039
Alessio Bazzicaa1d03562022-09-19 18:05:29 +020040 rhs = RtpPacketInfo(/*ssrc=*/kValue, /*csrcs=*/{}, /*rtp_timestamp=*/{},
41 /*receive_time=*/Timestamp::Zero());
42 EXPECT_EQ(rhs.ssrc(), kValue);
Chen Xingd2a66862019-06-03 14:53:42 +020043}
44
45TEST(RtpPacketInfoTest, Csrcs) {
46 const std::vector<uint32_t> value = {4038189233, 3016333617, 1207992985};
47
48 RtpPacketInfo lhs;
49 RtpPacketInfo rhs;
50
51 EXPECT_TRUE(lhs == rhs);
52 EXPECT_FALSE(lhs != rhs);
53
54 rhs.set_csrcs(value);
55 EXPECT_EQ(rhs.csrcs(), value);
56
57 EXPECT_FALSE(lhs == rhs);
58 EXPECT_TRUE(lhs != rhs);
59
60 lhs = rhs;
61
62 EXPECT_TRUE(lhs == rhs);
63 EXPECT_FALSE(lhs != rhs);
64
65 rhs = RtpPacketInfo();
66 EXPECT_NE(rhs.csrcs(), value);
67
Alessio Bazzicaa1d03562022-09-19 18:05:29 +020068 rhs = RtpPacketInfo(/*ssrc=*/{}, /*csrcs=*/value, /*rtp_timestamp=*/{},
69 /*receive_time=*/Timestamp::Zero());
Chen Xingd2a66862019-06-03 14:53:42 +020070 EXPECT_EQ(rhs.csrcs(), value);
71}
72
Chen Xingd2a66862019-06-03 14:53:42 +020073TEST(RtpPacketInfoTest, RtpTimestamp) {
Alessio Bazzicaa1d03562022-09-19 18:05:29 +020074 constexpr uint32_t kValue = 4038189233;
Chen Xingd2a66862019-06-03 14:53:42 +020075
76 RtpPacketInfo lhs;
77 RtpPacketInfo rhs;
78
79 EXPECT_TRUE(lhs == rhs);
80 EXPECT_FALSE(lhs != rhs);
81
Alessio Bazzicaa1d03562022-09-19 18:05:29 +020082 rhs.set_rtp_timestamp(kValue);
83 EXPECT_EQ(rhs.rtp_timestamp(), kValue);
Chen Xingd2a66862019-06-03 14:53:42 +020084
85 EXPECT_FALSE(lhs == rhs);
86 EXPECT_TRUE(lhs != rhs);
87
88 lhs = rhs;
89
90 EXPECT_TRUE(lhs == rhs);
91 EXPECT_FALSE(lhs != rhs);
92
93 rhs = RtpPacketInfo();
Alessio Bazzicaa1d03562022-09-19 18:05:29 +020094 EXPECT_NE(rhs.rtp_timestamp(), kValue);
Chen Xingd2a66862019-06-03 14:53:42 +020095
Alessio Bazzicaa1d03562022-09-19 18:05:29 +020096 rhs = RtpPacketInfo(/*ssrc=*/{}, /*csrcs=*/{}, /*rtp_timestamp=*/kValue,
97 /*receive_time=*/Timestamp::Zero());
98 EXPECT_EQ(rhs.rtp_timestamp(), kValue);
Minyue Li63b30952021-05-19 14:38:25 +020099}
100
Chen Xingd2a66862019-06-03 14:53:42 +0200101TEST(RtpPacketInfoTest, ReceiveTimeMs) {
Alessio Bazzicaa1d03562022-09-19 18:05:29 +0200102 constexpr Timestamp kValue = Timestamp::Micros(8868963877546349045LL);
Chen Xingd2a66862019-06-03 14:53:42 +0200103
104 RtpPacketInfo lhs;
105 RtpPacketInfo rhs;
106
107 EXPECT_TRUE(lhs == rhs);
108 EXPECT_FALSE(lhs != rhs);
109
Alessio Bazzicaa1d03562022-09-19 18:05:29 +0200110 rhs.set_receive_time(kValue);
111 EXPECT_EQ(rhs.receive_time(), kValue);
Chen Xingd2a66862019-06-03 14:53:42 +0200112
113 EXPECT_FALSE(lhs == rhs);
114 EXPECT_TRUE(lhs != rhs);
115
116 lhs = rhs;
117
118 EXPECT_TRUE(lhs == rhs);
119 EXPECT_FALSE(lhs != rhs);
120
121 rhs = RtpPacketInfo();
Alessio Bazzicaa1d03562022-09-19 18:05:29 +0200122 EXPECT_NE(rhs.receive_time(), kValue);
Chen Xingd2a66862019-06-03 14:53:42 +0200123
Alessio Bazzicaa1d03562022-09-19 18:05:29 +0200124 rhs = RtpPacketInfo(/*ssrc=*/{}, /*csrcs=*/{}, /*rtp_timestamp=*/{},
125 /*receive_time=*/kValue);
126 EXPECT_EQ(rhs.receive_time(), kValue);
127}
128
129TEST(RtpPacketInfoTest, AudioLevel) {
130 constexpr absl::optional<uint8_t> kValue = 31;
131
132 RtpPacketInfo lhs;
133 RtpPacketInfo rhs;
134
135 EXPECT_TRUE(lhs == rhs);
136 EXPECT_FALSE(lhs != rhs);
137
138 rhs.set_audio_level(kValue);
139 EXPECT_EQ(rhs.audio_level(), kValue);
140
141 EXPECT_FALSE(lhs == rhs);
142 EXPECT_TRUE(lhs != rhs);
143
144 lhs = rhs;
145
146 EXPECT_TRUE(lhs == rhs);
147 EXPECT_FALSE(lhs != rhs);
148
149 rhs = RtpPacketInfo();
150 EXPECT_NE(rhs.audio_level(), kValue);
151
152 rhs = RtpPacketInfo(/*ssrc=*/{}, /*csrcs=*/{}, /*rtp_timestamp=*/{},
153 /*receive_time=*/Timestamp::Zero());
154 rhs.set_audio_level(kValue);
155 EXPECT_EQ(rhs.audio_level(), kValue);
156}
157
158TEST(RtpPacketInfoTest, AbsoluteCaptureTime) {
159 constexpr absl::optional<AbsoluteCaptureTime> kValue = AbsoluteCaptureTime{
160 .absolute_capture_timestamp = 12, .estimated_capture_clock_offset = 34};
161
162 RtpPacketInfo lhs;
163 RtpPacketInfo rhs;
164
165 EXPECT_TRUE(lhs == rhs);
166 EXPECT_FALSE(lhs != rhs);
167
168 rhs.set_absolute_capture_time(kValue);
169 EXPECT_EQ(rhs.absolute_capture_time(), kValue);
170
171 EXPECT_FALSE(lhs == rhs);
172 EXPECT_TRUE(lhs != rhs);
173
174 lhs = rhs;
175
176 EXPECT_TRUE(lhs == rhs);
177 EXPECT_FALSE(lhs != rhs);
178
179 rhs = RtpPacketInfo();
180 EXPECT_NE(rhs.absolute_capture_time(), kValue);
181
182 rhs = RtpPacketInfo(/*ssrc=*/{}, /*csrcs=*/{}, /*rtp_timestamp=*/{},
183 /*receive_time=*/Timestamp::Zero());
184 rhs.set_absolute_capture_time(kValue);
185 EXPECT_EQ(rhs.absolute_capture_time(), kValue);
186}
187
188TEST(RtpPacketInfoTest, LocalCaptureClockOffset) {
189 constexpr absl::optional<int64_t> kValue = 10;
190
191 RtpPacketInfo lhs;
192 RtpPacketInfo rhs;
193
194 EXPECT_TRUE(lhs == rhs);
195 EXPECT_FALSE(lhs != rhs);
196
197 rhs.set_local_capture_clock_offset(kValue);
198 EXPECT_EQ(rhs.local_capture_clock_offset(), kValue);
199
200 EXPECT_FALSE(lhs == rhs);
201 EXPECT_TRUE(lhs != rhs);
202
203 lhs = rhs;
204
205 EXPECT_TRUE(lhs == rhs);
206 EXPECT_FALSE(lhs != rhs);
207
208 rhs = RtpPacketInfo();
209 EXPECT_EQ(rhs.local_capture_clock_offset(), absl::nullopt);
210
211 rhs = RtpPacketInfo(/*ssrc=*/{}, /*csrcs=*/{}, /*rtp_timestamp=*/{},
212 /*receive_time=*/Timestamp::Zero());
213 rhs.set_local_capture_clock_offset(kValue);
214 EXPECT_EQ(rhs.local_capture_clock_offset(), kValue);
Chen Xingd2a66862019-06-03 14:53:42 +0200215}
216
217} // namespace webrtc