27 j[sfCloseResolution] = 255;
29 BEAST_EXPECT(obj.
object.has_value());
30 BEAST_EXPECT(obj.
object->isFieldPresent(sfCloseResolution));
31 BEAST_EXPECT(obj.
object->getFieldU8(sfCloseResolution) == 255);
37 j[sfCloseResolution] = 255u;
39 BEAST_EXPECT(obj.
object.has_value());
40 BEAST_EXPECT(obj.
object->isFieldPresent(sfCloseResolution));
41 BEAST_EXPECT(obj.
object->getFieldU8(sfCloseResolution) == 255);
47 j[sfCloseResolution] =
"255";
49 BEAST_EXPECT(obj.
object.has_value());
50 BEAST_EXPECT(obj.
object->isFieldPresent(sfCloseResolution));
51 BEAST_EXPECT(obj.
object->getFieldU8(sfCloseResolution) == 255);
57 j[sfCloseResolution] = 0;
59 BEAST_EXPECT(obj.
object.has_value());
60 BEAST_EXPECT(obj.
object->getFieldU8(sfCloseResolution) == 0);
66 j[sfCloseResolution] = -1;
68 BEAST_EXPECT(!obj.
object.has_value());
74 j[sfCloseResolution] = 256;
76 BEAST_EXPECT(!obj.
object.has_value());
84 BEAST_EXPECT(!obj.
object.has_value());
92 BEAST_EXPECT(!obj.
object.has_value());
103 j[sfLedgerEntryType] = 65535;
105 BEAST_EXPECT(obj.
object.has_value());
106 BEAST_EXPECT(obj.
object->isFieldPresent(sfLedgerEntryType));
107 BEAST_EXPECT(obj.
object->getFieldU16(sfLedgerEntryType) == 65535);
113 j[sfLedgerEntryType] = 65535u;
115 BEAST_EXPECT(obj.
object.has_value());
116 BEAST_EXPECT(obj.
object->isFieldPresent(sfLedgerEntryType));
117 BEAST_EXPECT(obj.
object->getFieldU16(sfLedgerEntryType) == 65535);
123 j[sfLedgerEntryType] =
"65535";
125 BEAST_EXPECT(obj.
object.has_value());
126 BEAST_EXPECT(obj.
object->isFieldPresent(sfLedgerEntryType));
127 BEAST_EXPECT(obj.
object->getFieldU16(sfLedgerEntryType) == 65535);
133 j[sfLedgerEntryType] = 0;
135 BEAST_EXPECT(obj.
object.has_value());
136 BEAST_EXPECT(obj.
object->getFieldU16(sfLedgerEntryType) == 0);
142 j[sfLedgerEntryType] = -1;
144 BEAST_EXPECT(!obj.
object.has_value());
150 j[sfLedgerEntryType] = 65536;
152 BEAST_EXPECT(!obj.
object.has_value());
158 j[sfLedgerEntryType] =
"65536";
160 BEAST_EXPECT(!obj.
object.has_value());
168 BEAST_EXPECT(!obj.
object.has_value());
176 BEAST_EXPECT(!obj.
object.has_value());
182 j[sfTransferFee] =
"Payment";
184 BEAST_EXPECT(!obj.
object.has_value());
335 j[sfEmailHash] =
"0123456789ABCDEF0123456789ABCDEF";
337 BEAST_EXPECT(obj.
object.has_value());
338 BEAST_EXPECT(obj.
object->isFieldPresent(sfEmailHash));
339 BEAST_EXPECT(obj.
object->getFieldH128(sfEmailHash).size() == 16);
364 j[sfEmailHash] =
"0123456789abcdef0123456789abcdef";
366 BEAST_EXPECT(obj.
object.has_value());
367 BEAST_EXPECT(obj.
object->isFieldPresent(sfEmailHash));
368 BEAST_EXPECT(obj.
object->getFieldH128(sfEmailHash).size() == 16);
376 BEAST_EXPECT(obj.
object.has_value());
377 BEAST_EXPECT(obj.
object->isFieldPresent(sfEmailHash));
378 auto const& h128 = obj.
object->getFieldH128(sfEmailHash);
379 BEAST_EXPECT(h128.size() == 16);
381 h128.begin(), h128.end(), [](
auto b) { return b == 0; });
382 BEAST_EXPECT(allZero);
388 j[sfEmailHash] =
"0123456789ABCDEF0123456789ABCDE";
390 BEAST_EXPECT(!obj.
object.has_value());
396 j[sfEmailHash] =
"nothexstring";
398 BEAST_EXPECT(!obj.
object.has_value());
404 j[sfEmailHash] =
"01234567";
406 BEAST_EXPECT(!obj.
object.has_value());
412 j[sfEmailHash] =
"0123456789ABCDEF0123456789ABCDEF00";
414 BEAST_EXPECT(!obj.
object.has_value());
422 BEAST_EXPECT(!obj.
object.has_value());
430 BEAST_EXPECT(!obj.
object.has_value());
440 j[sfTakerPaysCurrency] =
"0123456789ABCDEF0123456789ABCDEF01234567";
442 BEAST_EXPECT(obj.
object.has_value());
443 BEAST_EXPECT(obj.
object->isFieldPresent(sfTakerPaysCurrency));
445 obj.
object->getFieldH160(sfTakerPaysCurrency).size() == 20);
447 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF, 0x01, 0x23,
448 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF, 0x01, 0x23, 0x45, 0x67};
450 obj.
object->getFieldH160(sfTakerPaysCurrency) ==
456 j[sfTakerPaysCurrency] =
"0123456789abcdef0123456789abcdef01234567";
458 BEAST_EXPECT(obj.
object.has_value());
459 BEAST_EXPECT(obj.
object->isFieldPresent(sfTakerPaysCurrency));
461 obj.
object->getFieldH160(sfTakerPaysCurrency).size() == 20);
467 j[sfTakerPaysCurrency] =
"";
469 BEAST_EXPECT(obj.
object.has_value());
470 BEAST_EXPECT(obj.
object->isFieldPresent(sfTakerPaysCurrency));
471 auto const& h160 = obj.
object->getFieldH160(sfTakerPaysCurrency);
472 BEAST_EXPECT(h160.size() == 20);
474 h160.begin(), h160.end(), [](
auto b) { return b == 0; });
475 BEAST_EXPECT(allZero);
481 j[sfTakerPaysCurrency] =
"nothexstring";
483 BEAST_EXPECT(!obj.
object.has_value());
489 j[sfTakerPaysCurrency] =
"01234567";
491 BEAST_EXPECT(!obj.
object.has_value());
497 j[sfTakerPaysCurrency] =
498 "0123456789ABCDEF0123456789ABCDEF0123456789";
500 BEAST_EXPECT(!obj.
object.has_value());
508 BEAST_EXPECT(!obj.
object.has_value());
516 BEAST_EXPECT(!obj.
object.has_value());
526 j[sfMPTokenIssuanceID] =
527 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF";
529 BEAST_EXPECT(obj.
object.has_value());
530 BEAST_EXPECT(obj.
object->isFieldPresent(sfMPTokenIssuanceID));
532 obj.
object->getFieldH192(sfMPTokenIssuanceID).size() == 24);
534 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
535 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
536 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
538 obj.
object->getFieldH192(sfMPTokenIssuanceID) ==
545 j[sfMPTokenIssuanceID] =
546 "ffffffffffffffffffffffffffffffffffffffffffffffff";
548 BEAST_EXPECT(obj.
object.has_value());
549 BEAST_EXPECT(obj.
object->isFieldPresent(sfMPTokenIssuanceID));
551 obj.
object->getFieldH192(sfMPTokenIssuanceID).size() == 24);
557 j[sfMPTokenIssuanceID] =
"";
559 BEAST_EXPECT(obj.
object.has_value());
560 BEAST_EXPECT(obj.
object->isFieldPresent(sfMPTokenIssuanceID));
561 auto const& h192 = obj.
object->getFieldH192(sfMPTokenIssuanceID);
562 BEAST_EXPECT(h192.size() == 24);
564 h192.begin(), h192.end(), [](
auto b) { return b == 0; });
565 BEAST_EXPECT(allZero);
571 j[sfMPTokenIssuanceID] =
572 "0123456789ABCDEF0123456789ABCDEF0123456789ABCDE";
574 BEAST_EXPECT(!obj.
object.has_value());
580 j[sfMPTokenIssuanceID] =
"nothexstring";
582 BEAST_EXPECT(!obj.
object.has_value());
588 j[sfMPTokenIssuanceID] =
"01234567";
590 BEAST_EXPECT(!obj.
object.has_value());
596 j[sfMPTokenIssuanceID] =
597 "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF00";
599 BEAST_EXPECT(!obj.
object.has_value());
607 BEAST_EXPECT(!obj.
object.has_value());
615 BEAST_EXPECT(!obj.
object.has_value());
627 "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCD"
630 BEAST_EXPECT(obj.
object.has_value());
631 BEAST_EXPECT(obj.
object->isFieldPresent(sfLedgerHash));
632 BEAST_EXPECT(obj.
object->getFieldH256(sfLedgerHash).size() == 32);
634 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
635 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
636 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
637 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF};
639 obj.
object->getFieldH256(sfLedgerHash) ==
uint256{expected});
645 "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcd"
648 BEAST_EXPECT(obj.
object.has_value());
649 BEAST_EXPECT(obj.
object->isFieldPresent(sfLedgerHash));
650 BEAST_EXPECT(obj.
object->getFieldH256(sfLedgerHash).size() == 32);
656 j[sfLedgerHash] =
"";
658 BEAST_EXPECT(obj.
object.has_value());
659 BEAST_EXPECT(obj.
object->isFieldPresent(sfLedgerHash));
660 auto const& h256 = obj.
object->getFieldH256(sfLedgerHash);
661 BEAST_EXPECT(h256.size() == 32);
663 h256.begin(), h256.end(), [](
auto b) { return b == 0; });
664 BEAST_EXPECT(allZero);
671 "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCD"
674 BEAST_EXPECT(!obj.
object.has_value());
680 j[sfLedgerHash] =
"nothexstring";
682 BEAST_EXPECT(!obj.
object.has_value());
688 j[sfLedgerHash] =
"01234567";
690 BEAST_EXPECT(!obj.
object.has_value());
697 "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCD"
700 BEAST_EXPECT(!obj.
object.has_value());
708 BEAST_EXPECT(!obj.
object.has_value());
716 BEAST_EXPECT(!obj.
object.has_value());
726 int const minInt32 = -2147483648;
727 j[sfDummyInt32] = minInt32;
729 BEAST_EXPECT(obj.
object.has_value());
730 if (BEAST_EXPECT(obj.
object->isFieldPresent(sfDummyInt32)))
731 BEAST_EXPECT(obj.
object->getFieldI32(sfDummyInt32) == minInt32);
737 int const maxInt32 = 2147483647;
738 j[sfDummyInt32] = maxInt32;
740 BEAST_EXPECT(obj.
object.has_value());
741 if (BEAST_EXPECT(obj.
object->isFieldPresent(sfDummyInt32)))
742 BEAST_EXPECT(obj.
object->getFieldI32(sfDummyInt32) == maxInt32);
748 unsigned int const maxUInt32 = 2147483647u;
749 j[sfDummyInt32] = maxUInt32;
751 BEAST_EXPECT(obj.
object.has_value());
752 if (BEAST_EXPECT(obj.
object->isFieldPresent(sfDummyInt32)))
754 obj.
object->getFieldI32(sfDummyInt32) ==
755 static_cast<int32_t
>(maxUInt32));
761 j[sfDummyInt32] =
"2147483647";
763 BEAST_EXPECT(obj.
object.has_value());
764 if (BEAST_EXPECT(obj.
object->isFieldPresent(sfDummyInt32)))
766 obj.
object->getFieldI32(sfDummyInt32) == 2147483647u);
772 int value = -2147483648;
775 BEAST_EXPECT(obj.
object.has_value());
776 if (BEAST_EXPECT(obj.
object->isFieldPresent(sfDummyInt32)))
777 BEAST_EXPECT(obj.
object->getFieldI32(sfDummyInt32) == value);
783 j[sfDummyInt32] =
"-2147483649";
785 BEAST_EXPECT(!obj.
object.has_value());
791 j[sfDummyInt32] = 2147483648u;
793 BEAST_EXPECT(!obj.
object.has_value());
799 j[sfDummyInt32] =
"2147483648";
801 BEAST_EXPECT(!obj.
object.has_value());
809 BEAST_EXPECT(!obj.
object.has_value());
817 BEAST_EXPECT(!obj.
object.has_value());
828 j[sfPublicKey] =
"DEADBEEF";
830 BEAST_EXPECT(obj.
object.has_value());
831 BEAST_EXPECT(obj.
object->isFieldPresent(sfPublicKey));
832 auto const& blob = obj.
object->getFieldVL(sfPublicKey);
833 BEAST_EXPECT(blob.size() == 4);
834 BEAST_EXPECT(blob[0] == 0xDE);
835 BEAST_EXPECT(blob[1] == 0xAD);
836 BEAST_EXPECT(blob[2] == 0xBE);
837 BEAST_EXPECT(blob[3] == 0xEF);
845 BEAST_EXPECT(obj.
object.has_value());
846 BEAST_EXPECT(obj.
object->isFieldPresent(sfPublicKey));
847 auto const& blob = obj.
object->getFieldVL(sfPublicKey);
848 BEAST_EXPECT(blob.size() == 0);
854 j[sfPublicKey] =
"deadbeef";
856 BEAST_EXPECT(obj.
object.has_value());
857 BEAST_EXPECT(obj.
object->isFieldPresent(sfPublicKey));
858 auto const& blob = obj.
object->getFieldVL(sfPublicKey);
859 BEAST_EXPECT(blob.size() == 4);
860 BEAST_EXPECT(blob[0] == 0xDE);
861 BEAST_EXPECT(blob[1] == 0xAD);
862 BEAST_EXPECT(blob[2] == 0xBE);
863 BEAST_EXPECT(blob[3] == 0xEF);
869 j[sfPublicKey] =
"XYZ123";
871 BEAST_EXPECT(!obj.
object.has_value());
879 BEAST_EXPECT(!obj.
object.has_value());
887 BEAST_EXPECT(!obj.
object.has_value());
900 "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCD"
903 "FEDCBA9876543210FEDCBA9876543210FEDCBA9876543210FEDCBA98765432"
907 BEAST_EXPECT(obj.
object.has_value());
908 BEAST_EXPECT(obj.
object->isFieldPresent(sfHashes));
909 auto const& vec = obj.
object->getFieldV256(sfHashes);
910 BEAST_EXPECT(vec.size() == 2);
911 BEAST_EXPECT(
to_string(vec[0]) == arr[0u].asString());
912 BEAST_EXPECT(
to_string(vec[1]) == arr[1u].asString());
920 BEAST_EXPECT(obj.
object.has_value());
921 BEAST_EXPECT(obj.
object->isFieldPresent(sfHashes));
922 auto const& vec = obj.
object->getFieldV256(sfHashes);
923 BEAST_EXPECT(vec.size() == 0);
930 arr.
append(
"nothexstring");
933 BEAST_EXPECT(!obj.
object.has_value());
940 arr.
append(
"0123456789ABCDEF");
943 BEAST_EXPECT(!obj.
object.has_value());
953 BEAST_EXPECT(!obj.
object.has_value());
959 j[sfHashes] =
"notanarray";
961 BEAST_EXPECT(!obj.
object.has_value());
969 objElem[
"foo"] =
"bar";
973 BEAST_EXPECT(!obj.
object.has_value());
1069 j[sfBaseAsset] =
"USD";
1071 BEAST_EXPECT(obj.
object.has_value());
1072 BEAST_EXPECT(obj.
object->isFieldPresent(sfBaseAsset));
1073 auto const& curr = obj.
object->getFieldCurrency(sfBaseAsset);
1074 BEAST_EXPECT(curr.currency().size() == 20);
1080 j[sfBaseAsset] =
"EUR";
1082 BEAST_EXPECT(obj.
object.has_value());
1083 BEAST_EXPECT(obj.
object->isFieldPresent(sfBaseAsset));
1084 auto const& curr = obj.
object->getFieldCurrency(sfBaseAsset);
1085 BEAST_EXPECT(curr.currency().size() == 20);
1091 j[sfBaseAsset] =
"0123456789ABCDEF01230123456789ABCDEF0123";
1093 if (BEAST_EXPECT(obj.
object.has_value()))
1095 BEAST_EXPECT(obj.
object->isFieldPresent(sfBaseAsset));
1096 auto const& curr = obj.
object->getFieldCurrency(sfBaseAsset);
1097 BEAST_EXPECT(curr.currency().size() == 20);
1104 j[sfBaseAsset] =
"USDD";
1106 BEAST_EXPECT(!obj.
object.has_value());
1112 j[sfBaseAsset] =
"usd";
1114 BEAST_EXPECT(obj.
object.has_value());
1115 BEAST_EXPECT(obj.
object->isFieldPresent(sfBaseAsset));
1116 auto const& curr = obj.
object->getFieldCurrency(sfBaseAsset);
1117 BEAST_EXPECT(curr.currency().size() == 20);
1123 j[sfBaseAsset] =
"0123456789AB";
1125 BEAST_EXPECT(!obj.
object.has_value());
1131 j[sfBaseAsset] =
"0123456789ABCDEF0123456789";
1133 BEAST_EXPECT(!obj.
object.has_value());
1139 j[sfBaseAsset] =
"";
1141 BEAST_EXPECT(obj.
object.has_value());
1142 BEAST_EXPECT(obj.
object->isFieldPresent(sfBaseAsset));
1143 auto const& curr = obj.
object->getFieldCurrency(sfBaseAsset);
1144 BEAST_EXPECT(curr.currency().size() == 20);
1152 BEAST_EXPECT(!obj.
object.has_value());
1160 BEAST_EXPECT(!obj.
object.has_value());
1233 elem[
"account"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1234 elem[
"currency"] =
"USD";
1235 elem[
"issuer"] =
"rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe";
1239 j[sfPaths] = pathset;
1241 if (BEAST_EXPECT(obj.
object.has_value()))
1243 BEAST_EXPECT(obj.
object->isFieldPresent(sfPaths));
1244 auto const& ps = obj.
object->getFieldPathSet(sfPaths);
1245 BEAST_EXPECT(!ps.empty());
1246 BEAST_EXPECT(ps.size() == 1);
1247 BEAST_EXPECT(ps[0].size() == 1);
1249 ps[0][0].getAccountID() ==
1250 parseBase58<AccountID>(
1251 "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh"));
1252 BEAST_EXPECT(
to_string(ps[0][0].getCurrency()) ==
"USD");
1254 ps[0][0].getIssuerID() ==
1255 parseBase58<AccountID>(
1256 "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"));
1265 elem[
"account"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1266 elem[
"currency"] =
"0123456789ABCDEF01230123456789ABCDEF0123";
1267 elem[
"issuer"] =
"rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe";
1271 j[sfPaths] = pathset;
1273 BEAST_EXPECT(obj.
object.has_value());
1274 BEAST_EXPECT(obj.
object->isFieldPresent(sfPaths));
1275 auto const& ps = obj.
object->getFieldPathSet(sfPaths);
1276 BEAST_EXPECT(!ps.empty());
1282 j[sfPaths] =
"notanarray";
1284 BEAST_EXPECT(!obj.
object.has_value());
1291 pathset.
append(
"notanarray");
1292 j[sfPaths] = pathset;
1294 BEAST_EXPECT(!obj.
object.has_value());
1302 path.append(
"notanobject");
1305 j[sfPaths] = pathset;
1307 BEAST_EXPECT(!obj.
object.has_value());
1316 elem[
"foo"] =
"bar";
1320 j[sfPaths] = pathset;
1322 BEAST_EXPECT(!obj.
object.has_value());
1331 elem[
"account"] =
"notAValidBase58Account";
1335 j[sfPaths] = pathset;
1337 BEAST_EXPECT(!obj.
object.has_value());
1345 elem[
"account"] = 12345;
1349 j[sfPaths] = pathset;
1351 BEAST_EXPECT(!obj.
object.has_value());
1359 elem[
"currency"] = 12345;
1363 j[sfPaths] = pathset;
1365 BEAST_EXPECT(!obj.
object.has_value());
1373 elem[
"currency"] =
"notAValidCurrency";
1377 j[sfPaths] = pathset;
1379 BEAST_EXPECT(!obj.
object.has_value());
1387 elem[
"issuer"] = 12345;
1391 j[sfPaths] = pathset;
1393 BEAST_EXPECT(!obj.
object.has_value());
1401 elem[
"issuer"] =
"notAValidBase58Account";
1405 j[sfPaths] = pathset;
1407 BEAST_EXPECT(!obj.
object.has_value());
1419 issueJson[
"currency"] =
"USD";
1420 issueJson[
"issuer"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1421 j[sfAsset] = issueJson;
1423 if (BEAST_EXPECT(obj.
object.has_value()))
1425 BEAST_EXPECT(obj.
object->isFieldPresent(sfAsset));
1426 auto const& issueField = (*obj.
object)[sfAsset];
1427 auto const issue = issueField.value().get<
Issue>();
1428 BEAST_EXPECT(issue.currency.size() == 20);
1429 BEAST_EXPECT(
to_string(issue.currency) ==
"USD");
1430 BEAST_EXPECT(issue.account.size() == 20);
1433 parseBase58<AccountID>(
1434 "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh"));
1442 issueJson[
"currency"] =
"0123456789ABCDEF01230123456789ABCDEF0123";
1443 issueJson[
"issuer"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1444 j[sfAsset] = issueJson;
1446 if (BEAST_EXPECT(obj.
object.has_value()))
1448 BEAST_EXPECT(obj.
object->isFieldPresent(sfAsset));
1449 auto const& issueField = (*obj.
object)[sfAsset];
1450 auto const issue = issueField.value().get<
Issue>();
1451 BEAST_EXPECT(issue.currency.size() == 20);
1452 BEAST_EXPECT(issue.account.size() == 20);
1460 issueJson[
"mpt_issuance_id"] =
1461 "0000000000000000000000004D5054494431323334234234";
1462 j[sfAsset] = issueJson;
1464 if (BEAST_EXPECT(obj.
object.has_value()))
1466 BEAST_EXPECT(obj.
object->isFieldPresent(sfAsset));
1467 auto const& issueField = (*obj.
object)[sfAsset];
1468 auto const issue = issueField.value().get<
MPTIssue>();
1469 BEAST_EXPECT(issue.getMptID().size() == 24);
1477 issue[
"issuer"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1480 BEAST_EXPECT(!obj.
object.has_value());
1487 issue[
"currency"] =
"USD";
1490 BEAST_EXPECT(!obj.
object.has_value());
1497 issue[
"currency"] =
"USDD";
1498 issue[
"issuer"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1501 BEAST_EXPECT(!obj.
object.has_value());
1508 issue[
"currency"] =
"USD";
1509 issue[
"issuer"] =
"notAValidIssuer";
1512 BEAST_EXPECT(!obj.
object.has_value());
1520 issue[
"issuer"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1523 BEAST_EXPECT(!obj.
object.has_value());
1530 issue[
"currency"] =
"USD";
1534 BEAST_EXPECT(!obj.
object.has_value());
1540 j[sfAsset] =
"notanobject";
1542 BEAST_EXPECT(!obj.
object.has_value());
1555 issuingChainIssue[
"currency"] =
"USD";
1556 issuingChainIssue[
"issuer"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1558 lockingChainIssue[
"currency"] =
"EUR";
1559 lockingChainIssue[
"issuer"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1560 bridge[
"LockingChainIssue"] = lockingChainIssue;
1561 bridge[
"IssuingChainIssue"] = issuingChainIssue;
1562 bridge[
"LockingChainDoor"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1563 bridge[
"IssuingChainDoor"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1564 j[sfXChainBridge] = bridge;
1566 if (BEAST_EXPECT(obj.
object.has_value()))
1568 BEAST_EXPECT(obj.
object->isFieldPresent(sfXChainBridge));
1569 auto const& bridgeField = (*obj.
object)[sfXChainBridge];
1571 bridgeField->lockingChainIssue().currency.size() == 20);
1573 bridgeField->issuingChainIssue().currency.size() == 20);
1582 issuingChainIssue[
"currency"] =
1583 "0123456789ABCDEF01230123456789ABCDEF0123";
1584 issuingChainIssue[
"issuer"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1586 lockingChainIssue[
"currency"] =
1587 "0123456789ABCDEF01230123456789ABCDEF0123";
1588 lockingChainIssue[
"issuer"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1589 bridge[
"LockingChainIssue"] = lockingChainIssue;
1590 bridge[
"IssuingChainIssue"] = issuingChainIssue;
1591 bridge[
"LockingChainDoor"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1592 bridge[
"IssuingChainDoor"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1593 j[sfXChainBridge] = bridge;
1595 if (BEAST_EXPECT(obj.
object.has_value()))
1597 BEAST_EXPECT(obj.
object->isFieldPresent(sfXChainBridge));
1598 auto const& bridgeField = (*obj.
object)[sfXChainBridge];
1600 bridgeField->lockingChainIssue().currency.size() == 20);
1602 bridgeField->issuingChainIssue().currency.size() == 20);
1611 issuingChainIssue[
"currency"] =
"USD";
1612 issuingChainIssue[
"issuer"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1613 bridge[
"IssuingChainIssue"] = issuingChainIssue;
1614 bridge[
"LockingChainDoor"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1615 bridge[
"IssuingChainDoor"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1616 j[sfXChainBridge] = bridge;
1618 BEAST_EXPECT(!obj.
object.has_value());
1626 lockingChainIssue[
"currency"] =
"EUR";
1627 lockingChainIssue[
"issuer"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1628 bridge[
"LockingChainIssue"] = lockingChainIssue;
1629 bridge[
"LockingChainDoor"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1630 bridge[
"IssuingChainDoor"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1631 j[sfXChainBridge] = bridge;
1633 BEAST_EXPECT(!obj.
object.has_value());
1641 issuingChainIssue[
"currency"] =
"USD";
1642 issuingChainIssue[
"issuer"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1643 bridge[
"IssuingChainIssue"] = issuingChainIssue;
1645 lockingChainIssue[
"currency"] =
"EUR";
1646 lockingChainIssue[
"issuer"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1647 bridge[
"LockingChainIssue"] = lockingChainIssue;
1648 bridge[
"IssuingChainDoor"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1649 j[sfXChainBridge] = bridge;
1651 BEAST_EXPECT(!obj.
object.has_value());
1659 issuingChainIssue[
"currency"] =
"USD";
1660 issuingChainIssue[
"issuer"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1661 bridge[
"IssuingChainIssue"] = issuingChainIssue;
1663 lockingChainIssue[
"currency"] =
"EUR";
1664 lockingChainIssue[
"issuer"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1665 bridge[
"LockingChainIssue"] = lockingChainIssue;
1666 bridge[
"LockingChainDoor"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1667 j[sfXChainBridge] = bridge;
1669 BEAST_EXPECT(!obj.
object.has_value());
1676 bridge[
"LockingChainIssue"] =
"notanobject";
1677 bridge[
"IssuingChainIssue"] =
"notanobject";
1678 j[sfXChainBridge] = bridge;
1680 BEAST_EXPECT(!obj.
object.has_value());
1688 asset[
"issuer"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1690 lockingChainIssue[
"currency"] =
"EUR";
1691 lockingChainIssue[
"issuer"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1692 bridge[
"LockingChainIssue"] = lockingChainIssue;
1693 bridge[
"IssuingChainIssue"] = asset;
1694 j[sfXChainBridge] = bridge;
1696 BEAST_EXPECT(!obj.
object.has_value());
1704 asset[
"currency"] =
"USD";
1706 lockingChainIssue[
"currency"] =
"EUR";
1707 lockingChainIssue[
"issuer"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1708 bridge[
"LockingChainIssue"] = lockingChainIssue;
1709 bridge[
"IssuingChainIssue"] = asset;
1710 j[sfXChainBridge] = bridge;
1712 BEAST_EXPECT(!obj.
object.has_value());
1720 asset[
"currency"] =
"USD";
1721 asset[
"issuer"] =
"notAValidBase58Account";
1723 lockingChainIssue[
"currency"] =
"EUR";
1724 lockingChainIssue[
"issuer"] =
"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh";
1725 bridge[
"LockingChainIssue"] = lockingChainIssue;
1726 bridge[
"IssuingChainIssue"] = asset;
1727 j[sfXChainBridge] = bridge;
1729 BEAST_EXPECT(!obj.
object.has_value());
1735 j[sfXChainBridge] =
"notanobject";
1737 BEAST_EXPECT(!obj.
object.has_value());
1748 j[sfNumber] = 12345;
1750 BEAST_EXPECT(obj.
object.has_value());
1751 BEAST_EXPECT(obj.
object->isFieldPresent(sfNumber));
1753 obj.
object->getFieldNumber(sfNumber).value() ==
1760 j[sfNumber] = 12345u;
1762 BEAST_EXPECT(obj.
object.has_value());
1763 BEAST_EXPECT(obj.
object->isFieldPresent(sfNumber));
1765 obj.
object->getFieldNumber(sfNumber).value() ==
1772 j[sfNumber] =
"67890";
1774 BEAST_EXPECT(obj.
object.has_value());
1775 BEAST_EXPECT(obj.
object->isFieldPresent(sfNumber));
1777 obj.
object->getFieldNumber(sfNumber).value() ==
1786 BEAST_EXPECT(obj.
object.has_value());
1787 BEAST_EXPECT(obj.
object->isFieldPresent(sfNumber));
1789 obj.
object->getFieldNumber(sfNumber).value() ==
Number(-42, 0));
1795 j[sfNumber] =
"-123";
1797 BEAST_EXPECT(obj.
object.has_value());
1798 BEAST_EXPECT(obj.
object->isFieldPresent(sfNumber));
1800 obj.
object->getFieldNumber(sfNumber).value() ==
1807 j[sfNumber] =
"3.14159";
1809 if (BEAST_EXPECT(obj.
object.has_value()))
1811 BEAST_EXPECT(obj.
object->isFieldPresent(sfNumber));
1813 obj.
object->getFieldNumber(sfNumber).value() ==
1821 j[sfNumber] =
"notanumber";
1823 BEAST_EXPECT(!obj.
object.has_value());
1831 BEAST_EXPECT(!obj.
object.has_value());
1839 BEAST_EXPECT(!obj.
object.has_value());
1847 BEAST_EXPECT(!obj.
object.has_value());
1859 objVal[sfTransactionResult] = 1;
1860 j[sfTransactionMetaData] = objVal;
1862 BEAST_EXPECT(obj.
object.has_value());
1863 BEAST_EXPECT(obj.
object->isFieldPresent(sfTransactionMetaData));
1864 auto const& result =
1865 obj.
object->peekFieldObject(sfTransactionMetaData);
1866 BEAST_EXPECT(result.getFieldU8(sfTransactionResult) == 1);
1872 j[sfTransactionMetaData] =
"notanobject";
1874 BEAST_EXPECT(!obj.
object.has_value());
1882 j[sfTransactionMetaData] = arr;
1884 BEAST_EXPECT(!obj.
object.has_value());
1892 BEAST_EXPECT(!obj.
object.has_value());
1901 for (
int i = 0; i < 63; ++i)
1904 (*current)[sfTransactionMetaData] = next;
1905 current = &((*current)[sfTransactionMetaData]);
1907 (*current)[sfTransactionResult.getJsonName()] = 1;
1908 j[sfTransactionMetaData] = obj;
1910 BEAST_EXPECT(parsed.
object.has_value());
1911 BEAST_EXPECT(parsed.
object->isFieldPresent(sfTransactionMetaData));
1919 for (
int i = 0; i < 64; ++i)
1922 (*current)[sfTransactionMetaData] = next;
1923 current = &((*current)[sfTransactionMetaData]);
1925 (*current)[sfTransactionResult.getJsonName()] = 1;
1926 j[sfTransactionMetaData] = obj;
1928 BEAST_EXPECT(!parsed.
object.has_value());
1941 elem[sfTransactionResult] = 2;
1943 elem2[sfTransactionMetaData] = elem;
1945 j[sfSignerEntries] = arr;
1947 BEAST_EXPECT(obj.
object.has_value());
1948 BEAST_EXPECT(obj.
object->isFieldPresent(sfSignerEntries));
1949 auto const& result = obj.
object->getFieldArray(sfSignerEntries);
1950 if (BEAST_EXPECT(result.size() == 1))
1952 BEAST_EXPECT(result[0].getFName() == sfTransactionMetaData);
1953 BEAST_EXPECT(result[0].
getJson(0) == elem);
1961 arr.
append(
"notanobject");
1962 j[sfSignerEntries] = arr;
1964 BEAST_EXPECT(!obj.
object.has_value());
1972 elem[
"invalidField"] = 1;
1974 j[sfSignerEntries] = arr;
1976 BEAST_EXPECT(!obj.
object.has_value());
1984 elem[sfTransactionResult] = 2;
1985 elem[sfNetworkID] = 3;
1987 j[sfSignerEntries] = arr;
1989 BEAST_EXPECT(!obj.
object.has_value());
1995 j[sfSignerEntries] =
"notanarray";
1997 BEAST_EXPECT(!obj.
object.has_value());
2006 elem[sfTransactionResult] =
"notanint";
2008 j[sfSignerEntries] = arr;
2010 BEAST_EXPECT(!obj.
object.has_value());
2017 j[sfSignerEntries] = arr;
2019 BEAST_EXPECT(obj.
object.has_value());
2020 BEAST_EXPECT(obj.
object->isFieldPresent(sfSignerEntries));
2028 obj[0u][sfTransactionResult] = 1;
2029 j[sfSignerEntries] = obj;
2031 BEAST_EXPECT(!parsed.
object.has_value());
2052 "\"ModifiedNode\":{\"Sequence\":1}, "
2053 "\"DeletedNode\":{\"Sequence\":1}"
2061 BEAST_EXPECT(!parsed.
object);
2067 what.
find(
"First level children of `Template`") != 0);