2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
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.
11 #include "testing/gtest/include/gtest/gtest.h"
13 #include "webrtc/modules/rtp_rtcp/source/rtcp_utility.h"
17 TEST(RtcpUtilityTest, MidNtp) {
18 const uint32_t kNtpSec = 0x12345678;
19 const uint32_t kNtpFrac = 0x23456789;
20 const uint32_t kNtpMid = 0x56782345;
21 EXPECT_EQ(kNtpMid, RTCPUtility::MidNtp(kNtpSec, kNtpFrac));
24 TEST(RtcpUtilityTest, NackRequests) {
25 RTCPUtility::NackStats stats;
26 EXPECT_EQ(0U, stats.unique_requests());
27 EXPECT_EQ(0U, stats.requests());
28 stats.ReportRequest(10);
29 EXPECT_EQ(1U, stats.unique_requests());
30 EXPECT_EQ(1U, stats.requests());
32 stats.ReportRequest(10);
33 EXPECT_EQ(1U, stats.unique_requests());
34 stats.ReportRequest(11);
35 EXPECT_EQ(2U, stats.unique_requests());
37 stats.ReportRequest(11);
38 EXPECT_EQ(2U, stats.unique_requests());
39 stats.ReportRequest(13);
40 EXPECT_EQ(3U, stats.unique_requests());
42 stats.ReportRequest(11);
43 EXPECT_EQ(3U, stats.unique_requests());
44 EXPECT_EQ(6U, stats.requests());
47 TEST(RtcpUtilityTest, NackRequestsWithWrap) {
48 RTCPUtility::NackStats stats;
49 stats.ReportRequest(65534);
50 EXPECT_EQ(1U, stats.unique_requests());
52 stats.ReportRequest(65534);
53 EXPECT_EQ(1U, stats.unique_requests());
54 stats.ReportRequest(65535);
55 EXPECT_EQ(2U, stats.unique_requests());
57 stats.ReportRequest(65535);
58 EXPECT_EQ(2U, stats.unique_requests());
59 stats.ReportRequest(0);
60 EXPECT_EQ(3U, stats.unique_requests());
62 stats.ReportRequest(65535);
63 EXPECT_EQ(3U, stats.unique_requests());
64 stats.ReportRequest(0);
65 EXPECT_EQ(3U, stats.unique_requests());
66 stats.ReportRequest(1);
67 EXPECT_EQ(4U, stats.unique_requests());
68 EXPECT_EQ(8U, stats.requests());