• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright (c) 2012 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 
12 /*
13  * This file includes unit tests for the RtpHeaderExtensionMap.
14  */
15 
16 #include "testing/gtest/include/gtest/gtest.h"
17 
18 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h"
19 #include "webrtc/modules/rtp_rtcp/source/rtp_header_extension.h"
20 #include "webrtc/typedefs.h"
21 
22 namespace webrtc {
23 
24 class RtpHeaderExtensionTest : public ::testing::Test {
25  protected:
RtpHeaderExtensionTest()26   RtpHeaderExtensionTest() {}
~RtpHeaderExtensionTest()27   ~RtpHeaderExtensionTest() {}
28 
29   RtpHeaderExtensionMap map_;
30   static const uint8_t kId;
31 };
32 
33 const uint8_t RtpHeaderExtensionTest::kId = 3;
34 
TEST_F(RtpHeaderExtensionTest,Register)35 TEST_F(RtpHeaderExtensionTest, Register) {
36   EXPECT_EQ(0, map_.Size());
37   EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId));
38   EXPECT_TRUE(map_.IsRegistered(kRtpExtensionTransmissionTimeOffset));
39   EXPECT_EQ(1, map_.Size());
40   EXPECT_EQ(0, map_.Deregister(kRtpExtensionTransmissionTimeOffset));
41   EXPECT_EQ(0, map_.Size());
42 
43   EXPECT_EQ(0, map_.RegisterInactive(kRtpExtensionTransmissionTimeOffset, kId));
44   EXPECT_EQ(0, map_.Size());
45   EXPECT_TRUE(map_.IsRegistered(kRtpExtensionTransmissionTimeOffset));
46   EXPECT_TRUE(map_.SetActive(kRtpExtensionTransmissionTimeOffset, true));
47   EXPECT_EQ(1, map_.Size());
48 }
49 
TEST_F(RtpHeaderExtensionTest,RegisterIllegalArg)50 TEST_F(RtpHeaderExtensionTest, RegisterIllegalArg) {
51   // Valid range for id: [1-14].
52   EXPECT_EQ(-1, map_.Register(kRtpExtensionTransmissionTimeOffset, 0));
53   EXPECT_EQ(-1, map_.Register(kRtpExtensionTransmissionTimeOffset, 15));
54 }
55 
TEST_F(RtpHeaderExtensionTest,Idempotent)56 TEST_F(RtpHeaderExtensionTest, Idempotent) {
57   EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId));
58   EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId));
59   EXPECT_EQ(0, map_.Deregister(kRtpExtensionTransmissionTimeOffset));
60   EXPECT_EQ(0, map_.Deregister(kRtpExtensionTransmissionTimeOffset));
61 }
62 
TEST_F(RtpHeaderExtensionTest,NonUniqueId)63 TEST_F(RtpHeaderExtensionTest, NonUniqueId) {
64   EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId));
65   EXPECT_EQ(-1, map_.Register(kRtpExtensionAudioLevel, kId));
66   EXPECT_EQ(-1, map_.RegisterInactive(kRtpExtensionAudioLevel, kId));
67 }
68 
TEST_F(RtpHeaderExtensionTest,GetTotalLength)69 TEST_F(RtpHeaderExtensionTest, GetTotalLength) {
70   EXPECT_EQ(0u, map_.GetTotalLengthInBytes());
71   EXPECT_EQ(0, map_.RegisterInactive(kRtpExtensionTransmissionTimeOffset, kId));
72   EXPECT_EQ(0u, map_.GetTotalLengthInBytes());
73 
74   EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId));
75   EXPECT_EQ(kRtpOneByteHeaderLength + kTransmissionTimeOffsetLength,
76             map_.GetTotalLengthInBytes());
77 }
78 
TEST_F(RtpHeaderExtensionTest,GetLengthUntilBlockStart)79 TEST_F(RtpHeaderExtensionTest, GetLengthUntilBlockStart) {
80   EXPECT_EQ(-1, map_.GetLengthUntilBlockStartInBytes(
81       kRtpExtensionTransmissionTimeOffset));
82   EXPECT_EQ(0, map_.RegisterInactive(kRtpExtensionTransmissionTimeOffset, kId));
83   EXPECT_EQ(-1, map_.GetLengthUntilBlockStartInBytes(
84                     kRtpExtensionTransmissionTimeOffset));
85 
86   EXPECT_TRUE(map_.SetActive(kRtpExtensionTransmissionTimeOffset, true));
87   EXPECT_EQ(static_cast<int>(kRtpOneByteHeaderLength),
88             map_.GetLengthUntilBlockStartInBytes(
89                 kRtpExtensionTransmissionTimeOffset));
90 }
91 
TEST_F(RtpHeaderExtensionTest,GetType)92 TEST_F(RtpHeaderExtensionTest, GetType) {
93   RTPExtensionType typeOut;
94   EXPECT_EQ(-1, map_.GetType(kId, &typeOut));
95 
96   EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId));
97   EXPECT_EQ(0, map_.GetType(kId, &typeOut));
98   EXPECT_EQ(kRtpExtensionTransmissionTimeOffset, typeOut);
99 }
100 
TEST_F(RtpHeaderExtensionTest,GetId)101 TEST_F(RtpHeaderExtensionTest, GetId) {
102   uint8_t idOut;
103   EXPECT_EQ(-1, map_.GetId(kRtpExtensionTransmissionTimeOffset, &idOut));
104 
105   EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId));
106   EXPECT_EQ(0, map_.GetId(kRtpExtensionTransmissionTimeOffset, &idOut));
107   EXPECT_EQ(kId, idOut);
108 }
109 
TEST_F(RtpHeaderExtensionTest,IterateTypes)110 TEST_F(RtpHeaderExtensionTest, IterateTypes) {
111   EXPECT_EQ(kRtpExtensionNone, map_.First());
112   EXPECT_EQ(kRtpExtensionNone, map_.Next(kRtpExtensionTransmissionTimeOffset));
113 
114   EXPECT_EQ(0, map_.RegisterInactive(kRtpExtensionTransmissionTimeOffset, kId));
115 
116   EXPECT_EQ(kRtpExtensionNone, map_.First());
117 
118   EXPECT_TRUE(map_.SetActive(kRtpExtensionTransmissionTimeOffset, true));
119 
120   EXPECT_EQ(kRtpExtensionTransmissionTimeOffset, map_.First());
121   EXPECT_EQ(kRtpExtensionNone, map_.Next(kRtpExtensionTransmissionTimeOffset));
122 }
123 
TEST_F(RtpHeaderExtensionTest,GetCopy)124 TEST_F(RtpHeaderExtensionTest, GetCopy) {
125   EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId));
126 
127   RtpHeaderExtensionMap mapOut;
128   map_.GetCopy(&mapOut);
129   EXPECT_EQ(1, mapOut.Size());
130   EXPECT_EQ(kRtpExtensionTransmissionTimeOffset, mapOut.First());
131 }
132 
TEST_F(RtpHeaderExtensionTest,Erase)133 TEST_F(RtpHeaderExtensionTest, Erase) {
134   EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId));
135   EXPECT_EQ(1, map_.Size());
136   map_.Erase();
137   EXPECT_EQ(0, map_.Size());
138 }
139 }  // namespace webrtc
140