1 /*
2  * Copyright (c) 2024 Shenzhen Kaihong Digital Industry Development Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "rtcp_unit_test.h"
17 #include <iostream>
18 #include "common/sharing_log.h"
19 #include "protocol/rtcp/include/rtcp_context.h"
20 
21 using namespace testing::ext;
22 using namespace OHOS::Sharing;
23 
24 namespace OHOS {
25 namespace Sharing {
26 
SetUpTestCase()27 void RtcpUnitTest::SetUpTestCase() {}
TearDownTestCase()28 void RtcpUnitTest::TearDownTestCase() {}
SetUp()29 void RtcpUnitTest::SetUp() {}
TearDown()30 void RtcpUnitTest::TearDown() {}
31 
32 namespace {
HWTEST_F(RtcpUnitTest, RtcpSenderContext_001, Function | SmallTest | Level2)33 HWTEST_F(RtcpUnitTest, RtcpSenderContext_001, Function | SmallTest | Level2)
34 {
35     auto context = std::make_shared<RtcpSenderContext>();
36     EXPECT_NE(context, nullptr);
37 }
38 
HWTEST_F(RtcpUnitTest, RtcpSenderContext_002, Function | SmallTest | Level2)39 HWTEST_F(RtcpUnitTest, RtcpSenderContext_002, Function | SmallTest | Level2)
40 {
41     auto context = std::make_shared<RtcpSenderContext>();
42     EXPECT_NE(context, nullptr);
43     uint32_t ssrc = 0;
44     uint32_t rtt = 1;
45     context->rtt_[ssrc] = rtt;
46     auto ret = context->GetRtt(ssrc);
47     EXPECT_EQ(ret, rtt);
48 }
49 
HWTEST_F(RtcpUnitTest, RtcpSenderContext_003, Function | SmallTest | Level2)50 HWTEST_F(RtcpUnitTest, RtcpSenderContext_003, Function | SmallTest | Level2)
51 {
52     auto context = std::make_shared<RtcpSenderContext>();
53     EXPECT_NE(context, nullptr);
54     uint32_t ssrc = 0;
55     uint32_t rtt = 1;
56     context->rtt_[ssrc] = rtt;
57     auto ret = context->GetRtt(rtt);
58     EXPECT_EQ(ret, 0);
59 }
60 
HWTEST_F(RtcpUnitTest, RtcpSenderContext_004, Function | SmallTest | Level2)61 HWTEST_F(RtcpUnitTest, RtcpSenderContext_004, Function | SmallTest | Level2)
62 {
63     auto context = std::make_shared<RtcpSenderContext>();
64     EXPECT_NE(context, nullptr);
65     RtcpHeader head;
66     head.pt_ = static_cast<uint8_t>(RtcpType::RTCP_RR);
67     head.version_ = 2;
68     head.padding_ = 0;
69     head.reportCount_ = 0;
70     context->OnRtcp(&head);
71 }
72 
HWTEST_F(RtcpUnitTest, RtcpSenderContext_005, Function | SmallTest | Level2)73 HWTEST_F(RtcpUnitTest, RtcpSenderContext_005, Function | SmallTest | Level2)
74 {
75     auto context = std::make_shared<RtcpSenderContext>();
76     EXPECT_NE(context, nullptr);
77     RtcpHeader head;
78     head.pt_ = static_cast<uint8_t>(RtcpType::RTCP_XR);
79     head.version_ = 2;
80     head.padding_ = 0;
81     head.reportCount_ = 0;
82     context->OnRtcp(&head);
83 }
84 
HWTEST_F(RtcpUnitTest, RtcpSenderContext_006, Function | SmallTest | Level2)85 HWTEST_F(RtcpUnitTest, RtcpSenderContext_006, Function | SmallTest | Level2)
86 {
87     auto context = std::make_shared<RtcpSenderContext>();
88     EXPECT_NE(context, nullptr);
89     RtcpHeader head;
90     head.pt_ = static_cast<uint8_t>(RtcpType::RTCP_XR);
91     head.version_ = 2;
92     head.padding_ = 0;
93     head.reportCount_ = 0;
94     context->OnRtcp(&head);
95 }
96 
HWTEST_F(RtcpUnitTest, RtcpSenderContext_007, Function | SmallTest | Level2)97 HWTEST_F(RtcpUnitTest, RtcpSenderContext_007, Function | SmallTest | Level2)
98 {
99     auto context = std::make_shared<RtcpSenderContext>();
100     EXPECT_NE(context, nullptr);
101     uint32_t rtcp_ssrc = 0;
102     uint32_t rtp_ssrc = 0;
103     auto ret = context->CreateRtcpXRDLRR(rtcp_ssrc, rtp_ssrc);
104     EXPECT_EQ(ret, nullptr);
105 }
106 
HWTEST_F(RtcpUnitTest, RtcpReceiverContext_008, Function | SmallTest | Level2)107 HWTEST_F(RtcpUnitTest, RtcpReceiverContext_008, Function | SmallTest | Level2)
108 {
109     auto context = std::make_shared<RtcpReceiverContext>();
110     EXPECT_NE(context, nullptr);
111     RtcpHeader head;
112     head.pt_ = static_cast<uint8_t>(RtcpType::RTCP_SR);
113     head.version_ = 2;
114     head.padding_ = 0;
115     head.reportCount_ = 0;
116     context->OnRtcp(&head);
117 }
118 
HWTEST_F(RtcpUnitTest, RtcpReceiverContext_009, Function | SmallTest | Level2)119 HWTEST_F(RtcpUnitTest, RtcpReceiverContext_009, Function | SmallTest | Level2)
120 {
121     auto context = std::make_shared<RtcpReceiverContext>();
122     EXPECT_NE(context, nullptr);
123     RtcpHeader head;
124     head.pt_ = static_cast<uint8_t>(RtcpType::RTCP_RR);
125     head.version_ = 2;
126     head.padding_ = 0;
127     head.reportCount_ = 0;
128     context->OnRtcp(&head);
129 }
130 
HWTEST_F(RtcpUnitTest, RtcpReceiverContext_010, Function | SmallTest | Level2)131 HWTEST_F(RtcpUnitTest, RtcpReceiverContext_010, Function | SmallTest | Level2)
132 {
133     auto context = std::make_shared<RtcpReceiverContext>();
134     EXPECT_NE(context, nullptr);
135     context->OnRtp(0, 0, 0, 0, 0);
136 }
137 
HWTEST_F(RtcpUnitTest, RtcpReceiverContext_011, Function | SmallTest | Level2)138 HWTEST_F(RtcpUnitTest, RtcpReceiverContext_011, Function | SmallTest | Level2)
139 {
140     auto context = std::make_shared<RtcpReceiverContext>();
141     EXPECT_NE(context, nullptr);
142     uint32_t rtcp_ssrc = 0;
143     uint32_t rtp_ssrc = 0;
144     auto ret = context->CreateRtcpRR(rtcp_ssrc, rtp_ssrc);
145     EXPECT_NE(ret, nullptr);
146 }
147 
HWTEST_F(RtcpUnitTest, RtcpReceiverContext_012, Function | SmallTest | Level2)148 HWTEST_F(RtcpUnitTest, RtcpReceiverContext_012, Function | SmallTest | Level2)
149 {
150     auto context = std::make_shared<RtcpReceiverContext>();
151     EXPECT_NE(context, nullptr);
152     auto ret = context->GetLost();
153     EXPECT_NE(ret, 0);
154 }
155 
HWTEST_F(RtcpUnitTest, RtcpReceiverContext_013, Function | SmallTest | Level2)156 HWTEST_F(RtcpUnitTest, RtcpReceiverContext_013, Function | SmallTest | Level2)
157 {
158     auto context = std::make_shared<RtcpReceiverContext>();
159     EXPECT_NE(context, nullptr);
160     auto ret = context->GetLostInterval();
161     EXPECT_EQ(ret, 1);
162 }
163 
HWTEST_F(RtcpUnitTest, RtcpReceiverContext_014, Function | SmallTest | Level2)164 HWTEST_F(RtcpUnitTest, RtcpReceiverContext_014, Function | SmallTest | Level2)
165 {
166     auto context = std::make_shared<RtcpReceiverContext>();
167     EXPECT_NE(context, nullptr);
168     auto ret = context->GetExpectedPackets();
169     EXPECT_EQ(ret, 1);
170 }
171 
HWTEST_F(RtcpUnitTest, RtcpReceiverContext_015, Function | SmallTest | Level2)172 HWTEST_F(RtcpUnitTest, RtcpReceiverContext_015, Function | SmallTest | Level2)
173 {
174     auto context = std::make_shared<RtcpReceiverContext>();
175     EXPECT_NE(context, nullptr);
176     auto ret = context->GetExpectedPacketsInterval();
177     EXPECT_EQ(ret, 1);
178 }
179 
HWTEST_F(RtcpUnitTest, RtcpSR_016, Function | SmallTest | Level2)180 HWTEST_F(RtcpUnitTest, RtcpSR_016, Function | SmallTest | Level2)
181 {
182     auto sr = std::make_shared<RtcpSR>();
183     EXPECT_NE(sr, nullptr);
184 }
185 
HWTEST_F(RtcpUnitTest, RtcpSR_017, Function | SmallTest | Level2)186 HWTEST_F(RtcpUnitTest, RtcpSR_017, Function | SmallTest | Level2)
187 {
188     auto sr = RtcpSR::Create(1);
189     EXPECT_NE(sr, nullptr);
190 }
191 
HWTEST_F(RtcpUnitTest, RtcpSR_018, Function | SmallTest | Level2)192 HWTEST_F(RtcpUnitTest, RtcpSR_018, Function | SmallTest | Level2)
193 {
194     auto sr = std::make_shared<RtcpSR>();
195     EXPECT_NE(sr, nullptr);
196     auto &ret = sr->SetSsrc(0);
197     EXPECT_EQ(&ret, sr.get());
198 }
199 
HWTEST_F(RtcpUnitTest, RtcpSR_019, Function | SmallTest | Level2)200 HWTEST_F(RtcpUnitTest, RtcpSR_019, Function | SmallTest | Level2)
201 {
202     auto sr = std::make_shared<RtcpSR>();
203     EXPECT_NE(sr, nullptr);
204     auto &ret = sr->SetNtpStamp(timeval{});
205     EXPECT_EQ(&ret, sr.get());
206 }
207 
HWTEST_F(RtcpUnitTest, RtcpSR_020, Function | SmallTest | Level2)208 HWTEST_F(RtcpUnitTest, RtcpSR_020, Function | SmallTest | Level2)
209 {
210     auto sr = std::make_shared<RtcpSR>();
211     EXPECT_NE(sr, nullptr);
212     auto &ret = sr->SetPacketCount(0);
213     EXPECT_EQ(&ret, sr.get());
214 }
215 
HWTEST_F(RtcpUnitTest, RtcpSR_021, Function | SmallTest | Level2)216 HWTEST_F(RtcpUnitTest, RtcpSR_021, Function | SmallTest | Level2)
217 {
218     auto sr = std::make_shared<RtcpSR>();
219     EXPECT_NE(sr, nullptr);
220     auto &ret = sr->SetNtpStamp(0);
221     EXPECT_EQ(&ret, sr.get());
222 }
223 
HWTEST_F(RtcpUnitTest, RtcpSR_022, Function | SmallTest | Level2)224 HWTEST_F(RtcpUnitTest, RtcpSR_022, Function | SmallTest | Level2)
225 {
226     auto sr = std::make_shared<RtcpSR>();
227     EXPECT_NE(sr, nullptr);
228     auto &ret = sr->SetSsrc(0);
229     EXPECT_EQ(&ret, sr.get());
230     auto ret1 = sr->GetSsrc();
231     EXPECT_EQ(ret1, 0);
232 }
233 
HWTEST_F(RtcpUnitTest, RtcpSR_023, Function | SmallTest | Level2)234 HWTEST_F(RtcpUnitTest, RtcpSR_023, Function | SmallTest | Level2)
235 {
236     auto sr = std::make_shared<RtcpSR>();
237     EXPECT_NE(sr, nullptr);
238     auto &ret = sr->SetPacketCount(0);
239     EXPECT_EQ(&ret, sr.get());
240     auto ret1 = sr->GetPacketCount();
241     EXPECT_EQ(ret1, 0);
242 }
243 
HWTEST_F(RtcpUnitTest, RtcpSR_024, Function | SmallTest | Level2)244 HWTEST_F(RtcpUnitTest, RtcpSR_024, Function | SmallTest | Level2)
245 {
246     auto sr = std::make_shared<RtcpSR>();
247     EXPECT_NE(sr, nullptr);
248     auto &ret = sr->SetNtpStamp(0);
249     EXPECT_EQ(&ret, sr.get());
250     auto ret1 = sr->GetNtpUnixStampMS();
251     EXPECT_EQ(ret1, 0);
252 }
253 
HWTEST_F(RtcpUnitTest, RtcpSR_025, Function | SmallTest | Level2)254 HWTEST_F(RtcpUnitTest, RtcpSR_025, Function | SmallTest | Level2)
255 {
256     auto sr = std::make_shared<RtcpSR>();
257     EXPECT_NE(sr, nullptr);
258     auto &ret = sr->SetNtpStamp(timeval{});
259     EXPECT_EQ(&ret, sr.get());
260     auto ret1 = sr->GetNtpStamp();
261     EXPECT_NE(ret1, "");
262 }
263 
HWTEST_F(RtcpUnitTest, RtcpSR_026, Function | SmallTest | Level2)264 HWTEST_F(RtcpUnitTest, RtcpSR_026, Function | SmallTest | Level2)
265 {
266     auto sr = std::make_shared<RtcpSR>();
267     EXPECT_NE(sr, nullptr);
268     auto ret = sr->GetItemList();
269     EXPECT_EQ(ret.size(), 0);
270 }
271 
HWTEST_F(RtcpUnitTest, RtcpRR_027, Function | SmallTest | Level2)272 HWTEST_F(RtcpUnitTest, RtcpRR_027, Function | SmallTest | Level2)
273 {
274     auto rr = std::make_shared<RtcpRR>();
275     EXPECT_NE(rr, nullptr);
276     auto ret = rr->GetItemList();
277     EXPECT_EQ(ret.size(), 0);
278 }
279 
HWTEST_F(RtcpUnitTest, RtcpRR_028, Function | SmallTest | Level2)280 HWTEST_F(RtcpUnitTest, RtcpRR_028, Function | SmallTest | Level2)
281 {
282     auto rr = RtcpRR::Create(0);
283     EXPECT_NE(rr, nullptr);
284 }
285 
HWTEST_F(RtcpUnitTest, SdesChunk_029, Function | SmallTest | Level2)286 HWTEST_F(RtcpUnitTest, SdesChunk_029, Function | SmallTest | Level2)
287 {
288     auto chunk = std::make_shared<SdesChunk>();
289     EXPECT_NE(chunk, nullptr);
290 }
291 
HWTEST_F(RtcpUnitTest, SdesChunk_030, Function | SmallTest | Level2)292 HWTEST_F(RtcpUnitTest, SdesChunk_030, Function | SmallTest | Level2)
293 {
294     auto ret = SdesChunk::MinSize();
295     EXPECT_NE(ret, 0);
296 }
297 
HWTEST_F(RtcpUnitTest, SdesChunk_031, Function | SmallTest | Level2)298 HWTEST_F(RtcpUnitTest, SdesChunk_031, Function | SmallTest | Level2)
299 {
300     auto chunk = std::make_shared<SdesChunk>();
301     EXPECT_NE(chunk, nullptr);
302     auto ret = chunk->TotalBytes();
303     EXPECT_NE(ret, 0);
304 }
305 
HWTEST_F(RtcpUnitTest, RtcpSdes_032, Function | SmallTest | Level2)306 HWTEST_F(RtcpUnitTest, RtcpSdes_032, Function | SmallTest | Level2)
307 {
308     auto sdes = std::make_shared<RtcpSdes>();
309     EXPECT_NE(sdes, nullptr);
310 }
311 
HWTEST_F(RtcpUnitTest, RtcpSdes_033, Function | SmallTest | Level2)312 HWTEST_F(RtcpUnitTest, RtcpSdes_033, Function | SmallTest | Level2)
313 {
314     auto sdes = std::make_shared<RtcpSdes>();
315     EXPECT_NE(sdes, nullptr);
316     auto ret = sdes->GetChunkList();
317     EXPECT_EQ(ret.size(), 0);
318 }
319 
HWTEST_F(RtcpUnitTest, RtcpSdes_034, Function | SmallTest | Level2)320 HWTEST_F(RtcpUnitTest, RtcpSdes_034, Function | SmallTest | Level2)
321 {
322     const std::vector<std::string> itemText{"123"};
323     auto ret = RtcpSdes::Create(itemText);
324     EXPECT_NE(ret, nullptr);
325 }
326 
HWTEST_F(RtcpUnitTest, RtcpFB_035, Function | SmallTest | Level2)327 HWTEST_F(RtcpUnitTest, RtcpFB_035, Function | SmallTest | Level2)
328 {
329     auto fb = std::make_shared<RtcpFB>();
330     EXPECT_NE(fb, nullptr);
331 }
332 
HWTEST_F(RtcpUnitTest, RtcpFB_036, Function | SmallTest | Level2)333 HWTEST_F(RtcpUnitTest, RtcpFB_036, Function | SmallTest | Level2)
334 {
335     auto fb = std::make_shared<RtcpFB>();
336     EXPECT_NE(fb, nullptr);
337     auto ret = fb->GetFciSize();
338     EXPECT_EQ(ret, -8);
339 }
340 
HWTEST_F(RtcpUnitTest, RtcpFB_037, Function | SmallTest | Level2)341 HWTEST_F(RtcpUnitTest, RtcpFB_037, Function | SmallTest | Level2)
342 {
343     auto fb = std::make_shared<RtcpFB>();
344     EXPECT_NE(fb, nullptr);
345     auto ret = fb->GetFciPtr();
346     EXPECT_NE(ret, nullptr);
347 }
348 
HWTEST_F(RtcpUnitTest, RtcpFB_038, Function | SmallTest | Level2)349 HWTEST_F(RtcpUnitTest, RtcpFB_038, Function | SmallTest | Level2)
350 {
351     auto ret = RtcpFB::Create(PsfbType::RTCP_PSFB_PLI);
352     EXPECT_NE(ret, nullptr);
353 }
354 
HWTEST_F(RtcpUnitTest, RtcpFB_039, Function | SmallTest | Level2)355 HWTEST_F(RtcpUnitTest, RtcpFB_039, Function | SmallTest | Level2)
356 {
357     auto ret = RtcpFB::Create(RtpfbType::RTCP_RTPFB_NACK);
358     EXPECT_NE(ret, nullptr);
359 }
360 
HWTEST_F(RtcpUnitTest, RtcpFB_040, Function | SmallTest | Level2)361 HWTEST_F(RtcpUnitTest, RtcpFB_040, Function | SmallTest | Level2)
362 {
363     auto ret = RtcpFB::CreateInner(RtcpType::RTCP_FIR, 0, nullptr, 0);
364     EXPECT_NE(ret, nullptr);
365 }
366 
HWTEST_F(RtcpUnitTest, RtcpFB_041, Function | SmallTest | Level2)367 HWTEST_F(RtcpUnitTest, RtcpFB_041, Function | SmallTest | Level2)
368 {
369     auto bye = std::make_shared<RtcpBye>();
370     EXPECT_NE(bye, nullptr);
371 }
372 
HWTEST_F(RtcpUnitTest, RtcpBye_042, Function | SmallTest | Level2)373 HWTEST_F(RtcpUnitTest, RtcpBye_042, Function | SmallTest | Level2)
374 {
375     auto bye = std::make_shared<RtcpBye>();
376     EXPECT_NE(bye, nullptr);
377 }
378 
HWTEST_F(RtcpUnitTest, RtcpBye_043, Function | SmallTest | Level2)379 HWTEST_F(RtcpUnitTest, RtcpBye_043, Function | SmallTest | Level2)
380 {
381     auto bye = std::make_shared<RtcpBye>();
382     EXPECT_NE(bye, nullptr);
383     bye->ssrc_[0] = 1;
384     auto ret = bye->GetReason();
385     EXPECT_EQ(ret, "");
386 }
387 
HWTEST_F(RtcpUnitTest, RtcpBye_044, Function | SmallTest | Level2)388 HWTEST_F(RtcpUnitTest, RtcpBye_044, Function | SmallTest | Level2)
389 {
390     auto bye = std::make_shared<RtcpBye>();
391     EXPECT_NE(bye, nullptr);
392     auto ret = bye->GetReason();
393     EXPECT_EQ(ret, "");
394 }
395 
HWTEST_F(RtcpUnitTest, RtcpBye_045, Function | SmallTest | Level2)396 HWTEST_F(RtcpUnitTest, RtcpBye_045, Function | SmallTest | Level2)
397 {
398     auto bye = std::make_shared<RtcpBye>();
399     EXPECT_NE(bye, nullptr);
400     auto ret = bye->GetSSRC();
401     EXPECT_EQ(ret.size(), 0);
402 }
403 
HWTEST_F(RtcpUnitTest, RtcpBye_046, Function | SmallTest | Level2)404 HWTEST_F(RtcpUnitTest, RtcpBye_046, Function | SmallTest | Level2)
405 {
406     const std::vector<uint32_t> ssrc{1, 2};
407     const std::string reason{"1111"};
408     auto ret = RtcpBye::Create(ssrc, reason);
409     EXPECT_NE(ret, nullptr);
410 }
411 
HWTEST_F(RtcpUnitTest, RtcpXRDLRR_047, Function | SmallTest | Level2)412 HWTEST_F(RtcpUnitTest, RtcpXRDLRR_047, Function | SmallTest | Level2)
413 {
414     auto lrr = std::make_shared<RtcpXRDLRR>();
415     EXPECT_NE(lrr, nullptr);
416     auto ret = lrr->GetItemList();
417     EXPECT_EQ(ret.size(), 0);
418 }
419 
HWTEST_F(RtcpUnitTest, RtcpXRDLRR_048, Function | SmallTest | Level2)420 HWTEST_F(RtcpUnitTest, RtcpXRDLRR_048, Function | SmallTest | Level2)
421 {
422     auto ret = RtcpXRDLRR::Create(0);
423     EXPECT_NE(ret, nullptr);
424 }
425 } // namespace
426 } // namespace Sharing
427 } // namespace OHOS