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" |
13 #include "webrtc/test/gtest.h" | 14 #include "webrtc/test/gtest.h" |
14 #include "webrtc/typedefs.h" | 15 #include "webrtc/typedefs.h" |
15 | 16 |
16 namespace webrtc { | 17 namespace webrtc { |
17 | 18 |
18 class RtpHeaderExtensionTest : public ::testing::Test { | 19 TEST(RtpHeaderExtensionTest, RegisterByType) { |
19 protected: | 20 RtpHeaderExtensionMap map; |
20 RtpHeaderExtensionTest() {} | 21 EXPECT_FALSE(map.IsRegistered(TransmissionOffset::kId)); |
21 ~RtpHeaderExtensionTest() {} | |
22 | 22 |
23 RtpHeaderExtensionMap map_; | 23 EXPECT_TRUE(map.RegisterByType(3, TransmissionOffset::kId)); |
24 static const uint8_t kId; | |
25 }; | |
26 | 24 |
27 const uint8_t RtpHeaderExtensionTest::kId = 3; | 25 EXPECT_TRUE(map.IsRegistered(TransmissionOffset::kId)); |
28 | 26 EXPECT_EQ(3, map.GetId(TransmissionOffset::kId)); |
29 TEST_F(RtpHeaderExtensionTest, Register) { | 27 EXPECT_EQ(TransmissionOffset::kId, map.GetType(3)); |
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()); | |
36 } | 28 } |
37 | 29 |
38 TEST_F(RtpHeaderExtensionTest, RegisterIllegalArg) { | 30 TEST(RtpHeaderExtensionTest, RegisterByUri) { |
39 // Valid range for id: [1-14]. | 31 RtpHeaderExtensionMap map; |
40 EXPECT_EQ(-1, map_.Register(kRtpExtensionTransmissionTimeOffset, 0)); | 32 |
41 EXPECT_EQ(-1, map_.Register(kRtpExtensionTransmissionTimeOffset, 15)); | 33 EXPECT_TRUE(map.RegisterByUri(3, TransmissionOffset::kUri)); |
| 34 |
| 35 EXPECT_TRUE(map.IsRegistered(TransmissionOffset::kId)); |
| 36 EXPECT_EQ(3, map.GetId(TransmissionOffset::kId)); |
| 37 EXPECT_EQ(TransmissionOffset::kId, map.GetType(3)); |
42 } | 38 } |
43 | 39 |
44 TEST_F(RtpHeaderExtensionTest, Idempotent) { | 40 TEST(RtpHeaderExtensionTest, RegisterWithTrait) { |
45 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); | 41 RtpHeaderExtensionMap map; |
46 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); | 42 |
47 EXPECT_EQ(0, map_.Deregister(kRtpExtensionTransmissionTimeOffset)); | 43 EXPECT_TRUE(map.Register<TransmissionOffset>(3)); |
48 EXPECT_EQ(0, map_.Deregister(kRtpExtensionTransmissionTimeOffset)); | 44 |
| 45 EXPECT_TRUE(map.IsRegistered(TransmissionOffset::kId)); |
| 46 EXPECT_EQ(3, map.GetId(TransmissionOffset::kId)); |
| 47 EXPECT_EQ(TransmissionOffset::kId, map.GetType(3)); |
49 } | 48 } |
50 | 49 |
51 TEST_F(RtpHeaderExtensionTest, NonUniqueId) { | 50 TEST(RtpHeaderExtensionTest, RegisterDuringContruction) { |
52 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); | 51 const RtpHeaderExtensionMap map = {{TransmissionOffset::kUri, 1}, |
53 EXPECT_EQ(-1, map_.Register(kRtpExtensionAudioLevel, kId)); | 52 {AbsoluteSendTime::kUri, 3}}; |
| 53 |
| 54 EXPECT_EQ(1, map.GetId(TransmissionOffset::kId)); |
| 55 EXPECT_EQ(3, map.GetId(AbsoluteSendTime::kId)); |
54 } | 56 } |
55 | 57 |
56 TEST_F(RtpHeaderExtensionTest, GetTotalLength) { | 58 TEST(RtpHeaderExtensionTest, RegisterIllegalArg) { |
57 EXPECT_EQ(0u, map_.GetTotalLengthInBytes()); | 59 RtpHeaderExtensionMap map; |
58 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); | 60 // Valid range for id: [1-14]. |
59 EXPECT_EQ(kRtpOneByteHeaderLength + kTransmissionTimeOffsetLength, | 61 EXPECT_FALSE(map.Register<TransmissionOffset>(0)); |
60 map_.GetTotalLengthInBytes()); | 62 EXPECT_FALSE(map.Register<TransmissionOffset>(15)); |
61 } | 63 } |
62 | 64 |
63 TEST_F(RtpHeaderExtensionTest, GetType) { | 65 TEST(RtpHeaderExtensionTest, Idempotent) { |
64 RTPExtensionType typeOut; | 66 RtpHeaderExtensionMap map; |
65 EXPECT_EQ(-1, map_.GetType(kId, &typeOut)); | |
66 | 67 |
67 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); | 68 EXPECT_TRUE(map.Register<TransmissionOffset>(3)); |
68 EXPECT_EQ(0, map_.GetType(kId, &typeOut)); | 69 EXPECT_TRUE(map.Register<TransmissionOffset>(3)); |
69 EXPECT_EQ(kRtpExtensionTransmissionTimeOffset, typeOut); | 70 |
| 71 map.Deregister(TransmissionOffset::kId); |
| 72 map.Deregister(TransmissionOffset::kId); |
70 } | 73 } |
71 | 74 |
72 TEST_F(RtpHeaderExtensionTest, GetId) { | 75 TEST(RtpHeaderExtensionTest, NonUniqueId) { |
73 uint8_t idOut; | 76 RtpHeaderExtensionMap map; |
74 EXPECT_EQ(-1, map_.GetId(kRtpExtensionTransmissionTimeOffset, &idOut)); | 77 EXPECT_TRUE(map.Register<TransmissionOffset>(3)); |
75 | 78 |
76 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); | 79 EXPECT_FALSE(map.Register<AudioLevel>(3)); |
77 EXPECT_EQ(0, map_.GetId(kRtpExtensionTransmissionTimeOffset, &idOut)); | 80 EXPECT_TRUE(map.Register<AudioLevel>(4)); |
78 EXPECT_EQ(kId, idOut); | |
79 } | 81 } |
80 | 82 |
81 TEST_F(RtpHeaderExtensionTest, GetCopy) { | 83 TEST(RtpHeaderExtensionTest, GetTotalLength) { |
82 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); | 84 RtpHeaderExtensionMap map; |
83 | 85 EXPECT_EQ(0u, map.GetTotalLengthInBytes()); |
84 RtpHeaderExtensionMap mapOut; | 86 EXPECT_TRUE(map.Register<TransmissionOffset>(3)); |
85 map_.GetCopy(&mapOut); | 87 EXPECT_EQ(kRtpOneByteHeaderLength + (TransmissionOffset::kValueSizeBytes + 1), |
86 EXPECT_EQ(1, mapOut.Size()); | 88 map.GetTotalLengthInBytes()); |
87 EXPECT_EQ(kId, mapOut.GetId(kRtpExtensionTransmissionTimeOffset)); | |
88 } | 89 } |
89 | 90 |
90 TEST_F(RtpHeaderExtensionTest, Erase) { | 91 TEST(RtpHeaderExtensionTest, GetType) { |
91 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); | 92 RtpHeaderExtensionMap map; |
92 EXPECT_EQ(1, map_.Size()); | 93 EXPECT_EQ(RtpHeaderExtensionMap::kInvalidType, map.GetType(3)); |
93 map_.Erase(); | 94 EXPECT_TRUE(map.Register<TransmissionOffset>(3)); |
94 EXPECT_EQ(0, map_.Size()); | 95 |
| 96 EXPECT_EQ(TransmissionOffset::kId, map.GetType(3)); |
95 } | 97 } |
| 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 |
96 } // namespace webrtc | 108 } // namespace webrtc |
OLD | NEW |