| 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 |