16 except<std::runtime_error>(
25 BEAST_EXPECT(shouldBeInvalid ==
sfInvalid);
27 testInvalid(STI_VL, 255);
28 testInvalid(STI_UINT256, 255);
29 testInvalid(STI_UINT32, 255);
30 testInvalid(STI_VECTOR256, 255);
31 testInvalid(STI_OBJECT, 255);
35 except<std::runtime_error>(
40 except<std::runtime_error>([&]() {
49 SField const& sfTestVL = sfMasterSignature;
50 SField const& sfTestH256 = sfCheckID;
51 SField const& sfTestU32 = sfSettleDelay;
52 SField const& sfTestV256 = sfAmendments;
53 SField const& sfTestObject = sfMajority;
63 STObject object1(elements, sfTestObject);
82 fail(
"STObject error 4");
101 unexpected(copy.isFieldPresent(sfTestH256),
"STObject error 9");
105 copy.setFieldU32(sfTestU32, 1);
109 for (
int i = 0; i < 1000; i++)
119 STObject const object3(elements, it, sfTestObject);
129 for (
int i = 0; i < uints.
capacity(); ++i)
139 STObject const object3(elements, it, sfTestObject);
144 BEAST_EXPECT(uints1 == uints3);
154 auto const& sf1Outer = sfSequence;
155 auto const& sf2Outer = sfExpiration;
156 auto const& sf3Outer = sfQualityIn;
157 auto const& sf4Outer = sfAmount;
158 auto const& sf4 = sfSignature;
159 auto const& sf5 = sfPublicKey;
164 auto const st = [&]() {
171 BEAST_EXPECT(st[sf1Outer] == 1);
172 BEAST_EXPECT(st[sf2Outer] == 2);
173 except<STObject::FieldErr>([&]() { st[sf3Outer]; });
174 BEAST_EXPECT(*st[~sf1Outer] == 1);
175 BEAST_EXPECT(*st[~sf2Outer] == 2);
177 BEAST_EXPECT(!!st[~sf1Outer]);
178 BEAST_EXPECT(!!st[~sf2Outer]);
179 BEAST_EXPECT(!st[~sf3Outer]);
180 BEAST_EXPECT(st[sf1Outer] != st[sf2Outer]);
181 BEAST_EXPECT(st[~sf1Outer] != st[~sf2Outer]);
195 auto const st = [&]() {
202 BEAST_EXPECT(st[sf1Outer] == 1);
203 BEAST_EXPECT(st[sf2Outer] == 2);
204 BEAST_EXPECT(st[sf3Outer] == 0);
205 BEAST_EXPECT(*st[~sf1Outer] == 1);
206 BEAST_EXPECT(*st[~sf2Outer] == 2);
207 BEAST_EXPECT(*st[~sf3Outer] == 0);
208 BEAST_EXPECT(!!st[~sf1Outer]);
209 BEAST_EXPECT(!!st[~sf2Outer]);
210 BEAST_EXPECT(!!st[~sf3Outer]);
218 except([&]() {
return st[sf1Outer] == 0; });
222 BEAST_EXPECT(!st[~sf1Outer]);
224 BEAST_EXPECT(st[sf1Outer] == 2);
227 BEAST_EXPECT(!!st[~sf1Outer]);
229 BEAST_EXPECT(st[sf1Outer] == 1);
230 BEAST_EXPECT(!!st[sf1Outer]);
231 BEAST_EXPECT(!!st[~sf1Outer]);
233 BEAST_EXPECT(!st[sf1Outer]);
234 BEAST_EXPECT(!!st[~sf1Outer]);
236 BEAST_EXPECT(!st[~sf1Outer]);
240 BEAST_EXPECT(!st[~sf1Outer]);
241 except([&]() {
return st[sf1Outer] == 0; });
242 except([&]() {
return *st[~sf1Outer]; });
244 BEAST_EXPECT(st[sf1Outer] == 1);
245 BEAST_EXPECT(!!st[sf1Outer]);
246 BEAST_EXPECT(!!st[~sf1Outer]);
248 st[sf2Outer] = st[sf1Outer];
249 BEAST_EXPECT(st[sf1Outer] == 3);
250 BEAST_EXPECT(st[sf2Outer] == 3);
251 BEAST_EXPECT(st[sf2Outer] == st[sf1Outer]);
253 st[sf2Outer] = st[sf1Outer];
254 BEAST_EXPECT(st[sf1Outer] == 4);
255 BEAST_EXPECT(st[sf2Outer] == 4);
256 BEAST_EXPECT(st[sf2Outer] == st[sf1Outer]);
258 BEAST_EXPECT(st[sf1Outer] == 5);
260 BEAST_EXPECT(st[sf4Outer] ==
STAmount{1});
262 BEAST_EXPECT(st[sf4Outer] ==
STAmount{2});
264 BEAST_EXPECT(st[sf1Outer] == 4);
266 BEAST_EXPECT(st[sf4Outer] ==
STAmount{1});
273 BEAST_EXPECT(!!st[~sf1Outer]);
275 BEAST_EXPECT(st[sf1Outer] == 0);
276 BEAST_EXPECT(*st[~sf1Outer] == 0);
277 BEAST_EXPECT(!st[~sf2Outer]);
279 except([&]() {
return st[sf2Outer] == 0; });
280 BEAST_EXPECT(!!st[~sf3Outer]);
282 BEAST_EXPECT(st[sf3Outer] == 0);
285 BEAST_EXPECT(st[sf1Outer] == 1);
286 BEAST_EXPECT(*st[~sf1Outer] == 1);
287 BEAST_EXPECT(!!st[~sf1Outer]);
289 BEAST_EXPECT(st[sf1Outer] == 0);
290 BEAST_EXPECT(*st[~sf1Outer] == 0);
291 BEAST_EXPECT(!!st[~sf1Outer]);
293 BEAST_EXPECT(st[sf2Outer] == 2);
294 BEAST_EXPECT(*st[~sf2Outer] == 2);
295 BEAST_EXPECT(!!st[~sf2Outer]);
297 except([&]() {
return *st[~sf2Outer]; });
298 BEAST_EXPECT(!st[~sf2Outer]);
300 BEAST_EXPECT(st[sf3Outer] == 3);
301 BEAST_EXPECT(*st[~sf3Outer] == 3);
302 BEAST_EXPECT(!!st[~sf3Outer]);
304 BEAST_EXPECT(st[sf3Outer] == 2);
305 BEAST_EXPECT(*st[~sf3Outer] == 2);
306 BEAST_EXPECT(!!st[~sf3Outer]);
308 BEAST_EXPECT(st[sf3Outer] == 0);
309 BEAST_EXPECT(*st[~sf3Outer] == 0);
310 BEAST_EXPECT(!!st[~sf3Outer]);
312 BEAST_EXPECT(st[sf3Outer] == 0);
313 BEAST_EXPECT(*st[~sf3Outer] == 0);
314 BEAST_EXPECT(!!st[~sf3Outer]);
316 BEAST_EXPECT(st[sf1Outer] == 1);
318 BEAST_EXPECT(st[sf4Outer] ==
STAmount{1});
320 BEAST_EXPECT(st[sf4Outer] ==
STAmount{2});
322 BEAST_EXPECT(st[sf1Outer] == 0);
324 BEAST_EXPECT(st[sf4Outer] ==
STAmount{1});
331 auto const v = ~st[~sf1Outer];
354 BEAST_EXPECT(!b.
empty());
355 st[sf4] = std::move(b);
356 BEAST_EXPECT(b.
empty());
357 BEAST_EXPECT(
Slice(st[sf4]).size() == 1);
359 BEAST_EXPECT(!~st[~sf4]);
362 BEAST_EXPECT(b.
size() == 2);
363 BEAST_EXPECT(
Slice(st[sf4]).size() == 2);
365 BEAST_EXPECT(
Slice(st[sf4]).size() == 2);
366 BEAST_EXPECT(
Slice(st[sf5]).size() == 2);
370 BEAST_EXPECT(st[sf5] ==
Slice{});
371 BEAST_EXPECT(!!st[~sf5]);
372 BEAST_EXPECT(!!~st[~sf5]);
374 st[sf5] = std::move(b);
375 BEAST_EXPECT(b.
empty());
376 BEAST_EXPECT(
Slice(st[sf5]).size() == 1);
378 BEAST_EXPECT(!~st[~sf4]);
386 BEAST_EXPECT(!st[~sf5]);
395 auto const& sf = sfIndexes;
401 st[sf] = std::move(v);
402 auto const& cst = st;
403 BEAST_EXPECT(cst[sf].size() == 2);
404 BEAST_EXPECT(cst[~sf]->size() == 2);
405 BEAST_EXPECT(cst[sf][0] == 1);
406 BEAST_EXPECT(cst[sf][1] == 2);
414 auto const& sf1 = sfIndexes;
415 auto const& sf2 = sfHashes;
416 auto const& sf3 = sfAmendments;
425 BEAST_EXPECT(cst[sf1].empty());
426 BEAST_EXPECT(!cst[~sf2]);
427 BEAST_EXPECT(cst[sf3].empty());
431 BEAST_EXPECT(cst[sf1].size() == 1);
432 BEAST_EXPECT(cst[sf1][0] ==
uint256{1});
434 BEAST_EXPECT(cst[sf2].size() == 1);
435 BEAST_EXPECT(cst[sf2][0] ==
uint256{1});
437 BEAST_EXPECT(!st[~sf2]);
439 BEAST_EXPECT(cst[sf3].size() == 1);
440 BEAST_EXPECT(cst[sf3][0] ==
uint256{1});
442 BEAST_EXPECT(cst[sf3].empty());