Skip to content

Commit

Permalink
test_bufferlist: add move tests for bufferlist
Browse files Browse the repository at this point in the history
Signed-off-by: Haomai Wang <haomai@xsky.com>
  • Loading branch information
yuyuyu101 committed Feb 3, 2016
1 parent 669f143 commit 41c3dc2
Showing 1 changed file with 115 additions and 2 deletions.
117 changes: 115 additions & 2 deletions src/test/bufferlist.cc
Original file line number Diff line number Diff line change
Expand Up @@ -448,6 +448,42 @@ TEST(BufferPtr, constructors) {
EXPECT_DEATH(bufferptr(original, 0, original.length() + 1), "");
EXPECT_DEATH(bufferptr(bufferptr(), 0, 0), "");
}
//
// ptr(ptr&& p)
//
{
const std::string str(len, 'X');
bufferptr original(str.c_str(), len);
bufferptr ptr(std::move(original));
EXPECT_TRUE(ptr.have_raw());
EXPECT_FALSE(original.have_raw());
EXPECT_EQ(str.compare(0, str.size(), ptr.c_str()), 0);
EXPECT_EQ(1, ptr.raw_nref());
}
}

TEST(BufferPtr, operator_assign) {
//
// ptr& operator= (const ptr& p)
//
bufferptr ptr(10);
ptr.copy_in(0, 3, "ABC");
char dest[1];
{
bufferptr copy = ptr;
copy.copy_out(1, 1, dest);
ASSERT_EQ('B', dest[0]);
}

//
// ptr& operator= (ptr&& p)
//
bufferptr move = std::move(ptr);
{
move.copy_out(1, 1, dest);
ASSERT_EQ('B', dest[0]);
}
EXPECT_FALSE(ptr.have_raw());
}

TEST(BufferPtr, assignment) {
Expand Down Expand Up @@ -1201,20 +1237,34 @@ TEST(BufferList, constructors) {
}

TEST(BufferList, operator_equal) {
//
// list& operator= (const list& other)
//
bufferlist bl;
bl.append("ABC", 3);
{
std::string dest;
bl.copy(1, 1, dest);
ASSERT_EQ('B', dest[0]);
}
bufferlist copy;
copy = bl;
{
bufferlist copy = bl;
std::string dest;
copy.copy(1, 1, dest);
ASSERT_EQ('B', dest[0]);
}

//
// list& operator= (list&& other)
//
bufferlist move = std::move(bl);
{
std::string dest;
move.copy(1, 1, dest);
ASSERT_EQ('B', dest[0]);
}
EXPECT_TRUE(move.length());
EXPECT_TRUE(!bl.length());
}

TEST(BufferList, buffers) {
Expand Down Expand Up @@ -1518,6 +1568,27 @@ TEST(BufferList, push_front) {
EXPECT_EQ('B', bl.buffers().front()[0]);
EXPECT_EQ(ptr.get_raw(), bl.buffers().front().get_raw());
}
//
// void push_front(ptr&& bp)
//
{
bufferlist bl;
bufferptr ptr;
bl.push_front(std::move(ptr));
EXPECT_EQ((unsigned)0, bl.length());
EXPECT_EQ((unsigned)0, bl.buffers().size());
}
{
bufferlist bl;
bl.append('A');
bufferptr ptr(len);
ptr.c_str()[0] = 'B';
bl.push_front(std::move(ptr));
EXPECT_EQ((unsigned)(1 + len), bl.length());
EXPECT_EQ((unsigned)2, bl.buffers().size());
EXPECT_EQ('B', bl.buffers().front()[0]);
EXPECT_FALSE(ptr.get_raw());
}
}

TEST(BufferList, push_back) {
Expand Down Expand Up @@ -1557,6 +1628,27 @@ TEST(BufferList, push_back) {
EXPECT_EQ('B', bl.buffers().back()[0]);
EXPECT_EQ(ptr.get_raw(), bl.buffers().back().get_raw());
}
//
// void push_back(ptr&& bp)
//
{
bufferlist bl;
bufferptr ptr;
bl.push_back(std::move(ptr));
EXPECT_EQ((unsigned)0, bl.length());
EXPECT_EQ((unsigned)0, bl.buffers().size());
}
{
bufferlist bl;
bl.append('A');
bufferptr ptr(len);
ptr.c_str()[0] = 'B';
bl.push_back(std::move(ptr));
EXPECT_EQ((unsigned)(1 + len), bl.length());
EXPECT_EQ((unsigned)2, bl.buffers().size());
EXPECT_EQ('B', bl.buffers().back()[0]);
EXPECT_FALSE(ptr.get_raw());
}
}

TEST(BufferList, is_contiguous) {
Expand Down Expand Up @@ -1935,6 +2027,27 @@ TEST(BufferList, append) {
EXPECT_EQ(0, ::memcmp(expected.c_str(), bl.c_str(), expected.size()));
EXPECT_EQ(expected.size(), bl.length());
}
//
// void append(ptr&& bp);
//
{
bufferlist bl;
EXPECT_EQ((unsigned)0, bl.buffers().size());
EXPECT_EQ((unsigned)0, bl.length());
{
bufferptr ptr;
bl.append(std::move(ptr));
EXPECT_EQ((unsigned)0, bl.buffers().size());
EXPECT_EQ((unsigned)0, bl.length());
}
{
bufferptr ptr(3);
bl.append(std::move(ptr));
EXPECT_EQ((unsigned)1, bl.buffers().size());
EXPECT_EQ((unsigned)3, bl.length());
EXPECT_FALSE(ptr.get_raw());
}
}
}

TEST(BufferList, append_zero) {
Expand Down

0 comments on commit 41c3dc2

Please sign in to comment.