35 except<std::runtime_error>(
44 BEAST_EXPECT(shouldBeInvalid ==
sfInvalid);
46 testInvalid(STI_VL, 255);
47 testInvalid(STI_UINT256, 255);
48 testInvalid(STI_UINT32, 255);
49 testInvalid(STI_VECTOR256, 255);
50 testInvalid(STI_OBJECT, 255);
54 except<std::runtime_error>(
59 except<std::runtime_error>([&]() {
68 SField const& sfTestVL = sfMasterSignature;
69 SField const& sfTestH256 = sfCheckID;
70 SField const& sfTestU32 = sfSettleDelay;
71 SField const& sfTestV256 = sfAmendments;
72 SField const& sfTestObject = sfMajority;
82 STObject object1(elements, sfTestObject);
105 fail(
"STObject error 4");
126 unexpected(copy.isFieldPresent(sfTestH256),
"STObject error 9");
130 "STObject error 10");
132 copy.setFieldU32(sfTestU32, 1);
136 "STObject error 11");
138 for (
int i = 0; i < 1000; i++)
148 STObject object3(elements, it, sfTestObject);
158 for (
int i = 0; i < uints.
capacity(); ++i)
168 STObject object3(elements, it, sfTestObject);
173 BEAST_EXPECT(uints1 == uints3);
183 auto const& sf1Outer = sfSequence;
184 auto const& sf2Outer = sfExpiration;
185 auto const& sf3Outer = sfQualityIn;
186 auto const& sf4Outer = sfAmount;
187 auto const& sf4 = sfSignature;
188 auto const& sf5 = sfPublicKey;
193 auto const st = [&]() {
200 BEAST_EXPECT(st[sf1Outer] == 1);
201 BEAST_EXPECT(st[sf2Outer] == 2);
202 except<STObject::FieldErr>([&]() { st[sf3Outer]; });
203 BEAST_EXPECT(*st[~sf1Outer] == 1);
204 BEAST_EXPECT(*st[~sf2Outer] == 2);
206 BEAST_EXPECT(!!st[~sf1Outer]);
207 BEAST_EXPECT(!!st[~sf2Outer]);
208 BEAST_EXPECT(!st[~sf3Outer]);
209 BEAST_EXPECT(st[sf1Outer] != st[sf2Outer]);
210 BEAST_EXPECT(st[~sf1Outer] != st[~sf2Outer]);
224 auto const st = [&]() {
231 BEAST_EXPECT(st[sf1Outer] == 1);
232 BEAST_EXPECT(st[sf2Outer] == 2);
233 BEAST_EXPECT(st[sf3Outer] == 0);
234 BEAST_EXPECT(*st[~sf1Outer] == 1);
235 BEAST_EXPECT(*st[~sf2Outer] == 2);
236 BEAST_EXPECT(*st[~sf3Outer] == 0);
237 BEAST_EXPECT(!!st[~sf1Outer]);
238 BEAST_EXPECT(!!st[~sf2Outer]);
239 BEAST_EXPECT(!!st[~sf3Outer]);
247 except([&]() {
return st[sf1Outer] == 0; });
251 BEAST_EXPECT(!st[~sf1Outer]);
253 BEAST_EXPECT(st[sf1Outer] == 2);
256 BEAST_EXPECT(!!st[~sf1Outer]);
258 BEAST_EXPECT(st[sf1Outer] == 1);
259 BEAST_EXPECT(!!st[sf1Outer]);
260 BEAST_EXPECT(!!st[~sf1Outer]);
262 BEAST_EXPECT(!st[sf1Outer]);
263 BEAST_EXPECT(!!st[~sf1Outer]);
265 BEAST_EXPECT(!st[~sf1Outer]);
269 BEAST_EXPECT(!st[~sf1Outer]);
270 except([&]() {
return st[sf1Outer] == 0; });
271 except([&]() {
return *st[~sf1Outer]; });
273 BEAST_EXPECT(st[sf1Outer] == 1);
274 BEAST_EXPECT(!!st[sf1Outer]);
275 BEAST_EXPECT(!!st[~sf1Outer]);
277 st[sf2Outer] = st[sf1Outer];
278 BEAST_EXPECT(st[sf1Outer] == 3);
279 BEAST_EXPECT(st[sf2Outer] == 3);
280 BEAST_EXPECT(st[sf2Outer] == st[sf1Outer]);
282 st[sf2Outer] = st[sf1Outer];
283 BEAST_EXPECT(st[sf1Outer] == 4);
284 BEAST_EXPECT(st[sf2Outer] == 4);
285 BEAST_EXPECT(st[sf2Outer] == st[sf1Outer]);
287 BEAST_EXPECT(st[sf1Outer] == 5);
289 BEAST_EXPECT(st[sf4Outer] ==
STAmount{1});
291 BEAST_EXPECT(st[sf4Outer] ==
STAmount{2});
293 BEAST_EXPECT(st[sf1Outer] == 4);
295 BEAST_EXPECT(st[sf4Outer] ==
STAmount{1});
302 BEAST_EXPECT(!!st[~sf1Outer]);
304 BEAST_EXPECT(st[sf1Outer] == 0);
305 BEAST_EXPECT(*st[~sf1Outer] == 0);
306 BEAST_EXPECT(!st[~sf2Outer]);
308 except([&]() {
return st[sf2Outer] == 0; });
309 BEAST_EXPECT(!!st[~sf3Outer]);
311 BEAST_EXPECT(st[sf3Outer] == 0);
314 BEAST_EXPECT(st[sf1Outer] == 1);
315 BEAST_EXPECT(*st[~sf1Outer] == 1);
316 BEAST_EXPECT(!!st[~sf1Outer]);
318 BEAST_EXPECT(st[sf1Outer] == 0);
319 BEAST_EXPECT(*st[~sf1Outer] == 0);
320 BEAST_EXPECT(!!st[~sf1Outer]);
322 BEAST_EXPECT(st[sf2Outer] == 2);
323 BEAST_EXPECT(*st[~sf2Outer] == 2);
324 BEAST_EXPECT(!!st[~sf2Outer]);
326 except([&]() {
return *st[~sf2Outer]; });
327 BEAST_EXPECT(!st[~sf2Outer]);
329 BEAST_EXPECT(st[sf3Outer] == 3);
330 BEAST_EXPECT(*st[~sf3Outer] == 3);
331 BEAST_EXPECT(!!st[~sf3Outer]);
333 BEAST_EXPECT(st[sf3Outer] == 2);
334 BEAST_EXPECT(*st[~sf3Outer] == 2);
335 BEAST_EXPECT(!!st[~sf3Outer]);
337 BEAST_EXPECT(st[sf3Outer] == 0);
338 BEAST_EXPECT(*st[~sf3Outer] == 0);
339 BEAST_EXPECT(!!st[~sf3Outer]);
341 BEAST_EXPECT(st[sf3Outer] == 0);
342 BEAST_EXPECT(*st[~sf3Outer] == 0);
343 BEAST_EXPECT(!!st[~sf3Outer]);
345 BEAST_EXPECT(st[sf1Outer] == 1);
347 BEAST_EXPECT(st[sf4Outer] ==
STAmount{1});
349 BEAST_EXPECT(st[sf4Outer] ==
STAmount{2});
351 BEAST_EXPECT(st[sf1Outer] == 0);
353 BEAST_EXPECT(st[sf4Outer] ==
STAmount{1});
360 auto const v = ~st[~sf1Outer];
386 BEAST_EXPECT(!b.
empty());
387 st[sf4] = std::move(b);
388 BEAST_EXPECT(b.
empty());
389 BEAST_EXPECT(
Slice(st[sf4]).size() == 1);
391 BEAST_EXPECT(!~st[~sf4]);
394 BEAST_EXPECT(b.
size() == 2);
395 BEAST_EXPECT(
Slice(st[sf4]).size() == 2);
397 BEAST_EXPECT(
Slice(st[sf4]).size() == 2);
398 BEAST_EXPECT(
Slice(st[sf5]).size() == 2);
402 BEAST_EXPECT(st[sf5] ==
Slice{});
403 BEAST_EXPECT(!!st[~sf5]);
404 BEAST_EXPECT(!!~st[~sf5]);
406 st[sf5] = std::move(b);
407 BEAST_EXPECT(b.
empty());
408 BEAST_EXPECT(
Slice(st[sf5]).size() == 1);
410 BEAST_EXPECT(!~st[~sf4]);
418 BEAST_EXPECT(!st[~sf5]);
428 auto const& sf = sfIndexes;
434 st[sf] = std::move(v);
435 auto const& cst = st;
436 BEAST_EXPECT(cst[sf].size() == 2);
437 BEAST_EXPECT(cst[~sf]->size() == 2);
438 BEAST_EXPECT(cst[sf][0] == 1);
439 BEAST_EXPECT(cst[sf][1] == 2);
442 decltype(cst[sfIndexes]),
450 auto const& sf1 = sfIndexes;
451 auto const& sf2 = sfHashes;
452 auto const& sf3 = sfAmendments;
461 BEAST_EXPECT(cst[sf1].size() == 0);
462 BEAST_EXPECT(!cst[~sf2]);
463 BEAST_EXPECT(cst[sf3].size() == 0);
467 BEAST_EXPECT(cst[sf1].size() == 1);
468 BEAST_EXPECT(cst[sf1][0] ==
uint256{1});
470 BEAST_EXPECT(cst[sf2].size() == 1);
471 BEAST_EXPECT(cst[sf2][0] ==
uint256{1});
473 BEAST_EXPECT(!st[~sf2]);
475 BEAST_EXPECT(cst[sf3].size() == 1);
476 BEAST_EXPECT(cst[sf3][0] ==
uint256{1});
478 BEAST_EXPECT(cst[sf3].size() == 0);