xrpld
Loading...
Searching...
No Matches
tests/libxrpl/protocol/STXChainBridge.cpp
1#include <xrpl/protocol/STXChainBridge.h>
2
3#include <xrpl/protocol/AccountID.h>
4#include <xrpl/protocol/Issue.h>
5#include <xrpl/protocol/UintTypes.h>
6
7#include <gtest/gtest.h>
8
9#include <string>
10#include <string_view>
11
12using namespace xrpl;
13
14namespace {
15
16// Built from raw bytes rather than base58 so the test does not depend on
17// hand-computed checksums.
20{
21 AccountID id;
22 EXPECT_TRUE(id.parseHex(hex));
23 return id;
24}
25
26} // namespace
27
28// getText() builds its string from eight substitutions of the same type, so a
29// transposed pair would still compile and still type check. Pin the output so
30// the field/value pairing is actually verified.
31TEST(STXChainBridge, getTextPairsEachFieldWithItsValue)
32{
33 auto const lockingDoor = account("0102030405060708090A0B0C0D0E0F1011121314");
34 auto const issuingDoor = account("14131211100F0E0D0C0B0A090807060504030201");
35
36 auto const lockingIssue = xrpIssue();
37 Issue const issuingIssue{toCurrency("USD"), issuingDoor};
38
39 STXChainBridge const bridge{lockingDoor, lockingIssue, issuingDoor, issuingIssue};
40
41 std::string const expected = "{ LockingChainDoor = " + toBase58(lockingDoor) +
42 ", LockingChainIssue = " + lockingIssue.getText() +
43 ", IssuingChainDoor = " + toBase58(issuingDoor) +
44 ", IssuingChainIssue = " + issuingIssue.getText() + " }";
45
46 EXPECT_EQ(bridge.getText(), expected);
47}
48
49TEST(STXChainBridge, getTextOnADefaultBridge)
50{
52 auto const text = bridge.getText();
53
54 // The outer braces are literal, and the four field names appear in
55 // declaration order regardless of the values.
56 EXPECT_TRUE(text.starts_with("{ LockingChainDoor = "));
57 EXPECT_TRUE(text.ends_with(" }"));
58 EXPECT_LT(text.find("LockingChainIssue"), text.find("IssuingChainDoor"));
59 EXPECT_LT(text.find("IssuingChainDoor"), text.find("IssuingChainIssue"));
60}
A currency issued by an account.
Definition Issue.h:18
std::string getText() const
Definition Issue.cpp:17
Keylet bridge(STXChainBridge const &bridge, STXChainBridge::ChainType chainType)
Definition Indexes.cpp:487
Keylet account(AccountID const &id) noexcept
AccountID root.
Definition Indexes.cpp:198
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
Issue const & xrpIssue()
Returns an asset specifier that represents XRP.
Definition Issue.h:108
TEST(FileUtilitiesTest, get_file_contents)
std::string toBase58(AccountID const &v)
Convert AccountID to base58 checked string.
Definition AccountID.cpp:95
bool toCurrency(Currency &, std::string const &)
Tries to convert a string to a Currency, returns true on success.
Definition UintTypes.cpp:65
BaseUInt< 160, detail::AccountIDTag > AccountID
A 160-bit unsigned that uniquely identifies an account.
Definition AccountID.h:34