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 ripple {
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>(
138 "rwfSjJNK2YQuN64bSWn7T2eY9FJAyAPYJT");
139 dummy.setAccountID(f, id);
140 BEAST_EXPECT(dummy.getAccountID(f) == id);
141 BEAST_EXPECT(dummy.isFieldPresent(f));
142 break;
143 }
144
145 case STI_OBJECT: {
146 dummy.emplace_back(STObject{f});
147 BEAST_EXPECT(dummy.getField(f).getFName() == f);
148 BEAST_EXPECT(dummy.isFieldPresent(f));
149 break;
150 }
151
152 case STI_ARRAY: {
153 STArray dummy2{f, 2};
154 dummy2.push_back(STObject{sfGeneric});
155 dummy2.push_back(STObject{sfGeneric});
156 dummy.setFieldArray(f, dummy2);
157 BEAST_EXPECT(dummy.getFieldArray(f) == dummy2);
158 BEAST_EXPECT(dummy.isFieldPresent(f));
159 break;
160 }
161
162 default:
163 BEAST_EXPECT(false);
164 }
165 }
166 }
167
168public:
169 void
170 run() override
171 {
172 using namespace test::jtx;
174 }
175};
176
177BEAST_DEFINE_TESTSUITE(Hooks, protocol, ripple);
178
179} // namespace ripple
A testsuite class.
Definition suite.h:52
testcase_t testcase
Memberspace for declaring test cases.
Definition suite.h:152
void testHookFields()
This unit test was requested here: https://github.com/ripple/rippled/pull/4089#issuecomment-105027453...
void run() override
Runs the suite.
Identifies fields.
Definition SField.h:127
SerializedTypeID const fieldType
Definition SField.h:147
static base_uint fromVoid(void const *data)
Definition base_uint.h:300
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
SField const sfGeneric