Upstream version 11.40.271.0
[platform/framework/web/crosswalk.git] / src / third_party / webrtc / modules / rtp_rtcp / source / rtcp_utility_unittest.cc
1 /*
2  *  Copyright (c) 2014 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 "testing/gtest/include/gtest/gtest.h"
12
13 #include "webrtc/modules/rtp_rtcp/source/rtcp_utility.h"
14
15 namespace webrtc {
16
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));
22 }
23
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());
31
32   stats.ReportRequest(10);
33   EXPECT_EQ(1U, stats.unique_requests());
34   stats.ReportRequest(11);
35   EXPECT_EQ(2U, stats.unique_requests());
36
37   stats.ReportRequest(11);
38   EXPECT_EQ(2U, stats.unique_requests());
39   stats.ReportRequest(13);
40   EXPECT_EQ(3U, stats.unique_requests());
41
42   stats.ReportRequest(11);
43   EXPECT_EQ(3U, stats.unique_requests());
44   EXPECT_EQ(6U, stats.requests());
45 }
46
47 TEST(RtcpUtilityTest, NackRequestsWithWrap) {
48   RTCPUtility::NackStats stats;
49   stats.ReportRequest(65534);
50   EXPECT_EQ(1U, stats.unique_requests());
51
52   stats.ReportRequest(65534);
53   EXPECT_EQ(1U, stats.unique_requests());
54   stats.ReportRequest(65535);
55   EXPECT_EQ(2U, stats.unique_requests());
56
57   stats.ReportRequest(65535);
58   EXPECT_EQ(2U, stats.unique_requests());
59   stats.ReportRequest(0);
60   EXPECT_EQ(3U, stats.unique_requests());
61
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());
69 }
70
71 }  // namespace webrtc
72