27 std::uint8_t const data[] = {0xa8, 0xa1, 0x38, 0x45, 0x23, 0xec, 0xe4, 0x23,
28 0x71, 0x6d, 0x2a, 0x18, 0xb4, 0x70, 0xcb, 0xf5,
29 0xac, 0x2d, 0x89, 0x4d, 0x19, 0x9c, 0xf0, 0x2c,
30 0x15, 0xd1, 0xf9, 0x9b, 0x66, 0xd2, 0x30, 0xd3};
33 BEAST_EXPECT(
sane(b0));
34 BEAST_EXPECT(b0.
empty());
37 BEAST_EXPECT(
sane(b1));
38 BEAST_EXPECT(b1.
empty());
40 BEAST_EXPECT(
sane(b1));
41 BEAST_EXPECT(!b1.
empty());
42 BEAST_EXPECT(b1.
size() == 16);
45 BEAST_EXPECT(
sane(b2));
46 BEAST_EXPECT(!b2.
empty());
47 BEAST_EXPECT(b2.
size() == b1.
size());
50 Buffer b3{data,
sizeof(data)};
51 BEAST_EXPECT(
sane(b3));
52 BEAST_EXPECT(!b3.
empty());
53 BEAST_EXPECT(b3.
size() ==
sizeof(data));
57 BEAST_EXPECT(b0 == b0);
58 BEAST_EXPECT(b0 != b1);
59 BEAST_EXPECT(b1 == b1);
60 BEAST_EXPECT(b1 != b2);
61 BEAST_EXPECT(b2 != b3);
65 testcase(
"Copy Construction / Assignment");
68 BEAST_EXPECT(x == b0);
69 BEAST_EXPECT(
sane(x));
71 BEAST_EXPECT(y == b1);
72 BEAST_EXPECT(
sane(y));
74 BEAST_EXPECT(x == b2);
75 BEAST_EXPECT(
sane(x));
78 BEAST_EXPECT(
sane(x));
80 BEAST_EXPECT(y == b3);
81 BEAST_EXPECT(
sane(y));
83 BEAST_EXPECT(x == b0);
84 BEAST_EXPECT(
sane(x));
86#pragma clang diagnostic push
87#pragma clang diagnostic ignored "-Wself-assign-overloaded"
91 BEAST_EXPECT(x == b0);
92 BEAST_EXPECT(
sane(x));
94 BEAST_EXPECT(y == b3);
95 BEAST_EXPECT(
sane(y));
98#pragma clang diagnostic pop
104 testcase(
"Move Construction / Assignment");
111 Buffer const y{std::move(x)};
112 BEAST_EXPECT(
sane(x));
113 BEAST_EXPECT(x.
empty());
114 BEAST_EXPECT(
sane(y));
115 BEAST_EXPECT(y.
empty());
116 BEAST_EXPECT(x == y);
121 Buffer const y{std::move(x)};
122 BEAST_EXPECT(
sane(x));
123 BEAST_EXPECT(x.
empty());
124 BEAST_EXPECT(
sane(y));
125 BEAST_EXPECT(y == b1);
133 BEAST_EXPECT(
sane(x));
134 BEAST_EXPECT(x.
empty());
135 BEAST_EXPECT(
sane(y));
136 BEAST_EXPECT(y.
empty());
144 BEAST_EXPECT(
sane(x));
145 BEAST_EXPECT(x == b1);
146 BEAST_EXPECT(
sane(y));
147 BEAST_EXPECT(y.
empty());
155 BEAST_EXPECT(
sane(x));
156 BEAST_EXPECT(x.
empty());
157 BEAST_EXPECT(
sane(y));
158 BEAST_EXPECT(y.
empty());
167 BEAST_EXPECT(
sane(x));
168 BEAST_EXPECT(!x.
empty());
169 BEAST_EXPECT(
sane(y));
170 BEAST_EXPECT(y.
empty());
173 BEAST_EXPECT(
sane(x));
174 BEAST_EXPECT(!x.
empty());
175 BEAST_EXPECT(
sane(z));
176 BEAST_EXPECT(z.
empty());
181 testcase(
"Slice Conversion / Construction / Assignment");
184 BEAST_EXPECT(
sane(w));
185 BEAST_EXPECT(w == b0);
188 BEAST_EXPECT(
sane(x));
189 BEAST_EXPECT(x == b1);
192 BEAST_EXPECT(
sane(y));
193 BEAST_EXPECT(y == b2);
196 BEAST_EXPECT(
sane(z));
197 BEAST_EXPECT(z == b3);
200 w =
static_cast<Slice>(b0);
201 BEAST_EXPECT(
sane(w));
202 BEAST_EXPECT(w == b0);
205 w =
static_cast<Slice>(b1);
206 BEAST_EXPECT(
sane(w));
207 BEAST_EXPECT(w == b1);
210 x =
static_cast<Slice>(b2);
211 BEAST_EXPECT(
sane(x));
212 BEAST_EXPECT(x == b2);
215 y =
static_cast<Slice>(z);
216 BEAST_EXPECT(
sane(y));
217 BEAST_EXPECT(y == z);
220 z =
static_cast<Slice>(b0);
221 BEAST_EXPECT(
sane(z));
222 BEAST_EXPECT(z == b0);
226 testcase(
"Allocation, Deallocation and Clearing");
234 BEAST_EXPECT(
sane(x));
235 BEAST_EXPECT(x.
size() == i);
236 BEAST_EXPECT((x.
data() ==
nullptr) == (i == 0));
240 BEAST_EXPECT(
sane(x));
241 BEAST_EXPECT(x.
size() == i + 1);
242 BEAST_EXPECT(x.
data() !=
nullptr);
246 BEAST_EXPECT(
sane(x));
247 BEAST_EXPECT(x.
empty());
248 BEAST_EXPECT(x.
data() ==
nullptr);
252 BEAST_EXPECT(
sane(x));
253 BEAST_EXPECT(x.
empty());
254 BEAST_EXPECT(x.
data() ==
nullptr);