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