Files
rippled/AccountDelete__test_8cpp_source.html
2025-05-30 17:29:11 +00:00

1467 lines
287 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.5"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>rippled: AccountDelete_test.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">rippled
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.5 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_120ed4da3e3217b1e7fc0b4f48568e79.html">test</a></li><li class="navelem"><a class="el" href="dir_7ab758b8a77751d62709b12ccae53e10.html">app</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">AccountDelete_test.cpp</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">//------------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">/*</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> This file is part of rippled: https://github.com/ripple/rippled</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> Copyright (c) 2019 Ripple Labs Inc.</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"></span> </div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> Permission to use, copy, modify, and/or distribute this software for any</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> purpose with or without fee is hereby granted, provided that the above</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> copyright notice and this permission notice appear in all copies.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"></span> </div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"> THE SOFTWARE IS PROVIDED &quot;AS IS&quot; AND THE AUTHOR DISCLAIMS ALL WARRANTIES</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"> WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"> ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">*/</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">//==============================================================================</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#include &lt;test/jtx.h&gt;</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="preprocessor">#include &lt;xrpl/protocol/Feature.h&gt;</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="preprocessor">#include &lt;xrpl/protocol/jss.h&gt;</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> </div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceripple.html">ripple</a> {</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"><a class="line" href="namespaceripple_1_1test.html"> 26</a></span><span class="keyword">namespace </span>test {</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> </div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1AccountDelete__test.html"> 28</a></span><span class="keyword">class </span><a class="code hl_class" href="classripple_1_1test_1_1AccountDelete__test.html">AccountDelete_test</a> : <span class="keyword">public</span> <a class="code hl_class" href="classbeast_1_1unit__test_1_1suite.html">beast::unit_test::suite</a></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span>{</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// Helper function that verifies the expected DeliveredAmount is present.</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <span class="comment">//</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// NOTE: the function _infers_ the transaction to operate on by calling</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// env.tx(), which returns the result from the most recent transaction.</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1AccountDelete__test.html#a3a2e08d09c040d83aa23d75f8b0fb58d"> 36</a></span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a3a2e08d09c040d83aa23d75f8b0fb58d">verifyDeliveredAmount</a>(<a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">jtx::Env</a>&amp; env, <a class="code hl_class" href="classripple_1_1STAmount.html">STAmount</a> <span class="keyword">const</span>&amp; amount)</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> {</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// Get the hash for the most recent transaction.</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span> txHash{</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> env.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#a57001b726ea6929d328a784eaf5b0227">tx</a>()-&gt;getJson(<a class="code hl_enumvalue" href="structripple_1_1JsonOptions.html#ab85e43ec84df987200d3355c3ba89f0aa1917451e3686dfe8d5016670eb87ab33">JsonOptions::none</a>)[jss::hash].asString()};</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> </div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// Verify DeliveredAmount and delivered_amount metadata are correct.</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// We can&#39;t use env.meta() here, because meta() doesn&#39;t include</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// delivered_amount.</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> env.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#a69095691c9bcfab1f3d69c645f2dbe33">close</a>();</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <a class="code hl_class" href="classJson_1_1Value.html">Json::Value</a> <span class="keyword">const</span> meta = env.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#ad69855b4b26fc3c83922c5783487592c">rpc</a>(<span class="stringliteral">&quot;tx&quot;</span>, txHash)[jss::result][jss::meta];</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> </div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// Expect there to be a DeliveredAmount field.</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <span class="keywordflow">if</span> (!BEAST_EXPECT(meta.<a class="code hl_function" href="classJson_1_1Value.html#abfa90c81f6aee7877bd5fb4c8445994f">isMember</a>(sfDeliveredAmount.jsonName)))</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// DeliveredAmount and delivered_amount should both be present and</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// equal amount.</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <a class="code hl_class" href="classJson_1_1Value.html">Json::Value</a> <span class="keyword">const</span> jsonExpect{amount.<a class="code hl_function" href="classripple_1_1STAmount.html#a181a52a4cdeca099d04a31ec43123388">getJson</a>(<a class="code hl_enumvalue" href="structripple_1_1JsonOptions.html#ab85e43ec84df987200d3355c3ba89f0aa1917451e3686dfe8d5016670eb87ab33">JsonOptions::none</a>)};</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> BEAST_EXPECT(meta[sfDeliveredAmount.jsonName] == jsonExpect);</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> BEAST_EXPECT(meta[jss::delivered_amount] == jsonExpect);</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> }</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> </div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="comment">// Helper function to create a payment channel.</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="keyword">static</span> <a class="code hl_class" href="classJson_1_1Value.html">Json::Value</a></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1AccountDelete__test.html#aea5e164214d08334d5e3fa10ac9c2cc0"> 61</a></span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#aea5e164214d08334d5e3fa10ac9c2cc0">payChanCreate</a>(</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">jtx::Account</a> <span class="keyword">const</span>&amp; account,</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">jtx::Account</a> <span class="keyword">const</span>&amp; to,</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <a class="code hl_class" href="classripple_1_1STAmount.html">STAmount</a> <span class="keyword">const</span>&amp; amount,</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/chrono/duration.html">NetClock::duration</a> <span class="keyword">const</span>&amp; settleDelay,</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/chrono/time_point.html">NetClock::time_point</a> <span class="keyword">const</span>&amp; cancelAfter,</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <a class="code hl_class" href="classripple_1_1PublicKey.html">PublicKey</a> <span class="keyword">const</span>&amp; pk)</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> {</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <a class="code hl_class" href="classJson_1_1Value.html">Json::Value</a> jv;</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> jv[jss::TransactionType] = jss::PaymentChannelCreate;</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> jv[jss::Account] = account.human();</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> jv[jss::Destination] = to.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#af418ef1752815f3b0d0c80e7e9891004">human</a>();</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> jv[jss::Amount] = amount.<a class="code hl_function" href="classripple_1_1STAmount.html#a181a52a4cdeca099d04a31ec43123388">getJson</a>(<a class="code hl_enumvalue" href="structripple_1_1JsonOptions.html#ab85e43ec84df987200d3355c3ba89f0aa1917451e3686dfe8d5016670eb87ab33">JsonOptions::none</a>);</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> jv[sfSettleDelay.jsonName] = settleDelay.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/chrono/duration/count.html">count</a>();</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> jv[sfCancelAfter.jsonName] = cancelAfter.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/chrono/time_point/time_since_epoch.html">time_since_epoch</a>().count() + 2;</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> jv[sfPublicKey.jsonName] = <a class="code hl_function" href="namespaceripple.html#a86e358ce3f06ff049af13c2342791cf8">strHex</a>(pk.<a class="code hl_function" href="classripple_1_1PublicKey.html#ae0bcc607176a440ec63a86bae5767036">slice</a>());</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keywordflow">return</span> jv;</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> };</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> </div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1AccountDelete__test.html#a09f62f1f5c18fafb1445c43b7f4072f7"> 82</a></span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a09f62f1f5c18fafb1445c43b7f4072f7">testBasics</a>()</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> {</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="keyword">using namespace </span>jtx;</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> </div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;Basics&quot;</span>);</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> </div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{*<span class="keyword">this</span>};</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> alice(<span class="stringliteral">&quot;alice&quot;</span>);</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> becky(<span class="stringliteral">&quot;becky&quot;</span>);</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> carol(<span class="stringliteral">&quot;carol&quot;</span>);</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> gw(<span class="stringliteral">&quot;gw&quot;</span>);</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> </div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> env.fund(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(10000), alice, becky, carol, gw);</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> env.close();</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> </div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="comment">// Alice can&#39;t delete her account and then give herself the XRP.</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(alice, alice), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46acf9cc7bb9b19628c6a89a21611972242">temDST_IS_SRC</a>));</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="comment">// alice can&#39;t delete her account with a negative fee.</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(alice, becky), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(-1)), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46a3210708be8e611097ad2ae1e1a1734fb">temBAD_FEE</a>));</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> </div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="comment">// Invalid flags.</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(alice, becky),</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1txflags.html">txflags</a>(<a class="code hl_variable" href="namespaceripple.html#a6257d0a91b5b06dd7712c68af628441d">tfImmediateOrCancel</a>),</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46aa4754e0f122658747650b3b1c0a846a8">temINVALID_FLAG</a>));</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> </div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="comment">// Account deletion has a high fee. Make sure the fee requirement</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="comment">// behaves as we expect.</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keyword">auto</span> <span class="keyword">const</span> acctDelFee{<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(env.current()-&gt;fees().increment)};</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(alice, becky), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#a260d2970ac1119109937ed1c5d4ca962a595a44bbc04dffad91a353227660d6ba">telINSUF_FEE_P</a>));</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> </div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="comment">// Try a fee one drop less than the required amount.</span></div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(alice, becky),</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee - <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(1)),</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#a260d2970ac1119109937ed1c5d4ca962a595a44bbc04dffad91a353227660d6ba">telINSUF_FEE_P</a>));</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> </div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="comment">// alice&#39;s account is created too recently to be deleted.</span></div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(alice, becky), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca44bd180d908c1a35ffd236f7c88c180c">tecTOO_SOON</a>));</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> </div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="comment">// Give becky a trustline. She is no longer deletable.</span></div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47cac3a8bfbc8c14ae8da735ec52ebbf">trust</a>(becky, gw[<span class="stringliteral">&quot;USD&quot;</span>](1000)));</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> env.close();</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> </div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <span class="comment">// Give carol a deposit preauthorization, an offer, a ticket,</span></div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <span class="comment">// a signer list, and a DID. Even with all that she&#39;s still deletable.</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1deposit.html#a662867f42cb3f468f2e8830fbd7e0d8a">deposit::auth</a>(carol, becky));</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> <span class="keyword">const</span> carolOfferSeq{env.seq(carol)};</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>(carol, gw[<span class="stringliteral">&quot;USD&quot;</span>](51), <a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(51)));</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> <span class="keyword">const</span> carolTicketSeq{env.seq(carol) + 1};</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1ticket.html#a1e24650b39bab99fc665d9f80365cc27">ticket::create</a>(carol, 1));</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a2f130edacc0e266d31bd9d4fe4def16c">signers</a>(carol, 1, {{alice, 1}, {becky, 1}}));</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1did.html#af9e9977708cdfb7b9aded98d2cbaa52e">did::setValid</a>(carol));</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> </div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="comment">// Deleting should fail with TOO_SOON, which is a relatively</span></div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="comment">// cheap check compared to validating the contents of her directory.</span></div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(alice, becky), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca44bd180d908c1a35ffd236f7c88c180c">tecTOO_SOON</a>));</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> </div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="comment">// Close enough ledgers to almost be able to delete alice&#39;s account.</span></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ab5498b455814e9a3ebe57c96170a6bcd">incLgrSeqForAccDel</a>(env, alice, 1);</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> </div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <span class="comment">// alice&#39;s account is still created too recently to be deleted.</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(alice, becky), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca44bd180d908c1a35ffd236f7c88c180c">tecTOO_SOON</a>));</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> </div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> <span class="comment">// The most recent delete attempt advanced alice&#39;s sequence. So</span></div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <span class="comment">// close two ledgers and her account should be deletable.</span></div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> env.close();</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> env.close();</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> </div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> {</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <span class="keyword">auto</span> <span class="keyword">const</span> aliceOldBalance{env.balance(alice)};</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <span class="keyword">auto</span> <span class="keyword">const</span> beckyOldBalance{env.balance(becky)};</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> </div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> <span class="comment">// Verify that alice&#39;s account exists but she has no directory.</span></div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> BEAST_EXPECT(env.closed()-&gt;exists(<a class="code hl_function" href="namespaceripple_1_1keylet.html#aa756e0f59b26042ed00a4d0ba6e96951">keylet::account</a>(alice.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>())));</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> BEAST_EXPECT(!env.closed()-&gt;exists(<a class="code hl_function" href="namespaceripple_1_1keylet.html#acd4d51d467fc6e75745baf179a7965ef">keylet::ownerDir</a>(alice.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>())));</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> </div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(alice, becky), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee));</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a3a2e08d09c040d83aa23d75f8b0fb58d">verifyDeliveredAmount</a>(env, aliceOldBalance - acctDelFee);</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> env.close();</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> </div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="comment">// Verify that alice&#39;s account and directory are actually gone.</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> BEAST_EXPECT(!env.closed()-&gt;exists(<a class="code hl_function" href="namespaceripple_1_1keylet.html#aa756e0f59b26042ed00a4d0ba6e96951">keylet::account</a>(alice.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>())));</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> BEAST_EXPECT(!env.closed()-&gt;exists(<a class="code hl_function" href="namespaceripple_1_1keylet.html#acd4d51d467fc6e75745baf179a7965ef">keylet::ownerDir</a>(alice.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>())));</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> </div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <span class="comment">// Verify that alice&#39;s XRP, minus the fee, was transferred to becky.</span></div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> BEAST_EXPECT(</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> env.balance(becky) ==</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> aliceOldBalance + beckyOldBalance - acctDelFee);</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> }</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> </div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <span class="comment">// Attempt to delete becky&#39;s account but get stopped by the trust line.</span></div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(becky, carol), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caa7460a5fac26c1d8abef55b8c1129150">tecHAS_OBLIGATIONS</a>));</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> env.close();</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> </div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <span class="comment">// Verify that becky&#39;s account is still there by giving her a regular</span></div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> <span class="comment">// key. This has the side effect of setting the lsfPasswordSpent bit</span></div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> <span class="comment">// on her account root.</span></div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> beck(<span class="stringliteral">&quot;beck&quot;</span>);</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a25348362262144c3927b86f8d349fd86">regkey</a>(becky, beck), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(0)));</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> env.close();</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> </div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> <span class="comment">// Show that the lsfPasswordSpent bit is set by attempting to change</span></div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <span class="comment">// becky&#39;s regular key for free again. That fails.</span></div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> reb(<span class="stringliteral">&quot;reb&quot;</span>);</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a25348362262144c3927b86f8d349fd86">regkey</a>(becky, reb), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1sig.html">sig</a>(becky), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(0)), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#a260d2970ac1119109937ed1c5d4ca962a595a44bbc04dffad91a353227660d6ba">telINSUF_FEE_P</a>));</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> </div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> <span class="comment">// Close enough ledgers that becky&#39;s failing regkey transaction is</span></div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> <span class="comment">// no longer retried.</span></div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 8; ++i)</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> env.close();</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> </div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> {</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> <span class="keyword">auto</span> <span class="keyword">const</span> beckyOldBalance{env.balance(becky)};</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <span class="keyword">auto</span> <span class="keyword">const</span> carolOldBalance{env.balance(carol)};</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> </div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <span class="comment">// Verify that Carol&#39;s account, directory, deposit</span></div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> <span class="comment">// preauthorization, offer, ticket, and signer list exist.</span></div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> BEAST_EXPECT(env.closed()-&gt;exists(<a class="code hl_function" href="namespaceripple_1_1keylet.html#aa756e0f59b26042ed00a4d0ba6e96951">keylet::account</a>(carol.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>())));</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> BEAST_EXPECT(env.closed()-&gt;exists(<a class="code hl_function" href="namespaceripple_1_1keylet.html#acd4d51d467fc6e75745baf179a7965ef">keylet::ownerDir</a>(carol.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>())));</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> BEAST_EXPECT(env.closed()-&gt;exists(</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#af007cd3970facb09bf54b78026e9d206">keylet::depositPreauth</a>(carol.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>(), becky.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>())));</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> BEAST_EXPECT(</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> env.closed()-&gt;exists(<a class="code hl_function" href="namespaceripple_1_1keylet.html#aeffddd45805feb6cc0678738b5c21072">keylet::offer</a>(carol.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>(), carolOfferSeq)));</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> BEAST_EXPECT(env.closed()-&gt;exists(</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> <a class="code hl_variable" href="namespaceripple_1_1keylet.html#aee01252a0cd33b8d4f4ad38982c0dcab">keylet::ticket</a>(carol.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>(), carolTicketSeq)));</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> BEAST_EXPECT(env.closed()-&gt;exists(<a class="code hl_function" href="namespaceripple_1_1keylet.html#ad5c2136f2d2d711114702944633d4fa8">keylet::signers</a>(carol.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>())));</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> </div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> <span class="comment">// Delete carol&#39;s account even with stuff in her directory. Show</span></div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> <span class="comment">// that multisigning for the delete does not increase carol&#39;s fee.</span></div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(carol, becky), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1msig.html">msig</a>(alice));</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a3a2e08d09c040d83aa23d75f8b0fb58d">verifyDeliveredAmount</a>(env, carolOldBalance - acctDelFee);</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> env.close();</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> </div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> <span class="comment">// Verify that Carol&#39;s account, directory, and other stuff are gone.</span></div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> BEAST_EXPECT(!env.closed()-&gt;exists(<a class="code hl_function" href="namespaceripple_1_1keylet.html#aa756e0f59b26042ed00a4d0ba6e96951">keylet::account</a>(carol.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>())));</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> BEAST_EXPECT(!env.closed()-&gt;exists(<a class="code hl_function" href="namespaceripple_1_1keylet.html#acd4d51d467fc6e75745baf179a7965ef">keylet::ownerDir</a>(carol.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>())));</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> BEAST_EXPECT(!env.closed()-&gt;exists(</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#af007cd3970facb09bf54b78026e9d206">keylet::depositPreauth</a>(carol.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>(), becky.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>())));</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> BEAST_EXPECT(!env.closed()-&gt;exists(</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#aeffddd45805feb6cc0678738b5c21072">keylet::offer</a>(carol.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>(), carolOfferSeq)));</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> BEAST_EXPECT(!env.closed()-&gt;exists(</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> <a class="code hl_variable" href="namespaceripple_1_1keylet.html#aee01252a0cd33b8d4f4ad38982c0dcab">keylet::ticket</a>(carol.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>(), carolTicketSeq)));</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> BEAST_EXPECT(!env.closed()-&gt;exists(<a class="code hl_function" href="namespaceripple_1_1keylet.html#ad5c2136f2d2d711114702944633d4fa8">keylet::signers</a>(carol.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>())));</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> </div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> <span class="comment">// Verify that Carol&#39;s XRP, minus the fee, was transferred to becky.</span></div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> BEAST_EXPECT(</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> env.balance(becky) ==</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> carolOldBalance + beckyOldBalance - acctDelFee);</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> </div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> <span class="comment">// Since becky received an influx of XRP, her lsfPasswordSpent bit</span></div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> <span class="comment">// is cleared and she can change her regular key for free again.</span></div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a25348362262144c3927b86f8d349fd86">regkey</a>(becky, reb), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1sig.html">sig</a>(becky), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(0)));</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> }</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> }</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> </div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1AccountDelete__test.html#ac392a32b72823219d9ee0dc266226f64"> 238</a></span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#ac392a32b72823219d9ee0dc266226f64">testDirectories</a>()</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> {</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> <span class="comment">// The code that deletes consecutive directory entries uses a</span></div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <span class="comment">// peculiarity of the implementation. Make sure that peculiarity</span></div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <span class="comment">// behaves as expected across owner directory pages.</span></div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> <span class="keyword">using namespace </span>jtx;</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> </div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;Directories&quot;</span>);</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> </div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{*<span class="keyword">this</span>};</div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> alice(<span class="stringliteral">&quot;alice&quot;</span>);</div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> gw(<span class="stringliteral">&quot;gw&quot;</span>);</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> </div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> env.fund(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(10000), alice, gw);</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> env.close();</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> </div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> <span class="comment">// Alice creates enough offers to require two owner directories.</span></div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i{0}; i &lt; 45; ++i)</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> {</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>(alice, gw[<span class="stringliteral">&quot;USD&quot;</span>](1), <a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(1)));</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> env.close();</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> }</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> env.require(<a class="code hl_typedef" href="namespaceripple_1_1test_1_1jtx.html#a3beb715a43d7e5bc771c333529bbf92d">offers</a>(alice, 45));</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> </div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> <span class="comment">// Close enough ledgers to be able to delete alice&#39;s account.</span></div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ab5498b455814e9a3ebe57c96170a6bcd">incLgrSeqForAccDel</a>(env, alice);</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> </div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> <span class="comment">// Verify that both directory nodes exist.</span></div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> <a class="code hl_struct" href="structripple_1_1Keylet.html">Keylet</a> <span class="keyword">const</span> aliceRootKey{<a class="code hl_function" href="namespaceripple_1_1keylet.html#acd4d51d467fc6e75745baf179a7965ef">keylet::ownerDir</a>(alice.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>())};</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> <a class="code hl_struct" href="structripple_1_1Keylet.html">Keylet</a> <span class="keyword">const</span> alicePageKey{<a class="code hl_function" href="namespaceripple_1_1keylet.html#aaa5be5f268b3d5d79e99ce5bcbc4fab2">keylet::page</a>(aliceRootKey, 1)};</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> BEAST_EXPECT(env.closed()-&gt;exists(aliceRootKey));</div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> BEAST_EXPECT(env.closed()-&gt;exists(alicePageKey));</div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> </div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> <span class="comment">// Delete alice&#39;s account.</span></div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> <span class="keyword">auto</span> <span class="keyword">const</span> acctDelFee{<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(env.current()-&gt;fees().increment)};</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> <span class="keyword">auto</span> <span class="keyword">const</span> aliceBalance{env.balance(alice)};</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(alice, gw), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee));</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a3a2e08d09c040d83aa23d75f8b0fb58d">verifyDeliveredAmount</a>(env, aliceBalance - acctDelFee);</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> env.close();</div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> </div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> <span class="comment">// Both of alice&#39;s directory nodes should be gone.</span></div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> BEAST_EXPECT(!env.closed()-&gt;exists(aliceRootKey));</div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> BEAST_EXPECT(!env.closed()-&gt;exists(alicePageKey));</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> }</div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> </div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1AccountDelete__test.html#aa32b27823d78947eae4b1950628d0934"> 284</a></span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#aa32b27823d78947eae4b1950628d0934">testOwnedTypes</a>()</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> {</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> <span class="keyword">using namespace </span>jtx;</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> </div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;Owned types&quot;</span>);</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> </div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> <span class="comment">// We want to test both...</span></div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> <span class="comment">// o Old-style PayChannels without a recipient backlink as well as</span></div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> <span class="comment">// o New-styled PayChannels with the backlink.</span></div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> <span class="comment">// So we start the test using old-style PayChannels. Then we pass</span></div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> <span class="comment">// the amendment to get new-style PayChannels.</span></div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{*<span class="keyword">this</span>, <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#af5441d84d5977d52246c5226313560d4">supported_amendments</a>() - fixPayChanRecipientOwnerDir};</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> alice(<span class="stringliteral">&quot;alice&quot;</span>);</div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> becky(<span class="stringliteral">&quot;becky&quot;</span>);</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> gw(<span class="stringliteral">&quot;gw&quot;</span>);</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> </div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> env.fund(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(100000), alice, becky, gw);</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> env.close();</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> </div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> <span class="comment">// Give alice and becky a bunch of offers that we have to search</span></div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> <span class="comment">// through before we figure out that there&#39;s a non-deletable</span></div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> <span class="comment">// entry in their directory.</span></div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i{0}; i &lt; 200; ++i)</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> {</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>(alice, gw[<span class="stringliteral">&quot;USD&quot;</span>](1), <a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(1)));</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>(becky, gw[<span class="stringliteral">&quot;USD&quot;</span>](1), <a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(1)));</div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> env.close();</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> }</div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> env.require(<a class="code hl_typedef" href="namespaceripple_1_1test_1_1jtx.html#a3beb715a43d7e5bc771c333529bbf92d">offers</a>(alice, 200));</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> env.require(<a class="code hl_typedef" href="namespaceripple_1_1test_1_1jtx.html#a3beb715a43d7e5bc771c333529bbf92d">offers</a>(becky, 200));</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> </div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> <span class="comment">// Close enough ledgers to be able to delete alice&#39;s and becky&#39;s</span></div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> <span class="comment">// accounts.</span></div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ab5498b455814e9a3ebe57c96170a6bcd">incLgrSeqForAccDel</a>(env, alice);</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ab5498b455814e9a3ebe57c96170a6bcd">incLgrSeqForAccDel</a>(env, becky);</div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> </div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> <span class="comment">// alice writes a check to becky. Until that check is cashed or</span></div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> <span class="comment">// canceled it will prevent alice&#39;s and becky&#39;s accounts from being</span></div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> <span class="comment">// deleted.</span></div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span> checkId = <a class="code hl_function" href="namespaceripple_1_1keylet.html#aefa210f097f27f0e9e67fe65c6271508">keylet::check</a>(alice, env.seq(alice)).<a class="code hl_variable" href="structripple_1_1Keylet.html#a482983062843a8682fcea76a309c73db">key</a>;</div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1check.html#a026568d2c61a6be3ef305377a62ed301">check::create</a>(alice, becky, <a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(1)));</div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> env.close();</div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> </div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> <span class="keyword">auto</span> <span class="keyword">const</span> acctDelFee{<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(env.current()-&gt;fees().increment)};</div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(alice, gw), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caa7460a5fac26c1d8abef55b8c1129150">tecHAS_OBLIGATIONS</a>));</div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(becky, gw), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caa7460a5fac26c1d8abef55b8c1129150">tecHAS_OBLIGATIONS</a>));</div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> env.close();</div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> </div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> <span class="comment">// Cancel the check, but add an escrow. Again, with the escrow</span></div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> <span class="comment">// on board, alice and becky should not be able to delete their</span></div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> <span class="comment">// accounts.</span></div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1check.html#a2d3a894a7ac4d177a05437a83718d0ac">check::cancel</a>(becky, checkId));</div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> env.close();</div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> </div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> <span class="comment">// Lambda to create an escrow.</span></div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> <span class="keyword">auto</span> escrowCreate = [](<a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">jtx::Account</a> <span class="keyword">const</span>&amp; account,</div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">jtx::Account</a> <span class="keyword">const</span>&amp; to,</div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> <a class="code hl_class" href="classripple_1_1STAmount.html">STAmount</a> <span class="keyword">const</span>&amp; amount,</div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/chrono/time_point.html">NetClock::time_point</a> <span class="keyword">const</span>&amp; cancelAfter) {</div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span> <a class="code hl_class" href="classJson_1_1Value.html">Json::Value</a> jv;</div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> jv[jss::TransactionType] = jss::EscrowCreate;</div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> jv[jss::Account] = account.human();</div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> jv[jss::Destination] = to.human();</div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> jv[jss::Amount] = amount.getJson(<a class="code hl_enumvalue" href="structripple_1_1JsonOptions.html#ab85e43ec84df987200d3355c3ba89f0aa1917451e3686dfe8d5016670eb87ab33">JsonOptions::none</a>);</div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> jv[sfFinishAfter.jsonName] =</div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> cancelAfter.time_since_epoch().count() + 1;</div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> jv[sfCancelAfter.jsonName] =</div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> cancelAfter.time_since_epoch().count() + 2;</div>
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span> <span class="keywordflow">return</span> jv;</div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> };</div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> </div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> <span class="keyword">using namespace </span>std::chrono_literals;</div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> <span class="keyword">const</span> escrowSeq{env.seq(alice)};</div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> env(escrowCreate(alice, becky, <a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(333), env.now() + 2s));</div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span> env.close();</div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> </div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> <span class="comment">// alice and becky should be unable to delete their accounts because</span></div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> <span class="comment">// of the escrow.</span></div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(alice, gw), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caa7460a5fac26c1d8abef55b8c1129150">tecHAS_OBLIGATIONS</a>));</div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(becky, gw), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caa7460a5fac26c1d8abef55b8c1129150">tecHAS_OBLIGATIONS</a>));</div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> env.close();</div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> </div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> <span class="comment">// Now cancel the escrow, but create a payment channel between</span></div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> <span class="comment">// alice and becky.</span></div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> </div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span> <span class="comment">// Lambda to cancel an escrow.</span></div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span> <span class="keyword">auto</span> escrowCancel =</div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> [](<a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span>&amp; account, <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span>&amp; from, <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> <a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>) {</div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span> <a class="code hl_class" href="classJson_1_1Value.html">Json::Value</a> jv;</div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span> jv[jss::TransactionType] = jss::EscrowCancel;</div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> jv[jss::Account] = account.human();</div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> jv[sfOwner.jsonName] = from.human();</div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> jv[sfOfferSequence.jsonName] = <a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>;</div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> <span class="keywordflow">return</span> jv;</div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> };</div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> env(escrowCancel(becky, alice, escrowSeq));</div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> env.close();</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> </div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span> <a class="code hl_struct" href="structripple_1_1Keylet.html">Keylet</a> <span class="keyword">const</span> alicePayChanKey{</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#afde577cc367684fb4beceb0100da6195">keylet::payChan</a>(alice, becky, env.seq(alice))};</div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span> </div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span> env(<a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#aea5e164214d08334d5e3fa10ac9c2cc0">payChanCreate</a>(</div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span> alice, becky, <a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(57), 4s, env.now() + 2s, alice.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a079e39aea7b349047759b9dfc1df7a13">pk</a>()));</div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span> env.close();</div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span> </div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span> <span class="comment">// An old-style PayChannel does not add a back link from the</span></div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span> <span class="comment">// destination. So with the PayChannel in place becky should be</span></div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span> <span class="comment">// able to delete her account, but alice should not.</span></div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> <span class="keyword">auto</span> <span class="keyword">const</span> beckyBalance{env.balance(becky)};</div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(alice, gw), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caa7460a5fac26c1d8abef55b8c1129150">tecHAS_OBLIGATIONS</a>));</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(becky, gw), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee));</div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a3a2e08d09c040d83aa23d75f8b0fb58d">verifyDeliveredAmount</a>(env, beckyBalance - acctDelFee);</div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> env.close();</div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> </div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> <span class="comment">// Alice cancels her PayChannel which will leave her with only offers</span></div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> <span class="comment">// in her directory.</span></div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span> </div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span> <span class="comment">// Lambda to close a PayChannel.</span></div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span> <span class="keyword">auto</span> payChanClose = [](<a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">jtx::Account</a> <span class="keyword">const</span>&amp; account,</div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span> <a class="code hl_struct" href="structripple_1_1Keylet.html">Keylet</a> <span class="keyword">const</span>&amp; payChanKeylet,</div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span> <a class="code hl_class" href="classripple_1_1PublicKey.html">PublicKey</a> <span class="keyword">const</span>&amp; pk) {</div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> <a class="code hl_class" href="classJson_1_1Value.html">Json::Value</a> jv;</div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span> jv[jss::TransactionType] = jss::PaymentChannelClaim;</div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span> jv[jss::Flags] = <a class="code hl_variable" href="namespaceripple.html#ac1c00e26dbebe035301fefc29b02f82b">tfClose</a>;</div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> jv[jss::Account] = account.human();</div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> jv[sfChannel.jsonName] = <a class="code hl_function" href="namespaceripple.html#ac124fe6744b7fe887dec949b56b16d50">to_string</a>(payChanKeylet.key);</div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> jv[sfPublicKey.jsonName] = <a class="code hl_function" href="namespaceripple.html#a86e358ce3f06ff049af13c2342791cf8">strHex</a>(pk.slice());</div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> <span class="keywordflow">return</span> jv;</div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span> };</div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> env(payChanClose(alice, alicePayChanKey, alice.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a079e39aea7b349047759b9dfc1df7a13">pk</a>()));</div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> env.close();</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> </div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> <span class="comment">// Now enable the amendment so PayChannels add a backlink from the</span></div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> <span class="comment">// destination.</span></div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> env.enableFeature(fixPayChanRecipientOwnerDir);</div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> env.close();</div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> </div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> <span class="comment">// gw creates a PayChannel with alice as the destination. With the</span></div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span> <span class="comment">// amendment passed this should prevent alice from deleting her</span></div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> <span class="comment">// account.</span></div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> <a class="code hl_struct" href="structripple_1_1Keylet.html">Keylet</a> <span class="keyword">const</span> gwPayChanKey{<a class="code hl_function" href="namespaceripple_1_1keylet.html#afde577cc367684fb4beceb0100da6195">keylet::payChan</a>(gw, alice, env.seq(gw))};</div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> </div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> env(<a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#aea5e164214d08334d5e3fa10ac9c2cc0">payChanCreate</a>(gw, alice, <a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(68), 4s, env.now() + 2s, alice.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a079e39aea7b349047759b9dfc1df7a13">pk</a>()));</div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> env.close();</div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span> </div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> <span class="comment">// alice can&#39;t delete her account because of the PayChannel.</span></div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(alice, gw), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caa7460a5fac26c1d8abef55b8c1129150">tecHAS_OBLIGATIONS</a>));</div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> env.close();</div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> </div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> <span class="comment">// alice closes the PayChannel which should (finally) allow her to</span></div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> <span class="comment">// delete her account.</span></div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> env(payChanClose(alice, gwPayChanKey, alice.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a079e39aea7b349047759b9dfc1df7a13">pk</a>()));</div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> env.close();</div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> </div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> <span class="comment">// Now alice can successfully delete her account.</span></div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> <span class="keyword">auto</span> <span class="keyword">const</span> aliceBalance{env.balance(alice)};</div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(alice, gw), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee));</div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a3a2e08d09c040d83aa23d75f8b0fb58d">verifyDeliveredAmount</a>(env, aliceBalance - acctDelFee);</div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> env.close();</div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> }</div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> </div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1AccountDelete__test.html#a1e270085d457d7ee5fd5daa3773f6cc3"> 446</a></span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a1e270085d457d7ee5fd5daa3773f6cc3">testResurrection</a>()</div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> {</div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> <span class="comment">// Create an account with an old-style PayChannel. Delete the</span></div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span> <span class="comment">// destination of the PayChannel then resurrect the destination.</span></div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> <span class="comment">// The PayChannel should still work.</span></div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> <span class="keyword">using namespace </span>jtx;</div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> </div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;Resurrection&quot;</span>);</div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> </div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> <span class="comment">// We need an old-style PayChannel that doesn&#39;t provide a backlink</span></div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> <span class="comment">// from the destination. So don&#39;t enable the amendment with that fix.</span></div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{*<span class="keyword">this</span>, <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#af5441d84d5977d52246c5226313560d4">supported_amendments</a>() - fixPayChanRecipientOwnerDir};</div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> alice(<span class="stringliteral">&quot;alice&quot;</span>);</div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> becky(<span class="stringliteral">&quot;becky&quot;</span>);</div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> </div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> env.fund(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(10000), alice, becky);</div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> env.close();</div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> </div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> <span class="comment">// Verify that becky&#39;s account root is present.</span></div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> <a class="code hl_struct" href="structripple_1_1Keylet.html">Keylet</a> <span class="keyword">const</span> beckyAcctKey{<a class="code hl_function" href="namespaceripple_1_1keylet.html#aa756e0f59b26042ed00a4d0ba6e96951">keylet::account</a>(becky.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>())};</div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> BEAST_EXPECT(env.closed()-&gt;exists(beckyAcctKey));</div>
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> </div>
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span> <span class="keyword">using namespace </span>std::chrono_literals;</div>
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span> <a class="code hl_struct" href="structripple_1_1Keylet.html">Keylet</a> <span class="keyword">const</span> payChanKey{<a class="code hl_function" href="namespaceripple_1_1keylet.html#afde577cc367684fb4beceb0100da6195">keylet::payChan</a>(alice, becky, env.seq(alice))};</div>
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span> <span class="keyword">auto</span> <span class="keyword">const</span> payChanXRP = <a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(37);</div>
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span> </div>
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span> env(<a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#aea5e164214d08334d5e3fa10ac9c2cc0">payChanCreate</a>(</div>
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span> alice, becky, payChanXRP, 4s, env.now() + 1h, alice.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a079e39aea7b349047759b9dfc1df7a13">pk</a>()));</div>
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span> env.close();</div>
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span> BEAST_EXPECT(env.closed()-&gt;exists(payChanKey));</div>
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span> </div>
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span> <span class="comment">// Close enough ledgers to be able to delete becky&#39;s account.</span></div>
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ab5498b455814e9a3ebe57c96170a6bcd">incLgrSeqForAccDel</a>(env, becky);</div>
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span> </div>
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span> <span class="keyword">auto</span> <span class="keyword">const</span> beckyPreDelBalance{env.balance(becky)};</div>
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span> </div>
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span> <span class="keyword">auto</span> <span class="keyword">const</span> acctDelFee{<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(env.current()-&gt;fees().increment)};</div>
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(becky, alice), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee));</div>
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"> 484</span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a3a2e08d09c040d83aa23d75f8b0fb58d">verifyDeliveredAmount</a>(env, beckyPreDelBalance - acctDelFee);</div>
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span> env.close();</div>
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span> </div>
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"> 487</span> <span class="comment">// Verify that becky&#39;s account root is gone.</span></div>
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span> BEAST_EXPECT(!env.closed()-&gt;exists(beckyAcctKey));</div>
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"> 489</span> </div>
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span> <span class="comment">// All it takes is a large enough XRP payment to resurrect</span></div>
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span> <span class="comment">// becky&#39;s account. Try too small a payment.</span></div>
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a66b99468a4160bccaa9959a444b40d40">pay</a>(alice,</div>
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span> becky,</div>
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(env.current()-&gt;fees().accountReserve(0)) - <a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(1)),</div>
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caf30c1d76d9aca04b89314307a476b2bd">tecNO_DST_INSUF_XRP</a>));</div>
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"> 496</span> env.close();</div>
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"> 497</span> </div>
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"> 498</span> <span class="comment">// Actually resurrect becky&#39;s account.</span></div>
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"> 499</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a66b99468a4160bccaa9959a444b40d40">pay</a>(alice, becky, <a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(10)));</div>
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span> env.close();</div>
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span> </div>
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"> 502</span> <span class="comment">// becky&#39;s account root should be back.</span></div>
<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"> 503</span> BEAST_EXPECT(env.closed()-&gt;exists(beckyAcctKey));</div>
<div class="line"><a id="l00504" name="l00504"></a><span class="lineno"> 504</span> BEAST_EXPECT(env.balance(becky) == <a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(10));</div>
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"> 505</span> </div>
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span> <span class="comment">// becky&#39;s resurrected account can be the destination of alice&#39;s</span></div>
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span> <span class="comment">// PayChannel.</span></div>
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"> 508</span> <span class="keyword">auto</span> payChanClaim = [&amp;]() {</div>
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"> 509</span> <a class="code hl_class" href="classJson_1_1Value.html">Json::Value</a> jv;</div>
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"> 510</span> jv[jss::TransactionType] = jss::PaymentChannelClaim;</div>
<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"> 511</span> jv[jss::Account] = alice.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#af418ef1752815f3b0d0c80e7e9891004">human</a>();</div>
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"> 512</span> jv[sfChannel.jsonName] = <a class="code hl_function" href="namespaceripple.html#ac124fe6744b7fe887dec949b56b16d50">to_string</a>(payChanKey.key);</div>
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"> 513</span> jv[sfBalance.jsonName] =</div>
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"> 514</span> payChanXRP.value().getJson(<a class="code hl_enumvalue" href="structripple_1_1JsonOptions.html#ab85e43ec84df987200d3355c3ba89f0aa1917451e3686dfe8d5016670eb87ab33">JsonOptions::none</a>);</div>
<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"> 515</span> <span class="keywordflow">return</span> jv;</div>
<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"> 516</span> };</div>
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"> 517</span> env(payChanClaim());</div>
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"> 518</span> env.close();</div>
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"> 519</span> </div>
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span> BEAST_EXPECT(env.balance(becky) == <a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(10) + payChanXRP);</div>
<div class="line"><a id="l00521" name="l00521"></a><span class="lineno"> 521</span> }</div>
<div class="line"><a id="l00522" name="l00522"></a><span class="lineno"> 522</span> </div>
<div class="line"><a id="l00523" name="l00523"></a><span class="lineno"> 523</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00524" name="l00524"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1AccountDelete__test.html#a9608a0aba27aea97c17205de5965d6cd"> 524</a></span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a9608a0aba27aea97c17205de5965d6cd">testAmendmentEnable</a>()</div>
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno"> 525</span> {</div>
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno"> 526</span> <span class="comment">// Start with the featureDeletableAccounts amendment disabled.</span></div>
<div class="line"><a id="l00527" name="l00527"></a><span class="lineno"> 527</span> <span class="comment">// Then enable the amendment and delete an account.</span></div>
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"> 528</span> <span class="keyword">using namespace </span>jtx;</div>
<div class="line"><a id="l00529" name="l00529"></a><span class="lineno"> 529</span> </div>
<div class="line"><a id="l00530" name="l00530"></a><span class="lineno"> 530</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;Amendment enable&quot;</span>);</div>
<div class="line"><a id="l00531" name="l00531"></a><span class="lineno"> 531</span> </div>
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"> 532</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{*<span class="keyword">this</span>, <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#af5441d84d5977d52246c5226313560d4">supported_amendments</a>() - featureDeletableAccounts};</div>
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"> 533</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> alice(<span class="stringliteral">&quot;alice&quot;</span>);</div>
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"> 534</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> becky(<span class="stringliteral">&quot;becky&quot;</span>);</div>
<div class="line"><a id="l00535" name="l00535"></a><span class="lineno"> 535</span> </div>
<div class="line"><a id="l00536" name="l00536"></a><span class="lineno"> 536</span> env.fund(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(10000), alice, becky);</div>
<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"> 537</span> env.close();</div>
<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"> 538</span> </div>
<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"> 539</span> <span class="comment">// Close enough ledgers to be able to delete alice&#39;s account.</span></div>
<div class="line"><a id="l00540" name="l00540"></a><span class="lineno"> 540</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ab5498b455814e9a3ebe57c96170a6bcd">incLgrSeqForAccDel</a>(env, alice);</div>
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno"> 541</span> </div>
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno"> 542</span> <span class="comment">// Verify that alice&#39;s account root is present.</span></div>
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"> 543</span> <a class="code hl_struct" href="structripple_1_1Keylet.html">Keylet</a> <span class="keyword">const</span> aliceAcctKey{<a class="code hl_function" href="namespaceripple_1_1keylet.html#aa756e0f59b26042ed00a4d0ba6e96951">keylet::account</a>(alice.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>())};</div>
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno"> 544</span> BEAST_EXPECT(env.closed()-&gt;exists(aliceAcctKey));</div>
<div class="line"><a id="l00545" name="l00545"></a><span class="lineno"> 545</span> </div>
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"> 546</span> <span class="keyword">auto</span> <span class="keyword">const</span> alicePreDelBal{env.balance(alice)};</div>
<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"> 547</span> <span class="keyword">auto</span> <span class="keyword">const</span> beckyPreDelBal{env.balance(becky)};</div>
<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"> 548</span> </div>
<div class="line"><a id="l00549" name="l00549"></a><span class="lineno"> 549</span> <span class="keyword">auto</span> <span class="keyword">const</span> acctDelFee{<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(env.current()-&gt;fees().increment)};</div>
<div class="line"><a id="l00550" name="l00550"></a><span class="lineno"> 550</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(alice, becky), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46ac3482079467d517ea82aa9c8fa693d21">temDISABLED</a>));</div>
<div class="line"><a id="l00551" name="l00551"></a><span class="lineno"> 551</span> env.close();</div>
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno"> 552</span> </div>
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"> 553</span> <span class="comment">// Verify that alice&#39;s account root is still present and alice and</span></div>
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"> 554</span> <span class="comment">// becky both have their XRP.</span></div>
<div class="line"><a id="l00555" name="l00555"></a><span class="lineno"> 555</span> BEAST_EXPECT(env.current()-&gt;exists(aliceAcctKey));</div>
<div class="line"><a id="l00556" name="l00556"></a><span class="lineno"> 556</span> BEAST_EXPECT(env.balance(alice) == alicePreDelBal);</div>
<div class="line"><a id="l00557" name="l00557"></a><span class="lineno"> 557</span> BEAST_EXPECT(env.balance(becky) == beckyPreDelBal);</div>
<div class="line"><a id="l00558" name="l00558"></a><span class="lineno"> 558</span> </div>
<div class="line"><a id="l00559" name="l00559"></a><span class="lineno"> 559</span> <span class="comment">// When the amendment is enabled the previous transaction is</span></div>
<div class="line"><a id="l00560" name="l00560"></a><span class="lineno"> 560</span> <span class="comment">// retried into the new open ledger and succeeds.</span></div>
<div class="line"><a id="l00561" name="l00561"></a><span class="lineno"> 561</span> env.enableFeature(featureDeletableAccounts);</div>
<div class="line"><a id="l00562" name="l00562"></a><span class="lineno"> 562</span> env.close();</div>
<div class="line"><a id="l00563" name="l00563"></a><span class="lineno"> 563</span> </div>
<div class="line"><a id="l00564" name="l00564"></a><span class="lineno"> 564</span> <span class="comment">// alice&#39;s account is still in the most recently closed ledger.</span></div>
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno"> 565</span> BEAST_EXPECT(env.closed()-&gt;exists(aliceAcctKey));</div>
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno"> 566</span> </div>
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno"> 567</span> <span class="comment">// Verify that alice&#39;s account root is gone from the current ledger</span></div>
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno"> 568</span> <span class="comment">// and becky has alice&#39;s XRP.</span></div>
<div class="line"><a id="l00569" name="l00569"></a><span class="lineno"> 569</span> BEAST_EXPECT(!env.current()-&gt;exists(aliceAcctKey));</div>
<div class="line"><a id="l00570" name="l00570"></a><span class="lineno"> 570</span> BEAST_EXPECT(</div>
<div class="line"><a id="l00571" name="l00571"></a><span class="lineno"> 571</span> env.balance(becky) == alicePreDelBal + beckyPreDelBal - acctDelFee);</div>
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno"> 572</span> </div>
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno"> 573</span> env.close();</div>
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno"> 574</span> BEAST_EXPECT(!env.closed()-&gt;exists(aliceAcctKey));</div>
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"> 575</span> }</div>
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno"> 576</span> </div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"> 577</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1AccountDelete__test.html#aa631e36dc0eb14c7b60191138bc1c548"> 578</a></span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#aa631e36dc0eb14c7b60191138bc1c548">testTooManyOffers</a>()</div>
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno"> 579</span> {</div>
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno"> 580</span> <span class="comment">// Put enough offers in an account that we refuse to delete the account.</span></div>
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno"> 581</span> <span class="keyword">using namespace </span>jtx;</div>
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno"> 582</span> </div>
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno"> 583</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;Too many offers&quot;</span>);</div>
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno"> 584</span> </div>
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno"> 585</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{*<span class="keyword">this</span>};</div>
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno"> 586</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> alice(<span class="stringliteral">&quot;alice&quot;</span>);</div>
<div class="line"><a id="l00587" name="l00587"></a><span class="lineno"> 587</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> gw(<span class="stringliteral">&quot;gw&quot;</span>);</div>
<div class="line"><a id="l00588" name="l00588"></a><span class="lineno"> 588</span> </div>
<div class="line"><a id="l00589" name="l00589"></a><span class="lineno"> 589</span> <span class="comment">// Fund alice well so she can afford the reserve on the offers.</span></div>
<div class="line"><a id="l00590" name="l00590"></a><span class="lineno"> 590</span> env.fund(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(10000000), alice, gw);</div>
<div class="line"><a id="l00591" name="l00591"></a><span class="lineno"> 591</span> env.close();</div>
<div class="line"><a id="l00592" name="l00592"></a><span class="lineno"> 592</span> </div>
<div class="line"><a id="l00593" name="l00593"></a><span class="lineno"> 593</span> <span class="comment">// To increase the number of Books affected, change the currency of</span></div>
<div class="line"><a id="l00594" name="l00594"></a><span class="lineno"> 594</span> <span class="comment">// each offer.</span></div>
<div class="line"><a id="l00595" name="l00595"></a><span class="lineno"> 595</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> currency{<span class="stringliteral">&quot;AAA&quot;</span>};</div>
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno"> 596</span> </div>
<div class="line"><a id="l00597" name="l00597"></a><span class="lineno"> 597</span> <span class="comment">// Alice creates 1001 offers. This is one greater than the number of</span></div>
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno"> 598</span> <span class="comment">// directory entries an AccountDelete will remove.</span></div>
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno"> 599</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> <span class="keyword">const</span> offerSeq0{env.seq(alice)};</div>
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno"> 600</span> <span class="keyword">constexpr</span> <span class="keywordtype">int</span> offerCount{1001};</div>
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno"> 601</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i{0}; i &lt; offerCount; ++i)</div>
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno"> 602</span> {</div>
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno"> 603</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>(alice, gw[currency](1), <a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(1)));</div>
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno"> 604</span> env.close();</div>
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno"> 605</span> </div>
<div class="line"><a id="l00606" name="l00606"></a><span class="lineno"> 606</span> <span class="comment">// Increment to next currency.</span></div>
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno"> 607</span> ++currency[0];</div>
<div class="line"><a id="l00608" name="l00608"></a><span class="lineno"> 608</span> <span class="keywordflow">if</span> (currency[0] &gt; <span class="charliteral">&#39;Z&#39;</span>)</div>
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno"> 609</span> {</div>
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno"> 610</span> currency[0] = <span class="charliteral">&#39;A&#39;</span>;</div>
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno"> 611</span> ++currency[1];</div>
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno"> 612</span> }</div>
<div class="line"><a id="l00613" name="l00613"></a><span class="lineno"> 613</span> <span class="keywordflow">if</span> (currency[1] &gt; <span class="charliteral">&#39;Z&#39;</span>)</div>
<div class="line"><a id="l00614" name="l00614"></a><span class="lineno"> 614</span> {</div>
<div class="line"><a id="l00615" name="l00615"></a><span class="lineno"> 615</span> currency[1] = <span class="charliteral">&#39;A&#39;</span>;</div>
<div class="line"><a id="l00616" name="l00616"></a><span class="lineno"> 616</span> ++currency[2];</div>
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno"> 617</span> }</div>
<div class="line"><a id="l00618" name="l00618"></a><span class="lineno"> 618</span> <span class="keywordflow">if</span> (currency[2] &gt; <span class="charliteral">&#39;Z&#39;</span>)</div>
<div class="line"><a id="l00619" name="l00619"></a><span class="lineno"> 619</span> {</div>
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno"> 620</span> currency[0] = <span class="charliteral">&#39;A&#39;</span>;</div>
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno"> 621</span> currency[1] = <span class="charliteral">&#39;A&#39;</span>;</div>
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno"> 622</span> currency[2] = <span class="charliteral">&#39;A&#39;</span>;</div>
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"> 623</span> }</div>
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno"> 624</span> }</div>
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno"> 625</span> </div>
<div class="line"><a id="l00626" name="l00626"></a><span class="lineno"> 626</span> <span class="comment">// Close enough ledgers to be able to delete alice&#39;s account.</span></div>
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno"> 627</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ab5498b455814e9a3ebe57c96170a6bcd">incLgrSeqForAccDel</a>(env, alice);</div>
<div class="line"><a id="l00628" name="l00628"></a><span class="lineno"> 628</span> </div>
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno"> 629</span> <span class="comment">// Verify the existence of the expected ledger entries.</span></div>
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno"> 630</span> <a class="code hl_struct" href="structripple_1_1Keylet.html">Keylet</a> <span class="keyword">const</span> aliceOwnerDirKey{<a class="code hl_function" href="namespaceripple_1_1keylet.html#acd4d51d467fc6e75745baf179a7965ef">keylet::ownerDir</a>(alice.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>())};</div>
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno"> 631</span> {</div>
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno"> 632</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;ReadView const&gt;</a> closed{env.closed()};</div>
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno"> 633</span> BEAST_EXPECT(closed-&gt;exists(<a class="code hl_function" href="namespaceripple_1_1keylet.html#aa756e0f59b26042ed00a4d0ba6e96951">keylet::account</a>(alice.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>())));</div>
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno"> 634</span> BEAST_EXPECT(closed-&gt;exists(aliceOwnerDirKey));</div>
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno"> 635</span> </div>
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno"> 636</span> <span class="comment">// alice&#39;s directory nodes.</span></div>
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno"> 637</span> <span class="keywordflow">for</span> (<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> i{0}; i &lt; ((offerCount / 32) + 1); ++i)</div>
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno"> 638</span> BEAST_EXPECT(closed-&gt;exists(<a class="code hl_function" href="namespaceripple_1_1keylet.html#aaa5be5f268b3d5d79e99ce5bcbc4fab2">keylet::page</a>(aliceOwnerDirKey, i)));</div>
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno"> 639</span> </div>
<div class="line"><a id="l00640" name="l00640"></a><span class="lineno"> 640</span> <span class="comment">// alice&#39;s offers.</span></div>
<div class="line"><a id="l00641" name="l00641"></a><span class="lineno"> 641</span> <span class="keywordflow">for</span> (<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> i{0}; i &lt; offerCount; ++i)</div>
<div class="line"><a id="l00642" name="l00642"></a><span class="lineno"> 642</span> BEAST_EXPECT(</div>
<div class="line"><a id="l00643" name="l00643"></a><span class="lineno"> 643</span> closed-&gt;exists(<a class="code hl_function" href="namespaceripple_1_1keylet.html#aeffddd45805feb6cc0678738b5c21072">keylet::offer</a>(alice.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>(), offerSeq0 + i)));</div>
<div class="line"><a id="l00644" name="l00644"></a><span class="lineno"> 644</span> }</div>
<div class="line"><a id="l00645" name="l00645"></a><span class="lineno"> 645</span> </div>
<div class="line"><a id="l00646" name="l00646"></a><span class="lineno"> 646</span> <span class="comment">// Delete alice&#39;s account. Should fail because she has too many</span></div>
<div class="line"><a id="l00647" name="l00647"></a><span class="lineno"> 647</span> <span class="comment">// offers in her directory.</span></div>
<div class="line"><a id="l00648" name="l00648"></a><span class="lineno"> 648</span> <span class="keyword">auto</span> <span class="keyword">const</span> acctDelFee{<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(env.current()-&gt;fees().increment)};</div>
<div class="line"><a id="l00649" name="l00649"></a><span class="lineno"> 649</span> </div>
<div class="line"><a id="l00650" name="l00650"></a><span class="lineno"> 650</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(alice, gw), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4ac88fc0c8fed663cca3ccde623c0f3057">tefTOO_BIG</a>));</div>
<div class="line"><a id="l00651" name="l00651"></a><span class="lineno"> 651</span> </div>
<div class="line"><a id="l00652" name="l00652"></a><span class="lineno"> 652</span> <span class="comment">// Cancel one of alice&#39;s offers. Then the account delete can succeed.</span></div>
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno"> 653</span> env.require(<a class="code hl_typedef" href="namespaceripple_1_1test_1_1jtx.html#a3beb715a43d7e5bc771c333529bbf92d">offers</a>(alice, offerCount));</div>
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno"> 654</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#afd83a8b3855491e6341e1753822f7dc0">offer_cancel</a>(alice, offerSeq0));</div>
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno"> 655</span> env.close();</div>
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno"> 656</span> env.require(<a class="code hl_typedef" href="namespaceripple_1_1test_1_1jtx.html#a3beb715a43d7e5bc771c333529bbf92d">offers</a>(alice, offerCount - 1));</div>
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno"> 657</span> </div>
<div class="line"><a id="l00658" name="l00658"></a><span class="lineno"> 658</span> <span class="comment">// alice successfully deletes her account.</span></div>
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno"> 659</span> <span class="keyword">auto</span> <span class="keyword">const</span> alicePreDelBal{env.balance(alice)};</div>
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno"> 660</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(alice, gw), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee));</div>
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno"> 661</span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a3a2e08d09c040d83aa23d75f8b0fb58d">verifyDeliveredAmount</a>(env, alicePreDelBal - acctDelFee);</div>
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno"> 662</span> env.close();</div>
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno"> 663</span> </div>
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno"> 664</span> <span class="comment">// Verify that alice&#39;s account root is gone as well as her directory</span></div>
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno"> 665</span> <span class="comment">// nodes and all of her offers.</span></div>
<div class="line"><a id="l00666" name="l00666"></a><span class="lineno"> 666</span> {</div>
<div class="line"><a id="l00667" name="l00667"></a><span class="lineno"> 667</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;ReadView const&gt;</a> closed{env.closed()};</div>
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno"> 668</span> BEAST_EXPECT(!closed-&gt;exists(<a class="code hl_function" href="namespaceripple_1_1keylet.html#aa756e0f59b26042ed00a4d0ba6e96951">keylet::account</a>(alice.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>())));</div>
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno"> 669</span> BEAST_EXPECT(!closed-&gt;exists(aliceOwnerDirKey));</div>
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno"> 670</span> </div>
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno"> 671</span> <span class="comment">// alice&#39;s former directory nodes.</span></div>
<div class="line"><a id="l00672" name="l00672"></a><span class="lineno"> 672</span> <span class="keywordflow">for</span> (<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> i{0}; i &lt; ((offerCount / 32) + 1); ++i)</div>
<div class="line"><a id="l00673" name="l00673"></a><span class="lineno"> 673</span> BEAST_EXPECT(</div>
<div class="line"><a id="l00674" name="l00674"></a><span class="lineno"> 674</span> !closed-&gt;exists(<a class="code hl_function" href="namespaceripple_1_1keylet.html#aaa5be5f268b3d5d79e99ce5bcbc4fab2">keylet::page</a>(aliceOwnerDirKey, i)));</div>
<div class="line"><a id="l00675" name="l00675"></a><span class="lineno"> 675</span> </div>
<div class="line"><a id="l00676" name="l00676"></a><span class="lineno"> 676</span> <span class="comment">// alice&#39;s former offers.</span></div>
<div class="line"><a id="l00677" name="l00677"></a><span class="lineno"> 677</span> <span class="keywordflow">for</span> (<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> i{0}; i &lt; offerCount; ++i)</div>
<div class="line"><a id="l00678" name="l00678"></a><span class="lineno"> 678</span> BEAST_EXPECT(</div>
<div class="line"><a id="l00679" name="l00679"></a><span class="lineno"> 679</span> !closed-&gt;exists(<a class="code hl_function" href="namespaceripple_1_1keylet.html#aeffddd45805feb6cc0678738b5c21072">keylet::offer</a>(alice.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>(), offerSeq0 + i)));</div>
<div class="line"><a id="l00680" name="l00680"></a><span class="lineno"> 680</span> }</div>
<div class="line"><a id="l00681" name="l00681"></a><span class="lineno"> 681</span> }</div>
<div class="line"><a id="l00682" name="l00682"></a><span class="lineno"> 682</span> </div>
<div class="line"><a id="l00683" name="l00683"></a><span class="lineno"> 683</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1AccountDelete__test.html#af9b88be1918a8fe91a3c7cd9d54207de"> 684</a></span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#af9b88be1918a8fe91a3c7cd9d54207de">testImplicitlyCreatedTrustline</a>()</div>
<div class="line"><a id="l00685" name="l00685"></a><span class="lineno"> 685</span> {</div>
<div class="line"><a id="l00686" name="l00686"></a><span class="lineno"> 686</span> <span class="comment">// Show that a trust line that is implicitly created by offer crossing</span></div>
<div class="line"><a id="l00687" name="l00687"></a><span class="lineno"> 687</span> <span class="comment">// prevents an account from being deleted.</span></div>
<div class="line"><a id="l00688" name="l00688"></a><span class="lineno"> 688</span> <span class="keyword">using namespace </span>jtx;</div>
<div class="line"><a id="l00689" name="l00689"></a><span class="lineno"> 689</span> </div>
<div class="line"><a id="l00690" name="l00690"></a><span class="lineno"> 690</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;Implicitly created trust line&quot;</span>);</div>
<div class="line"><a id="l00691" name="l00691"></a><span class="lineno"> 691</span> </div>
<div class="line"><a id="l00692" name="l00692"></a><span class="lineno"> 692</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{*<span class="keyword">this</span>};</div>
<div class="line"><a id="l00693" name="l00693"></a><span class="lineno"> 693</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> alice{<span class="stringliteral">&quot;alice&quot;</span>};</div>
<div class="line"><a id="l00694" name="l00694"></a><span class="lineno"> 694</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> gw{<span class="stringliteral">&quot;gw&quot;</span>};</div>
<div class="line"><a id="l00695" name="l00695"></a><span class="lineno"> 695</span> <span class="keyword">auto</span> <span class="keyword">const</span> BUX{gw[<span class="stringliteral">&quot;BUX&quot;</span>]};</div>
<div class="line"><a id="l00696" name="l00696"></a><span class="lineno"> 696</span> </div>
<div class="line"><a id="l00697" name="l00697"></a><span class="lineno"> 697</span> env.fund(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(10000), alice, gw);</div>
<div class="line"><a id="l00698" name="l00698"></a><span class="lineno"> 698</span> env.close();</div>
<div class="line"><a id="l00699" name="l00699"></a><span class="lineno"> 699</span> </div>
<div class="line"><a id="l00700" name="l00700"></a><span class="lineno"> 700</span> <span class="comment">// alice creates an offer that, if crossed, will implicitly create</span></div>
<div class="line"><a id="l00701" name="l00701"></a><span class="lineno"> 701</span> <span class="comment">// a trust line.</span></div>
<div class="line"><a id="l00702" name="l00702"></a><span class="lineno"> 702</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>(alice, BUX(30), <a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(30)));</div>
<div class="line"><a id="l00703" name="l00703"></a><span class="lineno"> 703</span> env.close();</div>
<div class="line"><a id="l00704" name="l00704"></a><span class="lineno"> 704</span> </div>
<div class="line"><a id="l00705" name="l00705"></a><span class="lineno"> 705</span> <span class="comment">// gw crosses alice&#39;s offer. alice should end up with BUX(30).</span></div>
<div class="line"><a id="l00706" name="l00706"></a><span class="lineno"> 706</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>(gw, <a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(30), BUX(30)));</div>
<div class="line"><a id="l00707" name="l00707"></a><span class="lineno"> 707</span> env.close();</div>
<div class="line"><a id="l00708" name="l00708"></a><span class="lineno"> 708</span> env.require(<a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1balance.html">balance</a>(alice, BUX(30)));</div>
<div class="line"><a id="l00709" name="l00709"></a><span class="lineno"> 709</span> </div>
<div class="line"><a id="l00710" name="l00710"></a><span class="lineno"> 710</span> <span class="comment">// Close enough ledgers to be able to delete alice&#39;s account.</span></div>
<div class="line"><a id="l00711" name="l00711"></a><span class="lineno"> 711</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ab5498b455814e9a3ebe57c96170a6bcd">incLgrSeqForAccDel</a>(env, alice);</div>
<div class="line"><a id="l00712" name="l00712"></a><span class="lineno"> 712</span> </div>
<div class="line"><a id="l00713" name="l00713"></a><span class="lineno"> 713</span> <span class="comment">// alice and gw can&#39;t delete their accounts because of the implicitly</span></div>
<div class="line"><a id="l00714" name="l00714"></a><span class="lineno"> 714</span> <span class="comment">// created trust line.</span></div>
<div class="line"><a id="l00715" name="l00715"></a><span class="lineno"> 715</span> <span class="keyword">auto</span> <span class="keyword">const</span> acctDelFee{<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(env.current()-&gt;fees().increment)};</div>
<div class="line"><a id="l00716" name="l00716"></a><span class="lineno"> 716</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(alice, gw), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caa7460a5fac26c1d8abef55b8c1129150">tecHAS_OBLIGATIONS</a>));</div>
<div class="line"><a id="l00717" name="l00717"></a><span class="lineno"> 717</span> env.close();</div>
<div class="line"><a id="l00718" name="l00718"></a><span class="lineno"> 718</span> </div>
<div class="line"><a id="l00719" name="l00719"></a><span class="lineno"> 719</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(gw, alice), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caa7460a5fac26c1d8abef55b8c1129150">tecHAS_OBLIGATIONS</a>));</div>
<div class="line"><a id="l00720" name="l00720"></a><span class="lineno"> 720</span> env.close();</div>
<div class="line"><a id="l00721" name="l00721"></a><span class="lineno"> 721</span> {</div>
<div class="line"><a id="l00722" name="l00722"></a><span class="lineno"> 722</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;ReadView const&gt;</a> closed{env.closed()};</div>
<div class="line"><a id="l00723" name="l00723"></a><span class="lineno"> 723</span> BEAST_EXPECT(closed-&gt;exists(<a class="code hl_function" href="namespaceripple_1_1keylet.html#aa756e0f59b26042ed00a4d0ba6e96951">keylet::account</a>(alice.id())));</div>
<div class="line"><a id="l00724" name="l00724"></a><span class="lineno"> 724</span> BEAST_EXPECT(closed-&gt;exists(<a class="code hl_function" href="namespaceripple_1_1keylet.html#aa756e0f59b26042ed00a4d0ba6e96951">keylet::account</a>(gw.id())));</div>
<div class="line"><a id="l00725" name="l00725"></a><span class="lineno"> 725</span> }</div>
<div class="line"><a id="l00726" name="l00726"></a><span class="lineno"> 726</span> }</div>
<div class="line"><a id="l00727" name="l00727"></a><span class="lineno"> 727</span> </div>
<div class="line"><a id="l00728" name="l00728"></a><span class="lineno"> 728</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00729" name="l00729"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1AccountDelete__test.html#a2fb47d7436dbfb81c8114305d78adddd"> 729</a></span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a2fb47d7436dbfb81c8114305d78adddd">testBalanceTooSmallForFee</a>()</div>
<div class="line"><a id="l00730" name="l00730"></a><span class="lineno"> 730</span> {</div>
<div class="line"><a id="l00731" name="l00731"></a><span class="lineno"> 731</span> <span class="comment">// See what happens when an account with a balance less than the</span></div>
<div class="line"><a id="l00732" name="l00732"></a><span class="lineno"> 732</span> <span class="comment">// incremental reserve tries to delete itself.</span></div>
<div class="line"><a id="l00733" name="l00733"></a><span class="lineno"> 733</span> <span class="keyword">using namespace </span>jtx;</div>
<div class="line"><a id="l00734" name="l00734"></a><span class="lineno"> 734</span> </div>
<div class="line"><a id="l00735" name="l00735"></a><span class="lineno"> 735</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;Balance too small for fee&quot;</span>);</div>
<div class="line"><a id="l00736" name="l00736"></a><span class="lineno"> 736</span> </div>
<div class="line"><a id="l00737" name="l00737"></a><span class="lineno"> 737</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{*<span class="keyword">this</span>};</div>
<div class="line"><a id="l00738" name="l00738"></a><span class="lineno"> 738</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> alice(<span class="stringliteral">&quot;alice&quot;</span>);</div>
<div class="line"><a id="l00739" name="l00739"></a><span class="lineno"> 739</span> </div>
<div class="line"><a id="l00740" name="l00740"></a><span class="lineno"> 740</span> <span class="comment">// Note that the fee structure for unit tests does not match the fees</span></div>
<div class="line"><a id="l00741" name="l00741"></a><span class="lineno"> 741</span> <span class="comment">// on the production network (October 2019). Unit tests have a base</span></div>
<div class="line"><a id="l00742" name="l00742"></a><span class="lineno"> 742</span> <span class="comment">// reserve of 200 XRP.</span></div>
<div class="line"><a id="l00743" name="l00743"></a><span class="lineno"> 743</span> env.fund(env.current()-&gt;fees().accountReserve(0), <a class="code hl_enumvalue" href="namespaceripple_1_1test.html#acf39cc44acdd6b5089f2076897fa3911af34d3a138958b0d338875bb910a39cf6">noripple</a>(alice));</div>
<div class="line"><a id="l00744" name="l00744"></a><span class="lineno"> 744</span> env.close();</div>
<div class="line"><a id="l00745" name="l00745"></a><span class="lineno"> 745</span> </div>
<div class="line"><a id="l00746" name="l00746"></a><span class="lineno"> 746</span> <span class="comment">// Burn a chunk of alice&#39;s funds so she only has 1 XRP remaining in</span></div>
<div class="line"><a id="l00747" name="l00747"></a><span class="lineno"> 747</span> <span class="comment">// her account.</span></div>
<div class="line"><a id="l00748" name="l00748"></a><span class="lineno"> 748</span> env(<a class="code hl_enumvalue" href="namespaceripple.html#ac34a69f56216ea1e430c09ba049bf0aea5483bf26dec486ec0175e2a3ca816a0a">noop</a>(alice), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(env.balance(alice) - <a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(1)));</div>
<div class="line"><a id="l00749" name="l00749"></a><span class="lineno"> 749</span> env.close();</div>
<div class="line"><a id="l00750" name="l00750"></a><span class="lineno"> 750</span> </div>
<div class="line"><a id="l00751" name="l00751"></a><span class="lineno"> 751</span> <span class="keyword">auto</span> <span class="keyword">const</span> acctDelFee{<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(env.current()-&gt;fees().increment)};</div>
<div class="line"><a id="l00752" name="l00752"></a><span class="lineno"> 752</span> BEAST_EXPECT(acctDelFee &gt; env.balance(alice));</div>
<div class="line"><a id="l00753" name="l00753"></a><span class="lineno"> 753</span> </div>
<div class="line"><a id="l00754" name="l00754"></a><span class="lineno"> 754</span> <span class="comment">// alice attempts to delete her account even though she can&#39;t pay</span></div>
<div class="line"><a id="l00755" name="l00755"></a><span class="lineno"> 755</span> <span class="comment">// the full fee. She specifies a fee that is larger than her balance.</span></div>
<div class="line"><a id="l00756" name="l00756"></a><span class="lineno"> 756</span> <span class="comment">//</span></div>
<div class="line"><a id="l00757" name="l00757"></a><span class="lineno"> 757</span> <span class="comment">// The balance of env.master should not change.</span></div>
<div class="line"><a id="l00758" name="l00758"></a><span class="lineno"> 758</span> <span class="keyword">auto</span> <span class="keyword">const</span> masterBalance{env.balance(env.master)};</div>
<div class="line"><a id="l00759" name="l00759"></a><span class="lineno"> 759</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(alice, env.<a class="code hl_variable" href="classripple_1_1test_1_1jtx_1_1Account.html#a7673e52d5c91125db2ae5ce7c10d4a14">master</a>),</div>
<div class="line"><a id="l00760" name="l00760"></a><span class="lineno"> 760</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee),</div>
<div class="line"><a id="l00761" name="l00761"></a><span class="lineno"> 761</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fa48941f01fb3df9460afe5bbb9fa76ba1">terINSUF_FEE_B</a>));</div>
<div class="line"><a id="l00762" name="l00762"></a><span class="lineno"> 762</span> env.close();</div>
<div class="line"><a id="l00763" name="l00763"></a><span class="lineno"> 763</span> {</div>
<div class="line"><a id="l00764" name="l00764"></a><span class="lineno"> 764</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;ReadView const&gt;</a> <span class="keyword">const</span> closed{env.closed()};</div>
<div class="line"><a id="l00765" name="l00765"></a><span class="lineno"> 765</span> BEAST_EXPECT(closed-&gt;exists(<a class="code hl_function" href="namespaceripple_1_1keylet.html#aa756e0f59b26042ed00a4d0ba6e96951">keylet::account</a>(alice.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>())));</div>
<div class="line"><a id="l00766" name="l00766"></a><span class="lineno"> 766</span> BEAST_EXPECT(env.balance(env.master) == masterBalance);</div>
<div class="line"><a id="l00767" name="l00767"></a><span class="lineno"> 767</span> }</div>
<div class="line"><a id="l00768" name="l00768"></a><span class="lineno"> 768</span> </div>
<div class="line"><a id="l00769" name="l00769"></a><span class="lineno"> 769</span> <span class="comment">// alice again attempts to delete her account. This time she specifies</span></div>
<div class="line"><a id="l00770" name="l00770"></a><span class="lineno"> 770</span> <span class="comment">// her current balance in XRP. Again the transaction fails.</span></div>
<div class="line"><a id="l00771" name="l00771"></a><span class="lineno"> 771</span> BEAST_EXPECT(env.balance(alice) == <a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(1));</div>
<div class="line"><a id="l00772" name="l00772"></a><span class="lineno"> 772</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(alice, env.<a class="code hl_variable" href="classripple_1_1test_1_1jtx_1_1Account.html#a7673e52d5c91125db2ae5ce7c10d4a14">master</a>), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(1)), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#a260d2970ac1119109937ed1c5d4ca962a595a44bbc04dffad91a353227660d6ba">telINSUF_FEE_P</a>));</div>
<div class="line"><a id="l00773" name="l00773"></a><span class="lineno"> 773</span> env.close();</div>
<div class="line"><a id="l00774" name="l00774"></a><span class="lineno"> 774</span> {</div>
<div class="line"><a id="l00775" name="l00775"></a><span class="lineno"> 775</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;ReadView const&gt;</a> closed{env.closed()};</div>
<div class="line"><a id="l00776" name="l00776"></a><span class="lineno"> 776</span> BEAST_EXPECT(closed-&gt;exists(<a class="code hl_function" href="namespaceripple_1_1keylet.html#aa756e0f59b26042ed00a4d0ba6e96951">keylet::account</a>(alice.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">id</a>())));</div>
<div class="line"><a id="l00777" name="l00777"></a><span class="lineno"> 777</span> BEAST_EXPECT(env.balance(env.master) == masterBalance);</div>
<div class="line"><a id="l00778" name="l00778"></a><span class="lineno"> 778</span> }</div>
<div class="line"><a id="l00779" name="l00779"></a><span class="lineno"> 779</span> }</div>
<div class="line"><a id="l00780" name="l00780"></a><span class="lineno"> 780</span> </div>
<div class="line"><a id="l00781" name="l00781"></a><span class="lineno"> 781</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00782" name="l00782"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1AccountDelete__test.html#a031c45de38a9ea352bf440f6bd9b60e8"> 782</a></span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a031c45de38a9ea352bf440f6bd9b60e8">testWithTickets</a>()</div>
<div class="line"><a id="l00783" name="l00783"></a><span class="lineno"> 783</span> {</div>
<div class="line"><a id="l00784" name="l00784"></a><span class="lineno"> 784</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;With Tickets&quot;</span>);</div>
<div class="line"><a id="l00785" name="l00785"></a><span class="lineno"> 785</span> </div>
<div class="line"><a id="l00786" name="l00786"></a><span class="lineno"> 786</span> <span class="keyword">using namespace </span>test::jtx;</div>
<div class="line"><a id="l00787" name="l00787"></a><span class="lineno"> 787</span> </div>
<div class="line"><a id="l00788" name="l00788"></a><span class="lineno"> 788</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> alice{<span class="stringliteral">&quot;alice&quot;</span>};</div>
<div class="line"><a id="l00789" name="l00789"></a><span class="lineno"> 789</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> bob{<span class="stringliteral">&quot;bob&quot;</span>};</div>
<div class="line"><a id="l00790" name="l00790"></a><span class="lineno"> 790</span> </div>
<div class="line"><a id="l00791" name="l00791"></a><span class="lineno"> 791</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{*<span class="keyword">this</span>};</div>
<div class="line"><a id="l00792" name="l00792"></a><span class="lineno"> 792</span> env.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#ae2349266cb09d1f1c3de06606ebdf9e2">fund</a>(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(100000), alice, bob);</div>
<div class="line"><a id="l00793" name="l00793"></a><span class="lineno"> 793</span> env.close();</div>
<div class="line"><a id="l00794" name="l00794"></a><span class="lineno"> 794</span> </div>
<div class="line"><a id="l00795" name="l00795"></a><span class="lineno"> 795</span> <span class="comment">// bob grabs as many tickets as he is allowed to have.</span></div>
<div class="line"><a id="l00796" name="l00796"></a><span class="lineno"> 796</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> <span class="keyword">const</span> ticketSeq{env.seq(bob) + 1};</div>
<div class="line"><a id="l00797" name="l00797"></a><span class="lineno"> 797</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1ticket.html#a1e24650b39bab99fc665d9f80365cc27">ticket::create</a>(bob, 250));</div>
<div class="line"><a id="l00798" name="l00798"></a><span class="lineno"> 798</span> env.close();</div>
<div class="line"><a id="l00799" name="l00799"></a><span class="lineno"> 799</span> env.require(<a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1owners.html">owners</a>(bob, 250));</div>
<div class="line"><a id="l00800" name="l00800"></a><span class="lineno"> 800</span> </div>
<div class="line"><a id="l00801" name="l00801"></a><span class="lineno"> 801</span> {</div>
<div class="line"><a id="l00802" name="l00802"></a><span class="lineno"> 802</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;ReadView const&gt;</a> closed{env.closed()};</div>
<div class="line"><a id="l00803" name="l00803"></a><span class="lineno"> 803</span> BEAST_EXPECT(closed-&gt;exists(<a class="code hl_function" href="namespaceripple_1_1keylet.html#aa756e0f59b26042ed00a4d0ba6e96951">keylet::account</a>(bob.id())));</div>
<div class="line"><a id="l00804" name="l00804"></a><span class="lineno"> 804</span> <span class="keywordflow">for</span> (<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> i = 0; i &lt; 250; ++i)</div>
<div class="line"><a id="l00805" name="l00805"></a><span class="lineno"> 805</span> {</div>
<div class="line"><a id="l00806" name="l00806"></a><span class="lineno"> 806</span> BEAST_EXPECT(</div>
<div class="line"><a id="l00807" name="l00807"></a><span class="lineno"> 807</span> closed-&gt;exists(<a class="code hl_variable" href="namespaceripple_1_1keylet.html#aee01252a0cd33b8d4f4ad38982c0dcab">keylet::ticket</a>(bob.id(), ticketSeq + i)));</div>
<div class="line"><a id="l00808" name="l00808"></a><span class="lineno"> 808</span> }</div>
<div class="line"><a id="l00809" name="l00809"></a><span class="lineno"> 809</span> }</div>
<div class="line"><a id="l00810" name="l00810"></a><span class="lineno"> 810</span> </div>
<div class="line"><a id="l00811" name="l00811"></a><span class="lineno"> 811</span> <span class="comment">// Close enough ledgers to be able to delete bob&#39;s account.</span></div>
<div class="line"><a id="l00812" name="l00812"></a><span class="lineno"> 812</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ab5498b455814e9a3ebe57c96170a6bcd">incLgrSeqForAccDel</a>(env, bob);</div>
<div class="line"><a id="l00813" name="l00813"></a><span class="lineno"> 813</span> </div>
<div class="line"><a id="l00814" name="l00814"></a><span class="lineno"> 814</span> <span class="comment">// bob deletes his account using a ticket. bob&#39;s account and all</span></div>
<div class="line"><a id="l00815" name="l00815"></a><span class="lineno"> 815</span> <span class="comment">// of his tickets should be removed from the ledger.</span></div>
<div class="line"><a id="l00816" name="l00816"></a><span class="lineno"> 816</span> <span class="keyword">auto</span> <span class="keyword">const</span> acctDelFee{<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(env.current()-&gt;fees().increment)};</div>
<div class="line"><a id="l00817" name="l00817"></a><span class="lineno"> 817</span> <span class="keyword">auto</span> <span class="keyword">const</span> bobOldBalance{env.balance(bob)};</div>
<div class="line"><a id="l00818" name="l00818"></a><span class="lineno"> 818</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(bob, alice), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ticket_1_1use.html">ticket::use</a>(ticketSeq), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee));</div>
<div class="line"><a id="l00819" name="l00819"></a><span class="lineno"> 819</span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a3a2e08d09c040d83aa23d75f8b0fb58d">verifyDeliveredAmount</a>(env, bobOldBalance - acctDelFee);</div>
<div class="line"><a id="l00820" name="l00820"></a><span class="lineno"> 820</span> env.close();</div>
<div class="line"><a id="l00821" name="l00821"></a><span class="lineno"> 821</span> {</div>
<div class="line"><a id="l00822" name="l00822"></a><span class="lineno"> 822</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;ReadView const&gt;</a> closed{env.closed()};</div>
<div class="line"><a id="l00823" name="l00823"></a><span class="lineno"> 823</span> BEAST_EXPECT(!closed-&gt;exists(<a class="code hl_function" href="namespaceripple_1_1keylet.html#aa756e0f59b26042ed00a4d0ba6e96951">keylet::account</a>(bob.id())));</div>
<div class="line"><a id="l00824" name="l00824"></a><span class="lineno"> 824</span> <span class="keywordflow">for</span> (<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> i = 0; i &lt; 250; ++i)</div>
<div class="line"><a id="l00825" name="l00825"></a><span class="lineno"> 825</span> {</div>
<div class="line"><a id="l00826" name="l00826"></a><span class="lineno"> 826</span> BEAST_EXPECT(</div>
<div class="line"><a id="l00827" name="l00827"></a><span class="lineno"> 827</span> !closed-&gt;exists(<a class="code hl_variable" href="namespaceripple_1_1keylet.html#aee01252a0cd33b8d4f4ad38982c0dcab">keylet::ticket</a>(bob.id(), ticketSeq + i)));</div>
<div class="line"><a id="l00828" name="l00828"></a><span class="lineno"> 828</span> }</div>
<div class="line"><a id="l00829" name="l00829"></a><span class="lineno"> 829</span> }</div>
<div class="line"><a id="l00830" name="l00830"></a><span class="lineno"> 830</span> }</div>
<div class="line"><a id="l00831" name="l00831"></a><span class="lineno"> 831</span> </div>
<div class="line"><a id="l00832" name="l00832"></a><span class="lineno"> 832</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00833" name="l00833"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1AccountDelete__test.html#a1b94b395084df1cf1ab3be9c1a68e452"> 833</a></span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a1b94b395084df1cf1ab3be9c1a68e452">testDest</a>()</div>
<div class="line"><a id="l00834" name="l00834"></a><span class="lineno"> 834</span> {</div>
<div class="line"><a id="l00835" name="l00835"></a><span class="lineno"> 835</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;Destination Constraints&quot;</span>);</div>
<div class="line"><a id="l00836" name="l00836"></a><span class="lineno"> 836</span> </div>
<div class="line"><a id="l00837" name="l00837"></a><span class="lineno"> 837</span> <span class="keyword">using namespace </span>test::jtx;</div>
<div class="line"><a id="l00838" name="l00838"></a><span class="lineno"> 838</span> </div>
<div class="line"><a id="l00839" name="l00839"></a><span class="lineno"> 839</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> alice{<span class="stringliteral">&quot;alice&quot;</span>};</div>
<div class="line"><a id="l00840" name="l00840"></a><span class="lineno"> 840</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> becky{<span class="stringliteral">&quot;becky&quot;</span>};</div>
<div class="line"><a id="l00841" name="l00841"></a><span class="lineno"> 841</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> carol{<span class="stringliteral">&quot;carol&quot;</span>};</div>
<div class="line"><a id="l00842" name="l00842"></a><span class="lineno"> 842</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> daria{<span class="stringliteral">&quot;daria&quot;</span>};</div>
<div class="line"><a id="l00843" name="l00843"></a><span class="lineno"> 843</span> </div>
<div class="line"><a id="l00844" name="l00844"></a><span class="lineno"> 844</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{*<span class="keyword">this</span>};</div>
<div class="line"><a id="l00845" name="l00845"></a><span class="lineno"> 845</span> env.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#ae2349266cb09d1f1c3de06606ebdf9e2">fund</a>(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(100000), alice, becky, carol);</div>
<div class="line"><a id="l00846" name="l00846"></a><span class="lineno"> 846</span> env.close();</div>
<div class="line"><a id="l00847" name="l00847"></a><span class="lineno"> 847</span> </div>
<div class="line"><a id="l00848" name="l00848"></a><span class="lineno"> 848</span> <span class="comment">// alice sets the lsfDepositAuth flag on her account. This should</span></div>
<div class="line"><a id="l00849" name="l00849"></a><span class="lineno"> 849</span> <span class="comment">// prevent becky from deleting her account while using alice as the</span></div>
<div class="line"><a id="l00850" name="l00850"></a><span class="lineno"> 850</span> <span class="comment">// destination.</span></div>
<div class="line"><a id="l00851" name="l00851"></a><span class="lineno"> 851</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a50cacef3867fc01273aa9c29231f9a7c">fset</a>(alice, <a class="code hl_variable" href="namespaceripple.html#a1d8ec9af2fd805d04e032c52f6968211">asfDepositAuth</a>));</div>
<div class="line"><a id="l00852" name="l00852"></a><span class="lineno"> 852</span> </div>
<div class="line"><a id="l00853" name="l00853"></a><span class="lineno"> 853</span> <span class="comment">// carol requires a destination tag.</span></div>
<div class="line"><a id="l00854" name="l00854"></a><span class="lineno"> 854</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a50cacef3867fc01273aa9c29231f9a7c">fset</a>(carol, <a class="code hl_variable" href="namespaceripple.html#a2e3220cb8c660141f5300a9e38841295">asfRequireDest</a>));</div>
<div class="line"><a id="l00855" name="l00855"></a><span class="lineno"> 855</span> env.close();</div>
<div class="line"><a id="l00856" name="l00856"></a><span class="lineno"> 856</span> </div>
<div class="line"><a id="l00857" name="l00857"></a><span class="lineno"> 857</span> <span class="comment">// Close enough ledgers to be able to delete becky&#39;s account.</span></div>
<div class="line"><a id="l00858" name="l00858"></a><span class="lineno"> 858</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ab5498b455814e9a3ebe57c96170a6bcd">incLgrSeqForAccDel</a>(env, becky);</div>
<div class="line"><a id="l00859" name="l00859"></a><span class="lineno"> 859</span> </div>
<div class="line"><a id="l00860" name="l00860"></a><span class="lineno"> 860</span> <span class="comment">// becky attempts to delete her account using daria as the destination.</span></div>
<div class="line"><a id="l00861" name="l00861"></a><span class="lineno"> 861</span> <span class="comment">// Since daria is not in the ledger the delete attempt fails.</span></div>
<div class="line"><a id="l00862" name="l00862"></a><span class="lineno"> 862</span> <span class="keyword">auto</span> <span class="keyword">const</span> acctDelFee{<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(env.current()-&gt;fees().increment)};</div>
<div class="line"><a id="l00863" name="l00863"></a><span class="lineno"> 863</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(becky, daria), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca1207baad8c378dc23cd2fa4c4276844d">tecNO_DST</a>));</div>
<div class="line"><a id="l00864" name="l00864"></a><span class="lineno"> 864</span> env.close();</div>
<div class="line"><a id="l00865" name="l00865"></a><span class="lineno"> 865</span> </div>
<div class="line"><a id="l00866" name="l00866"></a><span class="lineno"> 866</span> <span class="comment">// becky attempts to delete her account, but carol requires a</span></div>
<div class="line"><a id="l00867" name="l00867"></a><span class="lineno"> 867</span> <span class="comment">// destination tag which becky has omitted.</span></div>
<div class="line"><a id="l00868" name="l00868"></a><span class="lineno"> 868</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(becky, carol), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caa3ac7c997274040539a497cadc280b22">tecDST_TAG_NEEDED</a>));</div>
<div class="line"><a id="l00869" name="l00869"></a><span class="lineno"> 869</span> env.close();</div>
<div class="line"><a id="l00870" name="l00870"></a><span class="lineno"> 870</span> </div>
<div class="line"><a id="l00871" name="l00871"></a><span class="lineno"> 871</span> <span class="comment">// becky attempts to delete her account, but alice won&#39;t take her XRP,</span></div>
<div class="line"><a id="l00872" name="l00872"></a><span class="lineno"> 872</span> <span class="comment">// so the delete is blocked.</span></div>
<div class="line"><a id="l00873" name="l00873"></a><span class="lineno"> 873</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(becky, alice), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca9af7057961bc54674f4a6c2dd8ed6ab9">tecNO_PERMISSION</a>));</div>
<div class="line"><a id="l00874" name="l00874"></a><span class="lineno"> 874</span> env.close();</div>
<div class="line"><a id="l00875" name="l00875"></a><span class="lineno"> 875</span> </div>
<div class="line"><a id="l00876" name="l00876"></a><span class="lineno"> 876</span> <span class="comment">// alice preauthorizes deposits from becky. Now becky can delete her</span></div>
<div class="line"><a id="l00877" name="l00877"></a><span class="lineno"> 877</span> <span class="comment">// account and forward the leftovers to alice.</span></div>
<div class="line"><a id="l00878" name="l00878"></a><span class="lineno"> 878</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1deposit.html#a662867f42cb3f468f2e8830fbd7e0d8a">deposit::auth</a>(alice, becky));</div>
<div class="line"><a id="l00879" name="l00879"></a><span class="lineno"> 879</span> env.close();</div>
<div class="line"><a id="l00880" name="l00880"></a><span class="lineno"> 880</span> </div>
<div class="line"><a id="l00881" name="l00881"></a><span class="lineno"> 881</span> <span class="keyword">auto</span> <span class="keyword">const</span> beckyOldBalance{env.balance(becky)};</div>
<div class="line"><a id="l00882" name="l00882"></a><span class="lineno"> 882</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(becky, alice), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee));</div>
<div class="line"><a id="l00883" name="l00883"></a><span class="lineno"> 883</span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a3a2e08d09c040d83aa23d75f8b0fb58d">verifyDeliveredAmount</a>(env, beckyOldBalance - acctDelFee);</div>
<div class="line"><a id="l00884" name="l00884"></a><span class="lineno"> 884</span> env.close();</div>
<div class="line"><a id="l00885" name="l00885"></a><span class="lineno"> 885</span> }</div>
<div class="line"><a id="l00886" name="l00886"></a><span class="lineno"> 886</span> </div>
<div class="line"><a id="l00887" name="l00887"></a><span class="lineno"> 887</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00888" name="l00888"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1AccountDelete__test.html#ab5a812d5effb7ab1a858baa257f088f7"> 888</a></span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#ab5a812d5effb7ab1a858baa257f088f7">testDestinationDepositAuthCredentials</a>()</div>
<div class="line"><a id="l00889" name="l00889"></a><span class="lineno"> 889</span> {</div>
<div class="line"><a id="l00890" name="l00890"></a><span class="lineno"> 890</span> {</div>
<div class="line"><a id="l00891" name="l00891"></a><span class="lineno"> 891</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(</div>
<div class="line"><a id="l00892" name="l00892"></a><span class="lineno"> 892</span> <span class="stringliteral">&quot;Destination Constraints with DepositPreauth and Credentials&quot;</span>);</div>
<div class="line"><a id="l00893" name="l00893"></a><span class="lineno"> 893</span> </div>
<div class="line"><a id="l00894" name="l00894"></a><span class="lineno"> 894</span> <span class="keyword">using namespace </span>test::jtx;</div>
<div class="line"><a id="l00895" name="l00895"></a><span class="lineno"> 895</span> </div>
<div class="line"><a id="l00896" name="l00896"></a><span class="lineno"> 896</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> alice{<span class="stringliteral">&quot;alice&quot;</span>};</div>
<div class="line"><a id="l00897" name="l00897"></a><span class="lineno"> 897</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> becky{<span class="stringliteral">&quot;becky&quot;</span>};</div>
<div class="line"><a id="l00898" name="l00898"></a><span class="lineno"> 898</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> carol{<span class="stringliteral">&quot;carol&quot;</span>};</div>
<div class="line"><a id="l00899" name="l00899"></a><span class="lineno"> 899</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> daria{<span class="stringliteral">&quot;daria&quot;</span>};</div>
<div class="line"><a id="l00900" name="l00900"></a><span class="lineno"> 900</span> </div>
<div class="line"><a id="l00901" name="l00901"></a><span class="lineno"> 901</span> <span class="keywordtype">char</span> <span class="keyword">const</span> credType[] = <span class="stringliteral">&quot;abcd&quot;</span>;</div>
<div class="line"><a id="l00902" name="l00902"></a><span class="lineno"> 902</span> </div>
<div class="line"><a id="l00903" name="l00903"></a><span class="lineno"> 903</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{*<span class="keyword">this</span>};</div>
<div class="line"><a id="l00904" name="l00904"></a><span class="lineno"> 904</span> env.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#ae2349266cb09d1f1c3de06606ebdf9e2">fund</a>(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(100000), alice, becky, carol, daria);</div>
<div class="line"><a id="l00905" name="l00905"></a><span class="lineno"> 905</span> env.close();</div>
<div class="line"><a id="l00906" name="l00906"></a><span class="lineno"> 906</span> </div>
<div class="line"><a id="l00907" name="l00907"></a><span class="lineno"> 907</span> <span class="comment">// carol issue credentials for becky</span></div>
<div class="line"><a id="l00908" name="l00908"></a><span class="lineno"> 908</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#a0529a6b1613da8aa0c2a8964b1820ac9">credentials::create</a>(becky, carol, credType));</div>
<div class="line"><a id="l00909" name="l00909"></a><span class="lineno"> 909</span> env.close();</div>
<div class="line"><a id="l00910" name="l00910"></a><span class="lineno"> 910</span> </div>
<div class="line"><a id="l00911" name="l00911"></a><span class="lineno"> 911</span> <span class="comment">// get credentials index</span></div>
<div class="line"><a id="l00912" name="l00912"></a><span class="lineno"> 912</span> <span class="keyword">auto</span> <span class="keyword">const</span> jv =</div>
<div class="line"><a id="l00913" name="l00913"></a><span class="lineno"> 913</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#ade27ecac76c7d1262720bd7f112cf28e">credentials::ledgerEntry</a>(env, becky, carol, credType);</div>
<div class="line"><a id="l00914" name="l00914"></a><span class="lineno"> 914</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span> credIdx = jv[jss::result][jss::index].asString();</div>
<div class="line"><a id="l00915" name="l00915"></a><span class="lineno"> 915</span> </div>
<div class="line"><a id="l00916" name="l00916"></a><span class="lineno"> 916</span> <span class="comment">// Close enough ledgers to be able to delete becky&#39;s account.</span></div>
<div class="line"><a id="l00917" name="l00917"></a><span class="lineno"> 917</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ab5498b455814e9a3ebe57c96170a6bcd">incLgrSeqForAccDel</a>(env, becky);</div>
<div class="line"><a id="l00918" name="l00918"></a><span class="lineno"> 918</span> </div>
<div class="line"><a id="l00919" name="l00919"></a><span class="lineno"> 919</span> <span class="keyword">auto</span> <span class="keyword">const</span> acctDelFee{<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(env.current()-&gt;fees().increment)};</div>
<div class="line"><a id="l00920" name="l00920"></a><span class="lineno"> 920</span> </div>
<div class="line"><a id="l00921" name="l00921"></a><span class="lineno"> 921</span> <span class="comment">// becky use credentials but they aren&#39;t accepted</span></div>
<div class="line"><a id="l00922" name="l00922"></a><span class="lineno"> 922</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(becky, alice),</div>
<div class="line"><a id="l00923" name="l00923"></a><span class="lineno"> 923</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1credentials_1_1ids.html">credentials::ids</a>({credIdx}),</div>
<div class="line"><a id="l00924" name="l00924"></a><span class="lineno"> 924</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee),</div>
<div class="line"><a id="l00925" name="l00925"></a><span class="lineno"> 925</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca949bc4765f151a8866814dafbd8ea558">tecBAD_CREDENTIALS</a>));</div>
<div class="line"><a id="l00926" name="l00926"></a><span class="lineno"> 926</span> env.close();</div>
<div class="line"><a id="l00927" name="l00927"></a><span class="lineno"> 927</span> </div>
<div class="line"><a id="l00928" name="l00928"></a><span class="lineno"> 928</span> {</div>
<div class="line"><a id="l00929" name="l00929"></a><span class="lineno"> 929</span> <span class="comment">// alice sets the lsfDepositAuth flag on her account. This</span></div>
<div class="line"><a id="l00930" name="l00930"></a><span class="lineno"> 930</span> <span class="comment">// should prevent becky from deleting her account while using</span></div>
<div class="line"><a id="l00931" name="l00931"></a><span class="lineno"> 931</span> <span class="comment">// alice as the destination.</span></div>
<div class="line"><a id="l00932" name="l00932"></a><span class="lineno"> 932</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a50cacef3867fc01273aa9c29231f9a7c">fset</a>(alice, <a class="code hl_variable" href="namespaceripple.html#a1d8ec9af2fd805d04e032c52f6968211">asfDepositAuth</a>));</div>
<div class="line"><a id="l00933" name="l00933"></a><span class="lineno"> 933</span> env.close();</div>
<div class="line"><a id="l00934" name="l00934"></a><span class="lineno"> 934</span> }</div>
<div class="line"><a id="l00935" name="l00935"></a><span class="lineno"> 935</span> </div>
<div class="line"><a id="l00936" name="l00936"></a><span class="lineno"> 936</span> <span class="comment">// Fail, credentials still not accepted</span></div>
<div class="line"><a id="l00937" name="l00937"></a><span class="lineno"> 937</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(becky, alice),</div>
<div class="line"><a id="l00938" name="l00938"></a><span class="lineno"> 938</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1credentials_1_1ids.html">credentials::ids</a>({credIdx}),</div>
<div class="line"><a id="l00939" name="l00939"></a><span class="lineno"> 939</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee),</div>
<div class="line"><a id="l00940" name="l00940"></a><span class="lineno"> 940</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca949bc4765f151a8866814dafbd8ea558">tecBAD_CREDENTIALS</a>));</div>
<div class="line"><a id="l00941" name="l00941"></a><span class="lineno"> 941</span> env.close();</div>
<div class="line"><a id="l00942" name="l00942"></a><span class="lineno"> 942</span> </div>
<div class="line"><a id="l00943" name="l00943"></a><span class="lineno"> 943</span> <span class="comment">// becky accept the credentials</span></div>
<div class="line"><a id="l00944" name="l00944"></a><span class="lineno"> 944</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#a3c554c809a810395ee98a696ca447fb5">credentials::accept</a>(becky, carol, credType));</div>
<div class="line"><a id="l00945" name="l00945"></a><span class="lineno"> 945</span> env.close();</div>
<div class="line"><a id="l00946" name="l00946"></a><span class="lineno"> 946</span> </div>
<div class="line"><a id="l00947" name="l00947"></a><span class="lineno"> 947</span> <span class="comment">// Fail, credentials doesnt belong to carol</span></div>
<div class="line"><a id="l00948" name="l00948"></a><span class="lineno"> 948</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(carol, alice),</div>
<div class="line"><a id="l00949" name="l00949"></a><span class="lineno"> 949</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1credentials_1_1ids.html">credentials::ids</a>({credIdx}),</div>
<div class="line"><a id="l00950" name="l00950"></a><span class="lineno"> 950</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee),</div>
<div class="line"><a id="l00951" name="l00951"></a><span class="lineno"> 951</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca949bc4765f151a8866814dafbd8ea558">tecBAD_CREDENTIALS</a>));</div>
<div class="line"><a id="l00952" name="l00952"></a><span class="lineno"> 952</span> </div>
<div class="line"><a id="l00953" name="l00953"></a><span class="lineno"> 953</span> <span class="comment">// Fail, no depositPreauth for provided credentials</span></div>
<div class="line"><a id="l00954" name="l00954"></a><span class="lineno"> 954</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(becky, alice),</div>
<div class="line"><a id="l00955" name="l00955"></a><span class="lineno"> 955</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1credentials_1_1ids.html">credentials::ids</a>({credIdx}),</div>
<div class="line"><a id="l00956" name="l00956"></a><span class="lineno"> 956</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee),</div>
<div class="line"><a id="l00957" name="l00957"></a><span class="lineno"> 957</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca9af7057961bc54674f4a6c2dd8ed6ab9">tecNO_PERMISSION</a>));</div>
<div class="line"><a id="l00958" name="l00958"></a><span class="lineno"> 958</span> env.close();</div>
<div class="line"><a id="l00959" name="l00959"></a><span class="lineno"> 959</span> </div>
<div class="line"><a id="l00960" name="l00960"></a><span class="lineno"> 960</span> <span class="comment">// alice create DepositPreauth Object</span></div>
<div class="line"><a id="l00961" name="l00961"></a><span class="lineno"> 961</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1deposit.html#ac0c24df5082c3715d3be7a4a7617b9d5">deposit::authCredentials</a>(alice, {{carol, credType}}));</div>
<div class="line"><a id="l00962" name="l00962"></a><span class="lineno"> 962</span> env.close();</div>
<div class="line"><a id="l00963" name="l00963"></a><span class="lineno"> 963</span> </div>
<div class="line"><a id="l00964" name="l00964"></a><span class="lineno"> 964</span> <span class="comment">// becky attempts to delete her account, but alice won&#39;t take her</span></div>
<div class="line"><a id="l00965" name="l00965"></a><span class="lineno"> 965</span> <span class="comment">// XRP, so the delete is blocked.</span></div>
<div class="line"><a id="l00966" name="l00966"></a><span class="lineno"> 966</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(becky, alice),</div>
<div class="line"><a id="l00967" name="l00967"></a><span class="lineno"> 967</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee),</div>
<div class="line"><a id="l00968" name="l00968"></a><span class="lineno"> 968</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca9af7057961bc54674f4a6c2dd8ed6ab9">tecNO_PERMISSION</a>));</div>
<div class="line"><a id="l00969" name="l00969"></a><span class="lineno"> 969</span> </div>
<div class="line"><a id="l00970" name="l00970"></a><span class="lineno"> 970</span> <span class="comment">// becky use empty credentials and can&#39;t delete account</span></div>
<div class="line"><a id="l00971" name="l00971"></a><span class="lineno"> 971</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(becky, alice),</div>
<div class="line"><a id="l00972" name="l00972"></a><span class="lineno"> 972</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee),</div>
<div class="line"><a id="l00973" name="l00973"></a><span class="lineno"> 973</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1credentials_1_1ids.html">credentials::ids</a>({}),</div>
<div class="line"><a id="l00974" name="l00974"></a><span class="lineno"> 974</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46a6c750a245b6efb84fdc4ab34dc010328">temMALFORMED</a>));</div>
<div class="line"><a id="l00975" name="l00975"></a><span class="lineno"> 975</span> </div>
<div class="line"><a id="l00976" name="l00976"></a><span class="lineno"> 976</span> <span class="comment">// becky use bad credentials and can&#39;t delete account</span></div>
<div class="line"><a id="l00977" name="l00977"></a><span class="lineno"> 977</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(becky, alice),</div>
<div class="line"><a id="l00978" name="l00978"></a><span class="lineno"> 978</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1credentials_1_1ids.html">credentials::ids</a>(</div>
<div class="line"><a id="l00979" name="l00979"></a><span class="lineno"> 979</span> {<span class="stringliteral">&quot;48004829F915654A81B11C4AB8218D96FED67F209B58328A72314FB6E&quot;</span></div>
<div class="line"><a id="l00980" name="l00980"></a><span class="lineno"> 980</span> <span class="stringliteral">&quot;A288BE4&quot;</span>}),</div>
<div class="line"><a id="l00981" name="l00981"></a><span class="lineno"> 981</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee),</div>
<div class="line"><a id="l00982" name="l00982"></a><span class="lineno"> 982</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca949bc4765f151a8866814dafbd8ea558">tecBAD_CREDENTIALS</a>));</div>
<div class="line"><a id="l00983" name="l00983"></a><span class="lineno"> 983</span> env.close();</div>
<div class="line"><a id="l00984" name="l00984"></a><span class="lineno"> 984</span> </div>
<div class="line"><a id="l00985" name="l00985"></a><span class="lineno"> 985</span> <span class="comment">// becky use credentials and can delete account</span></div>
<div class="line"><a id="l00986" name="l00986"></a><span class="lineno"> 986</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(becky, alice),</div>
<div class="line"><a id="l00987" name="l00987"></a><span class="lineno"> 987</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1credentials_1_1ids.html">credentials::ids</a>({credIdx}),</div>
<div class="line"><a id="l00988" name="l00988"></a><span class="lineno"> 988</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee));</div>
<div class="line"><a id="l00989" name="l00989"></a><span class="lineno"> 989</span> env.close();</div>
<div class="line"><a id="l00990" name="l00990"></a><span class="lineno"> 990</span> </div>
<div class="line"><a id="l00991" name="l00991"></a><span class="lineno"> 991</span> {</div>
<div class="line"><a id="l00992" name="l00992"></a><span class="lineno"> 992</span> <span class="comment">// check that credential object deleted too</span></div>
<div class="line"><a id="l00993" name="l00993"></a><span class="lineno"> 993</span> <span class="keyword">auto</span> <span class="keyword">const</span> jNoCred =</div>
<div class="line"><a id="l00994" name="l00994"></a><span class="lineno"> 994</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#ade27ecac76c7d1262720bd7f112cf28e">credentials::ledgerEntry</a>(env, becky, carol, credType);</div>
<div class="line"><a id="l00995" name="l00995"></a><span class="lineno"> 995</span> BEAST_EXPECT(</div>
<div class="line"><a id="l00996" name="l00996"></a><span class="lineno"> 996</span> jNoCred.isObject() &amp;&amp; jNoCred.isMember(jss::result) &amp;&amp;</div>
<div class="line"><a id="l00997" name="l00997"></a><span class="lineno"> 997</span> jNoCred[jss::result].isMember(jss::error) &amp;&amp;</div>
<div class="line"><a id="l00998" name="l00998"></a><span class="lineno"> 998</span> jNoCred[jss::result][jss::error] == <span class="stringliteral">&quot;entryNotFound&quot;</span>);</div>
<div class="line"><a id="l00999" name="l00999"></a><span class="lineno"> 999</span> }</div>
<div class="line"><a id="l01000" name="l01000"></a><span class="lineno"> 1000</span> </div>
<div class="line"><a id="l01001" name="l01001"></a><span class="lineno"> 1001</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;Credentials that aren&#39;t required&quot;</span>);</div>
<div class="line"><a id="l01002" name="l01002"></a><span class="lineno"> 1002</span> { <span class="comment">// carol issue credentials for daria</span></div>
<div class="line"><a id="l01003" name="l01003"></a><span class="lineno"> 1003</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#a0529a6b1613da8aa0c2a8964b1820ac9">credentials::create</a>(daria, carol, credType));</div>
<div class="line"><a id="l01004" name="l01004"></a><span class="lineno"> 1004</span> env.close();</div>
<div class="line"><a id="l01005" name="l01005"></a><span class="lineno"> 1005</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#a3c554c809a810395ee98a696ca447fb5">credentials::accept</a>(daria, carol, credType));</div>
<div class="line"><a id="l01006" name="l01006"></a><span class="lineno"> 1006</span> env.close();</div>
<div class="line"><a id="l01007" name="l01007"></a><span class="lineno"> 1007</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span> credDaria =</div>
<div class="line"><a id="l01008" name="l01008"></a><span class="lineno"> 1008</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#ade27ecac76c7d1262720bd7f112cf28e">credentials::ledgerEntry</a>(</div>
<div class="line"><a id="l01009" name="l01009"></a><span class="lineno"> 1009</span> env, daria, carol, credType)[jss::result][jss::index]</div>
<div class="line"><a id="l01010" name="l01010"></a><span class="lineno"> 1010</span> .<a class="code hl_function" href="classJson_1_1Value.html#ab0d86bf425efefd03513e8dbfaca317b">asString</a>();</div>
<div class="line"><a id="l01011" name="l01011"></a><span class="lineno"> 1011</span> </div>
<div class="line"><a id="l01012" name="l01012"></a><span class="lineno"> 1012</span> <span class="comment">// daria use valid credentials, which aren&#39;t required and can</span></div>
<div class="line"><a id="l01013" name="l01013"></a><span class="lineno"> 1013</span> <span class="comment">// delete her account</span></div>
<div class="line"><a id="l01014" name="l01014"></a><span class="lineno"> 1014</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(daria, carol),</div>
<div class="line"><a id="l01015" name="l01015"></a><span class="lineno"> 1015</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1credentials_1_1ids.html">credentials::ids</a>({credDaria}),</div>
<div class="line"><a id="l01016" name="l01016"></a><span class="lineno"> 1016</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee));</div>
<div class="line"><a id="l01017" name="l01017"></a><span class="lineno"> 1017</span> env.close();</div>
<div class="line"><a id="l01018" name="l01018"></a><span class="lineno"> 1018</span> </div>
<div class="line"><a id="l01019" name="l01019"></a><span class="lineno"> 1019</span> <span class="comment">// check that credential object deleted too</span></div>
<div class="line"><a id="l01020" name="l01020"></a><span class="lineno"> 1020</span> <span class="keyword">auto</span> <span class="keyword">const</span> jNoCred =</div>
<div class="line"><a id="l01021" name="l01021"></a><span class="lineno"> 1021</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#ade27ecac76c7d1262720bd7f112cf28e">credentials::ledgerEntry</a>(env, daria, carol, credType);</div>
<div class="line"><a id="l01022" name="l01022"></a><span class="lineno"> 1022</span> </div>
<div class="line"><a id="l01023" name="l01023"></a><span class="lineno"> 1023</span> BEAST_EXPECT(</div>
<div class="line"><a id="l01024" name="l01024"></a><span class="lineno"> 1024</span> jNoCred.isObject() &amp;&amp; jNoCred.isMember(jss::result) &amp;&amp;</div>
<div class="line"><a id="l01025" name="l01025"></a><span class="lineno"> 1025</span> jNoCred[jss::result].isMember(jss::error) &amp;&amp;</div>
<div class="line"><a id="l01026" name="l01026"></a><span class="lineno"> 1026</span> jNoCred[jss::result][jss::error] == <span class="stringliteral">&quot;entryNotFound&quot;</span>);</div>
<div class="line"><a id="l01027" name="l01027"></a><span class="lineno"> 1027</span> }</div>
<div class="line"><a id="l01028" name="l01028"></a><span class="lineno"> 1028</span> </div>
<div class="line"><a id="l01029" name="l01029"></a><span class="lineno"> 1029</span> {</div>
<div class="line"><a id="l01030" name="l01030"></a><span class="lineno"> 1030</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> eaton{<span class="stringliteral">&quot;eaton&quot;</span>};</div>
<div class="line"><a id="l01031" name="l01031"></a><span class="lineno"> 1031</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> fred{<span class="stringliteral">&quot;fred&quot;</span>};</div>
<div class="line"><a id="l01032" name="l01032"></a><span class="lineno"> 1032</span> </div>
<div class="line"><a id="l01033" name="l01033"></a><span class="lineno"> 1033</span> env.fund(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(5000), eaton, fred);</div>
<div class="line"><a id="l01034" name="l01034"></a><span class="lineno"> 1034</span> </div>
<div class="line"><a id="l01035" name="l01035"></a><span class="lineno"> 1035</span> <span class="comment">// carol issue credentials for eaton</span></div>
<div class="line"><a id="l01036" name="l01036"></a><span class="lineno"> 1036</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#a0529a6b1613da8aa0c2a8964b1820ac9">credentials::create</a>(eaton, carol, credType));</div>
<div class="line"><a id="l01037" name="l01037"></a><span class="lineno"> 1037</span> env.close();</div>
<div class="line"><a id="l01038" name="l01038"></a><span class="lineno"> 1038</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#a3c554c809a810395ee98a696ca447fb5">credentials::accept</a>(eaton, carol, credType));</div>
<div class="line"><a id="l01039" name="l01039"></a><span class="lineno"> 1039</span> env.close();</div>
<div class="line"><a id="l01040" name="l01040"></a><span class="lineno"> 1040</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span> credEaton =</div>
<div class="line"><a id="l01041" name="l01041"></a><span class="lineno"> 1041</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#ade27ecac76c7d1262720bd7f112cf28e">credentials::ledgerEntry</a>(</div>
<div class="line"><a id="l01042" name="l01042"></a><span class="lineno"> 1042</span> env, eaton, carol, credType)[jss::result][jss::index]</div>
<div class="line"><a id="l01043" name="l01043"></a><span class="lineno"> 1043</span> .<a class="code hl_function" href="classJson_1_1Value.html#ab0d86bf425efefd03513e8dbfaca317b">asString</a>();</div>
<div class="line"><a id="l01044" name="l01044"></a><span class="lineno"> 1044</span> </div>
<div class="line"><a id="l01045" name="l01045"></a><span class="lineno"> 1045</span> <span class="comment">// fred make preauthorization through authorized account</span></div>
<div class="line"><a id="l01046" name="l01046"></a><span class="lineno"> 1046</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a50cacef3867fc01273aa9c29231f9a7c">fset</a>(fred, <a class="code hl_variable" href="namespaceripple.html#a1d8ec9af2fd805d04e032c52f6968211">asfDepositAuth</a>));</div>
<div class="line"><a id="l01047" name="l01047"></a><span class="lineno"> 1047</span> env.close();</div>
<div class="line"><a id="l01048" name="l01048"></a><span class="lineno"> 1048</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1deposit.html#a662867f42cb3f468f2e8830fbd7e0d8a">deposit::auth</a>(fred, eaton));</div>
<div class="line"><a id="l01049" name="l01049"></a><span class="lineno"> 1049</span> env.close();</div>
<div class="line"><a id="l01050" name="l01050"></a><span class="lineno"> 1050</span> </div>
<div class="line"><a id="l01051" name="l01051"></a><span class="lineno"> 1051</span> <span class="comment">// Close enough ledgers to be able to delete becky&#39;s account.</span></div>
<div class="line"><a id="l01052" name="l01052"></a><span class="lineno"> 1052</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ab5498b455814e9a3ebe57c96170a6bcd">incLgrSeqForAccDel</a>(env, eaton);</div>
<div class="line"><a id="l01053" name="l01053"></a><span class="lineno"> 1053</span> <span class="keyword">auto</span> <span class="keyword">const</span> acctDelFee{<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(env.current()-&gt;fees().increment)};</div>
<div class="line"><a id="l01054" name="l01054"></a><span class="lineno"> 1054</span> </div>
<div class="line"><a id="l01055" name="l01055"></a><span class="lineno"> 1055</span> <span class="comment">// eaton use valid credentials, but he already authorized</span></div>
<div class="line"><a id="l01056" name="l01056"></a><span class="lineno"> 1056</span> <span class="comment">// through &quot;Authorized&quot; field.</span></div>
<div class="line"><a id="l01057" name="l01057"></a><span class="lineno"> 1057</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(eaton, fred),</div>
<div class="line"><a id="l01058" name="l01058"></a><span class="lineno"> 1058</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1credentials_1_1ids.html">credentials::ids</a>({credEaton}),</div>
<div class="line"><a id="l01059" name="l01059"></a><span class="lineno"> 1059</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee));</div>
<div class="line"><a id="l01060" name="l01060"></a><span class="lineno"> 1060</span> env.close();</div>
<div class="line"><a id="l01061" name="l01061"></a><span class="lineno"> 1061</span> </div>
<div class="line"><a id="l01062" name="l01062"></a><span class="lineno"> 1062</span> <span class="comment">// check that credential object deleted too</span></div>
<div class="line"><a id="l01063" name="l01063"></a><span class="lineno"> 1063</span> <span class="keyword">auto</span> <span class="keyword">const</span> jNoCred =</div>
<div class="line"><a id="l01064" name="l01064"></a><span class="lineno"> 1064</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#ade27ecac76c7d1262720bd7f112cf28e">credentials::ledgerEntry</a>(env, eaton, carol, credType);</div>
<div class="line"><a id="l01065" name="l01065"></a><span class="lineno"> 1065</span> </div>
<div class="line"><a id="l01066" name="l01066"></a><span class="lineno"> 1066</span> BEAST_EXPECT(</div>
<div class="line"><a id="l01067" name="l01067"></a><span class="lineno"> 1067</span> jNoCred.isObject() &amp;&amp; jNoCred.isMember(jss::result) &amp;&amp;</div>
<div class="line"><a id="l01068" name="l01068"></a><span class="lineno"> 1068</span> jNoCred[jss::result].isMember(jss::error) &amp;&amp;</div>
<div class="line"><a id="l01069" name="l01069"></a><span class="lineno"> 1069</span> jNoCred[jss::result][jss::error] == <span class="stringliteral">&quot;entryNotFound&quot;</span>);</div>
<div class="line"><a id="l01070" name="l01070"></a><span class="lineno"> 1070</span> }</div>
<div class="line"><a id="l01071" name="l01071"></a><span class="lineno"> 1071</span> </div>
<div class="line"><a id="l01072" name="l01072"></a><span class="lineno"> 1072</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;Expired credentials&quot;</span>);</div>
<div class="line"><a id="l01073" name="l01073"></a><span class="lineno"> 1073</span> {</div>
<div class="line"><a id="l01074" name="l01074"></a><span class="lineno"> 1074</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> john{<span class="stringliteral">&quot;john&quot;</span>};</div>
<div class="line"><a id="l01075" name="l01075"></a><span class="lineno"> 1075</span> </div>
<div class="line"><a id="l01076" name="l01076"></a><span class="lineno"> 1076</span> env.fund(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(10000), john);</div>
<div class="line"><a id="l01077" name="l01077"></a><span class="lineno"> 1077</span> env.close();</div>
<div class="line"><a id="l01078" name="l01078"></a><span class="lineno"> 1078</span> </div>
<div class="line"><a id="l01079" name="l01079"></a><span class="lineno"> 1079</span> <span class="keyword">auto</span> jv = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#a0529a6b1613da8aa0c2a8964b1820ac9">credentials::create</a>(john, carol, credType);</div>
<div class="line"><a id="l01080" name="l01080"></a><span class="lineno"> 1080</span> uint32_t <span class="keyword">const</span> t = env.current()</div>
<div class="line"><a id="l01081" name="l01081"></a><span class="lineno"> 1081</span> -&gt;info()</div>
<div class="line"><a id="l01082" name="l01082"></a><span class="lineno"> 1082</span> .parentCloseTime.time_since_epoch()</div>
<div class="line"><a id="l01083" name="l01083"></a><span class="lineno"> 1083</span> .count() +</div>
<div class="line"><a id="l01084" name="l01084"></a><span class="lineno"> 1084</span> 20;</div>
<div class="line"><a id="l01085" name="l01085"></a><span class="lineno"> 1085</span> jv[sfExpiration.jsonName] = t;</div>
<div class="line"><a id="l01086" name="l01086"></a><span class="lineno"> 1086</span> env(jv);</div>
<div class="line"><a id="l01087" name="l01087"></a><span class="lineno"> 1087</span> env.close();</div>
<div class="line"><a id="l01088" name="l01088"></a><span class="lineno"> 1088</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#a3c554c809a810395ee98a696ca447fb5">credentials::accept</a>(john, carol, credType));</div>
<div class="line"><a id="l01089" name="l01089"></a><span class="lineno"> 1089</span> env.close();</div>
<div class="line"><a id="l01090" name="l01090"></a><span class="lineno"> 1090</span> jv = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#ade27ecac76c7d1262720bd7f112cf28e">credentials::ledgerEntry</a>(env, john, carol, credType);</div>
<div class="line"><a id="l01091" name="l01091"></a><span class="lineno"> 1091</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span> credIdx =</div>
<div class="line"><a id="l01092" name="l01092"></a><span class="lineno"> 1092</span> jv[jss::result][jss::index].asString();</div>
<div class="line"><a id="l01093" name="l01093"></a><span class="lineno"> 1093</span> </div>
<div class="line"><a id="l01094" name="l01094"></a><span class="lineno"> 1094</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ab5498b455814e9a3ebe57c96170a6bcd">incLgrSeqForAccDel</a>(env, john);</div>
<div class="line"><a id="l01095" name="l01095"></a><span class="lineno"> 1095</span> </div>
<div class="line"><a id="l01096" name="l01096"></a><span class="lineno"> 1096</span> <span class="comment">// credentials are expired</span></div>
<div class="line"><a id="l01097" name="l01097"></a><span class="lineno"> 1097</span> <span class="comment">// john use credentials but can&#39;t delete account</span></div>
<div class="line"><a id="l01098" name="l01098"></a><span class="lineno"> 1098</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(john, alice),</div>
<div class="line"><a id="l01099" name="l01099"></a><span class="lineno"> 1099</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1credentials_1_1ids.html">credentials::ids</a>({credIdx}),</div>
<div class="line"><a id="l01100" name="l01100"></a><span class="lineno"> 1100</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee),</div>
<div class="line"><a id="l01101" name="l01101"></a><span class="lineno"> 1101</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caede598f88bbd44e4df1c4e0d418c4cdc">tecEXPIRED</a>));</div>
<div class="line"><a id="l01102" name="l01102"></a><span class="lineno"> 1102</span> env.close();</div>
<div class="line"><a id="l01103" name="l01103"></a><span class="lineno"> 1103</span> </div>
<div class="line"><a id="l01104" name="l01104"></a><span class="lineno"> 1104</span> {</div>
<div class="line"><a id="l01105" name="l01105"></a><span class="lineno"> 1105</span> <span class="comment">// check that expired credential object deleted</span></div>
<div class="line"><a id="l01106" name="l01106"></a><span class="lineno"> 1106</span> <span class="keyword">auto</span> jv =</div>
<div class="line"><a id="l01107" name="l01107"></a><span class="lineno"> 1107</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#ade27ecac76c7d1262720bd7f112cf28e">credentials::ledgerEntry</a>(env, john, carol, credType);</div>
<div class="line"><a id="l01108" name="l01108"></a><span class="lineno"> 1108</span> BEAST_EXPECT(</div>
<div class="line"><a id="l01109" name="l01109"></a><span class="lineno"> 1109</span> jv.isObject() &amp;&amp; jv.isMember(jss::result) &amp;&amp;</div>
<div class="line"><a id="l01110" name="l01110"></a><span class="lineno"> 1110</span> jv[jss::result].isMember(jss::error) &amp;&amp;</div>
<div class="line"><a id="l01111" name="l01111"></a><span class="lineno"> 1111</span> jv[jss::result][jss::error] == <span class="stringliteral">&quot;entryNotFound&quot;</span>);</div>
<div class="line"><a id="l01112" name="l01112"></a><span class="lineno"> 1112</span> }</div>
<div class="line"><a id="l01113" name="l01113"></a><span class="lineno"> 1113</span> }</div>
<div class="line"><a id="l01114" name="l01114"></a><span class="lineno"> 1114</span> }</div>
<div class="line"><a id="l01115" name="l01115"></a><span class="lineno"> 1115</span> </div>
<div class="line"><a id="l01116" name="l01116"></a><span class="lineno"> 1116</span> {</div>
<div class="line"><a id="l01117" name="l01117"></a><span class="lineno"> 1117</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;Credentials feature disabled&quot;</span>);</div>
<div class="line"><a id="l01118" name="l01118"></a><span class="lineno"> 1118</span> <span class="keyword">using namespace </span>test::jtx;</div>
<div class="line"><a id="l01119" name="l01119"></a><span class="lineno"> 1119</span> </div>
<div class="line"><a id="l01120" name="l01120"></a><span class="lineno"> 1120</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> alice{<span class="stringliteral">&quot;alice&quot;</span>};</div>
<div class="line"><a id="l01121" name="l01121"></a><span class="lineno"> 1121</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> becky{<span class="stringliteral">&quot;becky&quot;</span>};</div>
<div class="line"><a id="l01122" name="l01122"></a><span class="lineno"> 1122</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> carol{<span class="stringliteral">&quot;carol&quot;</span>};</div>
<div class="line"><a id="l01123" name="l01123"></a><span class="lineno"> 1123</span> </div>
<div class="line"><a id="l01124" name="l01124"></a><span class="lineno"> 1124</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{*<span class="keyword">this</span>, <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#af5441d84d5977d52246c5226313560d4">supported_amendments</a>() - featureCredentials};</div>
<div class="line"><a id="l01125" name="l01125"></a><span class="lineno"> 1125</span> env.fund(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(100000), alice, becky, carol);</div>
<div class="line"><a id="l01126" name="l01126"></a><span class="lineno"> 1126</span> env.close();</div>
<div class="line"><a id="l01127" name="l01127"></a><span class="lineno"> 1127</span> </div>
<div class="line"><a id="l01128" name="l01128"></a><span class="lineno"> 1128</span> <span class="comment">// alice sets the lsfDepositAuth flag on her account. This should</span></div>
<div class="line"><a id="l01129" name="l01129"></a><span class="lineno"> 1129</span> <span class="comment">// prevent becky from deleting her account while using alice as the</span></div>
<div class="line"><a id="l01130" name="l01130"></a><span class="lineno"> 1130</span> <span class="comment">// destination.</span></div>
<div class="line"><a id="l01131" name="l01131"></a><span class="lineno"> 1131</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a50cacef3867fc01273aa9c29231f9a7c">fset</a>(alice, <a class="code hl_variable" href="namespaceripple.html#a1d8ec9af2fd805d04e032c52f6968211">asfDepositAuth</a>));</div>
<div class="line"><a id="l01132" name="l01132"></a><span class="lineno"> 1132</span> env.close();</div>
<div class="line"><a id="l01133" name="l01133"></a><span class="lineno"> 1133</span> </div>
<div class="line"><a id="l01134" name="l01134"></a><span class="lineno"> 1134</span> <span class="comment">// Close enough ledgers to be able to delete becky&#39;s account.</span></div>
<div class="line"><a id="l01135" name="l01135"></a><span class="lineno"> 1135</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ab5498b455814e9a3ebe57c96170a6bcd">incLgrSeqForAccDel</a>(env, becky);</div>
<div class="line"><a id="l01136" name="l01136"></a><span class="lineno"> 1136</span> </div>
<div class="line"><a id="l01137" name="l01137"></a><span class="lineno"> 1137</span> <span class="keyword">auto</span> <span class="keyword">const</span> acctDelFee{<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(env.current()-&gt;fees().increment)};</div>
<div class="line"><a id="l01138" name="l01138"></a><span class="lineno"> 1138</span> </div>
<div class="line"><a id="l01139" name="l01139"></a><span class="lineno"> 1139</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span> credIdx =</div>
<div class="line"><a id="l01140" name="l01140"></a><span class="lineno"> 1140</span> <span class="stringliteral">&quot;098B7F1B146470A1C5084DC7832C04A72939E3EBC58E68AB8B579BA072B0CE&quot;</span></div>
<div class="line"><a id="l01141" name="l01141"></a><span class="lineno"> 1141</span> <span class="stringliteral">&quot;CB&quot;</span>;</div>
<div class="line"><a id="l01142" name="l01142"></a><span class="lineno"> 1142</span> </div>
<div class="line"><a id="l01143" name="l01143"></a><span class="lineno"> 1143</span> <span class="comment">// and can&#39;t delete even with old DepositPreauth</span></div>
<div class="line"><a id="l01144" name="l01144"></a><span class="lineno"> 1144</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1deposit.html#a662867f42cb3f468f2e8830fbd7e0d8a">deposit::auth</a>(alice, becky));</div>
<div class="line"><a id="l01145" name="l01145"></a><span class="lineno"> 1145</span> env.close();</div>
<div class="line"><a id="l01146" name="l01146"></a><span class="lineno"> 1146</span> </div>
<div class="line"><a id="l01147" name="l01147"></a><span class="lineno"> 1147</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(becky, alice),</div>
<div class="line"><a id="l01148" name="l01148"></a><span class="lineno"> 1148</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1credentials_1_1ids.html">credentials::ids</a>({credIdx}),</div>
<div class="line"><a id="l01149" name="l01149"></a><span class="lineno"> 1149</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee),</div>
<div class="line"><a id="l01150" name="l01150"></a><span class="lineno"> 1150</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46ac3482079467d517ea82aa9c8fa693d21">temDISABLED</a>));</div>
<div class="line"><a id="l01151" name="l01151"></a><span class="lineno"> 1151</span> env.close();</div>
<div class="line"><a id="l01152" name="l01152"></a><span class="lineno"> 1152</span> }</div>
<div class="line"><a id="l01153" name="l01153"></a><span class="lineno"> 1153</span> }</div>
<div class="line"><a id="l01154" name="l01154"></a><span class="lineno"> 1154</span> </div>
<div class="line"><a id="l01155" name="l01155"></a><span class="lineno"> 1155</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l01156" name="l01156"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1AccountDelete__test.html#a45cb3f504a950d8340820a035ed9a67d"> 1156</a></span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a45cb3f504a950d8340820a035ed9a67d">testDeleteCredentialsOwner</a>()</div>
<div class="line"><a id="l01157" name="l01157"></a><span class="lineno"> 1157</span> {</div>
<div class="line"><a id="l01158" name="l01158"></a><span class="lineno"> 1158</span> {</div>
<div class="line"><a id="l01159" name="l01159"></a><span class="lineno"> 1159</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;Deleting Issuer deletes issued credentials&quot;</span>);</div>
<div class="line"><a id="l01160" name="l01160"></a><span class="lineno"> 1160</span> </div>
<div class="line"><a id="l01161" name="l01161"></a><span class="lineno"> 1161</span> <span class="keyword">using namespace </span>test::jtx;</div>
<div class="line"><a id="l01162" name="l01162"></a><span class="lineno"> 1162</span> </div>
<div class="line"><a id="l01163" name="l01163"></a><span class="lineno"> 1163</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> alice{<span class="stringliteral">&quot;alice&quot;</span>};</div>
<div class="line"><a id="l01164" name="l01164"></a><span class="lineno"> 1164</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> becky{<span class="stringliteral">&quot;becky&quot;</span>};</div>
<div class="line"><a id="l01165" name="l01165"></a><span class="lineno"> 1165</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> carol{<span class="stringliteral">&quot;carol&quot;</span>};</div>
<div class="line"><a id="l01166" name="l01166"></a><span class="lineno"> 1166</span> </div>
<div class="line"><a id="l01167" name="l01167"></a><span class="lineno"> 1167</span> <span class="keywordtype">char</span> <span class="keyword">const</span> credType[] = <span class="stringliteral">&quot;abcd&quot;</span>;</div>
<div class="line"><a id="l01168" name="l01168"></a><span class="lineno"> 1168</span> </div>
<div class="line"><a id="l01169" name="l01169"></a><span class="lineno"> 1169</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{*<span class="keyword">this</span>};</div>
<div class="line"><a id="l01170" name="l01170"></a><span class="lineno"> 1170</span> env.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#ae2349266cb09d1f1c3de06606ebdf9e2">fund</a>(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(100000), alice, becky, carol);</div>
<div class="line"><a id="l01171" name="l01171"></a><span class="lineno"> 1171</span> env.close();</div>
<div class="line"><a id="l01172" name="l01172"></a><span class="lineno"> 1172</span> </div>
<div class="line"><a id="l01173" name="l01173"></a><span class="lineno"> 1173</span> <span class="comment">// carol issue credentials for becky</span></div>
<div class="line"><a id="l01174" name="l01174"></a><span class="lineno"> 1174</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#a0529a6b1613da8aa0c2a8964b1820ac9">credentials::create</a>(becky, carol, credType));</div>
<div class="line"><a id="l01175" name="l01175"></a><span class="lineno"> 1175</span> env.close();</div>
<div class="line"><a id="l01176" name="l01176"></a><span class="lineno"> 1176</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#a3c554c809a810395ee98a696ca447fb5">credentials::accept</a>(becky, carol, credType));</div>
<div class="line"><a id="l01177" name="l01177"></a><span class="lineno"> 1177</span> env.close();</div>
<div class="line"><a id="l01178" name="l01178"></a><span class="lineno"> 1178</span> </div>
<div class="line"><a id="l01179" name="l01179"></a><span class="lineno"> 1179</span> <span class="comment">// get credentials index</span></div>
<div class="line"><a id="l01180" name="l01180"></a><span class="lineno"> 1180</span> <span class="keyword">auto</span> <span class="keyword">const</span> jv =</div>
<div class="line"><a id="l01181" name="l01181"></a><span class="lineno"> 1181</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#ade27ecac76c7d1262720bd7f112cf28e">credentials::ledgerEntry</a>(env, becky, carol, credType);</div>
<div class="line"><a id="l01182" name="l01182"></a><span class="lineno"> 1182</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span> credIdx = jv[jss::result][jss::index].asString();</div>
<div class="line"><a id="l01183" name="l01183"></a><span class="lineno"> 1183</span> </div>
<div class="line"><a id="l01184" name="l01184"></a><span class="lineno"> 1184</span> <span class="comment">// Close enough ledgers to be able to delete carol&#39;s account.</span></div>
<div class="line"><a id="l01185" name="l01185"></a><span class="lineno"> 1185</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ab5498b455814e9a3ebe57c96170a6bcd">incLgrSeqForAccDel</a>(env, carol);</div>
<div class="line"><a id="l01186" name="l01186"></a><span class="lineno"> 1186</span> </div>
<div class="line"><a id="l01187" name="l01187"></a><span class="lineno"> 1187</span> <span class="keyword">auto</span> <span class="keyword">const</span> acctDelFee{<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(env.current()-&gt;fees().increment)};</div>
<div class="line"><a id="l01188" name="l01188"></a><span class="lineno"> 1188</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(carol, alice), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee));</div>
<div class="line"><a id="l01189" name="l01189"></a><span class="lineno"> 1189</span> env.close();</div>
<div class="line"><a id="l01190" name="l01190"></a><span class="lineno"> 1190</span> </div>
<div class="line"><a id="l01191" name="l01191"></a><span class="lineno"> 1191</span> { <span class="comment">// check that credential object deleted too</span></div>
<div class="line"><a id="l01192" name="l01192"></a><span class="lineno"> 1192</span> BEAST_EXPECT(!env.le(credIdx));</div>
<div class="line"><a id="l01193" name="l01193"></a><span class="lineno"> 1193</span> <span class="keyword">auto</span> <span class="keyword">const</span> jv =</div>
<div class="line"><a id="l01194" name="l01194"></a><span class="lineno"> 1194</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#ade27ecac76c7d1262720bd7f112cf28e">credentials::ledgerEntry</a>(env, becky, carol, credType);</div>
<div class="line"><a id="l01195" name="l01195"></a><span class="lineno"> 1195</span> BEAST_EXPECT(</div>
<div class="line"><a id="l01196" name="l01196"></a><span class="lineno"> 1196</span> jv.isObject() &amp;&amp; jv.isMember(jss::result) &amp;&amp;</div>
<div class="line"><a id="l01197" name="l01197"></a><span class="lineno"> 1197</span> jv[jss::result].isMember(jss::error) &amp;&amp;</div>
<div class="line"><a id="l01198" name="l01198"></a><span class="lineno"> 1198</span> jv[jss::result][jss::error] == <span class="stringliteral">&quot;entryNotFound&quot;</span>);</div>
<div class="line"><a id="l01199" name="l01199"></a><span class="lineno"> 1199</span> }</div>
<div class="line"><a id="l01200" name="l01200"></a><span class="lineno"> 1200</span> }</div>
<div class="line"><a id="l01201" name="l01201"></a><span class="lineno"> 1201</span> </div>
<div class="line"><a id="l01202" name="l01202"></a><span class="lineno"> 1202</span> {</div>
<div class="line"><a id="l01203" name="l01203"></a><span class="lineno"> 1203</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">&quot;Deleting Subject deletes issued credentials&quot;</span>);</div>
<div class="line"><a id="l01204" name="l01204"></a><span class="lineno"> 1204</span> </div>
<div class="line"><a id="l01205" name="l01205"></a><span class="lineno"> 1205</span> <span class="keyword">using namespace </span>test::jtx;</div>
<div class="line"><a id="l01206" name="l01206"></a><span class="lineno"> 1206</span> </div>
<div class="line"><a id="l01207" name="l01207"></a><span class="lineno"> 1207</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> alice{<span class="stringliteral">&quot;alice&quot;</span>};</div>
<div class="line"><a id="l01208" name="l01208"></a><span class="lineno"> 1208</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> becky{<span class="stringliteral">&quot;becky&quot;</span>};</div>
<div class="line"><a id="l01209" name="l01209"></a><span class="lineno"> 1209</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> carol{<span class="stringliteral">&quot;carol&quot;</span>};</div>
<div class="line"><a id="l01210" name="l01210"></a><span class="lineno"> 1210</span> </div>
<div class="line"><a id="l01211" name="l01211"></a><span class="lineno"> 1211</span> <span class="keywordtype">char</span> <span class="keyword">const</span> credType[] = <span class="stringliteral">&quot;abcd&quot;</span>;</div>
<div class="line"><a id="l01212" name="l01212"></a><span class="lineno"> 1212</span> </div>
<div class="line"><a id="l01213" name="l01213"></a><span class="lineno"> 1213</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{*<span class="keyword">this</span>};</div>
<div class="line"><a id="l01214" name="l01214"></a><span class="lineno"> 1214</span> env.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#ae2349266cb09d1f1c3de06606ebdf9e2">fund</a>(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(100000), alice, becky, carol);</div>
<div class="line"><a id="l01215" name="l01215"></a><span class="lineno"> 1215</span> env.close();</div>
<div class="line"><a id="l01216" name="l01216"></a><span class="lineno"> 1216</span> </div>
<div class="line"><a id="l01217" name="l01217"></a><span class="lineno"> 1217</span> <span class="comment">// carol issue credentials for becky</span></div>
<div class="line"><a id="l01218" name="l01218"></a><span class="lineno"> 1218</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#a0529a6b1613da8aa0c2a8964b1820ac9">credentials::create</a>(becky, carol, credType));</div>
<div class="line"><a id="l01219" name="l01219"></a><span class="lineno"> 1219</span> env.close();</div>
<div class="line"><a id="l01220" name="l01220"></a><span class="lineno"> 1220</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#a3c554c809a810395ee98a696ca447fb5">credentials::accept</a>(becky, carol, credType));</div>
<div class="line"><a id="l01221" name="l01221"></a><span class="lineno"> 1221</span> env.close();</div>
<div class="line"><a id="l01222" name="l01222"></a><span class="lineno"> 1222</span> </div>
<div class="line"><a id="l01223" name="l01223"></a><span class="lineno"> 1223</span> <span class="comment">// get credentials index</span></div>
<div class="line"><a id="l01224" name="l01224"></a><span class="lineno"> 1224</span> <span class="keyword">auto</span> <span class="keyword">const</span> jv =</div>
<div class="line"><a id="l01225" name="l01225"></a><span class="lineno"> 1225</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#ade27ecac76c7d1262720bd7f112cf28e">credentials::ledgerEntry</a>(env, becky, carol, credType);</div>
<div class="line"><a id="l01226" name="l01226"></a><span class="lineno"> 1226</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span> credIdx = jv[jss::result][jss::index].asString();</div>
<div class="line"><a id="l01227" name="l01227"></a><span class="lineno"> 1227</span> </div>
<div class="line"><a id="l01228" name="l01228"></a><span class="lineno"> 1228</span> <span class="comment">// Close enough ledgers to be able to delete carol&#39;s account.</span></div>
<div class="line"><a id="l01229" name="l01229"></a><span class="lineno"> 1229</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ab5498b455814e9a3ebe57c96170a6bcd">incLgrSeqForAccDel</a>(env, becky);</div>
<div class="line"><a id="l01230" name="l01230"></a><span class="lineno"> 1230</span> </div>
<div class="line"><a id="l01231" name="l01231"></a><span class="lineno"> 1231</span> <span class="keyword">auto</span> <span class="keyword">const</span> acctDelFee{<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(env.current()-&gt;fees().increment)};</div>
<div class="line"><a id="l01232" name="l01232"></a><span class="lineno"> 1232</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">acctdelete</a>(becky, alice), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(acctDelFee));</div>
<div class="line"><a id="l01233" name="l01233"></a><span class="lineno"> 1233</span> env.close();</div>
<div class="line"><a id="l01234" name="l01234"></a><span class="lineno"> 1234</span> </div>
<div class="line"><a id="l01235" name="l01235"></a><span class="lineno"> 1235</span> { <span class="comment">// check that credential object deleted too</span></div>
<div class="line"><a id="l01236" name="l01236"></a><span class="lineno"> 1236</span> BEAST_EXPECT(!env.le(credIdx));</div>
<div class="line"><a id="l01237" name="l01237"></a><span class="lineno"> 1237</span> <span class="keyword">auto</span> <span class="keyword">const</span> jv =</div>
<div class="line"><a id="l01238" name="l01238"></a><span class="lineno"> 1238</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#ade27ecac76c7d1262720bd7f112cf28e">credentials::ledgerEntry</a>(env, becky, carol, credType);</div>
<div class="line"><a id="l01239" name="l01239"></a><span class="lineno"> 1239</span> BEAST_EXPECT(</div>
<div class="line"><a id="l01240" name="l01240"></a><span class="lineno"> 1240</span> jv.isObject() &amp;&amp; jv.isMember(jss::result) &amp;&amp;</div>
<div class="line"><a id="l01241" name="l01241"></a><span class="lineno"> 1241</span> jv[jss::result].isMember(jss::error) &amp;&amp;</div>
<div class="line"><a id="l01242" name="l01242"></a><span class="lineno"> 1242</span> jv[jss::result][jss::error] == <span class="stringliteral">&quot;entryNotFound&quot;</span>);</div>
<div class="line"><a id="l01243" name="l01243"></a><span class="lineno"> 1243</span> }</div>
<div class="line"><a id="l01244" name="l01244"></a><span class="lineno"> 1244</span> }</div>
<div class="line"><a id="l01245" name="l01245"></a><span class="lineno"> 1245</span> }</div>
<div class="line"><a id="l01246" name="l01246"></a><span class="lineno"> 1246</span> </div>
<div class="line"><a id="l01247" name="l01247"></a><span class="lineno"> 1247</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l01248" name="l01248"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1AccountDelete__test.html#a90580c0aa5b257088a7b6b0dc52f4934"> 1248</a></span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a90580c0aa5b257088a7b6b0dc52f4934">run</a>()<span class="keyword"> override</span></div>
<div class="line"><a id="l01249" name="l01249"></a><span class="lineno"> 1249</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l01250" name="l01250"></a><span class="lineno"> 1250</span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a09f62f1f5c18fafb1445c43b7f4072f7">testBasics</a>();</div>
<div class="line"><a id="l01251" name="l01251"></a><span class="lineno"> 1251</span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#ac392a32b72823219d9ee0dc266226f64">testDirectories</a>();</div>
<div class="line"><a id="l01252" name="l01252"></a><span class="lineno"> 1252</span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#aa32b27823d78947eae4b1950628d0934">testOwnedTypes</a>();</div>
<div class="line"><a id="l01253" name="l01253"></a><span class="lineno"> 1253</span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a1e270085d457d7ee5fd5daa3773f6cc3">testResurrection</a>();</div>
<div class="line"><a id="l01254" name="l01254"></a><span class="lineno"> 1254</span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a9608a0aba27aea97c17205de5965d6cd">testAmendmentEnable</a>();</div>
<div class="line"><a id="l01255" name="l01255"></a><span class="lineno"> 1255</span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#aa631e36dc0eb14c7b60191138bc1c548">testTooManyOffers</a>();</div>
<div class="line"><a id="l01256" name="l01256"></a><span class="lineno"> 1256</span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#af9b88be1918a8fe91a3c7cd9d54207de">testImplicitlyCreatedTrustline</a>();</div>
<div class="line"><a id="l01257" name="l01257"></a><span class="lineno"> 1257</span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a2fb47d7436dbfb81c8114305d78adddd">testBalanceTooSmallForFee</a>();</div>
<div class="line"><a id="l01258" name="l01258"></a><span class="lineno"> 1258</span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a031c45de38a9ea352bf440f6bd9b60e8">testWithTickets</a>();</div>
<div class="line"><a id="l01259" name="l01259"></a><span class="lineno"> 1259</span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a1b94b395084df1cf1ab3be9c1a68e452">testDest</a>();</div>
<div class="line"><a id="l01260" name="l01260"></a><span class="lineno"> 1260</span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#ab5a812d5effb7ab1a858baa257f088f7">testDestinationDepositAuthCredentials</a>();</div>
<div class="line"><a id="l01261" name="l01261"></a><span class="lineno"> 1261</span> <a class="code hl_function" href="classripple_1_1test_1_1AccountDelete__test.html#a45cb3f504a950d8340820a035ed9a67d">testDeleteCredentialsOwner</a>();</div>
<div class="line"><a id="l01262" name="l01262"></a><span class="lineno"> 1262</span> }</div>
<div class="line"><a id="l01263" name="l01263"></a><span class="lineno"> 1263</span>};</div>
<div class="line"><a id="l01264" name="l01264"></a><span class="lineno"> 1264</span> </div>
<div class="line"><a id="l01265" name="l01265"></a><span class="lineno"><a class="line" href="namespaceripple_1_1test.html#a397b62843220daf742e7187fc3546423"> 1265</a></span>BEAST_DEFINE_TESTSUITE_PRIO(<a class="code hl_class" href="classripple_1_1DeleteAccount.html">AccountDelete</a>, app, <a class="code hl_namespace" href="namespaceripple.html">ripple</a>, 2);</div>
<div class="line"><a id="l01266" name="l01266"></a><span class="lineno"> 1266</span> </div>
<div class="line"><a id="l01267" name="l01267"></a><span class="lineno"> 1267</span>} <span class="comment">// namespace test</span></div>
<div class="line"><a id="l01268" name="l01268"></a><span class="lineno"> 1268</span>} <span class="comment">// namespace ripple</span></div>
<div class="ttc" id="abasic_string_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a></div></div>
<div class="ttc" id="aclassJson_1_1Value_html"><div class="ttname"><a href="classJson_1_1Value.html">Json::Value</a></div><div class="ttdoc">Represents a JSON value.</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8h_source.html#l00149">json_value.h:150</a></div></div>
<div class="ttc" id="aclassJson_1_1Value_html_ab0d86bf425efefd03513e8dbfaca317b"><div class="ttname"><a href="classJson_1_1Value.html#ab0d86bf425efefd03513e8dbfaca317b">Json::Value::asString</a></div><div class="ttdeci">std::string asString() const</div><div class="ttdoc">Returns the unquoted string value.</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8cpp_source.html#l00482">json_value.cpp:482</a></div></div>
<div class="ttc" id="aclassJson_1_1Value_html_abfa90c81f6aee7877bd5fb4c8445994f"><div class="ttname"><a href="classJson_1_1Value.html#abfa90c81f6aee7877bd5fb4c8445994f">Json::Value::isMember</a></div><div class="ttdeci">bool isMember(char const *key) const</div><div class="ttdoc">Return true if the object has a member named key.</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8cpp_source.html#l00962">json_value.cpp:962</a></div></div>
<div class="ttc" id="aclassbeast_1_1unit__test_1_1suite_html"><div class="ttname"><a href="classbeast_1_1unit__test_1_1suite.html">beast::unit_test::suite</a></div><div class="ttdoc">A testsuite class.</div><div class="ttdef"><b>Definition:</b> <a href="suite_8h_source.html#l00054">suite.h:55</a></div></div>
<div class="ttc" id="aclassbeast_1_1unit__test_1_1suite_html_aaa1237d9b85c69d35fe86645cee094b5"><div class="ttname"><a href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">beast::unit_test::suite::testcase</a></div><div class="ttdeci">testcase_t testcase</div><div class="ttdoc">Memberspace for declaring test cases.</div><div class="ttdef"><b>Definition:</b> <a href="suite_8h_source.html#l00155">suite.h:155</a></div></div>
<div class="ttc" id="aclassripple_1_1DeleteAccount_html"><div class="ttname"><a href="classripple_1_1DeleteAccount.html">ripple::DeleteAccount</a></div><div class="ttdef"><b>Definition:</b> <a href="DeleteAccount_8h_source.html#l00027">DeleteAccount.h:28</a></div></div>
<div class="ttc" id="aclassripple_1_1PublicKey_html"><div class="ttname"><a href="classripple_1_1PublicKey.html">ripple::PublicKey</a></div><div class="ttdoc">A public key.</div><div class="ttdef"><b>Definition:</b> <a href="PublicKey_8h_source.html#l00061">PublicKey.h:62</a></div></div>
<div class="ttc" id="aclassripple_1_1PublicKey_html_ae0bcc607176a440ec63a86bae5767036"><div class="ttname"><a href="classripple_1_1PublicKey.html#ae0bcc607176a440ec63a86bae5767036">ripple::PublicKey::slice</a></div><div class="ttdeci">Slice slice() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="PublicKey_8h_source.html#l00123">PublicKey.h:123</a></div></div>
<div class="ttc" id="aclassripple_1_1STAmount_html"><div class="ttname"><a href="classripple_1_1STAmount.html">ripple::STAmount</a></div><div class="ttdef"><b>Definition:</b> <a href="STAmount_8h_source.html#l00049">STAmount.h:50</a></div></div>
<div class="ttc" id="aclassripple_1_1STAmount_html_a181a52a4cdeca099d04a31ec43123388"><div class="ttname"><a href="classripple_1_1STAmount.html#a181a52a4cdeca099d04a31ec43123388">ripple::STAmount::getJson</a></div><div class="ttdeci">Json::Value getJson(JsonOptions=JsonOptions::none) const override</div><div class="ttdef"><b>Definition:</b> <a href="STAmount_8cpp_source.html#l00639">STAmount.cpp:639</a></div></div>
<div class="ttc" id="aclassripple_1_1base__uint_html"><div class="ttname"><a href="classripple_1_1base__uint.html">ripple::base_uint&lt; 256 &gt;</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1AccountDelete__test_html"><div class="ttname"><a href="classripple_1_1test_1_1AccountDelete__test.html">ripple::test::AccountDelete_test</a></div><div class="ttdef"><b>Definition:</b> <a href="AccountDelete__test_8cpp_source.html#l00028">AccountDelete_test.cpp:29</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1AccountDelete__test_html_a031c45de38a9ea352bf440f6bd9b60e8"><div class="ttname"><a href="classripple_1_1test_1_1AccountDelete__test.html#a031c45de38a9ea352bf440f6bd9b60e8">ripple::test::AccountDelete_test::testWithTickets</a></div><div class="ttdeci">void testWithTickets()</div><div class="ttdef"><b>Definition:</b> <a href="AccountDelete__test_8cpp_source.html#l00782">AccountDelete_test.cpp:782</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1AccountDelete__test_html_a09f62f1f5c18fafb1445c43b7f4072f7"><div class="ttname"><a href="classripple_1_1test_1_1AccountDelete__test.html#a09f62f1f5c18fafb1445c43b7f4072f7">ripple::test::AccountDelete_test::testBasics</a></div><div class="ttdeci">void testBasics()</div><div class="ttdef"><b>Definition:</b> <a href="AccountDelete__test_8cpp_source.html#l00082">AccountDelete_test.cpp:82</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1AccountDelete__test_html_a1b94b395084df1cf1ab3be9c1a68e452"><div class="ttname"><a href="classripple_1_1test_1_1AccountDelete__test.html#a1b94b395084df1cf1ab3be9c1a68e452">ripple::test::AccountDelete_test::testDest</a></div><div class="ttdeci">void testDest()</div><div class="ttdef"><b>Definition:</b> <a href="AccountDelete__test_8cpp_source.html#l00833">AccountDelete_test.cpp:833</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1AccountDelete__test_html_a1e270085d457d7ee5fd5daa3773f6cc3"><div class="ttname"><a href="classripple_1_1test_1_1AccountDelete__test.html#a1e270085d457d7ee5fd5daa3773f6cc3">ripple::test::AccountDelete_test::testResurrection</a></div><div class="ttdeci">void testResurrection()</div><div class="ttdef"><b>Definition:</b> <a href="AccountDelete__test_8cpp_source.html#l00446">AccountDelete_test.cpp:446</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1AccountDelete__test_html_a2fb47d7436dbfb81c8114305d78adddd"><div class="ttname"><a href="classripple_1_1test_1_1AccountDelete__test.html#a2fb47d7436dbfb81c8114305d78adddd">ripple::test::AccountDelete_test::testBalanceTooSmallForFee</a></div><div class="ttdeci">void testBalanceTooSmallForFee()</div><div class="ttdef"><b>Definition:</b> <a href="AccountDelete__test_8cpp_source.html#l00729">AccountDelete_test.cpp:729</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1AccountDelete__test_html_a3a2e08d09c040d83aa23d75f8b0fb58d"><div class="ttname"><a href="classripple_1_1test_1_1AccountDelete__test.html#a3a2e08d09c040d83aa23d75f8b0fb58d">ripple::test::AccountDelete_test::verifyDeliveredAmount</a></div><div class="ttdeci">void verifyDeliveredAmount(jtx::Env &amp;env, STAmount const &amp;amount)</div><div class="ttdef"><b>Definition:</b> <a href="AccountDelete__test_8cpp_source.html#l00036">AccountDelete_test.cpp:36</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1AccountDelete__test_html_a45cb3f504a950d8340820a035ed9a67d"><div class="ttname"><a href="classripple_1_1test_1_1AccountDelete__test.html#a45cb3f504a950d8340820a035ed9a67d">ripple::test::AccountDelete_test::testDeleteCredentialsOwner</a></div><div class="ttdeci">void testDeleteCredentialsOwner()</div><div class="ttdef"><b>Definition:</b> <a href="AccountDelete__test_8cpp_source.html#l01156">AccountDelete_test.cpp:1156</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1AccountDelete__test_html_a90580c0aa5b257088a7b6b0dc52f4934"><div class="ttname"><a href="classripple_1_1test_1_1AccountDelete__test.html#a90580c0aa5b257088a7b6b0dc52f4934">ripple::test::AccountDelete_test::run</a></div><div class="ttdeci">void run() override</div><div class="ttdoc">Runs the suite.</div><div class="ttdef"><b>Definition:</b> <a href="AccountDelete__test_8cpp_source.html#l01248">AccountDelete_test.cpp:1248</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1AccountDelete__test_html_a9608a0aba27aea97c17205de5965d6cd"><div class="ttname"><a href="classripple_1_1test_1_1AccountDelete__test.html#a9608a0aba27aea97c17205de5965d6cd">ripple::test::AccountDelete_test::testAmendmentEnable</a></div><div class="ttdeci">void testAmendmentEnable()</div><div class="ttdef"><b>Definition:</b> <a href="AccountDelete__test_8cpp_source.html#l00524">AccountDelete_test.cpp:524</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1AccountDelete__test_html_aa32b27823d78947eae4b1950628d0934"><div class="ttname"><a href="classripple_1_1test_1_1AccountDelete__test.html#aa32b27823d78947eae4b1950628d0934">ripple::test::AccountDelete_test::testOwnedTypes</a></div><div class="ttdeci">void testOwnedTypes()</div><div class="ttdef"><b>Definition:</b> <a href="AccountDelete__test_8cpp_source.html#l00284">AccountDelete_test.cpp:284</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1AccountDelete__test_html_aa631e36dc0eb14c7b60191138bc1c548"><div class="ttname"><a href="classripple_1_1test_1_1AccountDelete__test.html#aa631e36dc0eb14c7b60191138bc1c548">ripple::test::AccountDelete_test::testTooManyOffers</a></div><div class="ttdeci">void testTooManyOffers()</div><div class="ttdef"><b>Definition:</b> <a href="AccountDelete__test_8cpp_source.html#l00578">AccountDelete_test.cpp:578</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1AccountDelete__test_html_ab5a812d5effb7ab1a858baa257f088f7"><div class="ttname"><a href="classripple_1_1test_1_1AccountDelete__test.html#ab5a812d5effb7ab1a858baa257f088f7">ripple::test::AccountDelete_test::testDestinationDepositAuthCredentials</a></div><div class="ttdeci">void testDestinationDepositAuthCredentials()</div><div class="ttdef"><b>Definition:</b> <a href="AccountDelete__test_8cpp_source.html#l00888">AccountDelete_test.cpp:888</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1AccountDelete__test_html_ac392a32b72823219d9ee0dc266226f64"><div class="ttname"><a href="classripple_1_1test_1_1AccountDelete__test.html#ac392a32b72823219d9ee0dc266226f64">ripple::test::AccountDelete_test::testDirectories</a></div><div class="ttdeci">void testDirectories()</div><div class="ttdef"><b>Definition:</b> <a href="AccountDelete__test_8cpp_source.html#l00238">AccountDelete_test.cpp:238</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1AccountDelete__test_html_aea5e164214d08334d5e3fa10ac9c2cc0"><div class="ttname"><a href="classripple_1_1test_1_1AccountDelete__test.html#aea5e164214d08334d5e3fa10ac9c2cc0">ripple::test::AccountDelete_test::payChanCreate</a></div><div class="ttdeci">static Json::Value payChanCreate(jtx::Account const &amp;account, jtx::Account const &amp;to, STAmount const &amp;amount, NetClock::duration const &amp;settleDelay, NetClock::time_point const &amp;cancelAfter, PublicKey const &amp;pk)</div><div class="ttdef"><b>Definition:</b> <a href="AccountDelete__test_8cpp_source.html#l00061">AccountDelete_test.cpp:61</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1AccountDelete__test_html_af9b88be1918a8fe91a3c7cd9d54207de"><div class="ttname"><a href="classripple_1_1test_1_1AccountDelete__test.html#af9b88be1918a8fe91a3c7cd9d54207de">ripple::test::AccountDelete_test::testImplicitlyCreatedTrustline</a></div><div class="ttdeci">void testImplicitlyCreatedTrustline()</div><div class="ttdef"><b>Definition:</b> <a href="AccountDelete__test_8cpp_source.html#l00684">AccountDelete_test.cpp:684</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Account_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Account.html">ripple::test::jtx::Account</a></div><div class="ttdoc">Immutable cryptographic account descriptor.</div><div class="ttdef"><b>Definition:</b> <a href="Account_8h_source.html#l00038">Account.h:39</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Account_html_a079e39aea7b349047759b9dfc1df7a13"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Account.html#a079e39aea7b349047759b9dfc1df7a13">ripple::test::jtx::Account::pk</a></div><div class="ttdeci">PublicKey const &amp; pk() const</div><div class="ttdoc">Return the public key.</div><div class="ttdef"><b>Definition:</b> <a href="Account_8h_source.html#l00090">Account.h:90</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Account_html_a1ea8869f5af6ce774c37b560c6c785c3"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Account.html#a1ea8869f5af6ce774c37b560c6c785c3">ripple::test::jtx::Account::id</a></div><div class="ttdeci">AccountID id() const</div><div class="ttdoc">Returns the Account ID.</div><div class="ttdef"><b>Definition:</b> <a href="Account_8h_source.html#l00107">Account.h:107</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Account_html_a7673e52d5c91125db2ae5ce7c10d4a14"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Account.html#a7673e52d5c91125db2ae5ce7c10d4a14">ripple::test::jtx::Account::master</a></div><div class="ttdeci">static Account const master</div><div class="ttdoc">The master account.</div><div class="ttdef"><b>Definition:</b> <a href="Account_8h_source.html#l00048">Account.h:48</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Account_html_af418ef1752815f3b0d0c80e7e9891004"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Account.html#af418ef1752815f3b0d0c80e7e9891004">ripple::test::jtx::Account::human</a></div><div class="ttdeci">std::string const &amp; human() const</div><div class="ttdoc">Returns the human readable public key.</div><div class="ttdef"><b>Definition:</b> <a href="Account_8h_source.html#l00114">Account.h:114</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Env_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Env.html">ripple::test::jtx::Env</a></div><div class="ttdoc">A transaction testing environment.</div><div class="ttdef"><b>Definition:</b> <a href="Env_8h_source.html#l00120">Env.h:121</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Env_html_a57001b726ea6929d328a784eaf5b0227"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Env.html#a57001b726ea6929d328a784eaf5b0227">ripple::test::jtx::Env::tx</a></div><div class="ttdeci">std::shared_ptr&lt; STTx const &gt; tx() const</div><div class="ttdoc">Return the tx data for the last JTx.</div><div class="ttdef"><b>Definition:</b> <a href="Env_8cpp_source.html#l00460">Env.cpp:460</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Env_html_a69095691c9bcfab1f3d69c645f2dbe33"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Env.html#a69095691c9bcfab1f3d69c645f2dbe33">ripple::test::jtx::Env::close</a></div><div class="ttdeci">bool close(NetClock::time_point closeTime, std::optional&lt; std::chrono::milliseconds &gt; consensusDelay=std::nullopt)</div><div class="ttdoc">Close and advance the ledger.</div><div class="ttdef"><b>Definition:</b> <a href="Env_8cpp_source.html#l00117">Env.cpp:117</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Env_html_ad69855b4b26fc3c83922c5783487592c"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Env.html#ad69855b4b26fc3c83922c5783487592c">ripple::test::jtx::Env::rpc</a></div><div class="ttdeci">Json::Value rpc(unsigned apiVersion, std::unordered_map&lt; std::string, std::string &gt; const &amp;headers, std::string const &amp;cmd, Args &amp;&amp;... args)</div><div class="ttdoc">Execute an RPC command.</div><div class="ttdef"><b>Definition:</b> <a href="Env_8h_source.html#l00773">Env.h:773</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Env_html_ae2349266cb09d1f1c3de06606ebdf9e2"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Env.html#ae2349266cb09d1f1c3de06606ebdf9e2">ripple::test::jtx::Env::fund</a></div><div class="ttdeci">void fund(bool setDefaultRipple, STAmount const &amp;amount, Account const &amp;account)</div><div class="ttdef"><b>Definition:</b> <a href="Env_8cpp_source.html#l00233">Env.cpp:233</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1balance_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1balance.html">ripple::test::jtx::balance</a></div><div class="ttdoc">A balance matches.</div><div class="ttdef"><b>Definition:</b> <a href="balance_8h_source.html#l00038">balance.h:39</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1credentials_1_1ids_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1credentials_1_1ids.html">ripple::test::jtx::credentials::ids</a></div><div class="ttdef"><b>Definition:</b> <a href="credentials_8h_source.html#l00062">credentials.h:63</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1fee_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1fee.html">ripple::test::jtx::fee</a></div><div class="ttdoc">Set the fee on a JTx.</div><div class="ttdef"><b>Definition:</b> <a href="fee_8h_source.html#l00036">fee.h:37</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1msig_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1msig.html">ripple::test::jtx::msig</a></div><div class="ttdoc">Set a multisignature on a JTx.</div><div class="ttdef"><b>Definition:</b> <a href="multisign_8h_source.html#l00066">multisign.h:67</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1owners_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1owners.html">ripple::test::jtx::owners</a></div><div class="ttdoc">Match the number of items in the account's owner directory.</div><div class="ttdef"><b>Definition:</b> <a href="owners_8h_source.html#l00072">owners.h:73</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1sig_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1sig.html">ripple::test::jtx::sig</a></div><div class="ttdoc">Set the regular signature on a JTx.</div><div class="ttdef"><b>Definition:</b> <a href="sig_8h_source.html#l00034">sig.h:35</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1ter_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1ter.html">ripple::test::jtx::ter</a></div><div class="ttdoc">Set the expected result code for a JTx The test will fail if the code doesn't match.</div><div class="ttdef"><b>Definition:</b> <a href="ter_8h_source.html#l00034">ter.h:35</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1ticket_1_1use_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1ticket_1_1use.html">ripple::test::jtx::ticket::use</a></div><div class="ttdoc">Set a ticket sequence on a JTx.</div><div class="ttdef"><b>Definition:</b> <a href="ticket_8h_source.html#l00047">ticket.h:48</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1txflags_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1txflags.html">ripple::test::jtx::txflags</a></div><div class="ttdoc">Set the flags on a JTx.</div><div class="ttdef"><b>Definition:</b> <a href="txflags_8h_source.html#l00030">txflags.h:31</a></div></div>
<div class="ttc" id="acount_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/chrono/duration/count.html">std::chrono::duration::count</a></div><div class="ttdeci">T count(T... args)</div></div>
<div class="ttc" id="aduration_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/chrono/duration.html">std::chrono::duration</a></div></div>
<div class="ttc" id="ainteger_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_aa756e0f59b26042ed00a4d0ba6e96951"><div class="ttname"><a href="namespaceripple_1_1keylet.html#aa756e0f59b26042ed00a4d0ba6e96951">ripple::keylet::account</a></div><div class="ttdeci">Keylet account(AccountID const &amp;id) noexcept</div><div class="ttdoc">AccountID root.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00184">Indexes.cpp:184</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_aaa5be5f268b3d5d79e99ce5bcbc4fab2"><div class="ttname"><a href="namespaceripple_1_1keylet.html#aaa5be5f268b3d5d79e99ce5bcbc4fab2">ripple::keylet::page</a></div><div class="ttdeci">Keylet page(uint256 const &amp;root, std::uint64_t index=0) noexcept</div><div class="ttdoc">A page in a directory.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00380">Indexes.cpp:380</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_acd4d51d467fc6e75745baf179a7965ef"><div class="ttname"><a href="namespaceripple_1_1keylet.html#acd4d51d467fc6e75745baf179a7965ef">ripple::keylet::ownerDir</a></div><div class="ttdeci">Keylet ownerDir(AccountID const &amp;id) noexcept</div><div class="ttdoc">The root page of an account's directory.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00374">Indexes.cpp:374</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_ad5c2136f2d2d711114702944633d4fa8"><div class="ttname"><a href="namespaceripple_1_1keylet.html#ad5c2136f2d2d711114702944633d4fa8">ripple::keylet::signers</a></div><div class="ttdeci">Keylet signers(AccountID const &amp;account) noexcept</div><div class="ttdoc">A SignerList.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00330">Indexes.cpp:330</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_aee01252a0cd33b8d4f4ad38982c0dcab"><div class="ttname"><a href="namespaceripple_1_1keylet.html#aee01252a0cd33b8d4f4ad38982c0dcab">ripple::keylet::ticket</a></div><div class="ttdeci">static ticket_t const ticket</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8h_source.html#l00170">Indexes.h:170</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_aefa210f097f27f0e9e67fe65c6271508"><div class="ttname"><a href="namespaceripple_1_1keylet.html#aefa210f097f27f0e9e67fe65c6271508">ripple::keylet::check</a></div><div class="ttdeci">Keylet check(AccountID const &amp;id, std::uint32_t seq) noexcept</div><div class="ttdoc">A Check.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00336">Indexes.cpp:336</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_aeffddd45805feb6cc0678738b5c21072"><div class="ttname"><a href="namespaceripple_1_1keylet.html#aeffddd45805feb6cc0678738b5c21072">ripple::keylet::offer</a></div><div class="ttdeci">Keylet offer(AccountID const &amp;id, std::uint32_t seq) noexcept</div><div class="ttdoc">An offer from an account.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00274">Indexes.cpp:274</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_af007cd3970facb09bf54b78026e9d206"><div class="ttname"><a href="namespaceripple_1_1keylet.html#af007cd3970facb09bf54b78026e9d206">ripple::keylet::depositPreauth</a></div><div class="ttdeci">Keylet depositPreauth(AccountID const &amp;owner, AccountID const &amp;preauthorized) noexcept</div><div class="ttdoc">A DepositPreauth.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00342">Indexes.cpp:342</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_afde577cc367684fb4beceb0100da6195"><div class="ttname"><a href="namespaceripple_1_1keylet.html#afde577cc367684fb4beceb0100da6195">ripple::keylet::payChan</a></div><div class="ttdeci">Keylet payChan(AccountID const &amp;src, AccountID const &amp;dst, std::uint32_t seq) noexcept</div><div class="ttdoc">A PaymentChannel.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00395">Indexes.cpp:395</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_1_1check_html_a026568d2c61a6be3ef305377a62ed301"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx_1_1check.html#a026568d2c61a6be3ef305377a62ed301">ripple::test::jtx::check::create</a></div><div class="ttdeci">Json::Value create(A const &amp;account, A const &amp;dest, STAmount const &amp;sendMax)</div><div class="ttdoc">Create a check.</div><div class="ttdef"><b>Definition:</b> <a href="TestHelpers_8h_source.html#l00450">TestHelpers.h:450</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_1_1check_html_a2d3a894a7ac4d177a05437a83718d0ac"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx_1_1check.html#a2d3a894a7ac4d177a05437a83718d0ac">ripple::test::jtx::check::cancel</a></div><div class="ttdeci">Json::Value cancel(jtx::Account const &amp;dest, uint256 const &amp;checkId)</div><div class="ttdoc">Cancel a check.</div><div class="ttdef"><b>Definition:</b> <a href="check_8cpp_source.html#l00060">check.cpp:60</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_1_1credentials_html_a0529a6b1613da8aa0c2a8964b1820ac9"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#a0529a6b1613da8aa0c2a8964b1820ac9">ripple::test::jtx::credentials::create</a></div><div class="ttdeci">Json::Value create(jtx::Account const &amp;subject, jtx::Account const &amp;issuer, std::string_view credType)</div><div class="ttdef"><b>Definition:</b> <a href="creds_8cpp_source.html#l00032">creds.cpp:32</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_1_1credentials_html_a3c554c809a810395ee98a696ca447fb5"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#a3c554c809a810395ee98a696ca447fb5">ripple::test::jtx::credentials::accept</a></div><div class="ttdeci">Json::Value accept(jtx::Account const &amp;subject, jtx::Account const &amp;issuer, std::string_view credType)</div><div class="ttdef"><b>Definition:</b> <a href="creds_8cpp_source.html#l00048">creds.cpp:48</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_1_1credentials_html_ade27ecac76c7d1262720bd7f112cf28e"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx_1_1credentials.html#ade27ecac76c7d1262720bd7f112cf28e">ripple::test::jtx::credentials::ledgerEntry</a></div><div class="ttdeci">Json::Value ledgerEntry(jtx::Env &amp;env, jtx::Account const &amp;subject, jtx::Account const &amp;issuer, std::string_view credType)</div><div class="ttdef"><b>Definition:</b> <a href="creds_8cpp_source.html#l00078">creds.cpp:78</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_1_1deposit_html_a662867f42cb3f468f2e8830fbd7e0d8a"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx_1_1deposit.html#a662867f42cb3f468f2e8830fbd7e0d8a">ripple::test::jtx::deposit::auth</a></div><div class="ttdeci">Json::Value auth(Account const &amp;account, Account const &amp;auth)</div><div class="ttdoc">Preauthorize for deposit.</div><div class="ttdef"><b>Definition:</b> <a href="deposit_8cpp_source.html#l00032">deposit.cpp:32</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_1_1deposit_html_ac0c24df5082c3715d3be7a4a7617b9d5"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx_1_1deposit.html#ac0c24df5082c3715d3be7a4a7617b9d5">ripple::test::jtx::deposit::authCredentials</a></div><div class="ttdeci">Json::Value authCredentials(jtx::Account const &amp;account, std::vector&lt; AuthorizeCredentials &gt; const &amp;auth)</div><div class="ttdef"><b>Definition:</b> <a href="deposit_8cpp_source.html#l00054">deposit.cpp:54</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_1_1did_html_af9e9977708cdfb7b9aded98d2cbaa52e"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx_1_1did.html#af9e9977708cdfb7b9aded98d2cbaa52e">ripple::test::jtx::did::setValid</a></div><div class="ttdeci">Json::Value setValid(jtx::Account const &amp;account)</div><div class="ttdef"><b>Definition:</b> <a href="dids_8cpp_source.html#l00042">dids.cpp:42</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_1_1ticket_html_a1e24650b39bab99fc665d9f80365cc27"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx_1_1ticket.html#a1e24650b39bab99fc665d9f80365cc27">ripple::test::jtx::ticket::create</a></div><div class="ttdeci">Json::Value create(Account const &amp;account, std::uint32_t count)</div><div class="ttdoc">Create one of more tickets.</div><div class="ttdef"><b>Definition:</b> <a href="ticket_8cpp_source.html#l00031">ticket.cpp:31</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_a25348362262144c3927b86f8d349fd86"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#a25348362262144c3927b86f8d349fd86">ripple::test::jtx::regkey</a></div><div class="ttdeci">Json::Value regkey(Account const &amp;account, disabled_t)</div><div class="ttdoc">Disable the regular key.</div><div class="ttdef"><b>Definition:</b> <a href="regkey_8cpp_source.html#l00029">regkey.cpp:29</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_a2f130edacc0e266d31bd9d4fe4def16c"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#a2f130edacc0e266d31bd9d4fe4def16c">ripple::test::jtx::signers</a></div><div class="ttdeci">Json::Value signers(Account const &amp;account, std::uint32_t quorum, std::vector&lt; signer &gt; const &amp;v)</div><div class="ttdef"><b>Definition:</b> <a href="multisign_8cpp_source.html#l00034">multisign.cpp:34</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_a3beb715a43d7e5bc771c333529bbf92d"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#a3beb715a43d7e5bc771c333529bbf92d">ripple::test::jtx::offers</a></div><div class="ttdeci">owner_count&lt; ltOFFER &gt; offers</div><div class="ttdoc">Match the number of offers in the account's owner directory.</div><div class="ttdef"><b>Definition:</b> <a href="owners_8h_source.html#l00092">owners.h:92</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_a47271eb5e7eb9b5aada383ccfaf9c0cf"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">ripple::test::jtx::drops</a></div><div class="ttdeci">PrettyAmount drops(Integer i)</div><div class="ttdoc">Returns an XRP PrettyAmount, which is trivially convertible to STAmount.</div><div class="ttdef"><b>Definition:</b> <a href="src_2test_2jtx_2amount_8h_source.html#l00297">src/test/jtx/amount.h:297</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_a47cac3a8bfbc8c14ae8da735ec52ebbf"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#a47cac3a8bfbc8c14ae8da735ec52ebbf">ripple::test::jtx::trust</a></div><div class="ttdeci">Json::Value trust(Account const &amp;account, STAmount const &amp;amount, std::uint32_t flags)</div><div class="ttdoc">Modify a trust line.</div><div class="ttdef"><b>Definition:</b> <a href="trust_8cpp_source.html#l00032">trust.cpp:32</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_a50cacef3867fc01273aa9c29231f9a7c"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#a50cacef3867fc01273aa9c29231f9a7c">ripple::test::jtx::fset</a></div><div class="ttdeci">Json::Value fset(Account const &amp;account, std::uint32_t on, std::uint32_t off=0)</div><div class="ttdoc">Add and/or remove flag.</div><div class="ttdef"><b>Definition:</b> <a href="flags_8cpp_source.html#l00029">flags.cpp:29</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_a66b99468a4160bccaa9959a444b40d40"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#a66b99468a4160bccaa9959a444b40d40">ripple::test::jtx::pay</a></div><div class="ttdeci">Json::Value pay(AccountID const &amp;account, AccountID const &amp;to, AnyAmount amount)</div><div class="ttdoc">Create a payment.</div><div class="ttdef"><b>Definition:</b> <a href="pay_8cpp_source.html#l00030">pay.cpp:30</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_ab5498b455814e9a3ebe57c96170a6bcd"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#ab5498b455814e9a3ebe57c96170a6bcd">ripple::test::jtx::incLgrSeqForAccDel</a></div><div class="ttdeci">void incLgrSeqForAccDel(jtx::Env &amp;env, jtx::Account const &amp;acc, std::uint32_t margin=0)</div><div class="ttdef"><b>Definition:</b> <a href="acctdelete_8cpp_source.html#l00044">acctdelete.cpp:44</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_ac423e2aa3fd7a14ae651849b430994f1"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">ripple::test::jtx::offer</a></div><div class="ttdeci">Json::Value offer(Account const &amp;account, STAmount const &amp;takerPays, STAmount const &amp;takerGets, std::uint32_t flags)</div><div class="ttdoc">Create an offer.</div><div class="ttdef"><b>Definition:</b> <a href="offer_8cpp_source.html#l00029">offer.cpp:29</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_ada147bbc773967de4235fc8ed1c89562"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#ada147bbc773967de4235fc8ed1c89562">ripple::test::jtx::acctdelete</a></div><div class="ttdeci">Json::Value acctdelete(Account const &amp;account, Account const &amp;dest)</div><div class="ttdoc">Delete account.</div><div class="ttdef"><b>Definition:</b> <a href="acctdelete_8cpp_source.html#l00031">acctdelete.cpp:31</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_aea9cd3d4e6b5df2e62d53b34b605957e"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">ripple::test::jtx::XRP</a></div><div class="ttdeci">XRP_t const XRP</div><div class="ttdoc">Converts to XRP Issue or STAmount.</div><div class="ttdef"><b>Definition:</b> <a href="amount_8cpp_source.html#l00105">amount.cpp:105</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_af5441d84d5977d52246c5226313560d4"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#af5441d84d5977d52246c5226313560d4">ripple::test::jtx::supported_amendments</a></div><div class="ttdeci">FeatureBitset supported_amendments()</div><div class="ttdef"><b>Definition:</b> <a href="Env_8h_source.html#l00074">Env.h:74</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_afd83a8b3855491e6341e1753822f7dc0"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#afd83a8b3855491e6341e1753822f7dc0">ripple::test::jtx::offer_cancel</a></div><div class="ttdeci">Json::Value offer_cancel(Account const &amp;account, std::uint32_t offerSeq)</div><div class="ttdoc">Cancel an offer.</div><div class="ttdef"><b>Definition:</b> <a href="offer_8cpp_source.html#l00046">offer.cpp:46</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_acf39cc44acdd6b5089f2076897fa3911af34d3a138958b0d338875bb910a39cf6"><div class="ttname"><a href="namespaceripple_1_1test.html#acf39cc44acdd6b5089f2076897fa3911af34d3a138958b0d338875bb910a39cf6">ripple::test::TrustFlag::noripple</a></div><div class="ttdeci">@ noripple</div></div>
<div class="ttc" id="anamespaceripple_html"><div class="ttname"><a href="namespaceripple.html">ripple</a></div><div class="ttdoc">Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.</div><div class="ttdef"><b>Definition:</b> <a href="algorithm_8h_source.html#l00026">algorithm.h:26</a></div></div>
<div class="ttc" id="anamespaceripple_html_a1d8ec9af2fd805d04e032c52f6968211"><div class="ttname"><a href="namespaceripple.html#a1d8ec9af2fd805d04e032c52f6968211">ripple::asfDepositAuth</a></div><div class="ttdeci">constexpr std::uint32_t asfDepositAuth</div><div class="ttdef"><b>Definition:</b> <a href="TxFlags_8h_source.html#l00085">TxFlags.h:85</a></div></div>
<div class="ttc" id="anamespaceripple_html_a260d2970ac1119109937ed1c5d4ca962a595a44bbc04dffad91a353227660d6ba"><div class="ttname"><a href="namespaceripple.html#a260d2970ac1119109937ed1c5d4ca962a595a44bbc04dffad91a353227660d6ba">ripple::telINSUF_FEE_P</a></div><div class="ttdeci">@ telINSUF_FEE_P</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00057">TER.h:57</a></div></div>
<div class="ttc" id="anamespaceripple_html_a2e3220cb8c660141f5300a9e38841295"><div class="ttname"><a href="namespaceripple.html#a2e3220cb8c660141f5300a9e38841295">ripple::asfRequireDest</a></div><div class="ttdeci">constexpr std::uint32_t asfRequireDest</div><div class="ttdef"><b>Definition:</b> <a href="TxFlags_8h_source.html#l00077">TxFlags.h:77</a></div></div>
<div class="ttc" id="anamespaceripple_html_a6257d0a91b5b06dd7712c68af628441d"><div class="ttname"><a href="namespaceripple.html#a6257d0a91b5b06dd7712c68af628441d">ripple::tfImmediateOrCancel</a></div><div class="ttdeci">constexpr std::uint32_t tfImmediateOrCancel</div><div class="ttdef"><b>Definition:</b> <a href="TxFlags_8h_source.html#l00098">TxFlags.h:98</a></div></div>
<div class="ttc" id="anamespaceripple_html_a75cb21d7f1df42f2fdc8efddb79b63f4ac88fc0c8fed663cca3ccde623c0f3057"><div class="ttname"><a href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4ac88fc0c8fed663cca3ccde623c0f3057">ripple::tefTOO_BIG</a></div><div class="ttdeci">@ tefTOO_BIG</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00184">TER.h:184</a></div></div>
<div class="ttc" id="anamespaceripple_html_a86e358ce3f06ff049af13c2342791cf8"><div class="ttname"><a href="namespaceripple.html#a86e358ce3f06ff049af13c2342791cf8">ripple::strHex</a></div><div class="ttdeci">std::string strHex(FwdIt begin, FwdIt end)</div><div class="ttdef"><b>Definition:</b> <a href="strHex_8h_source.html#l00030">strHex.h:30</a></div></div>
<div class="ttc" id="anamespaceripple_html_aa298e929e02f59c2b05a30ee8805b38ca1207baad8c378dc23cd2fa4c4276844d"><div class="ttname"><a href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca1207baad8c378dc23cd2fa4c4276844d">ripple::tecNO_DST</a></div><div class="ttdeci">@ tecNO_DST</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00290">TER.h:290</a></div></div>
<div class="ttc" id="anamespaceripple_html_aa298e929e02f59c2b05a30ee8805b38ca44bd180d908c1a35ffd236f7c88c180c"><div class="ttname"><a href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca44bd180d908c1a35ffd236f7c88c180c">ripple::tecTOO_SOON</a></div><div class="ttdeci">@ tecTOO_SOON</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00318">TER.h:318</a></div></div>
<div class="ttc" id="anamespaceripple_html_aa298e929e02f59c2b05a30ee8805b38ca949bc4765f151a8866814dafbd8ea558"><div class="ttname"><a href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca949bc4765f151a8866814dafbd8ea558">ripple::tecBAD_CREDENTIALS</a></div><div class="ttdeci">@ tecBAD_CREDENTIALS</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00359">TER.h:359</a></div></div>
<div class="ttc" id="anamespaceripple_html_aa298e929e02f59c2b05a30ee8805b38ca9af7057961bc54674f4a6c2dd8ed6ab9"><div class="ttname"><a href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca9af7057961bc54674f4a6c2dd8ed6ab9">ripple::tecNO_PERMISSION</a></div><div class="ttdeci">@ tecNO_PERMISSION</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00305">TER.h:305</a></div></div>
<div class="ttc" id="anamespaceripple_html_aa298e929e02f59c2b05a30ee8805b38caa3ac7c997274040539a497cadc280b22"><div class="ttname"><a href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caa3ac7c997274040539a497cadc280b22">ripple::tecDST_TAG_NEEDED</a></div><div class="ttdeci">@ tecDST_TAG_NEEDED</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00309">TER.h:309</a></div></div>
<div class="ttc" id="anamespaceripple_html_aa298e929e02f59c2b05a30ee8805b38caa7460a5fac26c1d8abef55b8c1129150"><div class="ttname"><a href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caa7460a5fac26c1d8abef55b8c1129150">ripple::tecHAS_OBLIGATIONS</a></div><div class="ttdeci">@ tecHAS_OBLIGATIONS</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00317">TER.h:317</a></div></div>
<div class="ttc" id="anamespaceripple_html_aa298e929e02f59c2b05a30ee8805b38caede598f88bbd44e4df1c4e0d418c4cdc"><div class="ttname"><a href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caede598f88bbd44e4df1c4e0d418c4cdc">ripple::tecEXPIRED</a></div><div class="ttdeci">@ tecEXPIRED</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00314">TER.h:314</a></div></div>
<div class="ttc" id="anamespaceripple_html_aa298e929e02f59c2b05a30ee8805b38caf30c1d76d9aca04b89314307a476b2bd"><div class="ttname"><a href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caf30c1d76d9aca04b89314307a476b2bd">ripple::tecNO_DST_INSUF_XRP</a></div><div class="ttdeci">@ tecNO_DST_INSUF_XRP</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00291">TER.h:291</a></div></div>
<div class="ttc" id="anamespaceripple_html_ac124fe6744b7fe887dec949b56b16d50"><div class="ttname"><a href="namespaceripple.html#ac124fe6744b7fe887dec949b56b16d50">ripple::to_string</a></div><div class="ttdeci">std::string to_string(base_uint&lt; Bits, Tag &gt; const &amp;a)</div><div class="ttdef"><b>Definition:</b> <a href="base__uint_8h_source.html#l00630">base_uint.h:630</a></div></div>
<div class="ttc" id="anamespaceripple_html_ac1c00e26dbebe035301fefc29b02f82b"><div class="ttname"><a href="namespaceripple.html#ac1c00e26dbebe035301fefc29b02f82b">ripple::tfClose</a></div><div class="ttdeci">constexpr std::uint32_t tfClose</div><div class="ttdef"><b>Definition:</b> <a href="TxFlags_8h_source.html#l00138">TxFlags.h:138</a></div></div>
<div class="ttc" id="anamespaceripple_html_ac34a69f56216ea1e430c09ba049bf0aea5483bf26dec486ec0175e2a3ca816a0a"><div class="ttname"><a href="namespaceripple.html#ac34a69f56216ea1e430c09ba049bf0aea5483bf26dec486ec0175e2a3ca816a0a">ripple::ReleaseStrongRefAction::noop</a></div><div class="ttdeci">@ noop</div></div>
<div class="ttc" id="anamespaceripple_html_adebe4d783be9c979e67fdbb2bc27162fa48941f01fb3df9460afe5bbb9fa76ba1"><div class="ttname"><a href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fa48941f01fb3df9460afe5bbb9fa76ba1">ripple::terINSUF_FEE_B</a></div><div class="ttdeci">@ terINSUF_FEE_B</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00216">TER.h:216</a></div></div>
<div class="ttc" id="anamespaceripple_html_afe21c8454670d46fb93751a5edffed46a3210708be8e611097ad2ae1e1a1734fb"><div class="ttname"><a href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46a3210708be8e611097ad2ae1e1a1734fb">ripple::temBAD_FEE</a></div><div class="ttdeci">@ temBAD_FEE</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00092">TER.h:92</a></div></div>
<div class="ttc" id="anamespaceripple_html_afe21c8454670d46fb93751a5edffed46a6c750a245b6efb84fdc4ab34dc010328"><div class="ttname"><a href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46a6c750a245b6efb84fdc4ab34dc010328">ripple::temMALFORMED</a></div><div class="ttdeci">@ temMALFORMED</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00087">TER.h:87</a></div></div>
<div class="ttc" id="anamespaceripple_html_afe21c8454670d46fb93751a5edffed46aa4754e0f122658747650b3b1c0a846a8"><div class="ttname"><a href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46aa4754e0f122658747650b3b1c0a846a8">ripple::temINVALID_FLAG</a></div><div class="ttdeci">@ temINVALID_FLAG</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00111">TER.h:111</a></div></div>
<div class="ttc" id="anamespaceripple_html_afe21c8454670d46fb93751a5edffed46ac3482079467d517ea82aa9c8fa693d21"><div class="ttname"><a href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46ac3482079467d517ea82aa9c8fa693d21">ripple::temDISABLED</a></div><div class="ttdeci">@ temDISABLED</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00114">TER.h:114</a></div></div>
<div class="ttc" id="anamespaceripple_html_afe21c8454670d46fb93751a5edffed46acf9cc7bb9b19628c6a89a21611972242"><div class="ttname"><a href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46acf9cc7bb9b19628c6a89a21611972242">ripple::temDST_IS_SRC</a></div><div class="ttdeci">@ temDST_IS_SRC</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00108">TER.h:108</a></div></div>
<div class="ttc" id="ashared_ptr_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a></div></div>
<div class="ttc" id="astructripple_1_1JsonOptions_html_ab85e43ec84df987200d3355c3ba89f0aa1917451e3686dfe8d5016670eb87ab33"><div class="ttname"><a href="structripple_1_1JsonOptions.html#ab85e43ec84df987200d3355c3ba89f0aa1917451e3686dfe8d5016670eb87ab33">ripple::JsonOptions::none</a></div><div class="ttdeci">@ none</div><div class="ttdef"><b>Definition:</b> <a href="STBase_8h_source.html#l00044">STBase.h:44</a></div></div>
<div class="ttc" id="astructripple_1_1Keylet_html"><div class="ttname"><a href="structripple_1_1Keylet.html">ripple::Keylet</a></div><div class="ttdoc">A pair of SHAMap key and LedgerEntryType.</div><div class="ttdef"><b>Definition:</b> <a href="Keylet_8h_source.html#l00038">Keylet.h:39</a></div></div>
<div class="ttc" id="astructripple_1_1Keylet_html_a482983062843a8682fcea76a309c73db"><div class="ttname"><a href="structripple_1_1Keylet.html#a482983062843a8682fcea76a309c73db">ripple::Keylet::key</a></div><div class="ttdeci">uint256 key</div><div class="ttdef"><b>Definition:</b> <a href="Keylet_8h_source.html#l00040">Keylet.h:40</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1jtx_1_1seq_html"><div class="ttname"><a href="structripple_1_1test_1_1jtx_1_1seq.html">ripple::test::jtx::seq</a></div><div class="ttdoc">Set the sequence number on a JTx.</div><div class="ttdef"><b>Definition:</b> <a href="seq_8h_source.html#l00033">seq.h:34</a></div></div>
<div class="ttc" id="atime_point_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/chrono/time_point.html">std::chrono::time_point</a></div></div>
<div class="ttc" id="atime_since_epoch_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/chrono/time_point/time_since_epoch.html">std::chrono::time_point::time_since_epoch</a></div><div class="ttdeci">T time_since_epoch(T... args)</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.5
</small></address>
</body>
</html>