From 5955e24fe8355be21eb775385bcf9da78547e54e Mon Sep 17 00:00:00 2001 From: ossu Date: Wed, 31 Aug 2016 08:40:04 -0700 Subject: [PATCH] Added an empty() method to rtc::Buffer I'll be using it in a separate CL in a bit. Review-Url: https://codereview.webrtc.org/2290343002 Cr-Commit-Position: refs/heads/master@{#14001} --- webrtc/base/buffer.h | 5 +++++ webrtc/base/buffer_unittest.cc | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/webrtc/base/buffer.h b/webrtc/base/buffer.h index 545ddb2be7..e9f7cfac10 100644 --- a/webrtc/base/buffer.h +++ b/webrtc/base/buffer.h @@ -124,6 +124,11 @@ class BufferT { return reinterpret_cast(data_.get()); } + bool empty() const { + RTC_DCHECK(IsConsistent()); + return size_ == 0; + } + size_t size() const { RTC_DCHECK(IsConsistent()); return size_; diff --git a/webrtc/base/buffer_unittest.cc b/webrtc/base/buffer_unittest.cc index bd095a6b09..f13daad381 100644 --- a/webrtc/base/buffer_unittest.cc +++ b/webrtc/base/buffer_unittest.cc @@ -47,6 +47,7 @@ TEST(BufferTest, TestConstructData) { Buffer buf(kTestData, 7); EXPECT_EQ(buf.size(), 7u); EXPECT_EQ(buf.capacity(), 7u); + EXPECT_FALSE(buf.empty()); EXPECT_EQ(0, memcmp(buf.data(), kTestData, 7)); } @@ -54,6 +55,7 @@ TEST(BufferTest, TestConstructDataWithCapacity) { Buffer buf(kTestData, 7, 14); EXPECT_EQ(buf.size(), 7u); EXPECT_EQ(buf.capacity(), 14u); + EXPECT_FALSE(buf.empty()); EXPECT_EQ(0, memcmp(buf.data(), kTestData, 7)); } @@ -61,6 +63,7 @@ TEST(BufferTest, TestConstructArray) { Buffer buf(kTestData); EXPECT_EQ(buf.size(), 16u); EXPECT_EQ(buf.capacity(), 16u); + EXPECT_FALSE(buf.empty()); EXPECT_EQ(0, memcmp(buf.data(), kTestData, 16)); } @@ -69,6 +72,7 @@ TEST(BufferTest, TestSetData) { buf.SetData(kTestData, 9); EXPECT_EQ(buf.size(), 9u); EXPECT_EQ(buf.capacity(), 7u * 3 / 2); + EXPECT_FALSE(buf.empty()); EXPECT_EQ(0, memcmp(buf.data(), kTestData, 9)); } @@ -85,6 +89,7 @@ TEST(BufferTest, TestSetSizeSmaller) { buf.SetSize(10); EXPECT_EQ(buf.size(), 10u); EXPECT_EQ(buf.capacity(), 15u); // Hasn't shrunk. + EXPECT_FALSE(buf.empty()); EXPECT_EQ(buf, Buffer(kTestData, 10)); } @@ -93,9 +98,11 @@ TEST(BufferTest, TestSetSizeLarger) { buf.SetData(kTestData, 15); EXPECT_EQ(buf.size(), 15u); EXPECT_EQ(buf.capacity(), 15u); + EXPECT_FALSE(buf.empty()); buf.SetSize(20); EXPECT_EQ(buf.size(), 20u); EXPECT_EQ(buf.capacity(), 15u * 3 / 2); // Has grown. + EXPECT_FALSE(buf.empty()); EXPECT_EQ(0, memcmp(buf.data(), kTestData, 15)); } @@ -105,6 +112,7 @@ TEST(BufferTest, TestEnsureCapacitySmaller) { buf.EnsureCapacity(4); EXPECT_EQ(buf.capacity(), 16u); // Hasn't shrunk. EXPECT_EQ(buf.data(), data); // No reallocation. + EXPECT_FALSE(buf.empty()); EXPECT_EQ(buf, Buffer(kTestData)); } @@ -115,6 +123,7 @@ TEST(BufferTest, TestEnsureCapacityLarger) { EXPECT_EQ(buf.capacity(), 10u); buf.AppendData(kTestData + 5, 5); EXPECT_EQ(buf.data(), data); // No reallocation. + EXPECT_FALSE(buf.empty()); EXPECT_EQ(buf, Buffer(kTestData, 10)); } @@ -125,10 +134,12 @@ TEST(BufferTest, TestMoveConstruct) { EXPECT_EQ(buf2.size(), 3u); EXPECT_EQ(buf2.capacity(), 40u); EXPECT_EQ(buf2.data(), data); + EXPECT_FALSE(buf2.empty()); buf1.Clear(); EXPECT_EQ(buf1.size(), 0u); EXPECT_EQ(buf1.capacity(), 0u); EXPECT_EQ(buf1.data(), nullptr); + EXPECT_TRUE(buf1.empty()); } TEST(BufferTest, TestMoveAssign) { @@ -139,10 +150,12 @@ TEST(BufferTest, TestMoveAssign) { EXPECT_EQ(buf2.size(), 3u); EXPECT_EQ(buf2.capacity(), 40u); EXPECT_EQ(buf2.data(), data); + EXPECT_FALSE(buf2.empty()); buf1.Clear(); EXPECT_EQ(buf1.size(), 0u); EXPECT_EQ(buf1.capacity(), 0u); EXPECT_EQ(buf1.data(), nullptr); + EXPECT_TRUE(buf1.empty()); } TEST(BufferTest, TestSwap) { @@ -155,9 +168,11 @@ TEST(BufferTest, TestSwap) { EXPECT_EQ(buf1.size(), 6u); EXPECT_EQ(buf1.capacity(), 40u); EXPECT_EQ(buf1.data(), data2); + EXPECT_FALSE(buf1.empty()); EXPECT_EQ(buf2.size(), 3u); EXPECT_EQ(buf2.capacity(), 3u); EXPECT_EQ(buf2.data(), data1); + EXPECT_FALSE(buf2.empty()); } TEST(BufferTest, TestClear) { @@ -165,11 +180,13 @@ TEST(BufferTest, TestClear) { buf.SetData(kTestData, 15); EXPECT_EQ(buf.size(), 15u); EXPECT_EQ(buf.capacity(), 15u); + EXPECT_FALSE(buf.empty()); const char *data = buf.data(); buf.Clear(); EXPECT_EQ(buf.size(), 0u); EXPECT_EQ(buf.capacity(), 15u); // Hasn't shrunk. EXPECT_EQ(buf.data(), data); // No reallocation. + EXPECT_TRUE(buf.empty()); } TEST(BufferTest, TestLambdaSetAppend) { @@ -188,6 +205,8 @@ TEST(BufferTest, TestLambdaSetAppend) { EXPECT_EQ(buf2.AppendData(15, setter), 15u); EXPECT_EQ(buf1, buf2); EXPECT_EQ(buf1.capacity(), buf2.capacity()); + EXPECT_FALSE(buf1.empty()); + EXPECT_FALSE(buf2.empty()); } TEST(BufferTest, TestLambdaSetAppendSigned) { @@ -206,6 +225,8 @@ TEST(BufferTest, TestLambdaSetAppendSigned) { EXPECT_EQ(buf2.AppendData(15, setter), 15u); EXPECT_EQ(buf1, buf2); EXPECT_EQ(buf1.capacity(), buf2.capacity()); + EXPECT_FALSE(buf1.empty()); + EXPECT_FALSE(buf2.empty()); } TEST(BufferTest, TestLambdaAppendEmpty) { @@ -222,6 +243,8 @@ TEST(BufferTest, TestLambdaAppendEmpty) { EXPECT_EQ(buf2.AppendData(15, setter), 15u); EXPECT_EQ(buf1, buf2); EXPECT_EQ(buf1.capacity(), buf2.capacity()); + EXPECT_FALSE(buf1.empty()); + EXPECT_FALSE(buf2.empty()); } TEST(BufferTest, TestLambdaAppendPartial) { @@ -236,6 +259,7 @@ TEST(BufferTest, TestLambdaAppendPartial) { EXPECT_EQ(buf.size(), 7u); // Size is exactly what we wrote. EXPECT_GE(buf.capacity(), 7u); // Capacity is valid. EXPECT_NE(buf.data(), nullptr); // Data is actually stored. + EXPECT_FALSE(buf.empty()); } TEST(BufferTest, TestMutableLambdaSetAppend) { @@ -256,6 +280,7 @@ TEST(BufferTest, TestMutableLambdaSetAppend) { EXPECT_EQ(buf.size(), 30u); // Size is exactly what we wrote. EXPECT_GE(buf.capacity(), 30u); // Capacity is valid. EXPECT_NE(buf.data(), nullptr); // Data is actually stored. + EXPECT_FALSE(buf.empty()); for (uint8_t i = 0; i != buf.size(); ++i) { EXPECT_EQ(buf.data()[i], magic_number + i); @@ -267,6 +292,7 @@ TEST(BufferTest, TestBracketRead) { EXPECT_EQ(buf.size(), 7u); EXPECT_EQ(buf.capacity(), 7u); EXPECT_NE(buf.data(), nullptr); + EXPECT_FALSE(buf.empty()); for (size_t i = 0; i != 7u; ++i) { EXPECT_EQ(buf[i], kTestData[i]); @@ -278,6 +304,7 @@ TEST(BufferTest, TestBracketReadConst) { EXPECT_EQ(buf.size(), 7u); EXPECT_EQ(buf.capacity(), 7u); EXPECT_NE(buf.data(), nullptr); + EXPECT_FALSE(buf.empty()); const Buffer& cbuf = buf; @@ -291,6 +318,7 @@ TEST(BufferTest, TestBracketWrite) { EXPECT_EQ(buf.size(), 7u); EXPECT_EQ(buf.capacity(), 7u); EXPECT_NE(buf.data(), nullptr); + EXPECT_FALSE(buf.empty()); for (size_t i = 0; i != 7u; ++i) { buf[i] = kTestData[i]; @@ -307,6 +335,7 @@ TEST(BufferTest, TestInt16) { EXPECT_EQ(buf.size(), 5u); EXPECT_EQ(buf.capacity(), 5u); EXPECT_NE(buf.data(), nullptr); + EXPECT_FALSE(buf.empty()); for (size_t i = 0; i != buf.size(); ++i) { EXPECT_EQ(test_data[i], buf[i]); } @@ -322,10 +351,12 @@ TEST(BufferTest, TestFloat) { EXPECT_EQ(buf.size(), 0u); EXPECT_EQ(buf.capacity(), 0u); EXPECT_EQ(buf.data(), nullptr); + EXPECT_TRUE(buf.empty()); buf.SetData(test_data); EXPECT_EQ(buf.size(), 5u); EXPECT_EQ(buf.capacity(), 5u); EXPECT_NE(buf.data(), nullptr); + EXPECT_FALSE(buf.empty()); float* p1 = buf.data(); while (buf.data() == p1) { buf.AppendData(test_data); @@ -348,6 +379,7 @@ TEST(BufferTest, TestStruct) { EXPECT_EQ(buf.size(), 4u); EXPECT_EQ(buf.capacity(), 4u); EXPECT_NE(buf.data(), nullptr); + EXPECT_FALSE(buf.empty()); BufferT buf2(4); for (size_t i = 0; i < buf2.size(); ++i) { buf2[i] = &buf[i];