]>
git.proxmox.com Git - ceph.git/blob - ceph/src/zstd/contrib/pzstd/utils/test/BufferTest.cpp
2 * Copyright (c) 2016-present, Facebook, Inc.
5 * This source code is licensed under the BSD-style license found in the
6 * LICENSE file in the root directory of this source tree. An additional grant
7 * of patent rights can be found in the PATENTS file in the same directory.
9 #include "utils/Buffer.h"
10 #include "utils/Range.h"
12 #include <gtest/gtest.h>
15 using namespace pzstd
;
18 void deleter(const unsigned char* buf
) {
23 TEST(Buffer
, Constructors
) {
25 EXPECT_TRUE(empty
.empty());
26 EXPECT_EQ(0, empty
.size());
29 EXPECT_FALSE(sized
.empty());
30 EXPECT_EQ(5, sized
.size());
32 Buffer
moved(std::move(sized
));
33 EXPECT_FALSE(sized
.empty());
34 EXPECT_EQ(5, sized
.size());
37 assigned
= std::move(moved
);
38 EXPECT_FALSE(sized
.empty());
39 EXPECT_EQ(5, sized
.size());
42 TEST(Buffer
, BufferManagement
) {
43 std::shared_ptr
<unsigned char> buf(new unsigned char[10], deleter
);
45 Buffer
acquired(buf
, MutableByteRange(buf
.get(), buf
.get() + 10));
46 EXPECT_EQ(2, buf
.use_count());
47 Buffer
moved(std::move(acquired
));
48 EXPECT_EQ(2, buf
.use_count());
50 assigned
= std::move(moved
);
51 EXPECT_EQ(2, buf
.use_count());
53 Buffer split
= assigned
.splitAt(5);
54 EXPECT_EQ(3, buf
.use_count());
58 EXPECT_EQ(3, buf
.use_count());
60 EXPECT_EQ(1, buf
.use_count());
63 TEST(Buffer
, Modifiers
) {
67 for (auto& byte
: buf
.range()) {
72 auto prefix
= buf
.splitAt(2);
74 ASSERT_EQ(2, prefix
.size());
75 EXPECT_EQ(0, *prefix
.data());
77 ASSERT_EQ(8, buf
.size());
78 EXPECT_EQ(2, *buf
.data());
81 EXPECT_EQ(4, *buf
.data());
83 EXPECT_EQ(9, *(buf
.range().end() - 1));
86 EXPECT_EQ(7, *(buf
.range().end() - 1));
88 EXPECT_EQ(4, buf
.size());