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/interface/rtp_rtcp_defines.h" 19#include "webrtc/modules/rtp_rtcp/source/rtp_header_extension.h" 20#include "webrtc/typedefs.h" 21 22namespace webrtc { 23 24class RtpHeaderExtensionTest : public ::testing::Test { 25 protected: 26 RtpHeaderExtensionTest() {} 27 ~RtpHeaderExtensionTest() {} 28 29 RtpHeaderExtensionMap map_; 30 static const uint8_t kId; 31}; 32 33const uint8_t RtpHeaderExtensionTest::kId = 3; 34 35TEST_F(RtpHeaderExtensionTest, Register) { 36 EXPECT_EQ(0, map_.Size()); 37 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); 38 EXPECT_EQ(1, map_.Size()); 39 EXPECT_EQ(0, map_.Deregister(kRtpExtensionTransmissionTimeOffset)); 40 EXPECT_EQ(0, map_.Size()); 41} 42 43TEST_F(RtpHeaderExtensionTest, RegisterIllegalArg) { 44 // Valid range for id: [1-14]. 45 EXPECT_EQ(-1, map_.Register(kRtpExtensionTransmissionTimeOffset, 0)); 46 EXPECT_EQ(-1, map_.Register(kRtpExtensionTransmissionTimeOffset, 15)); 47} 48 49TEST_F(RtpHeaderExtensionTest, Idempotent) { 50 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); 51 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); 52 EXPECT_EQ(0, map_.Deregister(kRtpExtensionTransmissionTimeOffset)); 53 EXPECT_EQ(0, map_.Deregister(kRtpExtensionTransmissionTimeOffset)); 54} 55 56TEST_F(RtpHeaderExtensionTest, NonUniqueId) { 57 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); 58 EXPECT_EQ(-1, map_.Register(kRtpExtensionAudioLevel, kId)); 59} 60 61TEST_F(RtpHeaderExtensionTest, GetTotalLength) { 62 EXPECT_EQ(0, map_.GetTotalLengthInBytes()); 63 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); 64 EXPECT_EQ(kRtpOneByteHeaderLength + kTransmissionTimeOffsetLength, 65 map_.GetTotalLengthInBytes()); 66} 67 68TEST_F(RtpHeaderExtensionTest, GetLengthUntilBlockStart) { 69 EXPECT_EQ(-1, map_.GetLengthUntilBlockStartInBytes( 70 kRtpExtensionTransmissionTimeOffset)); 71 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); 72 EXPECT_EQ(static_cast<int>(kRtpOneByteHeaderLength), 73 map_.GetLengthUntilBlockStartInBytes( 74 kRtpExtensionTransmissionTimeOffset)); 75} 76 77TEST_F(RtpHeaderExtensionTest, GetType) { 78 RTPExtensionType typeOut; 79 EXPECT_EQ(-1, map_.GetType(kId, &typeOut)); 80 81 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); 82 EXPECT_EQ(0, map_.GetType(kId, &typeOut)); 83 EXPECT_EQ(kRtpExtensionTransmissionTimeOffset, typeOut); 84} 85 86TEST_F(RtpHeaderExtensionTest, GetId) { 87 uint8_t idOut; 88 EXPECT_EQ(-1, map_.GetId(kRtpExtensionTransmissionTimeOffset, &idOut)); 89 90 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); 91 EXPECT_EQ(0, map_.GetId(kRtpExtensionTransmissionTimeOffset, &idOut)); 92 EXPECT_EQ(kId, idOut); 93} 94 95TEST_F(RtpHeaderExtensionTest, IterateTypes) { 96 EXPECT_EQ(kRtpExtensionNone, map_.First()); 97 EXPECT_EQ(kRtpExtensionNone, map_.Next(kRtpExtensionTransmissionTimeOffset)); 98 99 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); 100 101 EXPECT_EQ(kRtpExtensionTransmissionTimeOffset, map_.First()); 102 EXPECT_EQ(kRtpExtensionNone, map_.Next(kRtpExtensionTransmissionTimeOffset)); 103} 104 105TEST_F(RtpHeaderExtensionTest, GetCopy) { 106 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); 107 108 RtpHeaderExtensionMap mapOut; 109 map_.GetCopy(&mapOut); 110 EXPECT_EQ(1, mapOut.Size()); 111 EXPECT_EQ(kRtpExtensionTransmissionTimeOffset, mapOut.First()); 112} 113 114TEST_F(RtpHeaderExtensionTest, Erase) { 115 EXPECT_EQ(0, map_.Register(kRtpExtensionTransmissionTimeOffset, kId)); 116 EXPECT_EQ(1, map_.Size()); 117 map_.Erase(); 118 EXPECT_EQ(0, map_.Size()); 119} 120} // namespace webrtc 121