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