24 BEAST_EXPECT(shouldBeInvalid ==
sfInvalid);
26 testInvalid(STI_VL, 255);
27 testInvalid(STI_UINT256, 255);
28 testInvalid(STI_UINT32, 255);
29 testInvalid(STI_VECTOR256, 255);
30 testInvalid(STI_OBJECT, 255);
38 except<std::runtime_error>([&]() {
47 SField const& sfTestVL = sfMasterSignature;
48 SField const& sfTestH256 = sfCheckID;
49 SField const& sfTestU32 = sfSettleDelay;
50 SField const& sfTestV256 = sfAmendments;
51 SField const& sfTestObject = sfMajority;
61 STObject object1(elements, sfTestObject);
78 fail(
"STObject error 4");
97 unexpected(copy.isFieldPresent(sfTestH256),
"STObject error 9");
101 copy.setFieldU32(sfTestU32, 1);
105 for (
int i = 0; i < 1000; i++)
115 STObject object3(elements, it, sfTestObject);
125 for (
int i = 0; i < uints.
capacity(); ++i)
135 STObject object3(elements, it, sfTestObject);
140 BEAST_EXPECT(uints1 == uints3);
150 auto const& sf1Outer = sfSequence;
151 auto const& sf2Outer = sfExpiration;
152 auto const& sf3Outer = sfQualityIn;
153 auto const& sf4Outer = sfAmount;
154 auto const& sf4 = sfSignature;
155 auto const& sf5 = sfPublicKey;
160 auto const st = [&]() {
167 BEAST_EXPECT(st[sf1Outer] == 1);
168 BEAST_EXPECT(st[sf2Outer] == 2);
169 except<STObject::FieldErr>([&]() { st[sf3Outer]; });
170 BEAST_EXPECT(*st[~sf1Outer] == 1);
171 BEAST_EXPECT(*st[~sf2Outer] == 2);
173 BEAST_EXPECT(!!st[~sf1Outer]);
174 BEAST_EXPECT(!!st[~sf2Outer]);
175 BEAST_EXPECT(!st[~sf3Outer]);
176 BEAST_EXPECT(st[sf1Outer] != st[sf2Outer]);
177 BEAST_EXPECT(st[~sf1Outer] != st[~sf2Outer]);
191 auto const st = [&]() {
198 BEAST_EXPECT(st[sf1Outer] == 1);
199 BEAST_EXPECT(st[sf2Outer] == 2);
200 BEAST_EXPECT(st[sf3Outer] == 0);
201 BEAST_EXPECT(*st[~sf1Outer] == 1);
202 BEAST_EXPECT(*st[~sf2Outer] == 2);
203 BEAST_EXPECT(*st[~sf3Outer] == 0);
204 BEAST_EXPECT(!!st[~sf1Outer]);
205 BEAST_EXPECT(!!st[~sf2Outer]);
206 BEAST_EXPECT(!!st[~sf3Outer]);
214 except([&]() {
return st[sf1Outer] == 0; });
218 BEAST_EXPECT(!st[~sf1Outer]);
220 BEAST_EXPECT(st[sf1Outer] == 2);
223 BEAST_EXPECT(!!st[~sf1Outer]);
225 BEAST_EXPECT(st[sf1Outer] == 1);
226 BEAST_EXPECT(!!st[sf1Outer]);
227 BEAST_EXPECT(!!st[~sf1Outer]);
229 BEAST_EXPECT(!st[sf1Outer]);
230 BEAST_EXPECT(!!st[~sf1Outer]);
232 BEAST_EXPECT(!st[~sf1Outer]);
236 BEAST_EXPECT(!st[~sf1Outer]);
237 except([&]() {
return st[sf1Outer] == 0; });
238 except([&]() {
return *st[~sf1Outer]; });
240 BEAST_EXPECT(st[sf1Outer] == 1);
241 BEAST_EXPECT(!!st[sf1Outer]);
242 BEAST_EXPECT(!!st[~sf1Outer]);
244 st[sf2Outer] = st[sf1Outer];
245 BEAST_EXPECT(st[sf1Outer] == 3);
246 BEAST_EXPECT(st[sf2Outer] == 3);
247 BEAST_EXPECT(st[sf2Outer] == st[sf1Outer]);
249 st[sf2Outer] = st[sf1Outer];
250 BEAST_EXPECT(st[sf1Outer] == 4);
251 BEAST_EXPECT(st[sf2Outer] == 4);
252 BEAST_EXPECT(st[sf2Outer] == st[sf1Outer]);
254 BEAST_EXPECT(st[sf1Outer] == 5);
256 BEAST_EXPECT(st[sf4Outer] ==
STAmount{1});
258 BEAST_EXPECT(st[sf4Outer] ==
STAmount{2});
260 BEAST_EXPECT(st[sf1Outer] == 4);
262 BEAST_EXPECT(st[sf4Outer] ==
STAmount{1});
269 BEAST_EXPECT(!!st[~sf1Outer]);
271 BEAST_EXPECT(st[sf1Outer] == 0);
272 BEAST_EXPECT(*st[~sf1Outer] == 0);
273 BEAST_EXPECT(!st[~sf2Outer]);
275 except([&]() {
return st[sf2Outer] == 0; });
276 BEAST_EXPECT(!!st[~sf3Outer]);
278 BEAST_EXPECT(st[sf3Outer] == 0);
281 BEAST_EXPECT(st[sf1Outer] == 1);
282 BEAST_EXPECT(*st[~sf1Outer] == 1);
283 BEAST_EXPECT(!!st[~sf1Outer]);
285 BEAST_EXPECT(st[sf1Outer] == 0);
286 BEAST_EXPECT(*st[~sf1Outer] == 0);
287 BEAST_EXPECT(!!st[~sf1Outer]);
289 BEAST_EXPECT(st[sf2Outer] == 2);
290 BEAST_EXPECT(*st[~sf2Outer] == 2);
291 BEAST_EXPECT(!!st[~sf2Outer]);
293 except([&]() {
return *st[~sf2Outer]; });
294 BEAST_EXPECT(!st[~sf2Outer]);
296 BEAST_EXPECT(st[sf3Outer] == 3);
297 BEAST_EXPECT(*st[~sf3Outer] == 3);
298 BEAST_EXPECT(!!st[~sf3Outer]);
300 BEAST_EXPECT(st[sf3Outer] == 2);
301 BEAST_EXPECT(*st[~sf3Outer] == 2);
302 BEAST_EXPECT(!!st[~sf3Outer]);
304 BEAST_EXPECT(st[sf3Outer] == 0);
305 BEAST_EXPECT(*st[~sf3Outer] == 0);
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[sf1Outer] == 1);
314 BEAST_EXPECT(st[sf4Outer] ==
STAmount{1});
316 BEAST_EXPECT(st[sf4Outer] ==
STAmount{2});
318 BEAST_EXPECT(st[sf1Outer] == 0);
320 BEAST_EXPECT(st[sf4Outer] ==
STAmount{1});
327 auto const v = ~st[~sf1Outer];
349 BEAST_EXPECT(!b.
empty());
350 st[sf4] = std::move(b);
351 BEAST_EXPECT(b.
empty());
352 BEAST_EXPECT(
Slice(st[sf4]).size() == 1);
354 BEAST_EXPECT(!~st[~sf4]);
357 BEAST_EXPECT(b.
size() == 2);
358 BEAST_EXPECT(
Slice(st[sf4]).size() == 2);
360 BEAST_EXPECT(
Slice(st[sf4]).size() == 2);
361 BEAST_EXPECT(
Slice(st[sf5]).size() == 2);
365 BEAST_EXPECT(st[sf5] ==
Slice{});
366 BEAST_EXPECT(!!st[~sf5]);
367 BEAST_EXPECT(!!~st[~sf5]);
369 st[sf5] = std::move(b);
370 BEAST_EXPECT(b.
empty());
371 BEAST_EXPECT(
Slice(st[sf5]).size() == 1);
373 BEAST_EXPECT(!~st[~sf4]);
381 BEAST_EXPECT(!st[~sf5]);
390 auto const& sf = sfIndexes;
396 st[sf] = std::move(v);
397 auto const& cst = st;
398 BEAST_EXPECT(cst[sf].size() == 2);
399 BEAST_EXPECT(cst[~sf]->size() == 2);
400 BEAST_EXPECT(cst[sf][0] == 1);
401 BEAST_EXPECT(cst[sf][1] == 2);
408 auto const& sf1 = sfIndexes;
409 auto const& sf2 = sfHashes;
410 auto const& sf3 = sfAmendments;
419 BEAST_EXPECT(cst[sf1].size() == 0);
420 BEAST_EXPECT(!cst[~sf2]);
421 BEAST_EXPECT(cst[sf3].size() == 0);
425 BEAST_EXPECT(cst[sf1].size() == 1);
426 BEAST_EXPECT(cst[sf1][0] ==
uint256{1});
428 BEAST_EXPECT(cst[sf2].size() == 1);
429 BEAST_EXPECT(cst[sf2][0] ==
uint256{1});
431 BEAST_EXPECT(!st[~sf2]);
433 BEAST_EXPECT(cst[sf3].size() == 1);
434 BEAST_EXPECT(cst[sf3][0] ==
uint256{1});
436 BEAST_EXPECT(cst[sf3].size() == 0);