xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
tests
libxrpl
protocol
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
12
using namespace
xrpl
;
13
14
namespace
{
15
16
// Built from raw bytes rather than base58 so the test does not depend on
17
// hand-computed checksums.
18
AccountID
19
account
(
std::string_view
hex)
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.
31
TEST
(
STXChainBridge
, get_text_pairs_each_field_with_its_value)
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
49
TEST
(
STXChainBridge
, get_text_on_a_default_bridge)
50
{
51
STXChainBridge
const
bridge
;
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
}
std::string
std::string_view
xrpl::Issue
A currency issued by an account.
Definition
Issue.h:18
xrpl::Issue::getText
std::string getText() const
Definition
Issue.cpp:17
xrpl::STXChainBridge
Definition
STXChainBridge.h:24
xrpl::keylet::bridge
Keylet bridge(STXChainBridge const &bridge, STXChainBridge::ChainType chainType)
Definition
Indexes.cpp:517
xrpl::keylet::account
Keylet account(AccountID const &id) noexcept
AccountID root.
Definition
Indexes.cpp:220
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::xrpIssue
Issue const & xrpIssue()
Returns an asset specifier that represents XRP.
Definition
Issue.h:108
xrpl::TEST
TEST(FileUtilitiesTest, get_file_contents)
Definition
tests/libxrpl/basics/FileUtilities.cpp:60
xrpl::toBase58
std::string toBase58(AccountID const &v)
Convert AccountID to base58 checked string.
Definition
AccountID.cpp:95
xrpl::toCurrency
bool toCurrency(Currency &, std::string const &)
Tries to convert a string to a Currency, returns true on success.
Definition
UintTypes.cpp:65
xrpl::AccountID
BaseUInt< 160, detail::AccountIDTag > AccountID
A 160-bit unsigned that uniquely identifies an account.
Definition
AccountID.h:34
string
string_view
Generated by
1.17.0