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