xrpld
Loading...
Searching...
No Matches
xrpl::test::Invariants_test Class Reference
Inheritance diagram for xrpl::test::Invariants_test:
Collaboration diagram for xrpl::test::Invariants_test:

Public Member Functions

void run () override
 Runs the suite.
template<class = void>
void operator() (Runner &r)
 Invokes the test using the specified runner.
template<class = void>
void pass ()
 Record a successful test condition.
template<class F, class String>
bool except (F &&f, String const &reason)
template<class F>
bool except (F &&f)
template<class E, class F, class String>
bool except (F &&f, String const &reason)
template<class E, class F>
bool except (F &&f)
template<class F, class String>
bool unexcept (F &&f, String const &reason)
template<class F>
bool unexcept (F &&f)
std::string const & arg () const
 Return the argument associated with the runner.
template<class Condition, class String>
bool unexpected (Condition shouldBeFalse, String const &reason)
template<class Condition>
bool unexpected (Condition shouldBeFalse)
template<class String>
void fail (String const &reason, char const *file, int line)
 Record a failure.
template<class = void>
void fail (std::string const &reason="")
template<class Condition>
bool expect (Condition const &shouldBeTrue)
 Evaluate a test condition.
template<class Condition, class String>
bool expect (Condition const &shouldBeTrue, String const &reason)
template<class Condition>
bool expect (Condition const &shouldBeTrue, char const *file, int line)
template<class Condition, class String>
bool expect (Condition const &shouldBeTrue, String const &reason, char const *file, int line)

Static Public Member Functions

static SuitethisSuite ()
 Returns the "current" running suite.

Public Attributes

LogOs< char > log
 Logging output stream.
TestcaseT testcase
 Memberspace for declaring test cases.

Private Types

enum class  TxAccount : int { None = 0 , A1 , A2 }
 Run a specific test case to put the ledger into a state that will be detected by an invariant. More...
using Preclose
using Precheck

Private Member Functions

void doInvariantCheck (std::vector< std::string > const &expectLogs, Precheck const &precheck, XRPAmount fee=XRPAmount{}, STTx tx=STTx{ttACCOUNT_SET, [](STObject &) {}}, std::initializer_list< TER > ters={tecINVARIANT_FAILED, tefINVARIANT_FAILED}, Preclose const &preclose={}, TxAccount setTxAccount=TxAccount::None)
void doInvariantCheck (test::jtx::Env &&env, std::vector< std::string > const &expectLogs, Precheck const &precheck, XRPAmount fee=XRPAmount{}, STTx tx=STTx{ttACCOUNT_SET, [](STObject &) {}}, std::initializer_list< TER > ters={tecINVARIANT_FAILED, tefINVARIANT_FAILED}, Preclose const &preclose={}, TxAccount setTxAccount=TxAccount::None)
void doInvariantCheck (test::jtx::Env &&env, test::jtx::Account const &a1, test::jtx::Account const &a2, std::vector< std::string > const &expectLogs, Precheck const &precheck, XRPAmount fee=XRPAmount{}, STTx tx=STTx{ttACCOUNT_SET, [](STObject &) {}}, std::initializer_list< TER > ters={tecINVARIANT_FAILED, tefINVARIANT_FAILED})
void testXRPNotCreated ()
void testAccountRootsNotRemoved ()
void testAccountRootsDeletedClean ()
void testTypesMatch ()
void testNoXRPTrustLine ()
void testNoDeepFreezeTrustLinesWithoutFreeze ()
void testTransfersNotFrozen ()
void testXRPBalanceCheck ()
void testTransactionFeeCheck ()
void testNoBadOffers ()
void testNoZeroEscrow ()
void testValidNewAccountRoot ()
void testNFTokenPageInvariants ()
void testAMMDeleteInvariants (FeatureBitset features)
void testPermissionedDomainInvariants (FeatureBitset features)
void testValidPseudoAccounts ()
void testPermissionedDEX (FeatureBitset features)
void testBookDirectoryExchangeRate ()
Keylet createLoanBroker (jtx::Account const &a, jtx::Env &env, jtx::PrettyAsset const &asset)
void testNoModifiedUnmodifiableFields ()
void testValidLoanBroker ()
void testVault ()
void testMPT ()
void testAMM ()
void testInvariantOverwrite (FeatureBitset features)
void testVaultComputeCoarsestScale ()
void testConfidentialMPTTransfer ()
void propagateAbort () const

Static Private Member Functions

static FeatureBitset defaultAmendments ()
static SLE::pointer createPermissionedDomain (ApplyContext &ac, test::jtx::Account const &a1, test::jtx::Account const &a2, std::uint32_t numCreds=2, std::uint32_t seq=10)
static std::pair< std::uint32_t, uint256createPermissionedDomainEnv (test::jtx::Env &env, test::jtx::Account const &a1, test::jtx::Account const &a2, std::uint32_t numCreds=2)
static Suite ** pThisSuite ()

Private Attributes

bool abort_ = false
bool aborted_ = false
Runner * runner_ = nullptr

Detailed Description

Definition at line 83 of file Invariants_test.cpp.

Member Typedef Documentation

◆ Preclose

Initial value:
bool(test::jtx::Account const& a, test::jtx::Account const& b, test::jtx::Env& env)>
Immutable cryptographic account descriptor.
Definition jtx/Account.h:17
A transaction testing environment.
Definition Env.h:143

Definition at line 89 of file Invariants_test.cpp.

◆ Precheck

Initial value:
bool(test::jtx::Account const& a, test::jtx::Account const& b, ApplyContext& ac)>
State information when applying a tx.

Definition at line 95 of file Invariants_test.cpp.

Member Enumeration Documentation

◆ TxAccount

enum class xrpl::test::Invariants_test::TxAccount : int
strongprivate

Run a specific test case to put the ledger into a state that will be detected by an invariant.

Simulates the actions of a transaction that would violate an invariant.

Parameters
expect_logsOne or more messages related to the failing invariant that should be in the log output @precheck See "Precheck" above @fee If provided, the fee amount paid by the simulated transaction. @tx A mock transaction that took the actions to trigger the invariant. In most cases, only the type matters. @ters The TER results expected on the two passes of the invariant checker. @preclose See "Preclose" above. Note that @preclose runs before @precheck, but is the last parameter for historical reasons @setTxAccount optionally set to add sfAccount to tx (either A1 or A2)
Enumerator
None 
A1 
A2 

Definition at line 120 of file Invariants_test.cpp.

Member Function Documentation

◆ defaultAmendments()

FeatureBitset xrpl::test::Invariants_test::defaultAmendments ( )
staticprivate

Definition at line 99 of file Invariants_test.cpp.

◆ doInvariantCheck() [1/3]

void xrpl::test::Invariants_test::doInvariantCheck ( std::vector< std::string > const & expectLogs,
Precheck const & precheck,
XRPAmount fee = XRPAmount{},
STTx tx = STTx{ttACCOUNT_SET, [](STObject&) {}},
std::initializer_list< TER > ters = {tecINVARIANT_FAILEDtefINVARIANT_FAILED},
Preclose const & preclose = {},
TxAccount setTxAccount = TxAccount::None )
private

Definition at line 122 of file Invariants_test.cpp.

◆ doInvariantCheck() [2/3]

void xrpl::test::Invariants_test::doInvariantCheck ( test::jtx::Env && env,
std::vector< std::string > const & expectLogs,
Precheck const & precheck,
XRPAmount fee = XRPAmount{},
STTx tx = STTx{ttACCOUNT_SET, [](STObject&) {}},
std::initializer_list< TER > ters = {tecINVARIANT_FAILEDtefINVARIANT_FAILED},
Preclose const & preclose = {},
TxAccount setTxAccount = TxAccount::None )
private

Definition at line 143 of file Invariants_test.cpp.

◆ doInvariantCheck() [3/3]

void xrpl::test::Invariants_test::doInvariantCheck ( test::jtx::Env && env,
test::jtx::Account const & a1,
test::jtx::Account const & a2,
std::vector< std::string > const & expectLogs,
Precheck const & precheck,
XRPAmount fee = XRPAmount{},
STTx tx = STTx{ttACCOUNT_SET, [](STObject&) {}},
std::initializer_list< TER > ters = {tecINVARIANT_FAILEDtefINVARIANT_FAILED} )
private

Definition at line 169 of file Invariants_test.cpp.

◆ testXRPNotCreated()

void xrpl::test::Invariants_test::testXRPNotCreated ( )
private

Definition at line 227 of file Invariants_test.cpp.

◆ testAccountRootsNotRemoved()

void xrpl::test::Invariants_test::testAccountRootsNotRemoved ( )
private

Definition at line 246 of file Invariants_test.cpp.

◆ testAccountRootsDeletedClean()

void xrpl::test::Invariants_test::testAccountRootsDeletedClean ( )
private

Definition at line 302 of file Invariants_test.cpp.

◆ testTypesMatch()

void xrpl::test::Invariants_test::testTypesMatch ( )
private

Definition at line 519 of file Invariants_test.cpp.

◆ testNoXRPTrustLine()

void xrpl::test::Invariants_test::testNoXRPTrustLine ( )
private

Definition at line 558 of file Invariants_test.cpp.

◆ testNoDeepFreezeTrustLinesWithoutFreeze()

void xrpl::test::Invariants_test::testNoDeepFreezeTrustLinesWithoutFreeze ( )
private

Definition at line 574 of file Invariants_test.cpp.

◆ testTransfersNotFrozen()

void xrpl::test::Invariants_test::testTransfersNotFrozen ( )
private

Definition at line 657 of file Invariants_test.cpp.

◆ testXRPBalanceCheck()

void xrpl::test::Invariants_test::testXRPBalanceCheck ( )
private

Definition at line 748 of file Invariants_test.cpp.

◆ testTransactionFeeCheck()

void xrpl::test::Invariants_test::testTransactionFeeCheck ( )
private

Definition at line 797 of file Invariants_test.cpp.

◆ testNoBadOffers()

void xrpl::test::Invariants_test::testNoBadOffers ( )
private

Definition at line 823 of file Invariants_test.cpp.

◆ testNoZeroEscrow()

void xrpl::test::Invariants_test::testNoZeroEscrow ( )
private

Definition at line 874 of file Invariants_test.cpp.

◆ testValidNewAccountRoot()

void xrpl::test::Invariants_test::testValidNewAccountRoot ( )
private

Definition at line 1043 of file Invariants_test.cpp.

◆ testNFTokenPageInvariants()

void xrpl::test::Invariants_test::testNFTokenPageInvariants ( )
private

Definition at line 1157 of file Invariants_test.cpp.

◆ testAMMDeleteInvariants()

void xrpl::test::Invariants_test::testAMMDeleteInvariants ( FeatureBitset features)
private

Definition at line 1288 of file Invariants_test.cpp.

◆ createPermissionedDomain()

SLE::pointer xrpl::test::Invariants_test::createPermissionedDomain ( ApplyContext & ac,
test::jtx::Account const & a1,
test::jtx::Account const & a2,
std::uint32_t numCreds = 2,
std::uint32_t seq = 10 )
staticprivate

Definition at line 1369 of file Invariants_test.cpp.

◆ testPermissionedDomainInvariants()

void xrpl::test::Invariants_test::testPermissionedDomainInvariants ( FeatureBitset features)
private

Definition at line 1403 of file Invariants_test.cpp.

◆ testValidPseudoAccounts()

void xrpl::test::Invariants_test::testValidPseudoAccounts ( )
private

Definition at line 1745 of file Invariants_test.cpp.

◆ createPermissionedDomainEnv()

std::pair< std::uint32_t, uint256 > xrpl::test::Invariants_test::createPermissionedDomainEnv ( test::jtx::Env & env,
test::jtx::Account const & a1,
test::jtx::Account const & a2,
std::uint32_t numCreds = 2 )
staticprivate

Definition at line 1863 of file Invariants_test.cpp.

◆ testPermissionedDEX()

void xrpl::test::Invariants_test::testPermissionedDEX ( FeatureBitset features)
private

Definition at line 1889 of file Invariants_test.cpp.

◆ testBookDirectoryExchangeRate()

void xrpl::test::Invariants_test::testBookDirectoryExchangeRate ( )
private

Definition at line 2131 of file Invariants_test.cpp.

◆ createLoanBroker()

Keylet xrpl::test::Invariants_test::createLoanBroker ( jtx::Account const & a,
jtx::Env & env,
jtx::PrettyAsset const & asset )
private

Definition at line 2294 of file Invariants_test.cpp.

◆ testNoModifiedUnmodifiableFields()

void xrpl::test::Invariants_test::testNoModifiedUnmodifiableFields ( )
private

Definition at line 2318 of file Invariants_test.cpp.

◆ testValidLoanBroker()

void xrpl::test::Invariants_test::testValidLoanBroker ( )
private

Definition at line 2391 of file Invariants_test.cpp.

◆ testVault()

void xrpl::test::Invariants_test::testVault ( )
private

Definition at line 2661 of file Invariants_test.cpp.

◆ testMPT()

void xrpl::test::Invariants_test::testMPT ( )
private

Definition at line 4214 of file Invariants_test.cpp.

◆ testAMM()

void xrpl::test::Invariants_test::testAMM ( )
private

Definition at line 4809 of file Invariants_test.cpp.

◆ testInvariantOverwrite()

void xrpl::test::Invariants_test::testInvariantOverwrite ( FeatureBitset features)
private

Definition at line 4919 of file Invariants_test.cpp.

◆ testVaultComputeCoarsestScale()

void xrpl::test::Invariants_test::testVaultComputeCoarsestScale ( )
private

Definition at line 5048 of file Invariants_test.cpp.

◆ testConfidentialMPTTransfer()

void xrpl::test::Invariants_test::testConfidentialMPTTransfer ( )
private

Definition at line 5180 of file Invariants_test.cpp.

◆ run()

void xrpl::test::Invariants_test::run ( )
overridevirtual

Runs the suite.

Implements beast::unit_test::Suite.

Definition at line 5429 of file Invariants_test.cpp.

◆ thisSuite()

Suite * beast::unit_test::Suite::thisSuite ( )
staticinherited

Returns the "current" running suite.

If no suite is running, nullptr is returned.

Definition at line 155 of file suite.h.

◆ operator()()

template<class>
void beast::unit_test::Suite::operator() ( Runner & r)
inherited

Invokes the test using the specified runner.

Data members are set up here instead of the constructor as a convenience to writing the derived class to avoid repetition of forwarded constructor arguments to the base. Normally this is called by the framework for you.

Definition at line 388 of file suite.h.

◆ pass()

template<class>
void beast::unit_test::Suite::pass ( )
inherited

Record a successful test condition.

Definition at line 500 of file suite.h.

◆ fail() [1/2]

template<class String>
void beast::unit_test::Suite::fail ( String const & reason,
char const * file,
int line )
inherited

Record a failure.

Parameters
reasonOptional text added to the output on a failure.
fileThe source code file where the test failed.
lineThe source code line number where the test failed.

Definition at line 522 of file suite.h.

◆ fail() [2/2]

template<class>
void beast::unit_test::Suite::fail ( std::string const & reason = "")
inherited

Definition at line 509 of file suite.h.

◆ expect() [1/4]

template<class Condition>
bool beast::unit_test::Suite::expect ( Condition const & shouldBeTrue)
inherited

Evaluate a test condition.

This function provides improved logging by incorporating the file name and line number into the reported output on failure, as well as additional text specified by the caller.

Parameters
shouldBeTrueThe condition to test. The condition is evaluated in a boolean context.
reasonOptional added text to output on a failure.
fileThe source code file where the test failed.
lineThe source code line number where the test failed.
Returns
true if the test condition indicates success.

Definition at line 223 of file suite.h.

◆ expect() [2/4]

template<class Condition, class String>
bool beast::unit_test::Suite::expect ( Condition const & shouldBeTrue,
String const & reason )
inherited

Definition at line 405 of file suite.h.

◆ expect() [3/4]

template<class Condition>
bool beast::unit_test::Suite::expect ( Condition const & shouldBeTrue,
char const * file,
int line )
inherited

Definition at line 234 of file suite.h.

◆ expect() [4/4]

template<class Condition, class String>
bool beast::unit_test::Suite::expect ( Condition const & shouldBeTrue,
String const & reason,
char const * file,
int line )
inherited

Definition at line 418 of file suite.h.

◆ except() [1/4]

template<class F, class String>
bool beast::unit_test::Suite::except ( F && f,
String const & reason )
inherited

Definition at line 433 of file suite.h.

◆ except() [2/4]

template<class F>
bool beast::unit_test::Suite::except ( F && f)
inherited

Definition at line 253 of file suite.h.

◆ except() [3/4]

template<class E, class F, class String>
bool beast::unit_test::Suite::except ( F && f,
String const & reason )
inherited

Definition at line 450 of file suite.h.

◆ except() [4/4]

template<class E, class F>
bool beast::unit_test::Suite::except ( F && f)
inherited

Definition at line 262 of file suite.h.

◆ unexcept() [1/2]

template<class F, class String>
bool beast::unit_test::Suite::unexcept ( F && f,
String const & reason )
inherited

Definition at line 467 of file suite.h.

◆ unexcept() [2/2]

template<class F>
bool beast::unit_test::Suite::unexcept ( F && f)
inherited

Definition at line 271 of file suite.h.

◆ arg()

std::string const & beast::unit_test::Suite::arg ( ) const
inherited

Return the argument associated with the runner.

Definition at line 278 of file suite.h.

◆ unexpected() [1/2]

template<class Condition, class String>
bool beast::unit_test::Suite::unexpected ( Condition shouldBeFalse,
String const & reason )
inherited

Definition at line 484 of file suite.h.

◆ unexpected() [2/2]

template<class Condition>
bool beast::unit_test::Suite::unexpected ( Condition shouldBeFalse)
inherited

Definition at line 291 of file suite.h.

◆ pThisSuite()

Suite ** beast::unit_test::Suite::pThisSuite ( )
staticprivateinherited

Definition at line 300 of file suite.h.

◆ propagateAbort()

void beast::unit_test::Suite::propagateAbort ( ) const
privateinherited

Definition at line 528 of file suite.h.

Member Data Documentation

◆ abort_

bool beast::unit_test::Suite::abort_ = false
privateinherited

Definition at line 52 of file suite.h.

◆ aborted_

bool beast::unit_test::Suite::aborted_ = false
privateinherited

Definition at line 53 of file suite.h.

◆ runner_

Runner* beast::unit_test::Suite::runner_ = nullptr
privateinherited

Definition at line 54 of file suite.h.

◆ log

LogOs<char> beast::unit_test::Suite::log
inherited

Logging output stream.

Text sent to the log output stream will be forwarded to the output stream associated with the runner.

Definition at line 146 of file suite.h.

◆ testcase

TestcaseT beast::unit_test::Suite::testcase
inherited

Memberspace for declaring test cases.

Definition at line 149 of file suite.h.