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 "test/gmock.h"
13 #include "test/gtest.h"
14 
15 namespace webrtc {
16 
TEST(RtpPacketInfoTest,Ssrc)17 TEST(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 
40   rhs = RtpPacketInfo(value, {}, {}, {}, {}, {});
41   EXPECT_EQ(rhs.ssrc(), value);
42 }
43 
TEST(RtpPacketInfoTest,Csrcs)44 TEST(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 
67   rhs = RtpPacketInfo({}, value, {}, {}, {}, {});
68   EXPECT_EQ(rhs.csrcs(), value);
69 }
70 
TEST(RtpPacketInfoTest,RtpTimestamp)71 TEST(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 
94   rhs = RtpPacketInfo({}, {}, value, {}, {}, {});
95   EXPECT_EQ(rhs.rtp_timestamp(), value);
96 }
97 
TEST(RtpPacketInfoTest,AudioLevel)98 TEST(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 
121   rhs = RtpPacketInfo({}, {}, {}, value, {}, {});
122   EXPECT_EQ(rhs.audio_level(), value);
123 }
124 
TEST(RtpPacketInfoTest,AbsoluteCaptureTime)125 TEST(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 
148   rhs = RtpPacketInfo({}, {}, {}, {}, value, {});
149   EXPECT_EQ(rhs.absolute_capture_time(), value);
150 }
151 
TEST(RtpPacketInfoTest,ReceiveTimeMs)152 TEST(RtpPacketInfoTest, ReceiveTimeMs) {
153   const int64_t value = 8868963877546349045LL;
154 
155   RtpPacketInfo lhs;
156   RtpPacketInfo rhs;
157 
158   EXPECT_TRUE(lhs == rhs);
159   EXPECT_FALSE(lhs != rhs);
160 
161   rhs.set_receive_time_ms(value);
162   EXPECT_EQ(rhs.receive_time_ms(), value);
163 
164   EXPECT_FALSE(lhs == rhs);
165   EXPECT_TRUE(lhs != rhs);
166 
167   lhs = rhs;
168 
169   EXPECT_TRUE(lhs == rhs);
170   EXPECT_FALSE(lhs != rhs);
171 
172   rhs = RtpPacketInfo();
173   EXPECT_NE(rhs.receive_time_ms(), value);
174 
175   rhs = RtpPacketInfo({}, {}, {}, {}, {}, value);
176   EXPECT_EQ(rhs.receive_time_ms(), value);
177 }
178 
179 }  // namespace webrtc
180