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);
86 fail(
"STObject error 4");
107 unexpected(copy.isFieldPresent(sfTestH256),
"STObject error 9");
111 "STObject error 10");
113 copy.setFieldU32(sfTestU32, 1);
117 "STObject error 11");
119 for (
int i = 0; i < 1000; i++)
129 STObject object3(elements, it, sfTestObject);
139 for (
int i = 0; i < uints.
capacity(); ++i)
149 STObject object3(elements, it, sfTestObject);
154 BEAST_EXPECT(uints1 == uints3);
164 auto const& sf1Outer = sfSequence;
165 auto const& sf2Outer = sfExpiration;
166 auto const& sf3Outer = sfQualityIn;
167 auto const& sf4Outer = sfAmount;
168 auto const& sf4 = sfSignature;
169 auto const& sf5 = sfPublicKey;
174 auto const st = [&]() {
181 BEAST_EXPECT(st[sf1Outer] == 1);
182 BEAST_EXPECT(st[sf2Outer] == 2);
183 except<STObject::FieldErr>([&]() { st[sf3Outer]; });
184 BEAST_EXPECT(*st[~sf1Outer] == 1);
185 BEAST_EXPECT(*st[~sf2Outer] == 2);
187 BEAST_EXPECT(!!st[~sf1Outer]);
188 BEAST_EXPECT(!!st[~sf2Outer]);
189 BEAST_EXPECT(!st[~sf3Outer]);
190 BEAST_EXPECT(st[sf1Outer] != st[sf2Outer]);
191 BEAST_EXPECT(st[~sf1Outer] != st[~sf2Outer]);
205 auto const st = [&]() {
212 BEAST_EXPECT(st[sf1Outer] == 1);
213 BEAST_EXPECT(st[sf2Outer] == 2);
214 BEAST_EXPECT(st[sf3Outer] == 0);
215 BEAST_EXPECT(*st[~sf1Outer] == 1);
216 BEAST_EXPECT(*st[~sf2Outer] == 2);
217 BEAST_EXPECT(*st[~sf3Outer] == 0);
218 BEAST_EXPECT(!!st[~sf1Outer]);
219 BEAST_EXPECT(!!st[~sf2Outer]);
220 BEAST_EXPECT(!!st[~sf3Outer]);
228 except([&]() {
return st[sf1Outer] == 0; });
232 BEAST_EXPECT(!st[~sf1Outer]);
234 BEAST_EXPECT(st[sf1Outer] == 2);
237 BEAST_EXPECT(!!st[~sf1Outer]);
239 BEAST_EXPECT(st[sf1Outer] == 1);
240 BEAST_EXPECT(!!st[sf1Outer]);
241 BEAST_EXPECT(!!st[~sf1Outer]);
243 BEAST_EXPECT(!st[sf1Outer]);
244 BEAST_EXPECT(!!st[~sf1Outer]);
246 BEAST_EXPECT(!st[~sf1Outer]);
250 BEAST_EXPECT(!st[~sf1Outer]);
251 except([&]() {
return st[sf1Outer] == 0; });
252 except([&]() {
return *st[~sf1Outer]; });
254 BEAST_EXPECT(st[sf1Outer] == 1);
255 BEAST_EXPECT(!!st[sf1Outer]);
256 BEAST_EXPECT(!!st[~sf1Outer]);
258 st[sf2Outer] = st[sf1Outer];
259 BEAST_EXPECT(st[sf1Outer] == 3);
260 BEAST_EXPECT(st[sf2Outer] == 3);
261 BEAST_EXPECT(st[sf2Outer] == st[sf1Outer]);
263 st[sf2Outer] = st[sf1Outer];
264 BEAST_EXPECT(st[sf1Outer] == 4);
265 BEAST_EXPECT(st[sf2Outer] == 4);
266 BEAST_EXPECT(st[sf2Outer] == st[sf1Outer]);
268 BEAST_EXPECT(st[sf1Outer] == 5);
270 BEAST_EXPECT(st[sf4Outer] ==
STAmount{1});
272 BEAST_EXPECT(st[sf4Outer] ==
STAmount{2});
274 BEAST_EXPECT(st[sf1Outer] == 4);
276 BEAST_EXPECT(st[sf4Outer] ==
STAmount{1});
283 BEAST_EXPECT(!!st[~sf1Outer]);
285 BEAST_EXPECT(st[sf1Outer] == 0);
286 BEAST_EXPECT(*st[~sf1Outer] == 0);
287 BEAST_EXPECT(!st[~sf2Outer]);
289 except([&]() {
return st[sf2Outer] == 0; });
290 BEAST_EXPECT(!!st[~sf3Outer]);
292 BEAST_EXPECT(st[sf3Outer] == 0);
295 BEAST_EXPECT(st[sf1Outer] == 1);
296 BEAST_EXPECT(*st[~sf1Outer] == 1);
297 BEAST_EXPECT(!!st[~sf1Outer]);
299 BEAST_EXPECT(st[sf1Outer] == 0);
300 BEAST_EXPECT(*st[~sf1Outer] == 0);
301 BEAST_EXPECT(!!st[~sf1Outer]);
303 BEAST_EXPECT(st[sf2Outer] == 2);
304 BEAST_EXPECT(*st[~sf2Outer] == 2);
305 BEAST_EXPECT(!!st[~sf2Outer]);
307 except([&]() {
return *st[~sf2Outer]; });
308 BEAST_EXPECT(!st[~sf2Outer]);
310 BEAST_EXPECT(st[sf3Outer] == 3);
311 BEAST_EXPECT(*st[~sf3Outer] == 3);
312 BEAST_EXPECT(!!st[~sf3Outer]);
314 BEAST_EXPECT(st[sf3Outer] == 2);
315 BEAST_EXPECT(*st[~sf3Outer] == 2);
316 BEAST_EXPECT(!!st[~sf3Outer]);
318 BEAST_EXPECT(st[sf3Outer] == 0);
319 BEAST_EXPECT(*st[~sf3Outer] == 0);
320 BEAST_EXPECT(!!st[~sf3Outer]);
322 BEAST_EXPECT(st[sf3Outer] == 0);
323 BEAST_EXPECT(*st[~sf3Outer] == 0);
324 BEAST_EXPECT(!!st[~sf3Outer]);
326 BEAST_EXPECT(st[sf1Outer] == 1);
328 BEAST_EXPECT(st[sf4Outer] ==
STAmount{1});
330 BEAST_EXPECT(st[sf4Outer] ==
STAmount{2});
332 BEAST_EXPECT(st[sf1Outer] == 0);
334 BEAST_EXPECT(st[sf4Outer] ==
STAmount{1});
341 auto const v = ~st[~sf1Outer];
367 BEAST_EXPECT(!b.
empty());
368 st[sf4] = std::move(b);
369 BEAST_EXPECT(b.
empty());
370 BEAST_EXPECT(
Slice(st[sf4]).size() == 1);
372 BEAST_EXPECT(!~st[~sf4]);
375 BEAST_EXPECT(b.
size() == 2);
376 BEAST_EXPECT(
Slice(st[sf4]).size() == 2);
378 BEAST_EXPECT(
Slice(st[sf4]).size() == 2);
379 BEAST_EXPECT(
Slice(st[sf5]).size() == 2);
383 BEAST_EXPECT(st[sf5] ==
Slice{});
384 BEAST_EXPECT(!!st[~sf5]);
385 BEAST_EXPECT(!!~st[~sf5]);
387 st[sf5] = std::move(b);
388 BEAST_EXPECT(b.
empty());
389 BEAST_EXPECT(
Slice(st[sf5]).size() == 1);
391 BEAST_EXPECT(!~st[~sf4]);
399 BEAST_EXPECT(!st[~sf5]);
409 auto const& sf = sfIndexes;
415 st[sf] = std::move(v);
416 auto const& cst = st;
417 BEAST_EXPECT(cst[sf].size() == 2);
418 BEAST_EXPECT(cst[~sf]->size() == 2);
419 BEAST_EXPECT(cst[sf][0] == 1);
420 BEAST_EXPECT(cst[sf][1] == 2);
423 decltype(cst[sfIndexes]),
431 auto const& sf1 = sfIndexes;
432 auto const& sf2 = sfHashes;
433 auto const& sf3 = sfAmendments;
442 BEAST_EXPECT(cst[sf1].size() == 0);
443 BEAST_EXPECT(!cst[~sf2]);
444 BEAST_EXPECT(cst[sf3].size() == 0);
448 BEAST_EXPECT(cst[sf1].size() == 1);
449 BEAST_EXPECT(cst[sf1][0] ==
uint256{1});
451 BEAST_EXPECT(cst[sf2].size() == 1);
452 BEAST_EXPECT(cst[sf2][0] ==
uint256{1});
454 BEAST_EXPECT(!st[~sf2]);
456 BEAST_EXPECT(cst[sf3].size() == 1);
457 BEAST_EXPECT(cst[sf3][0] ==
uint256{1});
459 BEAST_EXPECT(cst[sf3].size() == 0);