| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "quiche/common/simple_buffer_allocator.h" |
| |
| #include <utility> |
| |
| #include "quiche/common/platform/api/quiche_test.h" |
| |
| namespace quiche { |
| namespace { |
| |
| TEST(SimpleBufferAllocatorTest, NewDelete) { |
| SimpleBufferAllocator alloc; |
| char* buf = alloc.New(4); |
| EXPECT_NE(nullptr, buf); |
| alloc.Delete(buf); |
| } |
| |
| TEST(SimpleBufferAllocatorTest, DeleteNull) { |
| SimpleBufferAllocator alloc; |
| alloc.Delete(nullptr); |
| } |
| |
| TEST(SimpleBufferAllocatorTest, MoveBuffersConstructor) { |
| SimpleBufferAllocator alloc; |
| QuicheBuffer buffer1(&alloc, 16); |
| |
| EXPECT_NE(buffer1.data(), nullptr); |
| EXPECT_EQ(buffer1.size(), 16u); |
| |
| QuicheBuffer buffer2(std::move(buffer1)); |
| EXPECT_EQ(buffer1.data(), nullptr); // NOLINT(bugprone-use-after-move) |
| EXPECT_EQ(buffer1.size(), 0u); |
| EXPECT_NE(buffer2.data(), nullptr); |
| EXPECT_EQ(buffer2.size(), 16u); |
| } |
| |
| TEST(SimpleBufferAllocatorTest, MoveBuffersAssignment) { |
| SimpleBufferAllocator alloc; |
| QuicheBuffer buffer1(&alloc, 16); |
| QuicheBuffer buffer2; |
| |
| EXPECT_NE(buffer1.data(), nullptr); |
| EXPECT_EQ(buffer1.size(), 16u); |
| EXPECT_EQ(buffer2.data(), nullptr); |
| EXPECT_EQ(buffer2.size(), 0u); |
| |
| buffer2 = std::move(buffer1); |
| EXPECT_EQ(buffer1.data(), nullptr); // NOLINT(bugprone-use-after-move) |
| EXPECT_EQ(buffer1.size(), 0u); |
| EXPECT_NE(buffer2.data(), nullptr); |
| EXPECT_EQ(buffer2.size(), 16u); |
| } |
| |
| TEST(SimpleBufferAllocatorTest, CopyBuffer) { |
| SimpleBufferAllocator alloc; |
| const absl::string_view original = "Test string"; |
| QuicheBuffer copy = QuicheBuffer::Copy(&alloc, original); |
| EXPECT_EQ(copy.AsStringView(), original); |
| } |
| |
| } // namespace |
| } // namespace quiche |