Skip to content

Commit

Permalink
progress
Browse files Browse the repository at this point in the history
  • Loading branch information
thejohnfreeman committed Oct 11, 2024
1 parent 3d043a9 commit b93e27c
Show file tree
Hide file tree
Showing 8 changed files with 60 additions and 26 deletions.
8 changes: 8 additions & 0 deletions include/xrpl/protocol/Asset.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,14 @@ class Asset
operator<(Asset const& lhs, Asset const& rhs);
};

inline Json::Value
to_json(Asset const& asset)
{
Json::Value jv;
asset.setJson(jv);
return jv;
}

template <ValidIssueType TIss>
constexpr bool
Asset::holds() const
Expand Down
66 changes: 44 additions & 22 deletions src/test/app/Vault_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,15 @@
*/
//==============================================================================

#include <test/jtx.h>
#include <test/jtx/subcases.h>
#include <test/jtx/Account.h>
#include <test/jtx/fee.h>
#include <test/jtx/mpt.h>
#include <test/jtx/vault.h>
#include <xrpl/protocol/Asset.h>
#include <xrpl/protocol/Feature.h>

namespace ripple {

struct SetArg
{
};

class Vault_test : public beast::unit_test::suite
{
TEST_CASE(CreateUpdateDelete)
Expand All @@ -35,32 +34,55 @@ class Vault_test : public beast::unit_test::suite
testcase("Create / Update / Delete");
Env env{*this};

Account issuer{"issuer"};
Account owner{"owner"};
env.fund(XRP(1000), issuer, owner);
env.close();
auto fee = test::jtx::fee(env.current()->fees().increment);

SUBCASE("IOU vault")
{
// issuer = Account()
// submit(fund(issuer))
// asset = issuer[IOU]
// owner = Account()
// tx = vault::create(owner=owner, asset=asset)
// submit(fset(issuer, asfGlobalFreeze))
// TODO: VaultSet (create) fail: Asset is IOU and
// issuer.GlobalFreeze submit(tx) => fail tx[sfData] = blob(300)
// submit(tx) => fail
// TODO: VaultSet (create) fail: Data too large (>256 bytes)
Asset asset = issuer["IOU"];
auto tx = vault::create({ .owner=owner, .asset=asset });

SUBCASE("global freeze")
{
env(fset(issuer, asfGlobalFreeze));
env.close();
// env(tx, fee, ter(tecFROZEN));
env.close();
}

SUBCASE("data too large")
{
// tx[sfData] = blob(260)
// env(tx, ter(tecFROZEN));
env.close();
}
}

SUBCASE("MPT vault")
{
// represent an issuer account
// fund the issuer account
// create issuer.MPT
// represent an asset for issuer.MPT
// create a vault with issuer.MPT asset
MPTTester mptt{env, issuer, {.fund=false}};
mptt.create();
Asset asset = mptt.issuanceID();
auto tx = vault::create({ .owner=owner, .asset=asset });

SUBCASE("metadata too large")
{
// tx[sfMPTokenMetadata] = blob(1100);
// env(tx, ter(???));
// env.close();
}

SUBCASE("create") {
// env(tx);
// env.close();
}
}

// (create) => no sfVaultID
// (update) => sfVaultID
// TODO: VaultSet (create) fail: Metadata too large (>1024 bytes)
// TODO: VaultSet (create) succeed
// TODO: VaultSet (update) succeed
// TODO: VaultSet (update) fail: wrong owner
Expand Down
1 change: 1 addition & 0 deletions src/test/jtx.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
#include <test/jtx/sendmax.h>
#include <test/jtx/seq.h>
#include <test/jtx/sig.h>
#include <test/jtx/subcases.h>
#include <test/jtx/tag.h>
#include <test/jtx/tags.h>
#include <test/jtx/ter.h>
Expand Down
2 changes: 1 addition & 1 deletion src/test/jtx/impl/vault.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ create(CreateArgs const& args)
Json::Value jv;
jv[jss::TransactionType] = jss::VaultSet;
jv[jss::Account] = args.owner.human();
// jv[jss::Asset] = args.asset;
jv[jss::Asset] = to_json(args.asset);
if (args.flags)
jv[jss::Flags] = *args.flags;
return jv;
Expand Down
1 change: 1 addition & 0 deletions src/test/jtx/mpt.h
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,7 @@ class MPTTester
bool close_;

public:
// Pass `.fund = false` if `issuer` is already funded.
MPTTester(Env& env, Account const& issuer, MPTConstr const& constr = {});

void
Expand Down
2 changes: 1 addition & 1 deletion src/test/jtx/subcases.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ execute(Supercase supercase);
} // namespace subcases

#define TEST_CASE(name) void name(subcases::Context& _09876)
#define SUBCASE(name) if (subcases::Subcase _54321{_09876, name}; _54321)
#define SUBCASE(name) if (subcases::Subcase _54321{_09876, name})
#define EXECUTE(name) subcases::execute([&](auto& ctx) { name(ctx); })

#endif
4 changes: 3 additions & 1 deletion src/test/jtx/vault.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@
#define RIPPLE_TEST_JTX_VAULT_H_INCLUDED

#include <test/jtx/Env.h>
#include <test/jtx/Account.h>
#include <xrpl/json/json_value.h>
#include <xrpl/protocol/Asset.h>

#include <optional>

Expand All @@ -33,7 +35,7 @@ namespace vault {
struct CreateArgs
{
Account owner;
// Asset asset;
Asset asset;
std::optional<std::uint32_t> flags{};
};

Expand Down
2 changes: 1 addition & 1 deletion src/xrpld/ledger/detail/View.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -876,7 +876,7 @@ createPseudoAccount(ApplyView& view, uint256 const& pseudoOwnerKey)
// account->setFieldH256(sfPseudoOwner, pseudoOwnerKey);
view.insert(account);

return std::move(account);
return account;
}

TER
Expand Down

0 comments on commit b93e27c

Please sign in to comment.