blob: 0e82aef0242107b658bc8539ba2773831d0f1853 [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) {
18 const uint32_t value = 4038189233;
19
20 RtpPacketInfo lhs;
21 RtpPacketInfo rhs;
22
23 EXPECT_TRUE(lhs == rhs);
24 EXPECT_FALSE(lhs != rhs);
25
26 rhs.set_ssrc(value);
27 EXPECT_EQ(rhs.ssrc(), value);
28
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();
38 EXPECT_NE(rhs.ssrc(), value);
39
Philipp Hanckea204ad22022-07-08 18:43:25 +020040 rhs = RtpPacketInfo(value, {}, {}, {}, {}, Timestamp::Zero());
Chen Xingd2a66862019-06-03 14:53:42 +020041 EXPECT_EQ(rhs.ssrc(), value);
42}
43
44TEST(RtpPacketInfoTest, Csrcs) {
45 const std::vector<uint32_t> value = {4038189233, 3016333617, 1207992985};
46
47 RtpPacketInfo lhs;
48 RtpPacketInfo rhs;
49
50 EXPECT_TRUE(lhs == rhs);
51 EXPECT_FALSE(lhs != rhs);
52
53 rhs.set_csrcs(value);
54 EXPECT_EQ(rhs.csrcs(), value);
55
56 EXPECT_FALSE(lhs == rhs);
57 EXPECT_TRUE(lhs != rhs);
58
59 lhs = rhs;
60
61 EXPECT_TRUE(lhs == rhs);
62 EXPECT_FALSE(lhs != rhs);
63
64 rhs = RtpPacketInfo();
65 EXPECT_NE(rhs.csrcs(), value);
66
Philipp Hanckea204ad22022-07-08 18:43:25 +020067 rhs = RtpPacketInfo({}, value, {}, {}, {}, Timestamp::Zero());
Chen Xingd2a66862019-06-03 14:53:42 +020068 EXPECT_EQ(rhs.csrcs(), value);
69}
70
Chen Xingd2a66862019-06-03 14:53:42 +020071TEST(RtpPacketInfoTest, RtpTimestamp) {
72 const uint32_t value = 4038189233;
73
74 RtpPacketInfo lhs;
75 RtpPacketInfo rhs;
76
77 EXPECT_TRUE(lhs == rhs);
78 EXPECT_FALSE(lhs != rhs);
79
80 rhs.set_rtp_timestamp(value);
81 EXPECT_EQ(rhs.rtp_timestamp(), value);
82
83 EXPECT_FALSE(lhs == rhs);
84 EXPECT_TRUE(lhs != rhs);
85
86 lhs = rhs;
87
88 EXPECT_TRUE(lhs == rhs);
89 EXPECT_FALSE(lhs != rhs);
90
91 rhs = RtpPacketInfo();
92 EXPECT_NE(rhs.rtp_timestamp(), value);
93
Philipp Hanckea204ad22022-07-08 18:43:25 +020094 rhs = RtpPacketInfo({}, {}, value, {}, {}, Timestamp::Zero());
Chen Xingd2a66862019-06-03 14:53:42 +020095 EXPECT_EQ(rhs.rtp_timestamp(), value);
96}
97
98TEST(RtpPacketInfoTest, AudioLevel) {
99 const absl::optional<uint8_t> value = 31;
100
101 RtpPacketInfo lhs;
102 RtpPacketInfo rhs;
103
104 EXPECT_TRUE(lhs == rhs);
105 EXPECT_FALSE(lhs != rhs);
106
107 rhs.set_audio_level(value);
108 EXPECT_EQ(rhs.audio_level(), value);
109
110 EXPECT_FALSE(lhs == rhs);
111 EXPECT_TRUE(lhs != rhs);
112
113 lhs = rhs;
114
115 EXPECT_TRUE(lhs == rhs);
116 EXPECT_FALSE(lhs != rhs);
117
118 rhs = RtpPacketInfo();
119 EXPECT_NE(rhs.audio_level(), value);
120
Philipp Hanckea204ad22022-07-08 18:43:25 +0200121 rhs = RtpPacketInfo({}, {}, {}, value, {}, Timestamp::Zero());
Chen Xingd2a66862019-06-03 14:53:42 +0200122 EXPECT_EQ(rhs.audio_level(), value);
123}
124
Chen Xinge08648d2019-08-05 16:29:13 +0200125TEST(RtpPacketInfoTest, AbsoluteCaptureTime) {
126 const absl::optional<AbsoluteCaptureTime> value = AbsoluteCaptureTime{12, 34};
127
128 RtpPacketInfo lhs;
129 RtpPacketInfo rhs;
130
131 EXPECT_TRUE(lhs == rhs);
132 EXPECT_FALSE(lhs != rhs);
133
134 rhs.set_absolute_capture_time(value);
135 EXPECT_EQ(rhs.absolute_capture_time(), value);
136
137 EXPECT_FALSE(lhs == rhs);
138 EXPECT_TRUE(lhs != rhs);
139
140 lhs = rhs;
141
142 EXPECT_TRUE(lhs == rhs);
143 EXPECT_FALSE(lhs != rhs);
144
145 rhs = RtpPacketInfo();
146 EXPECT_NE(rhs.absolute_capture_time(), value);
147
Philipp Hanckea204ad22022-07-08 18:43:25 +0200148 rhs = RtpPacketInfo({}, {}, {}, {}, value, Timestamp::Zero());
Chen Xinge08648d2019-08-05 16:29:13 +0200149 EXPECT_EQ(rhs.absolute_capture_time(), value);
150}
151
Minyue Li63b30952021-05-19 14:38:25 +0200152TEST(RtpPacketInfoTest, LocalCaptureClockOffset) {
153 RtpPacketInfo lhs;
154 RtpPacketInfo rhs;
155
156 EXPECT_TRUE(lhs == rhs);
157 EXPECT_FALSE(lhs != rhs);
158
159 const absl::optional<int64_t> value = 10;
160 rhs.set_local_capture_clock_offset(value);
161 EXPECT_EQ(rhs.local_capture_clock_offset(), value);
162
163 EXPECT_FALSE(lhs == rhs);
164 EXPECT_TRUE(lhs != rhs);
165
166 lhs = rhs;
167
168 EXPECT_TRUE(lhs == rhs);
169 EXPECT_FALSE(lhs != rhs);
170
171 // Default local capture clock offset is null.
172 rhs = RtpPacketInfo();
173 EXPECT_EQ(rhs.local_capture_clock_offset(), absl::nullopt);
174
175 // Default local capture clock offset is null.
176 rhs = RtpPacketInfo({}, {}, {}, {}, AbsoluteCaptureTime{12, 34},
Philipp Hanckea204ad22022-07-08 18:43:25 +0200177 Timestamp::Zero());
Minyue Li63b30952021-05-19 14:38:25 +0200178 EXPECT_EQ(rhs.local_capture_clock_offset(), absl::nullopt);
179}
180
Chen Xingd2a66862019-06-03 14:53:42 +0200181TEST(RtpPacketInfoTest, ReceiveTimeMs) {
Johannes Kronf7de74c2021-04-30 13:10:56 +0200182 const Timestamp timestamp = Timestamp::Micros(8868963877546349045LL);
Chen Xingd2a66862019-06-03 14:53:42 +0200183
184 RtpPacketInfo lhs;
185 RtpPacketInfo rhs;
186
187 EXPECT_TRUE(lhs == rhs);
188 EXPECT_FALSE(lhs != rhs);
189
Johannes Kronf7de74c2021-04-30 13:10:56 +0200190 rhs.set_receive_time(timestamp);
191 EXPECT_EQ(rhs.receive_time(), timestamp);
Chen Xingd2a66862019-06-03 14:53:42 +0200192
193 EXPECT_FALSE(lhs == rhs);
194 EXPECT_TRUE(lhs != rhs);
195
196 lhs = rhs;
197
198 EXPECT_TRUE(lhs == rhs);
199 EXPECT_FALSE(lhs != rhs);
200
201 rhs = RtpPacketInfo();
Johannes Kronf7de74c2021-04-30 13:10:56 +0200202 EXPECT_NE(rhs.receive_time(), timestamp);
Chen Xingd2a66862019-06-03 14:53:42 +0200203
Johannes Kronf7de74c2021-04-30 13:10:56 +0200204 rhs = RtpPacketInfo({}, {}, {}, {}, {}, timestamp);
205 EXPECT_EQ(rhs.receive_time(), timestamp);
Chen Xingd2a66862019-06-03 14:53:42 +0200206}
207
208} // namespace webrtc