xref: /aosp_15_r20/external/webrtc/modules/rtp_rtcp/source/rtcp_nack_stats_unittest.cc (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1 /*
2  *  Copyright (c) 2017 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 "modules/rtp_rtcp/source/rtcp_nack_stats.h"
12 
13 #include "test/gtest.h"
14 
15 namespace webrtc {
16 
TEST(RtcpNackStatsTest,Requests)17 TEST(RtcpNackStatsTest, Requests) {
18   RtcpNackStats stats;
19   EXPECT_EQ(0U, stats.unique_requests());
20   EXPECT_EQ(0U, stats.requests());
21   stats.ReportRequest(10);
22   EXPECT_EQ(1U, stats.unique_requests());
23   EXPECT_EQ(1U, stats.requests());
24 
25   stats.ReportRequest(10);
26   EXPECT_EQ(1U, stats.unique_requests());
27   stats.ReportRequest(11);
28   EXPECT_EQ(2U, stats.unique_requests());
29 
30   stats.ReportRequest(11);
31   EXPECT_EQ(2U, stats.unique_requests());
32   stats.ReportRequest(13);
33   EXPECT_EQ(3U, stats.unique_requests());
34 
35   stats.ReportRequest(11);
36   EXPECT_EQ(3U, stats.unique_requests());
37   EXPECT_EQ(6U, stats.requests());
38 }
39 
TEST(RtcpNackStatsTest,RequestsWithWrap)40 TEST(RtcpNackStatsTest, RequestsWithWrap) {
41   RtcpNackStats stats;
42   stats.ReportRequest(65534);
43   EXPECT_EQ(1U, stats.unique_requests());
44 
45   stats.ReportRequest(65534);
46   EXPECT_EQ(1U, stats.unique_requests());
47   stats.ReportRequest(65535);
48   EXPECT_EQ(2U, stats.unique_requests());
49 
50   stats.ReportRequest(65535);
51   EXPECT_EQ(2U, stats.unique_requests());
52   stats.ReportRequest(0);
53   EXPECT_EQ(3U, stats.unique_requests());
54 
55   stats.ReportRequest(65535);
56   EXPECT_EQ(3U, stats.unique_requests());
57   stats.ReportRequest(0);
58   EXPECT_EQ(3U, stats.unique_requests());
59   stats.ReportRequest(1);
60   EXPECT_EQ(4U, stats.unique_requests());
61   EXPECT_EQ(8U, stats.requests());
62 }
63 
64 }  // namespace webrtc
65