20 #include <ripple/basics/Buffer.h>
21 #include <ripple/beast/unit_test.h>
34 return b.
data() ==
nullptr;
36 return b.
data() !=
nullptr;
43 0xa8, 0xa1, 0x38, 0x45, 0x23, 0xec, 0xe4, 0x23, 0x71, 0x6d, 0x2a,
44 0x18, 0xb4, 0x70, 0xcb, 0xf5, 0xac, 0x2d, 0x89, 0x4d, 0x19, 0x9c,
45 0xf0, 0x2c, 0x15, 0xd1, 0xf9, 0x9b, 0x66, 0xd2, 0x30, 0xd3};
48 BEAST_EXPECT(
sane(b0));
49 BEAST_EXPECT(b0.
empty());
52 BEAST_EXPECT(
sane(b1));
53 BEAST_EXPECT(b1.empty());
55 BEAST_EXPECT(
sane(b1));
56 BEAST_EXPECT(!b1.empty());
57 BEAST_EXPECT(b1.size() == 16);
60 BEAST_EXPECT(
sane(b2));
61 BEAST_EXPECT(!b2.empty());
62 BEAST_EXPECT(b2.size() == b1.size());
65 Buffer b3{data,
sizeof(data)};
66 BEAST_EXPECT(
sane(b3));
67 BEAST_EXPECT(!b3.empty());
68 BEAST_EXPECT(b3.size() ==
sizeof(data));
69 BEAST_EXPECT(
std::memcmp(b3.data(), data, b3.size()) == 0);
72 BEAST_EXPECT(b0 == b0);
73 BEAST_EXPECT(b0 != b1);
74 BEAST_EXPECT(b1 == b1);
75 BEAST_EXPECT(b1 != b2);
76 BEAST_EXPECT(b2 != b3);
80 testcase(
"Copy Construction / Assignment");
83 BEAST_EXPECT(x == b0);
84 BEAST_EXPECT(
sane(x));
86 BEAST_EXPECT(y == b1);
87 BEAST_EXPECT(
sane(y));
89 BEAST_EXPECT(x == b2);
90 BEAST_EXPECT(
sane(x));
93 BEAST_EXPECT(
sane(x));
95 BEAST_EXPECT(y == b3);
96 BEAST_EXPECT(
sane(y));
98 BEAST_EXPECT(x == b0);
99 BEAST_EXPECT(
sane(x));
100 #if defined(__clang__) && (!defined(__APPLE__) && (__clang_major__ >= 7)) || \
101 (defined(__APPLE__) && (__apple_build_version__ >= 10010043))
102 #pragma clang diagnostic push
103 #pragma clang diagnostic ignored "-Wself-assign-overloaded"
107 BEAST_EXPECT(x == b0);
108 BEAST_EXPECT(
sane(x));
110 BEAST_EXPECT(y == b3);
111 BEAST_EXPECT(
sane(y));
113 #if defined(__clang__) && (!defined(__APPLE__) && (__clang_major__ >= 7)) || \
114 (defined(__APPLE__) && (__apple_build_version__ >= 10010043))
115 #pragma clang diagnostic pop
121 testcase(
"Move Construction / Assignment");
130 BEAST_EXPECT(
sane(x));
131 BEAST_EXPECT(x.
empty());
132 BEAST_EXPECT(
sane(y));
133 BEAST_EXPECT(y.empty());
134 BEAST_EXPECT(x == y);
140 BEAST_EXPECT(
sane(x));
141 BEAST_EXPECT(x.empty());
142 BEAST_EXPECT(
sane(y));
143 BEAST_EXPECT(y == b1);
151 BEAST_EXPECT(
sane(x));
152 BEAST_EXPECT(x.
empty());
153 BEAST_EXPECT(
sane(y));
154 BEAST_EXPECT(y.
empty());
162 BEAST_EXPECT(
sane(x));
163 BEAST_EXPECT(x == b1);
164 BEAST_EXPECT(
sane(y));
165 BEAST_EXPECT(y.empty());
173 BEAST_EXPECT(
sane(x));
174 BEAST_EXPECT(x.empty());
175 BEAST_EXPECT(
sane(y));
176 BEAST_EXPECT(y.
empty());
185 BEAST_EXPECT(
sane(x));
186 BEAST_EXPECT(!x.empty());
187 BEAST_EXPECT(
sane(y));
188 BEAST_EXPECT(y.empty());
191 BEAST_EXPECT(
sane(x));
192 BEAST_EXPECT(!x.empty());
193 BEAST_EXPECT(
sane(z));
194 BEAST_EXPECT(z.empty());
199 testcase(
"Slice Conversion / Construction / Assignment");
202 BEAST_EXPECT(
sane(w));
203 BEAST_EXPECT(w == b0);
206 BEAST_EXPECT(
sane(x));
207 BEAST_EXPECT(x == b1);
210 BEAST_EXPECT(
sane(y));
211 BEAST_EXPECT(y == b2);
214 BEAST_EXPECT(
sane(z));
215 BEAST_EXPECT(z == b3);
218 w =
static_cast<Slice>(b0);
219 BEAST_EXPECT(
sane(w));
220 BEAST_EXPECT(w == b0);
223 w =
static_cast<Slice>(b1);
224 BEAST_EXPECT(
sane(w));
225 BEAST_EXPECT(w == b1);
228 x =
static_cast<Slice>(b2);
229 BEAST_EXPECT(
sane(x));
230 BEAST_EXPECT(x == b2);
233 y =
static_cast<Slice>(z);
234 BEAST_EXPECT(
sane(y));
235 BEAST_EXPECT(y == z);
238 z =
static_cast<Slice>(b0);
239 BEAST_EXPECT(
sane(z));
240 BEAST_EXPECT(z == b0);
244 testcase(
"Allocation, Deallocation and Clearing");
252 BEAST_EXPECT(
sane(x));
253 BEAST_EXPECT(x.size() == i);
254 BEAST_EXPECT((x.data() ==
nullptr) == (i == 0));
258 BEAST_EXPECT(
sane(x));
259 BEAST_EXPECT(x.size() == i + 1);
260 BEAST_EXPECT(x.data() !=
nullptr);
264 BEAST_EXPECT(
sane(x));
265 BEAST_EXPECT(x.size() == 0);
266 BEAST_EXPECT(x.data() ==
nullptr);
270 BEAST_EXPECT(
sane(x));
271 BEAST_EXPECT(x.size() == 0);
272 BEAST_EXPECT(x.data() ==
nullptr);