15        using namespace test::jtx;
 
   16        Account alice{
"alice"};
 
   19        env.fund(XRP(10000), alice);
 
   24        auto makeJtxWithMemo = [&env, &alice]() {
 
   25            JTx example = 
noop(alice);
 
   26            memo 
const exampleMemo{
"tic", 
"tac", 
"toe"};
 
   27            exampleMemo(env, example);
 
   32        env(makeJtxWithMemo());
 
   37            JTx memoSize = makeJtxWithMemo();
 
   38            memoSize.jv[sfMemos.jsonName][0u][sfMemo.jsonName]
 
   41                rpc(
"invalidTransaction",
 
   42                    "fails local checks: The memo exceeds the maximum allowed " 
   46            memoSize.jv[sfMemos.jsonName][0u][sfMemo.jsonName]
 
   52            JTx memoNonMemo = 
noop(alice);
 
   53            auto& jv = memoNonMemo.jv;
 
   54            auto& ma = jv[sfMemos.jsonName];
 
   55            auto& mi = ma[ma.size()];
 
   56            auto& m = mi[sfCreatedNode.jsonName];  
 
   57            m[sfMemoData.jsonName] = 
"3030303030";
 
   60                rpc(
"invalidTransaction",
 
   61                    "fails local checks: A memo array may contain only Memo " 
   66            JTx memoExtra = makeJtxWithMemo();
 
   68                .jv[sfMemos.jsonName][0u][sfMemo.jsonName][sfFlags.jsonName] =
 
   71                rpc(
"invalidTransaction",
 
   72                    "fails local checks: A memo may contain only MemoType, " 
   73                    "MemoData or MemoFormat fields."));
 
   77            JTx memoBadChar = makeJtxWithMemo();
 
   78            memoBadChar.jv[sfMemos.jsonName][0u][sfMemo.jsonName]
 
   79                          [sfMemoType.jsonName] =
 
   82                rpc(
"invalidTransaction",
 
   83                    "fails local checks: The MemoType and MemoFormat fields " 
   84                    "may only contain characters that are allowed in URLs " 
   90            JTx memoLegitChar = makeJtxWithMemo();
 
   91            memoLegitChar.jv[sfMemos.jsonName][0u][sfMemo.jsonName]
 
   92                            [sfMemoData.jsonName] =
 
   98            JTx memoBadChar = makeJtxWithMemo();
 
   99            memoBadChar.jv[sfMemos.jsonName][0u][sfMemo.jsonName]
 
  100                          [sfMemoFormat.jsonName] =
 
  103                rpc(
"invalidTransaction",
 
  104                    "fails local checks: The MemoType and MemoFormat fields " 
  105                    "may only contain characters that are allowed in URLs "