xref: /aosp_15_r20/external/webrtc/api/rtp_packet_infos_unittest.cc (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1*d9f75844SAndroid Build Coastguard Worker /*
2*d9f75844SAndroid Build Coastguard Worker  *  Copyright (c) 2019 The WebRTC project authors. All Rights Reserved.
3*d9f75844SAndroid Build Coastguard Worker  *
4*d9f75844SAndroid Build Coastguard Worker  *  Use of this source code is governed by a BSD-style license
5*d9f75844SAndroid Build Coastguard Worker  *  that can be found in the LICENSE file in the root of the source
6*d9f75844SAndroid Build Coastguard Worker  *  tree. An additional intellectual property rights grant can be found
7*d9f75844SAndroid Build Coastguard Worker  *  in the file PATENTS.  All contributing project authors may
8*d9f75844SAndroid Build Coastguard Worker  *  be found in the AUTHORS file in the root of the source tree.
9*d9f75844SAndroid Build Coastguard Worker  */
10*d9f75844SAndroid Build Coastguard Worker 
11*d9f75844SAndroid Build Coastguard Worker #include "api/rtp_packet_infos.h"
12*d9f75844SAndroid Build Coastguard Worker 
13*d9f75844SAndroid Build Coastguard Worker #include "test/gmock.h"
14*d9f75844SAndroid Build Coastguard Worker #include "test/gtest.h"
15*d9f75844SAndroid Build Coastguard Worker 
16*d9f75844SAndroid Build Coastguard Worker namespace webrtc {
17*d9f75844SAndroid Build Coastguard Worker namespace {
18*d9f75844SAndroid Build Coastguard Worker 
19*d9f75844SAndroid Build Coastguard Worker using ::testing::ElementsAre;
20*d9f75844SAndroid Build Coastguard Worker using ::testing::SizeIs;
21*d9f75844SAndroid Build Coastguard Worker 
22*d9f75844SAndroid Build Coastguard Worker template <typename Iterator>
ToVector(Iterator begin,Iterator end)23*d9f75844SAndroid Build Coastguard Worker RtpPacketInfos::vector_type ToVector(Iterator begin, Iterator end) {
24*d9f75844SAndroid Build Coastguard Worker   return RtpPacketInfos::vector_type(begin, end);
25*d9f75844SAndroid Build Coastguard Worker }
26*d9f75844SAndroid Build Coastguard Worker 
27*d9f75844SAndroid Build Coastguard Worker }  // namespace
28*d9f75844SAndroid Build Coastguard Worker 
TEST(RtpPacketInfosTest,BasicFunctionality)29*d9f75844SAndroid Build Coastguard Worker TEST(RtpPacketInfosTest, BasicFunctionality) {
30*d9f75844SAndroid Build Coastguard Worker   RtpPacketInfo p0(/*ssrc=*/123, /*csrcs=*/{1, 2}, /*rtp_timestamp=*/89,
31*d9f75844SAndroid Build Coastguard Worker                    /*receive_time=*/Timestamp::Millis(7));
32*d9f75844SAndroid Build Coastguard Worker   p0.set_audio_level(5);
33*d9f75844SAndroid Build Coastguard Worker   p0.set_absolute_capture_time(AbsoluteCaptureTime{
34*d9f75844SAndroid Build Coastguard Worker       .absolute_capture_timestamp = 45, .estimated_capture_clock_offset = 78});
35*d9f75844SAndroid Build Coastguard Worker 
36*d9f75844SAndroid Build Coastguard Worker   RtpPacketInfo p1(/*ssrc=*/456, /*csrcs=*/{3, 4}, /*rtp_timestamp=*/89,
37*d9f75844SAndroid Build Coastguard Worker                    /*receive_time=*/Timestamp::Millis(1));
38*d9f75844SAndroid Build Coastguard Worker   p1.set_audio_level(4);
39*d9f75844SAndroid Build Coastguard Worker   p1.set_absolute_capture_time(AbsoluteCaptureTime{
40*d9f75844SAndroid Build Coastguard Worker       .absolute_capture_timestamp = 13, .estimated_capture_clock_offset = 21});
41*d9f75844SAndroid Build Coastguard Worker 
42*d9f75844SAndroid Build Coastguard Worker   RtpPacketInfo p2(/*ssrc=*/789, /*csrcs=*/{5, 6}, /*rtp_timestamp=*/88,
43*d9f75844SAndroid Build Coastguard Worker                    /*receive_time=*/Timestamp::Millis(7));
44*d9f75844SAndroid Build Coastguard Worker   p2.set_audio_level(1);
45*d9f75844SAndroid Build Coastguard Worker   p2.set_absolute_capture_time(AbsoluteCaptureTime{
46*d9f75844SAndroid Build Coastguard Worker       .absolute_capture_timestamp = 99, .estimated_capture_clock_offset = 78});
47*d9f75844SAndroid Build Coastguard Worker 
48*d9f75844SAndroid Build Coastguard Worker   RtpPacketInfos x({p0, p1, p2});
49*d9f75844SAndroid Build Coastguard Worker 
50*d9f75844SAndroid Build Coastguard Worker   ASSERT_THAT(x, SizeIs(3));
51*d9f75844SAndroid Build Coastguard Worker 
52*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(x[0], p0);
53*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(x[1], p1);
54*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(x[2], p2);
55*d9f75844SAndroid Build Coastguard Worker 
56*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(x.front(), p0);
57*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(x.back(), p2);
58*d9f75844SAndroid Build Coastguard Worker 
59*d9f75844SAndroid Build Coastguard Worker   EXPECT_THAT(ToVector(x.begin(), x.end()), ElementsAre(p0, p1, p2));
60*d9f75844SAndroid Build Coastguard Worker   EXPECT_THAT(ToVector(x.rbegin(), x.rend()), ElementsAre(p2, p1, p0));
61*d9f75844SAndroid Build Coastguard Worker 
62*d9f75844SAndroid Build Coastguard Worker   EXPECT_THAT(ToVector(x.cbegin(), x.cend()), ElementsAre(p0, p1, p2));
63*d9f75844SAndroid Build Coastguard Worker   EXPECT_THAT(ToVector(x.crbegin(), x.crend()), ElementsAre(p2, p1, p0));
64*d9f75844SAndroid Build Coastguard Worker 
65*d9f75844SAndroid Build Coastguard Worker   EXPECT_FALSE(x.empty());
66*d9f75844SAndroid Build Coastguard Worker }
67*d9f75844SAndroid Build Coastguard Worker 
TEST(RtpPacketInfosTest,CopyShareData)68*d9f75844SAndroid Build Coastguard Worker TEST(RtpPacketInfosTest, CopyShareData) {
69*d9f75844SAndroid Build Coastguard Worker   RtpPacketInfo p0(/*ssrc=*/123, /*csrcs=*/{1, 2}, /*rtp_timestamp=*/89,
70*d9f75844SAndroid Build Coastguard Worker                    /*receive_time=*/Timestamp::Millis(7));
71*d9f75844SAndroid Build Coastguard Worker   p0.set_audio_level(5);
72*d9f75844SAndroid Build Coastguard Worker   p0.set_absolute_capture_time(AbsoluteCaptureTime{
73*d9f75844SAndroid Build Coastguard Worker       .absolute_capture_timestamp = 45, .estimated_capture_clock_offset = 78});
74*d9f75844SAndroid Build Coastguard Worker 
75*d9f75844SAndroid Build Coastguard Worker   RtpPacketInfo p1(/*ssrc=*/456, /*csrcs=*/{3, 4}, /*rtp_timestamp=*/89,
76*d9f75844SAndroid Build Coastguard Worker                    /*receive_time=*/Timestamp::Millis(1));
77*d9f75844SAndroid Build Coastguard Worker   p1.set_audio_level(4);
78*d9f75844SAndroid Build Coastguard Worker   p1.set_absolute_capture_time(AbsoluteCaptureTime{
79*d9f75844SAndroid Build Coastguard Worker       .absolute_capture_timestamp = 13, .estimated_capture_clock_offset = 21});
80*d9f75844SAndroid Build Coastguard Worker 
81*d9f75844SAndroid Build Coastguard Worker   RtpPacketInfo p2(/*ssrc=*/789, /*csrcs=*/{5, 6}, /*rtp_timestamp=*/88,
82*d9f75844SAndroid Build Coastguard Worker                    /*receive_time=*/Timestamp::Millis(7));
83*d9f75844SAndroid Build Coastguard Worker   p2.set_audio_level(1);
84*d9f75844SAndroid Build Coastguard Worker   p2.set_absolute_capture_time(AbsoluteCaptureTime{
85*d9f75844SAndroid Build Coastguard Worker       .absolute_capture_timestamp = 99, .estimated_capture_clock_offset = 78});
86*d9f75844SAndroid Build Coastguard Worker 
87*d9f75844SAndroid Build Coastguard Worker   RtpPacketInfos lhs({p0, p1, p2});
88*d9f75844SAndroid Build Coastguard Worker   RtpPacketInfos rhs = lhs;
89*d9f75844SAndroid Build Coastguard Worker 
90*d9f75844SAndroid Build Coastguard Worker   ASSERT_THAT(lhs, SizeIs(3));
91*d9f75844SAndroid Build Coastguard Worker   ASSERT_THAT(rhs, SizeIs(3));
92*d9f75844SAndroid Build Coastguard Worker 
93*d9f75844SAndroid Build Coastguard Worker   for (size_t i = 0; i < lhs.size(); ++i) {
94*d9f75844SAndroid Build Coastguard Worker     EXPECT_EQ(lhs[i], rhs[i]);
95*d9f75844SAndroid Build Coastguard Worker   }
96*d9f75844SAndroid Build Coastguard Worker 
97*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(lhs.front(), rhs.front());
98*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(lhs.back(), rhs.back());
99*d9f75844SAndroid Build Coastguard Worker 
100*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(lhs.begin(), rhs.begin());
101*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(lhs.end(), rhs.end());
102*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(lhs.rbegin(), rhs.rbegin());
103*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(lhs.rend(), rhs.rend());
104*d9f75844SAndroid Build Coastguard Worker 
105*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(lhs.cbegin(), rhs.cbegin());
106*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(lhs.cend(), rhs.cend());
107*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(lhs.crbegin(), rhs.crbegin());
108*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(lhs.crend(), rhs.crend());
109*d9f75844SAndroid Build Coastguard Worker 
110*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(lhs.empty(), rhs.empty());
111*d9f75844SAndroid Build Coastguard Worker }
112*d9f75844SAndroid Build Coastguard Worker 
113*d9f75844SAndroid Build Coastguard Worker }  // namespace webrtc
114