• 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 #include "modules/rtp_rtcp/include/rtp_header_extension_map.h"
11 
12 #include <vector>
13 
14 #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
15 #include "modules/rtp_rtcp/source/rtp_header_extensions.h"
16 #include "test/gtest.h"
17 
18 namespace webrtc {
19 
TEST(RtpHeaderExtensionTest,RegisterByType)20 TEST(RtpHeaderExtensionTest, RegisterByType) {
21   RtpHeaderExtensionMap map;
22   EXPECT_FALSE(map.IsRegistered(TransmissionOffset::kId));
23 
24   EXPECT_TRUE(map.RegisterByType(3, TransmissionOffset::kId));
25 
26   EXPECT_TRUE(map.IsRegistered(TransmissionOffset::kId));
27   EXPECT_EQ(3, map.GetId(TransmissionOffset::kId));
28   EXPECT_EQ(TransmissionOffset::kId, map.GetType(3));
29 }
30 
TEST(RtpHeaderExtensionTest,RegisterByUri)31 TEST(RtpHeaderExtensionTest, RegisterByUri) {
32   RtpHeaderExtensionMap map;
33 
34   EXPECT_TRUE(map.RegisterByUri(3, TransmissionOffset::Uri()));
35 
36   EXPECT_TRUE(map.IsRegistered(TransmissionOffset::kId));
37   EXPECT_EQ(3, map.GetId(TransmissionOffset::kId));
38   EXPECT_EQ(TransmissionOffset::kId, map.GetType(3));
39 }
40 
TEST(RtpHeaderExtensionTest,RegisterWithTrait)41 TEST(RtpHeaderExtensionTest, RegisterWithTrait) {
42   RtpHeaderExtensionMap map;
43 
44   EXPECT_TRUE(map.Register<TransmissionOffset>(3));
45 
46   EXPECT_TRUE(map.IsRegistered(TransmissionOffset::kId));
47   EXPECT_EQ(3, map.GetId(TransmissionOffset::kId));
48   EXPECT_EQ(TransmissionOffset::kId, map.GetType(3));
49 }
50 
TEST(RtpHeaderExtensionTest,RegisterDuringContruction)51 TEST(RtpHeaderExtensionTest, RegisterDuringContruction) {
52   const std::vector<RtpExtension> config = {{TransmissionOffset::Uri(), 1},
53                                             {AbsoluteSendTime::Uri(), 3}};
54   const RtpHeaderExtensionMap map(config);
55 
56   EXPECT_EQ(1, map.GetId(TransmissionOffset::kId));
57   EXPECT_EQ(3, map.GetId(AbsoluteSendTime::kId));
58 }
59 
TEST(RtpHeaderExtensionTest,RegisterTwoByteHeaderExtensions)60 TEST(RtpHeaderExtensionTest, RegisterTwoByteHeaderExtensions) {
61   RtpHeaderExtensionMap map;
62   // Two-byte header extension needed for id: [15-255].
63   EXPECT_TRUE(map.Register<TransmissionOffset>(18));
64   EXPECT_TRUE(map.Register<AbsoluteSendTime>(255));
65 }
66 
TEST(RtpHeaderExtensionTest,RegisterIllegalArg)67 TEST(RtpHeaderExtensionTest, RegisterIllegalArg) {
68   RtpHeaderExtensionMap map;
69   // Valid range for id: [1-255].
70   EXPECT_FALSE(map.Register<TransmissionOffset>(0));
71   EXPECT_FALSE(map.Register<TransmissionOffset>(256));
72 }
73 
TEST(RtpHeaderExtensionTest,Idempotent)74 TEST(RtpHeaderExtensionTest, Idempotent) {
75   RtpHeaderExtensionMap map;
76 
77   EXPECT_TRUE(map.Register<TransmissionOffset>(3));
78   EXPECT_TRUE(map.Register<TransmissionOffset>(3));
79 
80   map.Deregister(TransmissionOffset::Uri());
81   map.Deregister(TransmissionOffset::Uri());
82 }
83 
TEST(RtpHeaderExtensionTest,NonUniqueId)84 TEST(RtpHeaderExtensionTest, NonUniqueId) {
85   RtpHeaderExtensionMap map;
86   EXPECT_TRUE(map.Register<TransmissionOffset>(3));
87 
88   EXPECT_FALSE(map.Register<AudioLevel>(3));
89   EXPECT_TRUE(map.Register<AudioLevel>(4));
90 }
91 
TEST(RtpHeaderExtensionTest,GetType)92 TEST(RtpHeaderExtensionTest, GetType) {
93   RtpHeaderExtensionMap map;
94   EXPECT_EQ(RtpHeaderExtensionMap::kInvalidType, map.GetType(3));
95   EXPECT_TRUE(map.Register<TransmissionOffset>(3));
96 
97   EXPECT_EQ(TransmissionOffset::kId, map.GetType(3));
98 }
99 
TEST(RtpHeaderExtensionTest,GetId)100 TEST(RtpHeaderExtensionTest, GetId) {
101   RtpHeaderExtensionMap map;
102   EXPECT_EQ(RtpHeaderExtensionMap::kInvalidId,
103             map.GetId(TransmissionOffset::kId));
104   EXPECT_TRUE(map.Register<TransmissionOffset>(3));
105 
106   EXPECT_EQ(3, map.GetId(TransmissionOffset::kId));
107 }
108 
TEST(RtpHeaderExtensionTest,RemapFails)109 TEST(RtpHeaderExtensionTest, RemapFails) {
110   RtpHeaderExtensionMap map;
111   EXPECT_TRUE(map.Register<TransmissionOffset>(3));
112   EXPECT_FALSE(map.Register<TransmissionOffset>(4));
113 }
114 
115 }  // namespace webrtc
116