blob: ee8766a306772e9f71501c2a650e2e60f7219d5d [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"
12
13#include "test/gmock.h"
14#include "test/gtest.h"
15
16namespace webrtc {
17
18TEST(RtpPacketInfoTest, Ssrc) {
19 const uint32_t value = 4038189233;
20
21 RtpPacketInfo lhs;
22 RtpPacketInfo rhs;
23
24 EXPECT_TRUE(lhs == rhs);
25 EXPECT_FALSE(lhs != rhs);
26
27 rhs.set_ssrc(value);
28 EXPECT_EQ(rhs.ssrc(), value);
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(), value);
40
Chen Xing12d64de2019-06-13 20:36:12 +020041 rhs = RtpPacketInfo(value, {}, {}, {}, {});
Chen Xingd2a66862019-06-03 14:53:42 +020042 EXPECT_EQ(rhs.ssrc(), value);
43}
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
Chen Xing12d64de2019-06-13 20:36:12 +020068 rhs = RtpPacketInfo({}, value, {}, {}, {});
Chen Xingd2a66862019-06-03 14:53:42 +020069 EXPECT_EQ(rhs.csrcs(), value);
70}
71
Chen Xingd2a66862019-06-03 14:53:42 +020072TEST(RtpPacketInfoTest, RtpTimestamp) {
73 const uint32_t value = 4038189233;
74
75 RtpPacketInfo lhs;
76 RtpPacketInfo rhs;
77
78 EXPECT_TRUE(lhs == rhs);
79 EXPECT_FALSE(lhs != rhs);
80
81 rhs.set_rtp_timestamp(value);
82 EXPECT_EQ(rhs.rtp_timestamp(), value);
83
84 EXPECT_FALSE(lhs == rhs);
85 EXPECT_TRUE(lhs != rhs);
86
87 lhs = rhs;
88
89 EXPECT_TRUE(lhs == rhs);
90 EXPECT_FALSE(lhs != rhs);
91
92 rhs = RtpPacketInfo();
93 EXPECT_NE(rhs.rtp_timestamp(), value);
94
Chen Xing12d64de2019-06-13 20:36:12 +020095 rhs = RtpPacketInfo({}, {}, value, {}, {});
Chen Xingd2a66862019-06-03 14:53:42 +020096 EXPECT_EQ(rhs.rtp_timestamp(), value);
97}
98
99TEST(RtpPacketInfoTest, AudioLevel) {
100 const absl::optional<uint8_t> value = 31;
101
102 RtpPacketInfo lhs;
103 RtpPacketInfo rhs;
104
105 EXPECT_TRUE(lhs == rhs);
106 EXPECT_FALSE(lhs != rhs);
107
108 rhs.set_audio_level(value);
109 EXPECT_EQ(rhs.audio_level(), value);
110
111 EXPECT_FALSE(lhs == rhs);
112 EXPECT_TRUE(lhs != rhs);
113
114 lhs = rhs;
115
116 EXPECT_TRUE(lhs == rhs);
117 EXPECT_FALSE(lhs != rhs);
118
119 rhs = RtpPacketInfo();
120 EXPECT_NE(rhs.audio_level(), value);
121
Chen Xing12d64de2019-06-13 20:36:12 +0200122 rhs = RtpPacketInfo({}, {}, {}, value, {});
Chen Xingd2a66862019-06-03 14:53:42 +0200123 EXPECT_EQ(rhs.audio_level(), value);
124}
125
126TEST(RtpPacketInfoTest, ReceiveTimeMs) {
127 const int64_t value = 8868963877546349045LL;
128
129 RtpPacketInfo lhs;
130 RtpPacketInfo rhs;
131
132 EXPECT_TRUE(lhs == rhs);
133 EXPECT_FALSE(lhs != rhs);
134
135 rhs.set_receive_time_ms(value);
136 EXPECT_EQ(rhs.receive_time_ms(), value);
137
138 EXPECT_FALSE(lhs == rhs);
139 EXPECT_TRUE(lhs != rhs);
140
141 lhs = rhs;
142
143 EXPECT_TRUE(lhs == rhs);
144 EXPECT_FALSE(lhs != rhs);
145
146 rhs = RtpPacketInfo();
147 EXPECT_NE(rhs.receive_time_ms(), value);
148
Chen Xing12d64de2019-06-13 20:36:12 +0200149 rhs = RtpPacketInfo({}, {}, {}, {}, value);
Chen Xingd2a66862019-06-03 14:53:42 +0200150 EXPECT_EQ(rhs.receive_time_ms(), value);
151}
152
153} // namespace webrtc