rippled
Loading...
Searching...
No Matches
STInteger_test.cpp
1#include <xrpl/beast/unit_test.h>
2#include <xrpl/protocol/LedgerFormats.h>
3#include <xrpl/protocol/Permissions.h>
4#include <xrpl/protocol/STInteger.h>
5#include <xrpl/protocol/TxFormats.h>
6
7namespace xrpl {
8
10{
11 void
13 {
14 testcase("UInt8");
15 STUInt8 const u8(255);
16 BEAST_EXPECT(u8.value() == 255);
17 BEAST_EXPECT(u8.getText() == "255");
18 BEAST_EXPECT(u8.getSType() == STI_UINT8);
19 BEAST_EXPECT(u8.getJson(JsonOptions::none) == 255);
20
21 // there is some special handling for sfTransactionResult
22 STUInt8 const tr(sfTransactionResult, 0);
23 BEAST_EXPECT(tr.value() == 0);
24 BEAST_EXPECT(
25 tr.getText() == "The transaction was applied. Only final in a validated ledger.");
26 BEAST_EXPECT(tr.getSType() == STI_UINT8);
27 BEAST_EXPECT(tr.getJson(JsonOptions::none) == "tesSUCCESS");
28
29 // invalid transaction result
30 STUInt8 const tr2(sfTransactionResult, 255);
31 BEAST_EXPECT(tr2.value() == 255);
32 BEAST_EXPECT(tr2.getText() == "255");
33 BEAST_EXPECT(tr2.getSType() == STI_UINT8);
34 BEAST_EXPECT(tr2.getJson(JsonOptions::none) == 255);
35 }
36
37 void
39 {
40 testcase("UInt16");
41 STUInt16 const u16(65535);
42 BEAST_EXPECT(u16.value() == 65535);
43 BEAST_EXPECT(u16.getText() == "65535");
44 BEAST_EXPECT(u16.getSType() == STI_UINT16);
45 BEAST_EXPECT(u16.getJson(JsonOptions::none) == 65535);
46
47 // there is some special handling for sfLedgerEntryType
48 STUInt16 const let(sfLedgerEntryType, ltACCOUNT_ROOT);
49 BEAST_EXPECT(let.value() == ltACCOUNT_ROOT);
50 BEAST_EXPECT(let.getText() == "AccountRoot");
51 BEAST_EXPECT(let.getSType() == STI_UINT16);
52 BEAST_EXPECT(let.getJson(JsonOptions::none) == "AccountRoot");
53
54 // there is some special handling for sfTransactionType
55 STUInt16 const tlt(sfTransactionType, ttPAYMENT);
56 BEAST_EXPECT(tlt.value() == ttPAYMENT);
57 BEAST_EXPECT(tlt.getText() == "Payment");
58 BEAST_EXPECT(tlt.getSType() == STI_UINT16);
59 BEAST_EXPECT(tlt.getJson(JsonOptions::none) == "Payment");
60 }
61
62 void
64 {
65 testcase("UInt32");
66 STUInt32 const u32(4'294'967'295u);
67 BEAST_EXPECT(u32.value() == 4'294'967'295u);
68 BEAST_EXPECT(u32.getText() == "4294967295");
69 BEAST_EXPECT(u32.getSType() == STI_UINT32);
70 BEAST_EXPECT(u32.getJson(JsonOptions::none) == 4'294'967'295u);
71
72 // there is some special handling for sfPermissionValue
73 STUInt32 const pv(sfPermissionValue, ttPAYMENT + 1);
74 BEAST_EXPECT(pv.value() == ttPAYMENT + 1);
75 BEAST_EXPECT(pv.getText() == "Payment");
76 BEAST_EXPECT(pv.getSType() == STI_UINT32);
77 BEAST_EXPECT(pv.getJson(JsonOptions::none) == "Payment");
78 STUInt32 const pv2(sfPermissionValue, PaymentMint);
79 BEAST_EXPECT(pv2.value() == PaymentMint);
80 BEAST_EXPECT(pv2.getText() == "PaymentMint");
81 BEAST_EXPECT(pv2.getSType() == STI_UINT32);
82 BEAST_EXPECT(pv2.getJson(JsonOptions::none) == "PaymentMint");
83 }
84
85 void
87 {
88 testcase("UInt64");
89 STUInt64 const u64(0xFFFFFFFFFFFFFFFFull);
90 BEAST_EXPECT(u64.value() == 0xFFFFFFFFFFFFFFFFull);
91 BEAST_EXPECT(u64.getText() == "18446744073709551615");
92 BEAST_EXPECT(u64.getSType() == STI_UINT64);
93
94 // By default, getJson returns hex string
95 auto jsonVal = u64.getJson(JsonOptions::none);
96 BEAST_EXPECT(jsonVal.isString());
97 BEAST_EXPECT(jsonVal.asString() == "ffffffffffffffff");
98
99 STUInt64 const u64_2(sfMaximumAmount, 0xFFFFFFFFFFFFFFFFull);
100 BEAST_EXPECT(u64_2.value() == 0xFFFFFFFFFFFFFFFFull);
101 BEAST_EXPECT(u64_2.getText() == "18446744073709551615");
102 BEAST_EXPECT(u64_2.getSType() == STI_UINT64);
103 BEAST_EXPECT(u64_2.getJson(JsonOptions::none) == "18446744073709551615");
104 }
105
106 void
108 {
109 testcase("Int32");
110 {
111 int const minInt32 = -2147483648;
112 STInt32 const i32(minInt32);
113 BEAST_EXPECT(i32.value() == minInt32);
114 BEAST_EXPECT(i32.getText() == "-2147483648");
115 BEAST_EXPECT(i32.getSType() == STI_INT32);
116 BEAST_EXPECT(i32.getJson(JsonOptions::none) == minInt32);
117 }
118
119 {
120 int const maxInt32 = 2147483647;
121 STInt32 const i32(maxInt32);
122 BEAST_EXPECT(i32.value() == maxInt32);
123 BEAST_EXPECT(i32.getText() == "2147483647");
124 BEAST_EXPECT(i32.getSType() == STI_INT32);
125 BEAST_EXPECT(i32.getJson(JsonOptions::none) == maxInt32);
126 }
127 }
128
129 void
130 run() override
131 {
132 testUInt8();
133 testUInt16();
134 testUInt32();
135 testUInt64();
136 testInt32();
137 }
138};
139
140BEAST_DEFINE_TESTSUITE(STInteger, protocol, xrpl);
141
142} // namespace xrpl
A testsuite class.
Definition suite.h:51
testcase_t testcase
Memberspace for declaring test cases.
Definition suite.h:150
value_type value() const noexcept
Definition STInteger.h:124
std::string getText() const override
Definition STInteger.cpp:37
SerializedTypeID getSType() const override
Definition STInteger.cpp:30
Json::Value getJson(JsonOptions) const override
Definition STInteger.cpp:56
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
void run() override
Runs the suite.