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);