rippled
Loading...
Searching...
No Matches
Hooks_test.cpp
1#include <test/jtx.h>
2
3#include <xrpl/protocol/Feature.h>
4
5#include <functional>
6#include <vector>
7
8namespace xrpl {
9
11{
19 void
21 {
22 testcase("Test Hooks fields");
23
24 using namespace test::jtx;
25
27 sfHookResult,
28 sfHookStateChangeCount,
29 sfHookEmitCount,
30 sfHookExecutionIndex,
31 sfHookApiVersion,
32 sfHookStateCount,
33 sfEmitGeneration,
34 sfHookOn,
35 sfHookInstructionCount,
36 sfEmitBurden,
37 sfHookReturnCode,
38 sfReferenceCount,
39 sfEmitParentTxnID,
40 sfEmitNonce,
41 sfEmitHookHash,
42 sfHookStateKey,
43 sfHookHash,
44 sfHookNamespace,
45 sfHookSetTxnID,
46 sfHookStateData,
47 sfHookReturnString,
48 sfHookParameterName,
49 sfHookParameterValue,
50 sfEmitCallback,
51 sfHookAccount,
52 sfEmittedTxn,
53 sfHook,
54 sfHookDefinition,
55 sfHookParameter,
56 sfHookGrant,
57 sfEmitDetails,
58 sfHookExecutions,
59 sfHookExecution,
60 sfHookParameters,
61 sfHooks,
62 sfHookGrants};
63
64 for (auto const& rf : fields_to_test)
65 {
66 SField const& f = rf.get();
67
68 STObject dummy{sfGeneric};
69
70 BEAST_EXPECT(!dummy.isFieldPresent(f));
71
72 switch (f.fieldType)
73 {
74 case STI_UINT8: {
75 dummy.setFieldU8(f, 0);
76 BEAST_EXPECT(dummy.getFieldU8(f) == 0);
77
78 dummy.setFieldU8(f, 255);
79 BEAST_EXPECT(dummy.getFieldU8(f) == 255);
80
81 BEAST_EXPECT(dummy.isFieldPresent(f));
82 break;
83 }
84
85 case STI_UINT16: {
86 dummy.setFieldU16(f, 0);
87 BEAST_EXPECT(dummy.getFieldU16(f) == 0);
88
89 dummy.setFieldU16(f, 0xFFFFU);
90 BEAST_EXPECT(dummy.getFieldU16(f) == 0xFFFFU);
91
92 BEAST_EXPECT(dummy.isFieldPresent(f));
93 break;
94 }
95
96 case STI_UINT32: {
97 dummy.setFieldU32(f, 0);
98 BEAST_EXPECT(dummy.getFieldU32(f) == 0);
99
100 dummy.setFieldU32(f, 0xFFFFFFFFU);
101 BEAST_EXPECT(dummy.getFieldU32(f) == 0xFFFFFFFFU);
102
103 BEAST_EXPECT(dummy.isFieldPresent(f));
104 break;
105 }
106
107 case STI_UINT64: {
108 dummy.setFieldU64(f, 0);
109 BEAST_EXPECT(dummy.getFieldU64(f) == 0);
110
111 dummy.setFieldU64(f, 0xFFFFFFFFFFFFFFFFU);
112 BEAST_EXPECT(dummy.getFieldU64(f) == 0xFFFFFFFFFFFFFFFFU);
113
114 BEAST_EXPECT(dummy.isFieldPresent(f));
115 break;
116 }
117
118 case STI_UINT256: {
120 "DEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBE"
121 "EFDEADBEEF");
122 dummy.setFieldH256(f, u);
123 BEAST_EXPECT(dummy.getFieldH256(f) == u);
124 BEAST_EXPECT(dummy.isFieldPresent(f));
125 break;
126 }
127
128 case STI_VL: {
129 std::vector<uint8_t> v{1, 2, 3};
130 dummy.setFieldVL(f, v);
131 BEAST_EXPECT(dummy.getFieldVL(f) == v);
132 BEAST_EXPECT(dummy.isFieldPresent(f));
133 break;
134 }
135
136 case STI_ACCOUNT: {
137 AccountID id = *parseBase58<AccountID>("rwfSjJNK2YQuN64bSWn7T2eY9FJAyAPYJT");
138 dummy.setAccountID(f, id);
139 BEAST_EXPECT(dummy.getAccountID(f) == id);
140 BEAST_EXPECT(dummy.isFieldPresent(f));
141 break;
142 }
143
144 case STI_OBJECT: {
145 dummy.emplace_back(STObject{f});
146 BEAST_EXPECT(dummy.getField(f).getFName() == f);
147 BEAST_EXPECT(dummy.isFieldPresent(f));
148 break;
149 }
150
151 case STI_ARRAY: {
152 STArray dummy2{f, 2};
153 dummy2.push_back(STObject{sfGeneric});
154 dummy2.push_back(STObject{sfGeneric});
155 dummy.setFieldArray(f, dummy2);
156 BEAST_EXPECT(dummy.getFieldArray(f) == dummy2);
157 BEAST_EXPECT(dummy.isFieldPresent(f));
158 break;
159 }
160
161 default:
162 BEAST_EXPECT(false);
163 }
164 }
165 }
166
167public:
168 void
169 run() override
170 {
171 using namespace test::jtx;
173 }
174};
175
176BEAST_DEFINE_TESTSUITE(Hooks, protocol, xrpl);
177
178} // namespace xrpl
A testsuite class.
Definition suite.h:52
testcase_t testcase
Memberspace for declaring test cases.
Definition suite.h:148
void run() override
Runs the suite.
void testHookFields()
This unit test was requested here: https://github.com/ripple/rippled/pull/4089#issuecomment-105027453...
Identifies fields.
Definition SField.h:127
SerializedTypeID const fieldType
Definition SField.h:149
static base_uint fromVoid(void const *data)
Definition base_uint.h:292
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
SField const sfGeneric