1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "quiche/common/simple_buffer_allocator.h"
6
7 #include "quiche/common/platform/api/quiche_test.h"
8
9 namespace quiche {
10 namespace {
11
TEST(SimpleBufferAllocatorTest,NewDelete)12 TEST(SimpleBufferAllocatorTest, NewDelete) {
13 SimpleBufferAllocator alloc;
14 char* buf = alloc.New(4);
15 EXPECT_NE(nullptr, buf);
16 alloc.Delete(buf);
17 }
18
TEST(SimpleBufferAllocatorTest,DeleteNull)19 TEST(SimpleBufferAllocatorTest, DeleteNull) {
20 SimpleBufferAllocator alloc;
21 alloc.Delete(nullptr);
22 }
23
TEST(SimpleBufferAllocatorTest,MoveBuffersConstructor)24 TEST(SimpleBufferAllocatorTest, MoveBuffersConstructor) {
25 SimpleBufferAllocator alloc;
26 QuicheBuffer buffer1(&alloc, 16);
27
28 EXPECT_NE(buffer1.data(), nullptr);
29 EXPECT_EQ(buffer1.size(), 16u);
30
31 QuicheBuffer buffer2(std::move(buffer1));
32 EXPECT_EQ(buffer1.data(), nullptr); // NOLINT(bugprone-use-after-move)
33 EXPECT_EQ(buffer1.size(), 0u);
34 EXPECT_NE(buffer2.data(), nullptr);
35 EXPECT_EQ(buffer2.size(), 16u);
36 }
37
TEST(SimpleBufferAllocatorTest,MoveBuffersAssignment)38 TEST(SimpleBufferAllocatorTest, MoveBuffersAssignment) {
39 SimpleBufferAllocator alloc;
40 QuicheBuffer buffer1(&alloc, 16);
41 QuicheBuffer buffer2;
42
43 EXPECT_NE(buffer1.data(), nullptr);
44 EXPECT_EQ(buffer1.size(), 16u);
45 EXPECT_EQ(buffer2.data(), nullptr);
46 EXPECT_EQ(buffer2.size(), 0u);
47
48 buffer2 = std::move(buffer1);
49 EXPECT_EQ(buffer1.data(), nullptr); // NOLINT(bugprone-use-after-move)
50 EXPECT_EQ(buffer1.size(), 0u);
51 EXPECT_NE(buffer2.data(), nullptr);
52 EXPECT_EQ(buffer2.size(), 16u);
53 }
54
TEST(SimpleBufferAllocatorTest,CopyBuffer)55 TEST(SimpleBufferAllocatorTest, CopyBuffer) {
56 SimpleBufferAllocator alloc;
57 const absl::string_view original = "Test string";
58 QuicheBuffer copy = QuicheBuffer::Copy(&alloc, original);
59 EXPECT_EQ(copy.AsStringView(), original);
60 }
61
62 } // namespace
63 } // namespace quiche
64