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