OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 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 | 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 | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
11 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h" | 11 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h" |
12 #include "webrtc/modules/rtp_rtcp/source/rtp_header_extension.h" | 12 #include "webrtc/modules/rtp_rtcp/source/rtp_header_extension.h" |
13 #include "webrtc/modules/rtp_rtcp/source/rtp_header_extensions.h" | |
14 #include "webrtc/test/gtest.h" | 13 #include "webrtc/test/gtest.h" |
15 #include "webrtc/typedefs.h" | 14 #include "webrtc/typedefs.h" |
16 | 15 |
17 namespace webrtc { | 16 namespace webrtc { |
18 | 17 |
19 TEST(RtpHeaderExtensionTest, RegisterByType) { | 18 class RtpHeaderExtensionTest : public ::testing::Test { |
20 RtpHeaderExtensionMap map; | 19 protected: |
21 EXPECT_FALSE(map.IsRegistered(TransmissionOffset::kId)); | 20 RtpHeaderExtensionTest() {} |
| 21 ~RtpHeaderExtensionTest() {} |
22 | 22 |
23 EXPECT_TRUE(map.RegisterByType(3, TransmissionOffset::kId)); | 23 RtpHeaderExtensionMap map_; |
| 24 static const uint8_t kId; |
| 25 }; |
24 | 26 |
25 EXPECT_TRUE(map.IsRegistered(TransmissionOffset::kId)); | 27 const uint8_t RtpHeaderExtensionTest::kId = 3; |
26 EXPECT_EQ(3, map.GetId(TransmissionOffset::kId)); | 28 |
27 EXPECT_EQ(TransmissionOffset::kId, map.GetType(3)); | 29 TEST_F(RtpHeaderExtensionTest, Register) { |
| 30 EXPECT_EQ(0, map_.Size()); |
| 31 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); |
| 32 EXPECT_TRUE(map_.IsRegistered(kRtpExtensionTransmissionTimeOffset)); |
| 33 EXPECT_EQ(1, map_.Size()); |
| 34 EXPECT_EQ(0, map_.Deregister(kRtpExtensionTransmissionTimeOffset)); |
| 35 EXPECT_EQ(0, map_.Size()); |
28 } | 36 } |
29 | 37 |
30 TEST(RtpHeaderExtensionTest, RegisterByUri) { | 38 TEST_F(RtpHeaderExtensionTest, RegisterIllegalArg) { |
31 RtpHeaderExtensionMap map; | 39 // Valid range for id: [1-14]. |
32 | 40 EXPECT_EQ(-1, map_.Register(kRtpExtensionTransmissionTimeOffset, 0)); |
33 EXPECT_TRUE(map.RegisterByUri(3, TransmissionOffset::kUri)); | 41 EXPECT_EQ(-1, map_.Register(kRtpExtensionTransmissionTimeOffset, 15)); |
34 | |
35 EXPECT_TRUE(map.IsRegistered(TransmissionOffset::kId)); | |
36 EXPECT_EQ(3, map.GetId(TransmissionOffset::kId)); | |
37 EXPECT_EQ(TransmissionOffset::kId, map.GetType(3)); | |
38 } | 42 } |
39 | 43 |
40 TEST(RtpHeaderExtensionTest, RegisterWithTrait) { | 44 TEST_F(RtpHeaderExtensionTest, Idempotent) { |
41 RtpHeaderExtensionMap map; | 45 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); |
42 | 46 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); |
43 EXPECT_TRUE(map.Register<TransmissionOffset>(3)); | 47 EXPECT_EQ(0, map_.Deregister(kRtpExtensionTransmissionTimeOffset)); |
44 | 48 EXPECT_EQ(0, map_.Deregister(kRtpExtensionTransmissionTimeOffset)); |
45 EXPECT_TRUE(map.IsRegistered(TransmissionOffset::kId)); | |
46 EXPECT_EQ(3, map.GetId(TransmissionOffset::kId)); | |
47 EXPECT_EQ(TransmissionOffset::kId, map.GetType(3)); | |
48 } | 49 } |
49 | 50 |
50 TEST(RtpHeaderExtensionTest, RegisterDuringContruction) { | 51 TEST_F(RtpHeaderExtensionTest, NonUniqueId) { |
51 const RtpHeaderExtensionMap map = {{TransmissionOffset::kUri, 1}, | 52 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); |
52 {AbsoluteSendTime::kUri, 3}}; | 53 EXPECT_EQ(-1, map_.Register(kRtpExtensionAudioLevel, kId)); |
53 | |
54 EXPECT_EQ(1, map.GetId(TransmissionOffset::kId)); | |
55 EXPECT_EQ(3, map.GetId(AbsoluteSendTime::kId)); | |
56 } | 54 } |
57 | 55 |
58 TEST(RtpHeaderExtensionTest, RegisterIllegalArg) { | 56 TEST_F(RtpHeaderExtensionTest, GetTotalLength) { |
59 RtpHeaderExtensionMap map; | 57 EXPECT_EQ(0u, map_.GetTotalLengthInBytes()); |
60 // Valid range for id: [1-14]. | 58 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); |
61 EXPECT_FALSE(map.Register<TransmissionOffset>(0)); | 59 EXPECT_EQ(kRtpOneByteHeaderLength + kTransmissionTimeOffsetLength, |
62 EXPECT_FALSE(map.Register<TransmissionOffset>(15)); | 60 map_.GetTotalLengthInBytes()); |
63 } | 61 } |
64 | 62 |
65 TEST(RtpHeaderExtensionTest, Idempotent) { | 63 TEST_F(RtpHeaderExtensionTest, GetType) { |
66 RtpHeaderExtensionMap map; | 64 RTPExtensionType typeOut; |
| 65 EXPECT_EQ(-1, map_.GetType(kId, &typeOut)); |
67 | 66 |
68 EXPECT_TRUE(map.Register<TransmissionOffset>(3)); | 67 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); |
69 EXPECT_TRUE(map.Register<TransmissionOffset>(3)); | 68 EXPECT_EQ(0, map_.GetType(kId, &typeOut)); |
70 | 69 EXPECT_EQ(kRtpExtensionTransmissionTimeOffset, typeOut); |
71 map.Deregister(TransmissionOffset::kId); | |
72 map.Deregister(TransmissionOffset::kId); | |
73 } | 70 } |
74 | 71 |
75 TEST(RtpHeaderExtensionTest, NonUniqueId) { | 72 TEST_F(RtpHeaderExtensionTest, GetId) { |
76 RtpHeaderExtensionMap map; | 73 uint8_t idOut; |
77 EXPECT_TRUE(map.Register<TransmissionOffset>(3)); | 74 EXPECT_EQ(-1, map_.GetId(kRtpExtensionTransmissionTimeOffset, &idOut)); |
78 | 75 |
79 EXPECT_FALSE(map.Register<AudioLevel>(3)); | 76 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); |
80 EXPECT_TRUE(map.Register<AudioLevel>(4)); | 77 EXPECT_EQ(0, map_.GetId(kRtpExtensionTransmissionTimeOffset, &idOut)); |
| 78 EXPECT_EQ(kId, idOut); |
81 } | 79 } |
82 | 80 |
83 TEST(RtpHeaderExtensionTest, GetTotalLength) { | 81 TEST_F(RtpHeaderExtensionTest, GetCopy) { |
84 RtpHeaderExtensionMap map; | 82 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); |
85 EXPECT_EQ(0u, map.GetTotalLengthInBytes()); | 83 |
86 EXPECT_TRUE(map.Register<TransmissionOffset>(3)); | 84 RtpHeaderExtensionMap mapOut; |
87 EXPECT_EQ(kRtpOneByteHeaderLength + (TransmissionOffset::kValueSizeBytes + 1), | 85 map_.GetCopy(&mapOut); |
88 map.GetTotalLengthInBytes()); | 86 EXPECT_EQ(1, mapOut.Size()); |
| 87 EXPECT_EQ(kId, mapOut.GetId(kRtpExtensionTransmissionTimeOffset)); |
89 } | 88 } |
90 | 89 |
91 TEST(RtpHeaderExtensionTest, GetType) { | 90 TEST_F(RtpHeaderExtensionTest, Erase) { |
92 RtpHeaderExtensionMap map; | 91 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); |
93 EXPECT_EQ(RtpHeaderExtensionMap::kInvalidType, map.GetType(3)); | 92 EXPECT_EQ(1, map_.Size()); |
94 EXPECT_TRUE(map.Register<TransmissionOffset>(3)); | 93 map_.Erase(); |
95 | 94 EXPECT_EQ(0, map_.Size()); |
96 EXPECT_EQ(TransmissionOffset::kId, map.GetType(3)); | |
97 } | 95 } |
98 | |
99 TEST(RtpHeaderExtensionTest, GetId) { | |
100 RtpHeaderExtensionMap map; | |
101 EXPECT_EQ(RtpHeaderExtensionMap::kInvalidId, | |
102 map.GetId(TransmissionOffset::kId)); | |
103 EXPECT_TRUE(map.Register<TransmissionOffset>(3)); | |
104 | |
105 EXPECT_EQ(3, map.GetId(TransmissionOffset::kId)); | |
106 } | |
107 | |
108 } // namespace webrtc | 96 } // namespace webrtc |
OLD | NEW |