mirror of
https://github.com/XRPLF/rippled.git
synced 2026-02-08 16:02:27 +00:00
deploy: e80642fc12
This commit is contained in:
@@ -684,323 +684,321 @@ $(document).ready(function() { init_codefold(0); });
|
||||
<div class="line"><a id="l00592" name="l00592"></a><span class="lineno"> 592</span> jvParams[field] = value;</div>
|
||||
<div class="line"><a id="l00593" name="l00593"></a><span class="lineno"> 593</span> jvParams[jss::binary] = <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a id="l00594" name="l00594"></a><span class="lineno"> 594</span> jvParams[jss::type] = jss::oracle;</div>
|
||||
<div class="line"><a id="l00595" name="l00595"></a><span class="lineno"> 595</span> <a class="code hl_class" href="classJson_1_1Value.html">Json::Value</a> jrr = env.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#ad69855b4b26fc3c83922c5783487592c">rpc</a>(</div>
|
||||
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno"> 596</span> <span class="stringliteral">"json"</span>,</div>
|
||||
<div class="line"><a id="l00597" name="l00597"></a><span class="lineno"> 597</span> <span class="stringliteral">"ledger_data"</span>,</div>
|
||||
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno"> 598</span> boost::lexical_cast<std::string>(jvParams));</div>
|
||||
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno"> 599</span> BEAST_EXPECT(jrr[jss::result][jss::state].size() == 2);</div>
|
||||
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno"> 600</span> };</div>
|
||||
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno"> 601</span> verifyLedgerData(jss::ledger_index, index);</div>
|
||||
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno"> 602</span> verifyLedgerData(jss::ledger_hash, <a class="code hl_function" href="namespaceripple.html#ac124fe6744b7fe887dec949b56b16d50">to_string</a>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/utility/hash.html">hash</a>));</div>
|
||||
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno"> 603</span> }</div>
|
||||
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno"> 604</span> }</div>
|
||||
<div class="line"><a id="l00595" name="l00595"></a><span class="lineno"> 595</span> <a class="code hl_class" href="classJson_1_1Value.html">Json::Value</a> jrr =</div>
|
||||
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno"> 596</span> env.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#ad69855b4b26fc3c83922c5783487592c">rpc</a>(<span class="stringliteral">"json"</span>, <span class="stringliteral">"ledger_data"</span>, <a class="code hl_function" href="namespaceripple.html#ac124fe6744b7fe887dec949b56b16d50">to_string</a>(jvParams));</div>
|
||||
<div class="line"><a id="l00597" name="l00597"></a><span class="lineno"> 597</span> BEAST_EXPECT(jrr[jss::result][jss::state].size() == 2);</div>
|
||||
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno"> 598</span> };</div>
|
||||
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno"> 599</span> verifyLedgerData(jss::ledger_index, index);</div>
|
||||
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno"> 600</span> verifyLedgerData(jss::ledger_hash, <a class="code hl_function" href="namespaceripple.html#ac124fe6744b7fe887dec949b56b16d50">to_string</a>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/utility/hash.html">hash</a>));</div>
|
||||
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno"> 601</span> }</div>
|
||||
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno"> 602</span> }</div>
|
||||
</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="keywordtype">void</span></div>
|
||||
<div class="foldopen" id="foldopen00607" data-start="{" data-end="}">
|
||||
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#aff71e6c7eb258afca95d5b780bb9fde2"> 607</a></span> <a class="code hl_function" href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#aff71e6c7eb258afca95d5b780bb9fde2">testUpdate</a>()</div>
|
||||
<div class="line"><a id="l00608" name="l00608"></a><span class="lineno"> 608</span> {</div>
|
||||
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno"> 609</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">"Update"</span>);</div>
|
||||
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno"> 610</span> <span class="keyword">using namespace </span>jtx;</div>
|
||||
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno"> 611</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> owner(<span class="stringliteral">"owner"</span>);</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> {</div>
|
||||
<div class="line"><a id="l00614" name="l00614"></a><span class="lineno"> 614</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="l00615" name="l00615"></a><span class="lineno"> 615</span> <span class="keyword">auto</span> <span class="keyword">const</span> baseFee =</div>
|
||||
<div class="line"><a id="l00616" name="l00616"></a><span class="lineno"> 616</span> <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(env.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#a65bedb2e0babbd55343f721de9008a37">current</a>()->fees().base.drops());</div>
|
||||
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno"> 617</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>(1'000), owner);</div>
|
||||
<div class="line"><a id="l00618" name="l00618"></a><span class="lineno"> 618</span> <span class="keyword">auto</span> count = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a12abe185058a3db015909ed92c421097">ownerCount</a>(env, owner);</div>
|
||||
<div class="line"><a id="l00619" name="l00619"></a><span class="lineno"> 619</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1oracle_1_1Oracle.html">Oracle</a> oracle(env, {.owner = owner, .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno"> 620</span> BEAST_EXPECT(oracle.exists());</div>
|
||||
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno"> 621</span> </div>
|
||||
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno"> 622</span> <span class="comment">// update existing pair</span></div>
|
||||
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"> 623</span> oracle.set(</div>
|
||||
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno"> 624</span> <a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html">UpdateArg</a>{.<a class="code hl_variable" href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html#ab5f28bfb56ed9e15ab80e9a44c045696">series</a> = {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 740, 2}}, .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno"> 625</span> BEAST_EXPECT(oracle.expectPrice({{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 740, 2}}));</div>
|
||||
<div class="line"><a id="l00626" name="l00626"></a><span class="lineno"> 626</span> <span class="comment">// owner count is increased by 1 since the oracle object is added</span></div>
|
||||
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno"> 627</span> <span class="comment">// with one token pair</span></div>
|
||||
<div class="line"><a id="l00628" name="l00628"></a><span class="lineno"> 628</span> count += 1;</div>
|
||||
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno"> 629</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a12abe185058a3db015909ed92c421097">ownerCount</a>(env, owner) == count);</div>
|
||||
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno"> 630</span> </div>
|
||||
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno"> 631</span> <span class="comment">// add new pairs, not-included pair is reset</span></div>
|
||||
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno"> 632</span> oracle.set(</div>
|
||||
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno"> 633</span> <a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html">UpdateArg</a>{.<a class="code hl_variable" href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html#ab5f28bfb56ed9e15ab80e9a44c045696">series</a> = {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"EUR"</span>, 700, 2}}, .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno"> 634</span> BEAST_EXPECT(oracle.expectPrice(</div>
|
||||
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno"> 635</span> {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 0, 0}, {<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"EUR"</span>, 700, 2}}));</div>
|
||||
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno"> 636</span> <span class="comment">// owner count is not changed since the number of pairs is 2</span></div>
|
||||
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno"> 637</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a12abe185058a3db015909ed92c421097">ownerCount</a>(env, owner) == count);</div>
|
||||
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno"> 638</span> </div>
|
||||
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno"> 639</span> <span class="comment">// update both pairs</span></div>
|
||||
<div class="line"><a id="l00640" name="l00640"></a><span class="lineno"> 640</span> oracle.set(<a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html">UpdateArg</a>{</div>
|
||||
<div class="line"><a id="l00641" name="l00641"></a><span class="lineno"> 641</span> .<a class="code hl_variable" href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html#ab5f28bfb56ed9e15ab80e9a44c045696">series</a> = {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 741, 2}, {<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"EUR"</span>, 710, 2}},</div>
|
||||
<div class="line"><a id="l00642" name="l00642"></a><span class="lineno"> 642</span> .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00643" name="l00643"></a><span class="lineno"> 643</span> BEAST_EXPECT(oracle.expectPrice(</div>
|
||||
<div class="line"><a id="l00644" name="l00644"></a><span class="lineno"> 644</span> {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 741, 2}, {<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"EUR"</span>, 710, 2}}));</div>
|
||||
<div class="line"><a id="l00645" name="l00645"></a><span class="lineno"> 645</span> <span class="comment">// owner count is not changed since the number of pairs is 2</span></div>
|
||||
<div class="line"><a id="l00646" name="l00646"></a><span class="lineno"> 646</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a12abe185058a3db015909ed92c421097">ownerCount</a>(env, owner) == count);</div>
|
||||
<div class="line"><a id="l00647" name="l00647"></a><span class="lineno"> 647</span> </div>
|
||||
<div class="line"><a id="l00648" name="l00648"></a><span class="lineno"> 648</span> <span class="comment">// owner count is increased by 1 since the number of pairs is 6</span></div>
|
||||
<div class="line"><a id="l00649" name="l00649"></a><span class="lineno"> 649</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.set(UpdateArg{</div>
|
||||
<div class="line"><a id="l00650" name="l00650"></a><span class="lineno"> 650</span> .series =</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="stringliteral">"BTC"</span>, <span class="stringliteral">"USD"</span>, 741, 2},</div>
|
||||
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno"> 653</span> {<span class="stringliteral">"ETH"</span>, <span class="stringliteral">"EUR"</span>, 710, 2},</div>
|
||||
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno"> 654</span> {<span class="stringliteral">"YAN"</span>, <span class="stringliteral">"EUR"</span>, 710, 2},</div>
|
||||
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno"> 655</span> {<span class="stringliteral">"CAN"</span>, <span class="stringliteral">"EUR"</span>, 710, 2},</div>
|
||||
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno"> 656</span> },</div>
|
||||
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno"> 657</span> .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00658" name="l00658"></a><span class="lineno"> 658</span> <a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/algorithm/count.html">count</a> += 1;</div>
|
||||
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno"> 659</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a12abe185058a3db015909ed92c421097">ownerCount</a>(env, owner) == count);</div>
|
||||
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno"> 660</span> </div>
|
||||
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno"> 661</span> <span class="comment">// update two pairs and delete four</span></div>
|
||||
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno"> 662</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.set(UpdateArg{</div>
|
||||
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno"> 663</span> .series = {{<span class="stringliteral">"BTC"</span>, <span class="stringliteral">"USD"</span>, <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::nullopt</a>, <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::nullopt</a>}},</div>
|
||||
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno"> 664</span> .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno"> 665</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.set(UpdateArg{</div>
|
||||
<div class="line"><a id="l00666" name="l00666"></a><span class="lineno"> 666</span> .series =</div>
|
||||
<div class="line"><a id="l00667" name="l00667"></a><span class="lineno"> 667</span> {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 742, 2},</div>
|
||||
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno"> 668</span> {<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"EUR"</span>, 711, 2},</div>
|
||||
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno"> 669</span> {<span class="stringliteral">"ETH"</span>, <span class="stringliteral">"EUR"</span>, <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::nullopt</a>, <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::nullopt</a>},</div>
|
||||
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno"> 670</span> {<span class="stringliteral">"YAN"</span>, <span class="stringliteral">"EUR"</span>, <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::nullopt</a>, <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::nullopt</a>},</div>
|
||||
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno"> 671</span> {<span class="stringliteral">"CAN"</span>, <span class="stringliteral">"EUR"</span>, <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::nullopt</a>, <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::nullopt</a>}},</div>
|
||||
<div class="line"><a id="l00672" name="l00672"></a><span class="lineno"> 672</span> .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00673" name="l00673"></a><span class="lineno"> 673</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.expectPrice(</div>
|
||||
<div class="line"><a id="l00674" name="l00674"></a><span class="lineno"> 674</span> {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 742, 2}, {<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"EUR"</span>, 711, 2}}));</div>
|
||||
<div class="line"><a id="l00675" name="l00675"></a><span class="lineno"> 675</span> <span class="comment">// owner count is decreased by 1 since the number of pairs is 2</span></div>
|
||||
<div class="line"><a id="l00676" name="l00676"></a><span class="lineno"> 676</span> <a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/algorithm/count.html">count</a> -= 1;</div>
|
||||
<div class="line"><a id="l00677" name="l00677"></a><span class="lineno"> 677</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a12abe185058a3db015909ed92c421097">ownerCount</a>(env, owner) == count);</div>
|
||||
<div class="line"><a id="l00678" name="l00678"></a><span class="lineno"> 678</span> }</div>
|
||||
<div class="line"><a id="l00679" name="l00679"></a><span class="lineno"> 679</span> </div>
|
||||
<div class="line"><a id="l00680" name="l00680"></a><span class="lineno"> 680</span> <span class="comment">// Min reserve to create and update</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> Env env(*<span class="keyword">this</span>);</div>
|
||||
<div class="line"><a id="l00683" name="l00683"></a><span class="lineno"> 683</span> <span class="keyword">auto</span> <span class="keyword">const</span> baseFee =</div>
|
||||
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno"> 684</span> <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(env.current()->fees().base.drops());</div>
|
||||
<div class="line"><a id="l00685" name="l00685"></a><span class="lineno"> 685</span> env.fund(</div>
|
||||
<div class="line"><a id="l00686" name="l00686"></a><span class="lineno"> 686</span> env.current()->fees().accountReserve(1) +</div>
|
||||
<div class="line"><a id="l00687" name="l00687"></a><span class="lineno"> 687</span> env.current()->fees().base * 2,</div>
|
||||
<div class="line"><a id="l00688" name="l00688"></a><span class="lineno"> 688</span> owner);</div>
|
||||
<div class="line"><a id="l00689" name="l00689"></a><span class="lineno"> 689</span> Oracle <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>(env, {.owner = owner, .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00690" name="l00690"></a><span class="lineno"> 690</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.set(</div>
|
||||
<div class="line"><a id="l00691" name="l00691"></a><span class="lineno"> 691</span> UpdateArg{.series = {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 742, 2}}, .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00692" name="l00692"></a><span class="lineno"> 692</span> }</div>
|
||||
<div class="line"><a id="l00693" name="l00693"></a><span class="lineno"> 693</span> </div>
|
||||
<div class="line"><a id="l00694" name="l00694"></a><span class="lineno"> 694</span> <span class="keywordflow">for</span> (<span class="keywordtype">bool</span> <span class="keyword">const</span> withFixOrder : {<span class="keyword">false</span>, <span class="keyword">true</span>})</div>
|
||||
<div class="line"><a id="l00695" name="l00695"></a><span class="lineno"> 695</span> {</div>
|
||||
<div class="line"><a id="l00696" name="l00696"></a><span class="lineno"> 696</span> <span class="comment">// Should be same order as creation</span></div>
|
||||
<div class="line"><a id="l00697" name="l00697"></a><span class="lineno"> 697</span> Env env(</div>
|
||||
<div class="line"><a id="l00698" name="l00698"></a><span class="lineno"> 698</span> *<span class="keyword">this</span>,</div>
|
||||
<div class="line"><a id="l00699" name="l00699"></a><span class="lineno"> 699</span> withFixOrder ? <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a8e5379a68ca5b5ae718e77312c2f1f94">testable_amendments</a>()</div>
|
||||
<div class="line"><a id="l00700" name="l00700"></a><span class="lineno"> 700</span> : <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a8e5379a68ca5b5ae718e77312c2f1f94">testable_amendments</a>() - fixPriceOracleOrder);</div>
|
||||
<div class="line"><a id="l00701" name="l00701"></a><span class="lineno"> 701</span> <span class="keyword">auto</span> <span class="keyword">const</span> baseFee =</div>
|
||||
<div class="line"><a id="l00702" name="l00702"></a><span class="lineno"> 702</span> <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(env.current()->fees().base.drops());</div>
|
||||
<div class="line"><a id="l00703" name="l00703"></a><span class="lineno"> 703</span> </div>
|
||||
<div class="line"><a id="l00704" name="l00704"></a><span class="lineno"> 704</span> <span class="keyword">auto</span> test = [&](Env& env, <a class="code hl_typedef" href="namespaceripple_1_1test_1_1jtx_1_1oracle.html#a1780dbf4d66e7975435c7d7ee45a8a8f">DataSeries</a> <span class="keyword">const</span>& series) {</div>
|
||||
<div class="line"><a id="l00705" name="l00705"></a><span class="lineno"> 705</span> env.fund(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(1'000), owner);</div>
|
||||
<div class="line"><a id="l00706" name="l00706"></a><span class="lineno"> 706</span> Oracle <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>(</div>
|
||||
<div class="line"><a id="l00707" name="l00707"></a><span class="lineno"> 707</span> env, {.owner = owner, .series = series, .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00708" name="l00708"></a><span class="lineno"> 708</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.exists());</div>
|
||||
<div class="line"><a id="l00709" name="l00709"></a><span class="lineno"> 709</span> <span class="keyword">auto</span> sle = env.le(<a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">keylet::oracle</a>(owner, <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.documentID()));</div>
|
||||
<div class="line"><a id="l00710" name="l00710"></a><span class="lineno"> 710</span> BEAST_EXPECT(</div>
|
||||
<div class="line"><a id="l00711" name="l00711"></a><span class="lineno"> 711</span> sle->getFieldArray(sfPriceDataSeries).size() ==</div>
|
||||
<div class="line"><a id="l00712" name="l00712"></a><span class="lineno"> 712</span> series.size());</div>
|
||||
<div class="line"><a id="l00713" name="l00713"></a><span class="lineno"> 713</span> </div>
|
||||
<div class="line"><a id="l00714" name="l00714"></a><span class="lineno"> 714</span> <span class="keyword">auto</span> <span class="keyword">const</span> beforeQuoteAssetName1 =</div>
|
||||
<div class="line"><a id="l00715" name="l00715"></a><span class="lineno"> 715</span> sle->getFieldArray(sfPriceDataSeries)[0]</div>
|
||||
<div class="line"><a id="l00716" name="l00716"></a><span class="lineno"> 716</span> .getFieldCurrency(sfQuoteAsset)</div>
|
||||
<div class="line"><a id="l00717" name="l00717"></a><span class="lineno"> 717</span> .getText();</div>
|
||||
<div class="line"><a id="l00718" name="l00718"></a><span class="lineno"> 718</span> <span class="keyword">auto</span> <span class="keyword">const</span> beforeQuoteAssetName2 =</div>
|
||||
<div class="line"><a id="l00719" name="l00719"></a><span class="lineno"> 719</span> sle->getFieldArray(sfPriceDataSeries)[1]</div>
|
||||
<div class="line"><a id="l00720" name="l00720"></a><span class="lineno"> 720</span> .getFieldCurrency(sfQuoteAsset)</div>
|
||||
<div class="line"><a id="l00721" name="l00721"></a><span class="lineno"> 721</span> .getText();</div>
|
||||
<div class="line"><a id="l00722" name="l00722"></a><span class="lineno"> 722</span> </div>
|
||||
<div class="line"><a id="l00723" name="l00723"></a><span class="lineno"> 723</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.set(UpdateArg{.series = series, .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00724" name="l00724"></a><span class="lineno"> 724</span> sle = env.le(<a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">keylet::oracle</a>(owner, <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.documentID()));</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> <span class="keyword">auto</span> <span class="keyword">const</span> afterQuoteAssetName1 =</div>
|
||||
<div class="line"><a id="l00727" name="l00727"></a><span class="lineno"> 727</span> sle->getFieldArray(sfPriceDataSeries)[0]</div>
|
||||
<div class="line"><a id="l00728" name="l00728"></a><span class="lineno"> 728</span> .getFieldCurrency(sfQuoteAsset)</div>
|
||||
<div class="line"><a id="l00729" name="l00729"></a><span class="lineno"> 729</span> .getText();</div>
|
||||
<div class="line"><a id="l00730" name="l00730"></a><span class="lineno"> 730</span> <span class="keyword">auto</span> <span class="keyword">const</span> afterQuoteAssetName2 =</div>
|
||||
<div class="line"><a id="l00731" name="l00731"></a><span class="lineno"> 731</span> sle->getFieldArray(sfPriceDataSeries)[1]</div>
|
||||
<div class="line"><a id="l00732" name="l00732"></a><span class="lineno"> 732</span> .getFieldCurrency(sfQuoteAsset)</div>
|
||||
<div class="line"><a id="l00733" name="l00733"></a><span class="lineno"> 733</span> .getText();</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> <span class="keywordflow">if</span> (env.current()->rules().enabled(fixPriceOracleOrder))</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> BEAST_EXPECT(afterQuoteAssetName1 == beforeQuoteAssetName1);</div>
|
||||
<div class="line"><a id="l00738" name="l00738"></a><span class="lineno"> 738</span> BEAST_EXPECT(afterQuoteAssetName2 == beforeQuoteAssetName2);</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="keywordflow">else</span></div>
|
||||
<div class="line"><a id="l00741" name="l00741"></a><span class="lineno"> 741</span> {</div>
|
||||
<div class="line"><a id="l00742" name="l00742"></a><span class="lineno"> 742</span> BEAST_EXPECT(afterQuoteAssetName1 != beforeQuoteAssetName1);</div>
|
||||
<div class="line"><a id="l00743" name="l00743"></a><span class="lineno"> 743</span> BEAST_EXPECT(afterQuoteAssetName2 != beforeQuoteAssetName2);</div>
|
||||
<div class="line"><a id="l00744" name="l00744"></a><span class="lineno"> 744</span> }</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> test(env, {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 742, 2}, {<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"EUR"</span>, 711, 2}});</div>
|
||||
<div class="line"><a id="l00747" name="l00747"></a><span class="lineno"> 747</span> }</div>
|
||||
<div class="line"><a id="l00748" name="l00748"></a><span class="lineno"> 748</span> }</div>
|
||||
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno"> 603</span> </div>
|
||||
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno"> 604</span> <span class="keywordtype">void</span></div>
|
||||
<div class="foldopen" id="foldopen00605" data-start="{" data-end="}">
|
||||
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#aff71e6c7eb258afca95d5b780bb9fde2"> 605</a></span> <a class="code hl_function" href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#aff71e6c7eb258afca95d5b780bb9fde2">testUpdate</a>()</div>
|
||||
<div class="line"><a id="l00606" name="l00606"></a><span class="lineno"> 606</span> {</div>
|
||||
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno"> 607</span> <a class="code hl_variable" href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">testcase</a>(<span class="stringliteral">"Update"</span>);</div>
|
||||
<div class="line"><a id="l00608" name="l00608"></a><span class="lineno"> 608</span> <span class="keyword">using namespace </span>jtx;</div>
|
||||
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno"> 609</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> owner(<span class="stringliteral">"owner"</span>);</div>
|
||||
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno"> 610</span> </div>
|
||||
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno"> 611</span> {</div>
|
||||
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno"> 612</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="l00613" name="l00613"></a><span class="lineno"> 613</span> <span class="keyword">auto</span> <span class="keyword">const</span> baseFee =</div>
|
||||
<div class="line"><a id="l00614" name="l00614"></a><span class="lineno"> 614</span> <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(env.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#a65bedb2e0babbd55343f721de9008a37">current</a>()->fees().base.drops());</div>
|
||||
<div class="line"><a id="l00615" name="l00615"></a><span class="lineno"> 615</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>(1'000), owner);</div>
|
||||
<div class="line"><a id="l00616" name="l00616"></a><span class="lineno"> 616</span> <span class="keyword">auto</span> count = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a12abe185058a3db015909ed92c421097">ownerCount</a>(env, owner);</div>
|
||||
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno"> 617</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1oracle_1_1Oracle.html">Oracle</a> oracle(env, {.owner = owner, .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00618" name="l00618"></a><span class="lineno"> 618</span> BEAST_EXPECT(oracle.exists());</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> <span class="comment">// update existing pair</span></div>
|
||||
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno"> 621</span> oracle.set(</div>
|
||||
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno"> 622</span> <a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html">UpdateArg</a>{.<a class="code hl_variable" href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html#ab5f28bfb56ed9e15ab80e9a44c045696">series</a> = {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 740, 2}}, .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"> 623</span> BEAST_EXPECT(oracle.expectPrice({{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 740, 2}}));</div>
|
||||
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno"> 624</span> <span class="comment">// owner count is increased by 1 since the oracle object is added</span></div>
|
||||
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno"> 625</span> <span class="comment">// with one token pair</span></div>
|
||||
<div class="line"><a id="l00626" name="l00626"></a><span class="lineno"> 626</span> count += 1;</div>
|
||||
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno"> 627</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a12abe185058a3db015909ed92c421097">ownerCount</a>(env, owner) == count);</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">// add new pairs, not-included pair is reset</span></div>
|
||||
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno"> 630</span> oracle.set(</div>
|
||||
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno"> 631</span> <a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html">UpdateArg</a>{.<a class="code hl_variable" href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html#ab5f28bfb56ed9e15ab80e9a44c045696">series</a> = {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"EUR"</span>, 700, 2}}, .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno"> 632</span> BEAST_EXPECT(oracle.expectPrice(</div>
|
||||
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno"> 633</span> {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 0, 0}, {<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"EUR"</span>, 700, 2}}));</div>
|
||||
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno"> 634</span> <span class="comment">// owner count is not changed since the number of pairs is 2</span></div>
|
||||
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno"> 635</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a12abe185058a3db015909ed92c421097">ownerCount</a>(env, owner) == count);</div>
|
||||
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno"> 636</span> </div>
|
||||
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno"> 637</span> <span class="comment">// update both pairs</span></div>
|
||||
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno"> 638</span> oracle.set(<a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html">UpdateArg</a>{</div>
|
||||
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno"> 639</span> .<a class="code hl_variable" href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html#ab5f28bfb56ed9e15ab80e9a44c045696">series</a> = {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 741, 2}, {<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"EUR"</span>, 710, 2}},</div>
|
||||
<div class="line"><a id="l00640" name="l00640"></a><span class="lineno"> 640</span> .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00641" name="l00641"></a><span class="lineno"> 641</span> BEAST_EXPECT(oracle.expectPrice(</div>
|
||||
<div class="line"><a id="l00642" name="l00642"></a><span class="lineno"> 642</span> {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 741, 2}, {<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"EUR"</span>, 710, 2}}));</div>
|
||||
<div class="line"><a id="l00643" name="l00643"></a><span class="lineno"> 643</span> <span class="comment">// owner count is not changed since the number of pairs is 2</span></div>
|
||||
<div class="line"><a id="l00644" name="l00644"></a><span class="lineno"> 644</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a12abe185058a3db015909ed92c421097">ownerCount</a>(env, owner) == count);</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">// owner count is increased by 1 since the number of pairs is 6</span></div>
|
||||
<div class="line"><a id="l00647" name="l00647"></a><span class="lineno"> 647</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.set(UpdateArg{</div>
|
||||
<div class="line"><a id="l00648" name="l00648"></a><span class="lineno"> 648</span> .series =</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> {<span class="stringliteral">"BTC"</span>, <span class="stringliteral">"USD"</span>, 741, 2},</div>
|
||||
<div class="line"><a id="l00651" name="l00651"></a><span class="lineno"> 651</span> {<span class="stringliteral">"ETH"</span>, <span class="stringliteral">"EUR"</span>, 710, 2},</div>
|
||||
<div class="line"><a id="l00652" name="l00652"></a><span class="lineno"> 652</span> {<span class="stringliteral">"YAN"</span>, <span class="stringliteral">"EUR"</span>, 710, 2},</div>
|
||||
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno"> 653</span> {<span class="stringliteral">"CAN"</span>, <span class="stringliteral">"EUR"</span>, 710, 2},</div>
|
||||
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno"> 654</span> },</div>
|
||||
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno"> 655</span> .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno"> 656</span> <a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/algorithm/count.html">count</a> += 1;</div>
|
||||
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno"> 657</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a12abe185058a3db015909ed92c421097">ownerCount</a>(env, owner) == count);</div>
|
||||
<div class="line"><a id="l00658" name="l00658"></a><span class="lineno"> 658</span> </div>
|
||||
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno"> 659</span> <span class="comment">// update two pairs and delete four</span></div>
|
||||
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno"> 660</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.set(UpdateArg{</div>
|
||||
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno"> 661</span> .series = {{<span class="stringliteral">"BTC"</span>, <span class="stringliteral">"USD"</span>, <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::nullopt</a>, <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::nullopt</a>}},</div>
|
||||
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno"> 662</span> .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno"> 663</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.set(UpdateArg{</div>
|
||||
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno"> 664</span> .series =</div>
|
||||
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno"> 665</span> {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 742, 2},</div>
|
||||
<div class="line"><a id="l00666" name="l00666"></a><span class="lineno"> 666</span> {<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"EUR"</span>, 711, 2},</div>
|
||||
<div class="line"><a id="l00667" name="l00667"></a><span class="lineno"> 667</span> {<span class="stringliteral">"ETH"</span>, <span class="stringliteral">"EUR"</span>, <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::nullopt</a>, <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::nullopt</a>},</div>
|
||||
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno"> 668</span> {<span class="stringliteral">"YAN"</span>, <span class="stringliteral">"EUR"</span>, <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::nullopt</a>, <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::nullopt</a>},</div>
|
||||
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno"> 669</span> {<span class="stringliteral">"CAN"</span>, <span class="stringliteral">"EUR"</span>, <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::nullopt</a>, <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::nullopt</a>}},</div>
|
||||
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno"> 670</span> .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno"> 671</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.expectPrice(</div>
|
||||
<div class="line"><a id="l00672" name="l00672"></a><span class="lineno"> 672</span> {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 742, 2}, {<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"EUR"</span>, 711, 2}}));</div>
|
||||
<div class="line"><a id="l00673" name="l00673"></a><span class="lineno"> 673</span> <span class="comment">// owner count is decreased by 1 since the number of pairs is 2</span></div>
|
||||
<div class="line"><a id="l00674" name="l00674"></a><span class="lineno"> 674</span> <a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/algorithm/count.html">count</a> -= 1;</div>
|
||||
<div class="line"><a id="l00675" name="l00675"></a><span class="lineno"> 675</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a12abe185058a3db015909ed92c421097">ownerCount</a>(env, owner) == count);</div>
|
||||
<div class="line"><a id="l00676" name="l00676"></a><span class="lineno"> 676</span> }</div>
|
||||
<div class="line"><a id="l00677" name="l00677"></a><span class="lineno"> 677</span> </div>
|
||||
<div class="line"><a id="l00678" name="l00678"></a><span class="lineno"> 678</span> <span class="comment">// Min reserve to create and update</span></div>
|
||||
<div class="line"><a id="l00679" name="l00679"></a><span class="lineno"> 679</span> {</div>
|
||||
<div class="line"><a id="l00680" name="l00680"></a><span class="lineno"> 680</span> Env env(*<span class="keyword">this</span>);</div>
|
||||
<div class="line"><a id="l00681" name="l00681"></a><span class="lineno"> 681</span> <span class="keyword">auto</span> <span class="keyword">const</span> baseFee =</div>
|
||||
<div class="line"><a id="l00682" name="l00682"></a><span class="lineno"> 682</span> <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(env.current()->fees().base.drops());</div>
|
||||
<div class="line"><a id="l00683" name="l00683"></a><span class="lineno"> 683</span> env.fund(</div>
|
||||
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno"> 684</span> env.current()->fees().accountReserve(1) +</div>
|
||||
<div class="line"><a id="l00685" name="l00685"></a><span class="lineno"> 685</span> env.current()->fees().base * 2,</div>
|
||||
<div class="line"><a id="l00686" name="l00686"></a><span class="lineno"> 686</span> owner);</div>
|
||||
<div class="line"><a id="l00687" name="l00687"></a><span class="lineno"> 687</span> Oracle <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>(env, {.owner = owner, .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00688" name="l00688"></a><span class="lineno"> 688</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.set(</div>
|
||||
<div class="line"><a id="l00689" name="l00689"></a><span class="lineno"> 689</span> UpdateArg{.series = {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 742, 2}}, .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00690" name="l00690"></a><span class="lineno"> 690</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> <span class="keywordflow">for</span> (<span class="keywordtype">bool</span> <span class="keyword">const</span> withFixOrder : {<span class="keyword">false</span>, <span class="keyword">true</span>})</div>
|
||||
<div class="line"><a id="l00693" name="l00693"></a><span class="lineno"> 693</span> {</div>
|
||||
<div class="line"><a id="l00694" name="l00694"></a><span class="lineno"> 694</span> <span class="comment">// Should be same order as creation</span></div>
|
||||
<div class="line"><a id="l00695" name="l00695"></a><span class="lineno"> 695</span> Env env(</div>
|
||||
<div class="line"><a id="l00696" name="l00696"></a><span class="lineno"> 696</span> *<span class="keyword">this</span>,</div>
|
||||
<div class="line"><a id="l00697" name="l00697"></a><span class="lineno"> 697</span> withFixOrder ? <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a8e5379a68ca5b5ae718e77312c2f1f94">testable_amendments</a>()</div>
|
||||
<div class="line"><a id="l00698" name="l00698"></a><span class="lineno"> 698</span> : <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a8e5379a68ca5b5ae718e77312c2f1f94">testable_amendments</a>() - fixPriceOracleOrder);</div>
|
||||
<div class="line"><a id="l00699" name="l00699"></a><span class="lineno"> 699</span> <span class="keyword">auto</span> <span class="keyword">const</span> baseFee =</div>
|
||||
<div class="line"><a id="l00700" name="l00700"></a><span class="lineno"> 700</span> <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(env.current()->fees().base.drops());</div>
|
||||
<div class="line"><a id="l00701" name="l00701"></a><span class="lineno"> 701</span> </div>
|
||||
<div class="line"><a id="l00702" name="l00702"></a><span class="lineno"> 702</span> <span class="keyword">auto</span> test = [&](Env& env, <a class="code hl_typedef" href="namespaceripple_1_1test_1_1jtx_1_1oracle.html#a1780dbf4d66e7975435c7d7ee45a8a8f">DataSeries</a> <span class="keyword">const</span>& series) {</div>
|
||||
<div class="line"><a id="l00703" name="l00703"></a><span class="lineno"> 703</span> env.fund(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(1'000), owner);</div>
|
||||
<div class="line"><a id="l00704" name="l00704"></a><span class="lineno"> 704</span> Oracle <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>(</div>
|
||||
<div class="line"><a id="l00705" name="l00705"></a><span class="lineno"> 705</span> env, {.owner = owner, .series = series, .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00706" name="l00706"></a><span class="lineno"> 706</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.exists());</div>
|
||||
<div class="line"><a id="l00707" name="l00707"></a><span class="lineno"> 707</span> <span class="keyword">auto</span> sle = env.le(<a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">keylet::oracle</a>(owner, <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.documentID()));</div>
|
||||
<div class="line"><a id="l00708" name="l00708"></a><span class="lineno"> 708</span> BEAST_EXPECT(</div>
|
||||
<div class="line"><a id="l00709" name="l00709"></a><span class="lineno"> 709</span> sle->getFieldArray(sfPriceDataSeries).size() ==</div>
|
||||
<div class="line"><a id="l00710" name="l00710"></a><span class="lineno"> 710</span> series.size());</div>
|
||||
<div class="line"><a id="l00711" name="l00711"></a><span class="lineno"> 711</span> </div>
|
||||
<div class="line"><a id="l00712" name="l00712"></a><span class="lineno"> 712</span> <span class="keyword">auto</span> <span class="keyword">const</span> beforeQuoteAssetName1 =</div>
|
||||
<div class="line"><a id="l00713" name="l00713"></a><span class="lineno"> 713</span> sle->getFieldArray(sfPriceDataSeries)[0]</div>
|
||||
<div class="line"><a id="l00714" name="l00714"></a><span class="lineno"> 714</span> .getFieldCurrency(sfQuoteAsset)</div>
|
||||
<div class="line"><a id="l00715" name="l00715"></a><span class="lineno"> 715</span> .getText();</div>
|
||||
<div class="line"><a id="l00716" name="l00716"></a><span class="lineno"> 716</span> <span class="keyword">auto</span> <span class="keyword">const</span> beforeQuoteAssetName2 =</div>
|
||||
<div class="line"><a id="l00717" name="l00717"></a><span class="lineno"> 717</span> sle->getFieldArray(sfPriceDataSeries)[1]</div>
|
||||
<div class="line"><a id="l00718" name="l00718"></a><span class="lineno"> 718</span> .getFieldCurrency(sfQuoteAsset)</div>
|
||||
<div class="line"><a id="l00719" name="l00719"></a><span class="lineno"> 719</span> .getText();</div>
|
||||
<div class="line"><a id="l00720" name="l00720"></a><span class="lineno"> 720</span> </div>
|
||||
<div class="line"><a id="l00721" name="l00721"></a><span class="lineno"> 721</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.set(UpdateArg{.series = series, .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00722" name="l00722"></a><span class="lineno"> 722</span> sle = env.le(<a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">keylet::oracle</a>(owner, <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.documentID()));</div>
|
||||
<div class="line"><a id="l00723" name="l00723"></a><span class="lineno"> 723</span> </div>
|
||||
<div class="line"><a id="l00724" name="l00724"></a><span class="lineno"> 724</span> <span class="keyword">auto</span> <span class="keyword">const</span> afterQuoteAssetName1 =</div>
|
||||
<div class="line"><a id="l00725" name="l00725"></a><span class="lineno"> 725</span> sle->getFieldArray(sfPriceDataSeries)[0]</div>
|
||||
<div class="line"><a id="l00726" name="l00726"></a><span class="lineno"> 726</span> .getFieldCurrency(sfQuoteAsset)</div>
|
||||
<div class="line"><a id="l00727" name="l00727"></a><span class="lineno"> 727</span> .getText();</div>
|
||||
<div class="line"><a id="l00728" name="l00728"></a><span class="lineno"> 728</span> <span class="keyword">auto</span> <span class="keyword">const</span> afterQuoteAssetName2 =</div>
|
||||
<div class="line"><a id="l00729" name="l00729"></a><span class="lineno"> 729</span> sle->getFieldArray(sfPriceDataSeries)[1]</div>
|
||||
<div class="line"><a id="l00730" name="l00730"></a><span class="lineno"> 730</span> .getFieldCurrency(sfQuoteAsset)</div>
|
||||
<div class="line"><a id="l00731" name="l00731"></a><span class="lineno"> 731</span> .getText();</div>
|
||||
<div class="line"><a id="l00732" name="l00732"></a><span class="lineno"> 732</span> </div>
|
||||
<div class="line"><a id="l00733" name="l00733"></a><span class="lineno"> 733</span> <span class="keywordflow">if</span> (env.current()->rules().enabled(fixPriceOracleOrder))</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> BEAST_EXPECT(afterQuoteAssetName1 == beforeQuoteAssetName1);</div>
|
||||
<div class="line"><a id="l00736" name="l00736"></a><span class="lineno"> 736</span> BEAST_EXPECT(afterQuoteAssetName2 == beforeQuoteAssetName2);</div>
|
||||
<div class="line"><a id="l00737" name="l00737"></a><span class="lineno"> 737</span> }</div>
|
||||
<div class="line"><a id="l00738" name="l00738"></a><span class="lineno"> 738</span> <span class="keywordflow">else</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> BEAST_EXPECT(afterQuoteAssetName1 != beforeQuoteAssetName1);</div>
|
||||
<div class="line"><a id="l00741" name="l00741"></a><span class="lineno"> 741</span> BEAST_EXPECT(afterQuoteAssetName2 != beforeQuoteAssetName2);</div>
|
||||
<div class="line"><a id="l00742" name="l00742"></a><span class="lineno"> 742</span> }</div>
|
||||
<div class="line"><a id="l00743" name="l00743"></a><span class="lineno"> 743</span> };</div>
|
||||
<div class="line"><a id="l00744" name="l00744"></a><span class="lineno"> 744</span> test(env, {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 742, 2}, {<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"EUR"</span>, 711, 2}});</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> }</div>
|
||||
</div>
|
||||
<div class="line"><a id="l00749" name="l00749"></a><span class="lineno"> 749</span> </div>
|
||||
<div class="line"><a id="l00750" name="l00750"></a><span class="lineno"> 750</span> <span class="keywordtype">void</span></div>
|
||||
<div class="foldopen" id="foldopen00751" data-start="{" data-end="}">
|
||||
<div class="line"><a id="l00751" name="l00751"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#a97221c6e2f664356839503e104305367"> 751</a></span> <a class="code hl_function" href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#a97221c6e2f664356839503e104305367">testMultisig</a>(<a class="code hl_class" href="classripple_1_1FeatureBitset.html">FeatureBitset</a> features)</div>
|
||||
<div class="line"><a id="l00752" name="l00752"></a><span class="lineno"> 752</span> {</div>
|
||||
<div class="line"><a id="l00753" name="l00753"></a><span class="lineno"> 753</span> testcase(<span class="stringliteral">"Multisig"</span>);</div>
|
||||
<div class="line"><a id="l00754" name="l00754"></a><span class="lineno"> 754</span> <span class="keyword">using namespace </span>jtx;</div>
|
||||
<div class="line"><a id="l00755" name="l00755"></a><span class="lineno"> 755</span> Oracle::setFee(100'000);</div>
|
||||
<div class="line"><a id="l00756" name="l00756"></a><span class="lineno"> 756</span> </div>
|
||||
<div class="line"><a id="l00757" name="l00757"></a><span class="lineno"> 757</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env(*<span class="keyword">this</span>, features);</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> baseFee =</div>
|
||||
<div class="line"><a id="l00759" name="l00759"></a><span class="lineno"> 759</span> <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(env.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#a65bedb2e0babbd55343f721de9008a37">current</a>()->fees().base.drops());</div>
|
||||
<div class="line"><a id="l00760" name="l00760"></a><span class="lineno"> 760</span> </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_1Account.html">Account</a> <span class="keyword">const</span> alice{<span class="stringliteral">"alice"</span>, <a class="code hl_enumvalue" href="namespaceripple.html#a9de744cfdefe1132969eb982e57e4ddea82c2b7829b8129e5a2d53665ba4b4757">KeyType::secp256k1</a>};</div>
|
||||
<div class="line"><a id="l00762" name="l00762"></a><span class="lineno"> 762</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> bogie{<span class="stringliteral">"bogie"</span>, <a class="code hl_enumvalue" href="namespaceripple.html#a9de744cfdefe1132969eb982e57e4ddea82c2b7829b8129e5a2d53665ba4b4757">KeyType::secp256k1</a>};</div>
|
||||
<div class="line"><a id="l00763" name="l00763"></a><span class="lineno"> 763</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> ed{<span class="stringliteral">"ed"</span>, <a class="code hl_enumvalue" href="namespaceripple.html#a9de744cfdefe1132969eb982e57e4ddea82c2b7829b8129e5a2d53665ba4b4757">KeyType::secp256k1</a>};</div>
|
||||
<div class="line"><a id="l00764" name="l00764"></a><span class="lineno"> 764</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">"becky"</span>, <a class="code hl_enumvalue" href="namespaceripple.html#a9de744cfdefe1132969eb982e57e4ddea8183aa2c95dc1385c8f58bf1917fcb0b">KeyType::ed25519</a>};</div>
|
||||
<div class="line"><a id="l00765" name="l00765"></a><span class="lineno"> 765</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> zelda{<span class="stringliteral">"zelda"</span>, <a class="code hl_enumvalue" href="namespaceripple.html#a9de744cfdefe1132969eb982e57e4ddea82c2b7829b8129e5a2d53665ba4b4757">KeyType::secp256k1</a>};</div>
|
||||
<div class="line"><a id="l00766" name="l00766"></a><span class="lineno"> 766</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">"bob"</span>, <a class="code hl_enumvalue" href="namespaceripple.html#a9de744cfdefe1132969eb982e57e4ddea82c2b7829b8129e5a2d53665ba4b4757">KeyType::secp256k1</a>};</div>
|
||||
<div class="line"><a id="l00767" name="l00767"></a><span class="lineno"> 767</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>(10'000), alice, becky, zelda, ed, bob);</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 uses a regular key with the master disabled.</span></div>
|
||||
<div class="line"><a id="l00770" name="l00770"></a><span class="lineno"> 770</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> alie{<span class="stringliteral">"alie"</span>, <a class="code hl_enumvalue" href="namespaceripple.html#a9de744cfdefe1132969eb982e57e4ddea82c2b7829b8129e5a2d53665ba4b4757">KeyType::secp256k1</a>};</div>
|
||||
<div class="line"><a id="l00771" name="l00771"></a><span class="lineno"> 771</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a25348362262144c3927b86f8d349fd86">regkey</a>(alice, alie));</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#a50cacef3867fc01273aa9c29231f9a7c">fset</a>(alice, <a class="code hl_variable" href="namespaceripple.html#a67cb8f38f9c204304ea44fcff2953438">asfDisableMaster</a>), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1sig.html">sig</a>(alice));</div>
|
||||
<div class="line"><a id="l00773" name="l00773"></a><span class="lineno"> 773</span> </div>
|
||||
<div class="line"><a id="l00774" name="l00774"></a><span class="lineno"> 774</span> <span class="comment">// Attach signers to alice.</span></div>
|
||||
<div class="line"><a id="l00775" name="l00775"></a><span class="lineno"> 775</span> env(signers(alice, 2, {{becky, 1}, {bogie, 1}, {ed, 2}}), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1sig.html">sig</a>(alie));</div>
|
||||
<div class="line"><a id="l00776" name="l00776"></a><span class="lineno"> 776</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="l00777" name="l00777"></a><span class="lineno"> 777</span> <span class="comment">// if multiSignReserve disabled then its 2 + 1 per signer</span></div>
|
||||
<div class="line"><a id="l00778" name="l00778"></a><span class="lineno"> 778</span> <span class="keywordtype">int</span> <span class="keyword">const</span> signerListOwners{features[featureMultiSignReserve] ? 1 : 5};</div>
|
||||
<div class="line"><a id="l00779" name="l00779"></a><span class="lineno"> 779</span> env.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#a34c9d58eaca6b7238258eadaf94b4a46">require</a>(<a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1owners.html">owners</a>(alice, signerListOwners));</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="comment">// Create</span></div>
|
||||
<div class="line"><a id="l00782" name="l00782"></a><span class="lineno"> 782</span> <span class="comment">// Force close (true) and time advancement because the close time</span></div>
|
||||
<div class="line"><a id="l00783" name="l00783"></a><span class="lineno"> 783</span> <span class="comment">// is no longer 0.</span></div>
|
||||
<div class="line"><a id="l00784" name="l00784"></a><span class="lineno"> 784</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1oracle_1_1Oracle.html">Oracle</a> oracle(</div>
|
||||
<div class="line"><a id="l00785" name="l00785"></a><span class="lineno"> 785</span> env,</div>
|
||||
<div class="line"><a id="l00786" name="l00786"></a><span class="lineno"> 786</span> <a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1oracle_1_1CreateArg.html">CreateArg</a>{.<a class="code hl_variable" href="structripple_1_1test_1_1jtx_1_1oracle_1_1CreateArg.html#a92e584f6ad1e01c8943fa6732517c5a9">owner</a> = alice, .fee = baseFee, .close = <span class="keyword">true</span>},</div>
|
||||
<div class="line"><a id="l00787" name="l00787"></a><span class="lineno"> 787</span> <span class="keyword">false</span>);</div>
|
||||
<div class="line"><a id="l00747" name="l00747"></a><span class="lineno"> 747</span> </div>
|
||||
<div class="line"><a id="l00748" name="l00748"></a><span class="lineno"> 748</span> <span class="keywordtype">void</span></div>
|
||||
<div class="foldopen" id="foldopen00749" data-start="{" data-end="}">
|
||||
<div class="line"><a id="l00749" name="l00749"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#a97221c6e2f664356839503e104305367"> 749</a></span> <a class="code hl_function" href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#a97221c6e2f664356839503e104305367">testMultisig</a>(<a class="code hl_class" href="classripple_1_1FeatureBitset.html">FeatureBitset</a> features)</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> testcase(<span class="stringliteral">"Multisig"</span>);</div>
|
||||
<div class="line"><a id="l00752" name="l00752"></a><span class="lineno"> 752</span> <span class="keyword">using namespace </span>jtx;</div>
|
||||
<div class="line"><a id="l00753" name="l00753"></a><span class="lineno"> 753</span> Oracle::setFee(100'000);</div>
|
||||
<div class="line"><a id="l00754" name="l00754"></a><span class="lineno"> 754</span> </div>
|
||||
<div class="line"><a id="l00755" name="l00755"></a><span class="lineno"> 755</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env(*<span class="keyword">this</span>, features);</div>
|
||||
<div class="line"><a id="l00756" name="l00756"></a><span class="lineno"> 756</span> <span class="keyword">auto</span> <span class="keyword">const</span> baseFee =</div>
|
||||
<div class="line"><a id="l00757" name="l00757"></a><span class="lineno"> 757</span> <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(env.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#a65bedb2e0babbd55343f721de9008a37">current</a>()->fees().base.drops());</div>
|
||||
<div class="line"><a id="l00758" name="l00758"></a><span class="lineno"> 758</span> </div>
|
||||
<div class="line"><a id="l00759" name="l00759"></a><span class="lineno"> 759</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">"alice"</span>, <a class="code hl_enumvalue" href="namespaceripple.html#a9de744cfdefe1132969eb982e57e4ddea82c2b7829b8129e5a2d53665ba4b4757">KeyType::secp256k1</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_1Account.html">Account</a> <span class="keyword">const</span> bogie{<span class="stringliteral">"bogie"</span>, <a class="code hl_enumvalue" href="namespaceripple.html#a9de744cfdefe1132969eb982e57e4ddea82c2b7829b8129e5a2d53665ba4b4757">KeyType::secp256k1</a>};</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_1Account.html">Account</a> <span class="keyword">const</span> ed{<span class="stringliteral">"ed"</span>, <a class="code hl_enumvalue" href="namespaceripple.html#a9de744cfdefe1132969eb982e57e4ddea82c2b7829b8129e5a2d53665ba4b4757">KeyType::secp256k1</a>};</div>
|
||||
<div class="line"><a id="l00762" name="l00762"></a><span class="lineno"> 762</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">"becky"</span>, <a class="code hl_enumvalue" href="namespaceripple.html#a9de744cfdefe1132969eb982e57e4ddea8183aa2c95dc1385c8f58bf1917fcb0b">KeyType::ed25519</a>};</div>
|
||||
<div class="line"><a id="l00763" name="l00763"></a><span class="lineno"> 763</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> zelda{<span class="stringliteral">"zelda"</span>, <a class="code hl_enumvalue" href="namespaceripple.html#a9de744cfdefe1132969eb982e57e4ddea82c2b7829b8129e5a2d53665ba4b4757">KeyType::secp256k1</a>};</div>
|
||||
<div class="line"><a id="l00764" name="l00764"></a><span class="lineno"> 764</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">"bob"</span>, <a class="code hl_enumvalue" href="namespaceripple.html#a9de744cfdefe1132969eb982e57e4ddea82c2b7829b8129e5a2d53665ba4b4757">KeyType::secp256k1</a>};</div>
|
||||
<div class="line"><a id="l00765" name="l00765"></a><span class="lineno"> 765</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>(10'000), alice, becky, zelda, ed, bob);</div>
|
||||
<div class="line"><a id="l00766" name="l00766"></a><span class="lineno"> 766</span> </div>
|
||||
<div class="line"><a id="l00767" name="l00767"></a><span class="lineno"> 767</span> <span class="comment">// alice uses a regular key with the master disabled.</span></div>
|
||||
<div class="line"><a id="l00768" name="l00768"></a><span class="lineno"> 768</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> alie{<span class="stringliteral">"alie"</span>, <a class="code hl_enumvalue" href="namespaceripple.html#a9de744cfdefe1132969eb982e57e4ddea82c2b7829b8129e5a2d53665ba4b4757">KeyType::secp256k1</a>};</div>
|
||||
<div class="line"><a id="l00769" name="l00769"></a><span class="lineno"> 769</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a25348362262144c3927b86f8d349fd86">regkey</a>(alice, alie));</div>
|
||||
<div class="line"><a id="l00770" name="l00770"></a><span class="lineno"> 770</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#a67cb8f38f9c204304ea44fcff2953438">asfDisableMaster</a>), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1sig.html">sig</a>(alice));</div>
|
||||
<div class="line"><a id="l00771" name="l00771"></a><span class="lineno"> 771</span> </div>
|
||||
<div class="line"><a id="l00772" name="l00772"></a><span class="lineno"> 772</span> <span class="comment">// Attach signers to alice.</span></div>
|
||||
<div class="line"><a id="l00773" name="l00773"></a><span class="lineno"> 773</span> env(signers(alice, 2, {{becky, 1}, {bogie, 1}, {ed, 2}}), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1sig.html">sig</a>(alie));</div>
|
||||
<div class="line"><a id="l00774" name="l00774"></a><span class="lineno"> 774</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="l00775" name="l00775"></a><span class="lineno"> 775</span> <span class="comment">// if multiSignReserve disabled then its 2 + 1 per signer</span></div>
|
||||
<div class="line"><a id="l00776" name="l00776"></a><span class="lineno"> 776</span> <span class="keywordtype">int</span> <span class="keyword">const</span> signerListOwners{features[featureMultiSignReserve] ? 1 : 5};</div>
|
||||
<div class="line"><a id="l00777" name="l00777"></a><span class="lineno"> 777</span> env.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#a34c9d58eaca6b7238258eadaf94b4a46">require</a>(<a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1owners.html">owners</a>(alice, signerListOwners));</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> <span class="comment">// Create</span></div>
|
||||
<div class="line"><a id="l00780" name="l00780"></a><span class="lineno"> 780</span> <span class="comment">// Force close (true) and time advancement because the close time</span></div>
|
||||
<div class="line"><a id="l00781" name="l00781"></a><span class="lineno"> 781</span> <span class="comment">// is no longer 0.</span></div>
|
||||
<div class="line"><a id="l00782" name="l00782"></a><span class="lineno"> 782</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1oracle_1_1Oracle.html">Oracle</a> oracle(</div>
|
||||
<div class="line"><a id="l00783" name="l00783"></a><span class="lineno"> 783</span> env,</div>
|
||||
<div class="line"><a id="l00784" name="l00784"></a><span class="lineno"> 784</span> <a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1oracle_1_1CreateArg.html">CreateArg</a>{.<a class="code hl_variable" href="structripple_1_1test_1_1jtx_1_1oracle_1_1CreateArg.html#a92e584f6ad1e01c8943fa6732517c5a9">owner</a> = alice, .fee = baseFee, .close = <span class="keyword">true</span>},</div>
|
||||
<div class="line"><a id="l00785" name="l00785"></a><span class="lineno"> 785</span> <span class="keyword">false</span>);</div>
|
||||
<div class="line"><a id="l00786" name="l00786"></a><span class="lineno"> 786</span> oracle.set(<a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1oracle_1_1CreateArg.html">CreateArg</a>{</div>
|
||||
<div class="line"><a id="l00787" name="l00787"></a><span class="lineno"> 787</span> .<a class="code hl_variable" href="structripple_1_1test_1_1jtx_1_1oracle_1_1CreateArg.html#ae8dbfa217979a76d804bd875a758e917">msig</a> = <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1msig.html">msig</a>(becky), .fee = baseFee, .err = <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4aafd3fcc27f093dd96e977fb0f07044f1">tefBAD_QUORUM</a>)});</div>
|
||||
<div class="line"><a id="l00788" name="l00788"></a><span class="lineno"> 788</span> oracle.set(<a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1oracle_1_1CreateArg.html">CreateArg</a>{</div>
|
||||
<div class="line"><a id="l00789" name="l00789"></a><span class="lineno"> 789</span> .<a class="code hl_variable" href="structripple_1_1test_1_1jtx_1_1oracle_1_1CreateArg.html#ae8dbfa217979a76d804bd875a758e917">msig</a> = <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1msig.html">msig</a>(becky), .fee = baseFee, .err = <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4aafd3fcc27f093dd96e977fb0f07044f1">tefBAD_QUORUM</a>)});</div>
|
||||
<div class="line"><a id="l00790" name="l00790"></a><span class="lineno"> 790</span> oracle.set(<a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1oracle_1_1CreateArg.html">CreateArg</a>{</div>
|
||||
<div class="line"><a id="l00791" name="l00791"></a><span class="lineno"> 791</span> .<a class="code hl_variable" href="structripple_1_1test_1_1jtx_1_1oracle_1_1CreateArg.html#ae8dbfa217979a76d804bd875a758e917">msig</a> = <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1msig.html">msig</a>(zelda), .fee = baseFee, .err = <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4ab2a35b856d8227d6717984f63aa5a445">tefBAD_SIGNATURE</a>)});</div>
|
||||
<div class="line"><a id="l00792" name="l00792"></a><span class="lineno"> 792</span> oracle.set(<a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1oracle_1_1CreateArg.html">CreateArg</a>{.<a class="code hl_variable" href="structripple_1_1test_1_1jtx_1_1oracle_1_1CreateArg.html#ae8dbfa217979a76d804bd875a758e917">msig</a> = <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1msig.html">msig</a>(becky, bogie), .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00793" name="l00793"></a><span class="lineno"> 793</span> BEAST_EXPECT(oracle.exists());</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">// Update</span></div>
|
||||
<div class="line"><a id="l00796" name="l00796"></a><span class="lineno"> 796</span> oracle.set(<a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html">UpdateArg</a>{</div>
|
||||
<div class="line"><a id="l00797" name="l00797"></a><span class="lineno"> 797</span> .<a class="code hl_variable" href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html#ab5f28bfb56ed9e15ab80e9a44c045696">series</a> = {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 740, 1}},</div>
|
||||
<div class="line"><a id="l00798" name="l00798"></a><span class="lineno"> 798</span> .msig = <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1msig.html">msig</a>(becky),</div>
|
||||
<div class="line"><a id="l00799" name="l00799"></a><span class="lineno"> 799</span> .fee = baseFee,</div>
|
||||
<div class="line"><a id="l00800" name="l00800"></a><span class="lineno"> 800</span> .err = <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4aafd3fcc27f093dd96e977fb0f07044f1">tefBAD_QUORUM</a>)});</div>
|
||||
<div class="line"><a id="l00801" name="l00801"></a><span class="lineno"> 801</span> oracle.set(<a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html">UpdateArg</a>{</div>
|
||||
<div class="line"><a id="l00802" name="l00802"></a><span class="lineno"> 802</span> .<a class="code hl_variable" href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html#ab5f28bfb56ed9e15ab80e9a44c045696">series</a> = {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 740, 1}},</div>
|
||||
<div class="line"><a id="l00803" name="l00803"></a><span class="lineno"> 803</span> .msig = <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1msig.html">msig</a>(zelda),</div>
|
||||
<div class="line"><a id="l00804" name="l00804"></a><span class="lineno"> 804</span> .fee = baseFee,</div>
|
||||
<div class="line"><a id="l00805" name="l00805"></a><span class="lineno"> 805</span> .err = <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4ab2a35b856d8227d6717984f63aa5a445">tefBAD_SIGNATURE</a>)});</div>
|
||||
<div class="line"><a id="l00806" name="l00806"></a><span class="lineno"> 806</span> oracle.set(<a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html">UpdateArg</a>{</div>
|
||||
<div class="line"><a id="l00807" name="l00807"></a><span class="lineno"> 807</span> .<a class="code hl_variable" href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html#ab5f28bfb56ed9e15ab80e9a44c045696">series</a> = {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 741, 1}},</div>
|
||||
<div class="line"><a id="l00808" name="l00808"></a><span class="lineno"> 808</span> .msig = <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1msig.html">msig</a>(becky, bogie),</div>
|
||||
<div class="line"><a id="l00809" name="l00809"></a><span class="lineno"> 809</span> .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00810" name="l00810"></a><span class="lineno"> 810</span> BEAST_EXPECT(oracle.expectPrice({{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 741, 1}}));</div>
|
||||
<div class="line"><a id="l00811" name="l00811"></a><span class="lineno"> 811</span> <span class="comment">// remove the signer list</span></div>
|
||||
<div class="line"><a id="l00812" name="l00812"></a><span class="lineno"> 812</span> env(signers(alice, jtx::none), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1sig.html">sig</a>(alie));</div>
|
||||
<div class="line"><a id="l00813" name="l00813"></a><span class="lineno"> 813</span> env.close();</div>
|
||||
<div class="line"><a id="l00814" name="l00814"></a><span class="lineno"> 814</span> env.require(<a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1owners.html">owners</a>(alice, 1));</div>
|
||||
<div class="line"><a id="l00815" name="l00815"></a><span class="lineno"> 815</span> <span class="comment">// create new signer list</span></div>
|
||||
<div class="line"><a id="l00816" name="l00816"></a><span class="lineno"> 816</span> env(signers(alice, 2, {{zelda, 1}, {bob, 1}, {ed, 2}}), sig(alie));</div>
|
||||
<div class="line"><a id="l00817" name="l00817"></a><span class="lineno"> 817</span> env.close();</div>
|
||||
<div class="line"><a id="l00818" name="l00818"></a><span class="lineno"> 818</span> <span class="comment">// old list fails</span></div>
|
||||
<div class="line"><a id="l00819" name="l00819"></a><span class="lineno"> 819</span> oracle.set(UpdateArg{</div>
|
||||
<div class="line"><a id="l00820" name="l00820"></a><span class="lineno"> 820</span> .series = {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 740, 1}},</div>
|
||||
<div class="line"><a id="l00821" name="l00821"></a><span class="lineno"> 821</span> .msig = msig(becky, bogie),</div>
|
||||
<div class="line"><a id="l00822" name="l00822"></a><span class="lineno"> 822</span> .fee = baseFee,</div>
|
||||
<div class="line"><a id="l00823" name="l00823"></a><span class="lineno"> 823</span> .err = ter(<a class="code hl_enumvalue" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4ab2a35b856d8227d6717984f63aa5a445">tefBAD_SIGNATURE</a>)});</div>
|
||||
<div class="line"><a id="l00824" name="l00824"></a><span class="lineno"> 824</span> <span class="comment">// updated list succeeds</span></div>
|
||||
<div class="line"><a id="l00825" name="l00825"></a><span class="lineno"> 825</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.set(UpdateArg{</div>
|
||||
<div class="line"><a id="l00826" name="l00826"></a><span class="lineno"> 826</span> .series = {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 7412, 2}},</div>
|
||||
<div class="line"><a id="l00827" name="l00827"></a><span class="lineno"> 827</span> .msig = msig(zelda, bob),</div>
|
||||
<div class="line"><a id="l00828" name="l00828"></a><span class="lineno"> 828</span> .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00829" name="l00829"></a><span class="lineno"> 829</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.expectPrice({{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 7412, 2}}));</div>
|
||||
<div class="line"><a id="l00830" name="l00830"></a><span class="lineno"> 830</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.set(UpdateArg{</div>
|
||||
<div class="line"><a id="l00831" name="l00831"></a><span class="lineno"> 831</span> .series = {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 74245, 3}},</div>
|
||||
<div class="line"><a id="l00832" name="l00832"></a><span class="lineno"> 832</span> .msig = msig(ed),</div>
|
||||
<div class="line"><a id="l00833" name="l00833"></a><span class="lineno"> 833</span> .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00834" name="l00834"></a><span class="lineno"> 834</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.expectPrice({{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 74245, 3}}));</div>
|
||||
<div class="line"><a id="l00835" name="l00835"></a><span class="lineno"> 835</span> </div>
|
||||
<div class="line"><a id="l00836" name="l00836"></a><span class="lineno"> 836</span> <span class="comment">// Remove</span></div>
|
||||
<div class="line"><a id="l00789" name="l00789"></a><span class="lineno"> 789</span> .<a class="code hl_variable" href="structripple_1_1test_1_1jtx_1_1oracle_1_1CreateArg.html#ae8dbfa217979a76d804bd875a758e917">msig</a> = <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1msig.html">msig</a>(zelda), .fee = baseFee, .err = <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4ab2a35b856d8227d6717984f63aa5a445">tefBAD_SIGNATURE</a>)});</div>
|
||||
<div class="line"><a id="l00790" name="l00790"></a><span class="lineno"> 790</span> oracle.set(<a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1oracle_1_1CreateArg.html">CreateArg</a>{.<a class="code hl_variable" href="structripple_1_1test_1_1jtx_1_1oracle_1_1CreateArg.html#ae8dbfa217979a76d804bd875a758e917">msig</a> = <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1msig.html">msig</a>(becky, bogie), .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00791" name="l00791"></a><span class="lineno"> 791</span> BEAST_EXPECT(oracle.exists());</div>
|
||||
<div class="line"><a id="l00792" name="l00792"></a><span class="lineno"> 792</span> </div>
|
||||
<div class="line"><a id="l00793" name="l00793"></a><span class="lineno"> 793</span> <span class="comment">// Update</span></div>
|
||||
<div class="line"><a id="l00794" name="l00794"></a><span class="lineno"> 794</span> oracle.set(<a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html">UpdateArg</a>{</div>
|
||||
<div class="line"><a id="l00795" name="l00795"></a><span class="lineno"> 795</span> .<a class="code hl_variable" href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html#ab5f28bfb56ed9e15ab80e9a44c045696">series</a> = {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 740, 1}},</div>
|
||||
<div class="line"><a id="l00796" name="l00796"></a><span class="lineno"> 796</span> .msig = <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1msig.html">msig</a>(becky),</div>
|
||||
<div class="line"><a id="l00797" name="l00797"></a><span class="lineno"> 797</span> .fee = baseFee,</div>
|
||||
<div class="line"><a id="l00798" name="l00798"></a><span class="lineno"> 798</span> .err = <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4aafd3fcc27f093dd96e977fb0f07044f1">tefBAD_QUORUM</a>)});</div>
|
||||
<div class="line"><a id="l00799" name="l00799"></a><span class="lineno"> 799</span> oracle.set(<a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html">UpdateArg</a>{</div>
|
||||
<div class="line"><a id="l00800" name="l00800"></a><span class="lineno"> 800</span> .<a class="code hl_variable" href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html#ab5f28bfb56ed9e15ab80e9a44c045696">series</a> = {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 740, 1}},</div>
|
||||
<div class="line"><a id="l00801" name="l00801"></a><span class="lineno"> 801</span> .msig = <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1msig.html">msig</a>(zelda),</div>
|
||||
<div class="line"><a id="l00802" name="l00802"></a><span class="lineno"> 802</span> .fee = baseFee,</div>
|
||||
<div class="line"><a id="l00803" name="l00803"></a><span class="lineno"> 803</span> .err = <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4ab2a35b856d8227d6717984f63aa5a445">tefBAD_SIGNATURE</a>)});</div>
|
||||
<div class="line"><a id="l00804" name="l00804"></a><span class="lineno"> 804</span> oracle.set(<a class="code hl_struct" href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html">UpdateArg</a>{</div>
|
||||
<div class="line"><a id="l00805" name="l00805"></a><span class="lineno"> 805</span> .<a class="code hl_variable" href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html#ab5f28bfb56ed9e15ab80e9a44c045696">series</a> = {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 741, 1}},</div>
|
||||
<div class="line"><a id="l00806" name="l00806"></a><span class="lineno"> 806</span> .msig = <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1msig.html">msig</a>(becky, bogie),</div>
|
||||
<div class="line"><a id="l00807" name="l00807"></a><span class="lineno"> 807</span> .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00808" name="l00808"></a><span class="lineno"> 808</span> BEAST_EXPECT(oracle.expectPrice({{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 741, 1}}));</div>
|
||||
<div class="line"><a id="l00809" name="l00809"></a><span class="lineno"> 809</span> <span class="comment">// remove the signer list</span></div>
|
||||
<div class="line"><a id="l00810" name="l00810"></a><span class="lineno"> 810</span> env(signers(alice, jtx::none), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1sig.html">sig</a>(alie));</div>
|
||||
<div class="line"><a id="l00811" name="l00811"></a><span class="lineno"> 811</span> env.close();</div>
|
||||
<div class="line"><a id="l00812" name="l00812"></a><span class="lineno"> 812</span> env.require(<a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1owners.html">owners</a>(alice, 1));</div>
|
||||
<div class="line"><a id="l00813" name="l00813"></a><span class="lineno"> 813</span> <span class="comment">// create new signer list</span></div>
|
||||
<div class="line"><a id="l00814" name="l00814"></a><span class="lineno"> 814</span> env(signers(alice, 2, {{zelda, 1}, {bob, 1}, {ed, 2}}), sig(alie));</div>
|
||||
<div class="line"><a id="l00815" name="l00815"></a><span class="lineno"> 815</span> env.close();</div>
|
||||
<div class="line"><a id="l00816" name="l00816"></a><span class="lineno"> 816</span> <span class="comment">// old list fails</span></div>
|
||||
<div class="line"><a id="l00817" name="l00817"></a><span class="lineno"> 817</span> oracle.set(UpdateArg{</div>
|
||||
<div class="line"><a id="l00818" name="l00818"></a><span class="lineno"> 818</span> .series = {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 740, 1}},</div>
|
||||
<div class="line"><a id="l00819" name="l00819"></a><span class="lineno"> 819</span> .msig = msig(becky, bogie),</div>
|
||||
<div class="line"><a id="l00820" name="l00820"></a><span class="lineno"> 820</span> .fee = baseFee,</div>
|
||||
<div class="line"><a id="l00821" name="l00821"></a><span class="lineno"> 821</span> .err = ter(<a class="code hl_enumvalue" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4ab2a35b856d8227d6717984f63aa5a445">tefBAD_SIGNATURE</a>)});</div>
|
||||
<div class="line"><a id="l00822" name="l00822"></a><span class="lineno"> 822</span> <span class="comment">// updated list succeeds</span></div>
|
||||
<div class="line"><a id="l00823" name="l00823"></a><span class="lineno"> 823</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.set(UpdateArg{</div>
|
||||
<div class="line"><a id="l00824" name="l00824"></a><span class="lineno"> 824</span> .series = {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 7412, 2}},</div>
|
||||
<div class="line"><a id="l00825" name="l00825"></a><span class="lineno"> 825</span> .msig = msig(zelda, bob),</div>
|
||||
<div class="line"><a id="l00826" name="l00826"></a><span class="lineno"> 826</span> .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00827" name="l00827"></a><span class="lineno"> 827</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.expectPrice({{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 7412, 2}}));</div>
|
||||
<div class="line"><a id="l00828" name="l00828"></a><span class="lineno"> 828</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.set(UpdateArg{</div>
|
||||
<div class="line"><a id="l00829" name="l00829"></a><span class="lineno"> 829</span> .series = {{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 74245, 3}},</div>
|
||||
<div class="line"><a id="l00830" name="l00830"></a><span class="lineno"> 830</span> .msig = msig(ed),</div>
|
||||
<div class="line"><a id="l00831" name="l00831"></a><span class="lineno"> 831</span> .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00832" name="l00832"></a><span class="lineno"> 832</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.expectPrice({{<span class="stringliteral">"XRP"</span>, <span class="stringliteral">"USD"</span>, 74245, 3}}));</div>
|
||||
<div class="line"><a id="l00833" name="l00833"></a><span class="lineno"> 833</span> </div>
|
||||
<div class="line"><a id="l00834" name="l00834"></a><span class="lineno"> 834</span> <span class="comment">// Remove</span></div>
|
||||
<div class="line"><a id="l00835" name="l00835"></a><span class="lineno"> 835</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.remove(</div>
|
||||
<div class="line"><a id="l00836" name="l00836"></a><span class="lineno"> 836</span> {.msig = msig(bob), .fee = baseFee, .err = ter(tefBAD_QUORUM)});</div>
|
||||
<div class="line"><a id="l00837" name="l00837"></a><span class="lineno"> 837</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.remove(</div>
|
||||
<div class="line"><a id="l00838" name="l00838"></a><span class="lineno"> 838</span> {.msig = msig(bob), .fee = baseFee, .err = ter(tefBAD_QUORUM)});</div>
|
||||
<div class="line"><a id="l00839" name="l00839"></a><span class="lineno"> 839</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.remove(</div>
|
||||
<div class="line"><a id="l00840" name="l00840"></a><span class="lineno"> 840</span> {.msig = msig(becky),</div>
|
||||
<div class="line"><a id="l00841" name="l00841"></a><span class="lineno"> 841</span> .fee = baseFee,</div>
|
||||
<div class="line"><a id="l00842" name="l00842"></a><span class="lineno"> 842</span> .err = ter(tefBAD_SIGNATURE)});</div>
|
||||
<div class="line"><a id="l00843" name="l00843"></a><span class="lineno"> 843</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.remove({.msig = msig(ed), .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00844" name="l00844"></a><span class="lineno"> 844</span> BEAST_EXPECT(!<a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.exists());</div>
|
||||
<div class="line"><a id="l00845" name="l00845"></a><span class="lineno"> 845</span> }</div>
|
||||
<div class="line"><a id="l00838" name="l00838"></a><span class="lineno"> 838</span> {.msig = msig(becky),</div>
|
||||
<div class="line"><a id="l00839" name="l00839"></a><span class="lineno"> 839</span> .fee = baseFee,</div>
|
||||
<div class="line"><a id="l00840" name="l00840"></a><span class="lineno"> 840</span> .err = ter(tefBAD_SIGNATURE)});</div>
|
||||
<div class="line"><a id="l00841" name="l00841"></a><span class="lineno"> 841</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.remove({.msig = msig(ed), .fee = baseFee});</div>
|
||||
<div class="line"><a id="l00842" name="l00842"></a><span class="lineno"> 842</span> BEAST_EXPECT(!<a class="code hl_function" href="namespaceripple_1_1keylet.html#a0c8501b7162b24e030168fb13b6d774a">oracle</a>.exists());</div>
|
||||
<div class="line"><a id="l00843" name="l00843"></a><span class="lineno"> 843</span> }</div>
|
||||
</div>
|
||||
<div class="line"><a id="l00846" name="l00846"></a><span class="lineno"> 846</span> </div>
|
||||
<div class="line"><a id="l00847" name="l00847"></a><span class="lineno"> 847</span> <span class="keywordtype">void</span></div>
|
||||
<div class="foldopen" id="foldopen00848" data-start="{" data-end="}">
|
||||
<div class="line"><a id="l00848" name="l00848"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#a1d5d3700747ddec774c27db1b09ea297"> 848</a></span> <a class="code hl_function" href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#a1d5d3700747ddec774c27db1b09ea297">testAmendment</a>()</div>
|
||||
<div class="line"><a id="l00849" name="l00849"></a><span class="lineno"> 849</span> {</div>
|
||||
<div class="line"><a id="l00850" name="l00850"></a><span class="lineno"> 850</span> testcase(<span class="stringliteral">"Amendment"</span>);</div>
|
||||
<div class="line"><a id="l00851" name="l00851"></a><span class="lineno"> 851</span> <span class="keyword">using namespace </span>jtx;</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="keyword">auto</span> <span class="keyword">const</span> features = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a8e5379a68ca5b5ae718e77312c2f1f94">testable_amendments</a>() - featurePriceOracle;</div>
|
||||
<div class="line"><a id="l00854" name="l00854"></a><span class="lineno"> 854</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> owner(<span class="stringliteral">"owner"</span>);</div>
|
||||
<div class="line"><a id="l00855" name="l00855"></a><span class="lineno"> 855</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env(*<span class="keyword">this</span>, features);</div>
|
||||
<div class="line"><a id="l00856" name="l00856"></a><span class="lineno"> 856</span> <span class="keyword">auto</span> <span class="keyword">const</span> baseFee =</div>
|
||||
<div class="line"><a id="l00857" name="l00857"></a><span class="lineno"> 857</span> <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(env.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#a65bedb2e0babbd55343f721de9008a37">current</a>()->fees().base.drops());</div>
|
||||
<div class="line"><a id="l00858" name="l00858"></a><span class="lineno"> 858</span> </div>
|
||||
<div class="line"><a id="l00859" name="l00859"></a><span class="lineno"> 859</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>(1'000), owner);</div>
|
||||
<div class="line"><a id="l00860" name="l00860"></a><span class="lineno"> 860</span> {</div>
|
||||
<div class="line"><a id="l00861" name="l00861"></a><span class="lineno"> 861</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1oracle_1_1Oracle.html">Oracle</a> oracle(</div>
|
||||
<div class="line"><a id="l00862" name="l00862"></a><span class="lineno"> 862</span> env, {.owner = owner, .fee = baseFee, .err = <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="l00863" name="l00863"></a><span class="lineno"> 863</span> }</div>
|
||||
<div class="line"><a id="l00864" name="l00864"></a><span class="lineno"> 864</span> </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> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1oracle_1_1Oracle.html">Oracle</a> oracle(env, {.owner = owner, .fee = baseFee}, <span class="keyword">false</span>);</div>
|
||||
<div class="line"><a id="l00867" name="l00867"></a><span class="lineno"> 867</span> oracle.remove({.fee = baseFee, .err = <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="l00868" name="l00868"></a><span class="lineno"> 868</span> }</div>
|
||||
<div class="line"><a id="l00869" name="l00869"></a><span class="lineno"> 869</span> }</div>
|
||||
<div class="line"><a id="l00844" name="l00844"></a><span class="lineno"> 844</span> </div>
|
||||
<div class="line"><a id="l00845" name="l00845"></a><span class="lineno"> 845</span> <span class="keywordtype">void</span></div>
|
||||
<div class="foldopen" id="foldopen00846" data-start="{" data-end="}">
|
||||
<div class="line"><a id="l00846" name="l00846"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#a1d5d3700747ddec774c27db1b09ea297"> 846</a></span> <a class="code hl_function" href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#a1d5d3700747ddec774c27db1b09ea297">testAmendment</a>()</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> testcase(<span class="stringliteral">"Amendment"</span>);</div>
|
||||
<div class="line"><a id="l00849" name="l00849"></a><span class="lineno"> 849</span> <span class="keyword">using namespace </span>jtx;</div>
|
||||
<div class="line"><a id="l00850" name="l00850"></a><span class="lineno"> 850</span> </div>
|
||||
<div class="line"><a id="l00851" name="l00851"></a><span class="lineno"> 851</span> <span class="keyword">auto</span> <span class="keyword">const</span> features = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a8e5379a68ca5b5ae718e77312c2f1f94">testable_amendments</a>() - featurePriceOracle;</div>
|
||||
<div class="line"><a id="l00852" name="l00852"></a><span class="lineno"> 852</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> owner(<span class="stringliteral">"owner"</span>);</div>
|
||||
<div class="line"><a id="l00853" name="l00853"></a><span class="lineno"> 853</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env(*<span class="keyword">this</span>, features);</div>
|
||||
<div class="line"><a id="l00854" name="l00854"></a><span class="lineno"> 854</span> <span class="keyword">auto</span> <span class="keyword">const</span> baseFee =</div>
|
||||
<div class="line"><a id="l00855" name="l00855"></a><span class="lineno"> 855</span> <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(env.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#a65bedb2e0babbd55343f721de9008a37">current</a>()->fees().base.drops());</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> 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>(1'000), owner);</div>
|
||||
<div class="line"><a id="l00858" name="l00858"></a><span class="lineno"> 858</span> {</div>
|
||||
<div class="line"><a id="l00859" name="l00859"></a><span class="lineno"> 859</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1oracle_1_1Oracle.html">Oracle</a> oracle(</div>
|
||||
<div class="line"><a id="l00860" name="l00860"></a><span class="lineno"> 860</span> env, {.owner = owner, .fee = baseFee, .err = <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="l00861" name="l00861"></a><span class="lineno"> 861</span> }</div>
|
||||
<div class="line"><a id="l00862" name="l00862"></a><span class="lineno"> 862</span> </div>
|
||||
<div class="line"><a id="l00863" name="l00863"></a><span class="lineno"> 863</span> {</div>
|
||||
<div class="line"><a id="l00864" name="l00864"></a><span class="lineno"> 864</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1oracle_1_1Oracle.html">Oracle</a> oracle(env, {.owner = owner, .fee = baseFee}, <span class="keyword">false</span>);</div>
|
||||
<div class="line"><a id="l00865" name="l00865"></a><span class="lineno"> 865</span> oracle.remove({.fee = baseFee, .err = <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="l00866" name="l00866"></a><span class="lineno"> 866</span> }</div>
|
||||
<div class="line"><a id="l00867" name="l00867"></a><span class="lineno"> 867</span> }</div>
|
||||
</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="keyword">public</span>:</div>
|
||||
<div class="line"><a id="l00872" name="l00872"></a><span class="lineno"> 872</span> <span class="keywordtype">void</span></div>
|
||||
<div class="foldopen" id="foldopen00873" data-start="{" data-end="}">
|
||||
<div class="line"><a id="l00873" name="l00873"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#a25d6505ca685bfcfeccfaafdb1054e4a"> 873</a></span> <a class="code hl_function" href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#a25d6505ca685bfcfeccfaafdb1054e4a">run</a>()<span class="keyword"> override</span></div>
|
||||
<div class="line"><a id="l00874" name="l00874"></a><span class="lineno"> 874</span><span class="keyword"> </span>{</div>
|
||||
<div class="line"><a id="l00875" name="l00875"></a><span class="lineno"> 875</span> <span class="keyword">using namespace </span>jtx;</div>
|
||||
<div class="line"><a id="l00876" name="l00876"></a><span class="lineno"> 876</span> <span class="keyword">auto</span> <span class="keyword">const</span> all = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a8e5379a68ca5b5ae718e77312c2f1f94">testable_amendments</a>();</div>
|
||||
<div class="line"><a id="l00877" name="l00877"></a><span class="lineno"> 877</span> testInvalidSet();</div>
|
||||
<div class="line"><a id="l00878" name="l00878"></a><span class="lineno"> 878</span> testInvalidDelete();</div>
|
||||
<div class="line"><a id="l00879" name="l00879"></a><span class="lineno"> 879</span> testCreate(all);</div>
|
||||
<div class="line"><a id="l00880" name="l00880"></a><span class="lineno"> 880</span> testCreate(all - fixIncludeKeyletFields);</div>
|
||||
<div class="line"><a id="l00881" name="l00881"></a><span class="lineno"> 881</span> testDelete();</div>
|
||||
<div class="line"><a id="l00882" name="l00882"></a><span class="lineno"> 882</span> testUpdate();</div>
|
||||
<div class="line"><a id="l00883" name="l00883"></a><span class="lineno"> 883</span> testAmendment();</div>
|
||||
<div class="line"><a id="l00884" name="l00884"></a><span class="lineno"> 884</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>& features :</div>
|
||||
<div class="line"><a id="l00885" name="l00885"></a><span class="lineno"> 885</span> {all,</div>
|
||||
<div class="line"><a id="l00886" name="l00886"></a><span class="lineno"> 886</span> all - featureMultiSignReserve - featureExpandedSignerList,</div>
|
||||
<div class="line"><a id="l00887" name="l00887"></a><span class="lineno"> 887</span> all - featureExpandedSignerList})</div>
|
||||
<div class="line"><a id="l00888" name="l00888"></a><span class="lineno"> 888</span> testMultisig(features);</div>
|
||||
<div class="line"><a id="l00889" name="l00889"></a><span class="lineno"> 889</span> }</div>
|
||||
<div class="line"><a id="l00868" name="l00868"></a><span class="lineno"> 868</span> </div>
|
||||
<div class="line"><a id="l00869" name="l00869"></a><span class="lineno"> 869</span><span class="keyword">public</span>:</div>
|
||||
<div class="line"><a id="l00870" name="l00870"></a><span class="lineno"> 870</span> <span class="keywordtype">void</span></div>
|
||||
<div class="foldopen" id="foldopen00871" data-start="{" data-end="}">
|
||||
<div class="line"><a id="l00871" name="l00871"></a><span class="lineno"><a class="line" href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#a25d6505ca685bfcfeccfaafdb1054e4a"> 871</a></span> <a class="code hl_function" href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#a25d6505ca685bfcfeccfaafdb1054e4a">run</a>()<span class="keyword"> override</span></div>
|
||||
<div class="line"><a id="l00872" name="l00872"></a><span class="lineno"> 872</span><span class="keyword"> </span>{</div>
|
||||
<div class="line"><a id="l00873" name="l00873"></a><span class="lineno"> 873</span> <span class="keyword">using namespace </span>jtx;</div>
|
||||
<div class="line"><a id="l00874" name="l00874"></a><span class="lineno"> 874</span> <span class="keyword">auto</span> <span class="keyword">const</span> all = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a8e5379a68ca5b5ae718e77312c2f1f94">testable_amendments</a>();</div>
|
||||
<div class="line"><a id="l00875" name="l00875"></a><span class="lineno"> 875</span> testInvalidSet();</div>
|
||||
<div class="line"><a id="l00876" name="l00876"></a><span class="lineno"> 876</span> testInvalidDelete();</div>
|
||||
<div class="line"><a id="l00877" name="l00877"></a><span class="lineno"> 877</span> testCreate(all);</div>
|
||||
<div class="line"><a id="l00878" name="l00878"></a><span class="lineno"> 878</span> testCreate(all - fixIncludeKeyletFields);</div>
|
||||
<div class="line"><a id="l00879" name="l00879"></a><span class="lineno"> 879</span> testDelete();</div>
|
||||
<div class="line"><a id="l00880" name="l00880"></a><span class="lineno"> 880</span> testUpdate();</div>
|
||||
<div class="line"><a id="l00881" name="l00881"></a><span class="lineno"> 881</span> testAmendment();</div>
|
||||
<div class="line"><a id="l00882" name="l00882"></a><span class="lineno"> 882</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>& features :</div>
|
||||
<div class="line"><a id="l00883" name="l00883"></a><span class="lineno"> 883</span> {all,</div>
|
||||
<div class="line"><a id="l00884" name="l00884"></a><span class="lineno"> 884</span> all - featureMultiSignReserve - featureExpandedSignerList,</div>
|
||||
<div class="line"><a id="l00885" name="l00885"></a><span class="lineno"> 885</span> all - featureExpandedSignerList})</div>
|
||||
<div class="line"><a id="l00886" name="l00886"></a><span class="lineno"> 886</span> testMultisig(features);</div>
|
||||
<div class="line"><a id="l00887" name="l00887"></a><span class="lineno"> 887</span> }</div>
|
||||
</div>
|
||||
<div class="line"><a id="l00890" name="l00890"></a><span class="lineno"> 890</span>};</div>
|
||||
<div class="line"><a id="l00888" name="l00888"></a><span class="lineno"> 888</span>};</div>
|
||||
</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"><a class="line" href="namespaceripple_1_1test_1_1jtx_1_1oracle.html#a06f39c6015d46509eb6959ca65b0c53a"> 890</a></span>BEAST_DEFINE_TESTSUITE(<a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1oracle_1_1Oracle.html">Oracle</a>, app, <a class="code hl_namespace" href="namespaceripple.html">ripple</a>);</div>
|
||||
<div class="line"><a id="l00891" name="l00891"></a><span class="lineno"> 891</span> </div>
|
||||
<div class="line"><a id="l00892" name="l00892"></a><span class="lineno"><a class="line" href="namespaceripple_1_1test_1_1jtx_1_1oracle.html#a06f39c6015d46509eb6959ca65b0c53a"> 892</a></span>BEAST_DEFINE_TESTSUITE(<a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1oracle_1_1Oracle.html">Oracle</a>, app, <a class="code hl_namespace" href="namespaceripple.html">ripple</a>);</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="comment">// namespace oracle</span></div>
|
||||
<div class="line"><a id="l00892" name="l00892"></a><span class="lineno"> 892</span>} <span class="comment">// namespace oracle</span></div>
|
||||
</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="comment">// namespace jtx</span></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>} <span class="comment">// namespace jtx</span></div>
|
||||
<div class="line"><a id="l00896" name="l00896"></a><span class="lineno"> 896</span>} <span class="comment">// namespace test</span></div>
|
||||
<div class="line"><a id="l00897" name="l00897"></a><span class="lineno"> 897</span> </div>
|
||||
<div class="line"><a id="l00898" name="l00898"></a><span class="lineno"> 898</span>} <span class="comment">// namespace test</span></div>
|
||||
<div class="line"><a id="l00899" name="l00899"></a><span class="lineno"> 899</span> </div>
|
||||
<div class="line"><a id="l00900" name="l00900"></a><span class="lineno"> 900</span>} <span class="comment">// namespace ripple</span></div>
|
||||
<div class="line"><a id="l00898" name="l00898"></a><span class="lineno"> 898</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#l00148">json_value.h:149</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>
|
||||
@@ -1074,14 +1072,14 @@ $(document).ready(function() { init_codefold(0); });
|
||||
<div class="ttc" id="astructripple_1_1test_1_1jtx_1_1oracle_1_1CreateArg_html_ae8dbfa217979a76d804bd875a758e917"><div class="ttname"><a href="structripple_1_1test_1_1jtx_1_1oracle_1_1CreateArg.html#ae8dbfa217979a76d804bd875a758e917">ripple::test::jtx::oracle::CreateArg::msig</a></div><div class="ttdeci">std::optional< jtx::msig > msig</div><div class="ttdef"><b>Definition</b> <a href="Oracle_8h_source.html#l00072">Oracle.h:72</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1test_1_1jtx_1_1oracle_1_1CreateArg_html_af0d98f8a6087615a78dec2aa88e62a7c"><div class="ttname"><a href="structripple_1_1test_1_1jtx_1_1oracle_1_1CreateArg.html#af0d98f8a6087615a78dec2aa88e62a7c">ripple::test::jtx::oracle::CreateArg::provider</a></div><div class="ttdeci">std::optional< AnyValue > provider</div><div class="ttdef"><b>Definition</b> <a href="Oracle_8h_source.html#l00068">Oracle.h:68</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test_html"><div class="ttname"><a href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html">ripple::test::jtx::oracle::Oracle_test</a></div><div class="ttdef"><b>Definition</b> <a href="Oracle__test_8cpp_source.html#l00029">Oracle_test.cpp:30</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test_html_a1d5d3700747ddec774c27db1b09ea297"><div class="ttname"><a href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#a1d5d3700747ddec774c27db1b09ea297">ripple::test::jtx::oracle::Oracle_test::testAmendment</a></div><div class="ttdeci">void testAmendment()</div><div class="ttdef"><b>Definition</b> <a href="Oracle__test_8cpp_source.html#l00848">Oracle_test.cpp:848</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test_html_a25d6505ca685bfcfeccfaafdb1054e4a"><div class="ttname"><a href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#a25d6505ca685bfcfeccfaafdb1054e4a">ripple::test::jtx::oracle::Oracle_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="Oracle__test_8cpp_source.html#l00873">Oracle_test.cpp:873</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test_html_a1d5d3700747ddec774c27db1b09ea297"><div class="ttname"><a href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#a1d5d3700747ddec774c27db1b09ea297">ripple::test::jtx::oracle::Oracle_test::testAmendment</a></div><div class="ttdeci">void testAmendment()</div><div class="ttdef"><b>Definition</b> <a href="Oracle__test_8cpp_source.html#l00846">Oracle_test.cpp:846</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test_html_a25d6505ca685bfcfeccfaafdb1054e4a"><div class="ttname"><a href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#a25d6505ca685bfcfeccfaafdb1054e4a">ripple::test::jtx::oracle::Oracle_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="Oracle__test_8cpp_source.html#l00871">Oracle_test.cpp:871</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test_html_a8a73a86656b0a67786b16b8d53a52465"><div class="ttname"><a href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#a8a73a86656b0a67786b16b8d53a52465">ripple::test::jtx::oracle::Oracle_test::testCreate</a></div><div class="ttdeci">void testCreate(FeatureBitset features)</div><div class="ttdef"><b>Definition</b> <a href="Oracle__test_8cpp_source.html#l00401">Oracle_test.cpp:401</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test_html_a97221c6e2f664356839503e104305367"><div class="ttname"><a href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#a97221c6e2f664356839503e104305367">ripple::test::jtx::oracle::Oracle_test::testMultisig</a></div><div class="ttdeci">void testMultisig(FeatureBitset features)</div><div class="ttdef"><b>Definition</b> <a href="Oracle__test_8cpp_source.html#l00751">Oracle_test.cpp:751</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test_html_a97221c6e2f664356839503e104305367"><div class="ttname"><a href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#a97221c6e2f664356839503e104305367">ripple::test::jtx::oracle::Oracle_test::testMultisig</a></div><div class="ttdeci">void testMultisig(FeatureBitset features)</div><div class="ttdef"><b>Definition</b> <a href="Oracle__test_8cpp_source.html#l00749">Oracle_test.cpp:749</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test_html_aa4b6ac9727dce6ff314a9ffe0de58bb5"><div class="ttname"><a href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#aa4b6ac9727dce6ff314a9ffe0de58bb5">ripple::test::jtx::oracle::Oracle_test::testDelete</a></div><div class="ttdeci">void testDelete()</div><div class="ttdef"><b>Definition</b> <a href="Oracle__test_8cpp_source.html#l00515">Oracle_test.cpp:515</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test_html_ad44264ee872791a99c1050d71ec782a2"><div class="ttname"><a href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#ad44264ee872791a99c1050d71ec782a2">ripple::test::jtx::oracle::Oracle_test::testInvalidSet</a></div><div class="ttdeci">void testInvalidSet()</div><div class="ttdef"><b>Definition</b> <a href="Oracle__test_8cpp_source.html#l00033">Oracle_test.cpp:33</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test_html_ae39b203a0c056b141007b93e15229771"><div class="ttname"><a href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#ae39b203a0c056b141007b93e15229771">ripple::test::jtx::oracle::Oracle_test::testInvalidDelete</a></div><div class="ttdeci">void testInvalidDelete()</div><div class="ttdef"><b>Definition</b> <a href="Oracle__test_8cpp_source.html#l00470">Oracle_test.cpp:470</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test_html_aff71e6c7eb258afca95d5b780bb9fde2"><div class="ttname"><a href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#aff71e6c7eb258afca95d5b780bb9fde2">ripple::test::jtx::oracle::Oracle_test::testUpdate</a></div><div class="ttdeci">void testUpdate()</div><div class="ttdef"><b>Definition</b> <a href="Oracle__test_8cpp_source.html#l00607">Oracle_test.cpp:607</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test_html_aff71e6c7eb258afca95d5b780bb9fde2"><div class="ttname"><a href="structripple_1_1test_1_1jtx_1_1oracle_1_1Oracle__test.html#aff71e6c7eb258afca95d5b780bb9fde2">ripple::test::jtx::oracle::Oracle_test::testUpdate</a></div><div class="ttdeci">void testUpdate()</div><div class="ttdef"><b>Definition</b> <a href="Oracle__test_8cpp_source.html#l00605">Oracle_test.cpp:605</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg_html"><div class="ttname"><a href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html">ripple::test::jtx::oracle::UpdateArg</a></div><div class="ttdef"><b>Definition</b> <a href="Oracle_8h_source.html#l00080">Oracle.h:81</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg_html_a179bf3c7631d352854c1de6cfae7c0f5"><div class="ttname"><a href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html#a179bf3c7631d352854c1de6cfae7c0f5">ripple::test::jtx::oracle::UpdateArg::documentID</a></div><div class="ttdeci">std::optional< AnyValue > documentID</div><div class="ttdef"><b>Definition</b> <a href="Oracle_8h_source.html#l00083">Oracle.h:83</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg_html_a356edd6508b3e581faf2dc37865d17f9"><div class="ttname"><a href="structripple_1_1test_1_1jtx_1_1oracle_1_1UpdateArg.html#a356edd6508b3e581faf2dc37865d17f9">ripple::test::jtx::oracle::UpdateArg::owner</a></div><div class="ttdeci">std::optional< AccountID > owner</div><div class="ttdef"><b>Definition</b> <a href="Oracle_8h_source.html#l00082">Oracle.h:82</a></div></div>
|
||||
|
||||
Reference in New Issue
Block a user