1 /**
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #ifndef ABCKIT_MODIFY_IMPL_MOCK
17 #define ABCKIT_MODIFY_IMPL_MOCK
18
19 /**
20 * Copyright (c) 2024 Huawei Device Co., Ltd.
21 * Licensed under the Apache License, Version 2.0 (the "License");
22 * you may not use this file except in compliance with the License.
23 * You may obtain a copy of the License at
24 *
25 * http://www.apache.org/licenses/LICENSE-2.0
26 *
27 * Unless required by applicable law or agreed to in writing, software
28 * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
29 * either express or implied. See the License for the specific language governing permissions and limitations under the
30 * License.
31 */
32
33 #include "../../src/mock/abckit_mock.h"
34 #include "../../src/mock/mock_values.h"
35
36 #include "../../include/c/metadata_core.h"
37
38 #include <gtest/gtest.h>
39
40 namespace libabckit::mock::metadata_modify {
41
42 // NOLINTBEGIN(readability-identifier-naming)
43
44 // ========================================
45 // File
46 // ========================================
47
48 // ========================================
49 // Module
50 // ========================================
51
52 // ========================================
53 // Class
54 // ========================================
55
56 // ========================================
57 // AnnotationInterface
58 // ========================================
59
60 // ========================================
61 // Function
62 // ========================================
63
FunctionSetGraph(AbckitCoreFunction * function,AbckitGraph * graph)64 void FunctionSetGraph(AbckitCoreFunction *function, AbckitGraph *graph)
65 {
66 g_calledFuncs.push(__func__);
67 EXPECT_TRUE(function == DEFAULT_CORE_FUNCTION);
68 EXPECT_TRUE(graph == DEFAULT_GRAPH);
69 }
70
71 // ========================================
72 // Annotation
73 // ========================================
74
75 // ========================================
76 // Type
77 // ========================================
78
CreateType(AbckitFile * file,AbckitTypeId id)79 AbckitType *CreateType(AbckitFile *file, AbckitTypeId id)
80 {
81 g_calledFuncs.push(__func__);
82 EXPECT_TRUE(file == DEFAULT_FILE);
83 EXPECT_TRUE(id == DEFAULT_TYPE_ID);
84 return DEFAULT_TYPE;
85 }
86
CreateReferenceType(AbckitFile * file,AbckitCoreClass * klass)87 AbckitType *CreateReferenceType(AbckitFile *file, AbckitCoreClass *klass)
88 {
89 g_calledFuncs.push(__func__);
90 EXPECT_TRUE(file == DEFAULT_FILE);
91 EXPECT_TRUE(klass == DEFAULT_CORE_CLASS);
92 return DEFAULT_TYPE;
93 }
94
95 // ========================================
96 // Value
97 // ========================================
98
CreateValueU1(AbckitFile * file,bool value)99 AbckitValue *CreateValueU1(AbckitFile *file, bool value)
100 {
101 g_calledFuncs.push(__func__);
102 EXPECT_TRUE(file == DEFAULT_FILE);
103 EXPECT_TRUE(value == DEFAULT_BOOL);
104 return DEFAULT_VALUE;
105 }
106
CreateValueDouble(AbckitFile * file,double value)107 AbckitValue *CreateValueDouble(AbckitFile *file, double value)
108 {
109 g_calledFuncs.push(__func__);
110 EXPECT_TRUE(file == DEFAULT_FILE);
111 EXPECT_TRUE(value == DEFAULT_DOUBLE);
112 return DEFAULT_VALUE;
113 }
114
CreateValueString(AbckitFile * file,const char * value,size_t len)115 AbckitValue *CreateValueString(AbckitFile *file, const char *value, size_t len)
116 {
117 g_calledFuncs.push(__func__);
118 EXPECT_TRUE(file == DEFAULT_FILE);
119 EXPECT_TRUE(strncmp(value, DEFAULT_CONST_CHAR, DEFAULT_CONST_CHAR_SIZE) == 0);
120 EXPECT_TRUE(len + 1 == DEFAULT_CONST_CHAR_SIZE);
121 return DEFAULT_VALUE;
122 }
123
CreateLiteralArrayValue(AbckitFile * file,AbckitValue ** value,size_t size)124 AbckitValue *CreateLiteralArrayValue(AbckitFile *file, [[maybe_unused]] AbckitValue **value, size_t size)
125 {
126 g_calledFuncs.push(__func__);
127 EXPECT_TRUE(file == DEFAULT_FILE);
128 EXPECT_TRUE(size == 1);
129 return DEFAULT_VALUE;
130 }
131
132 // ========================================
133 // String
134 // ========================================
135
CreateString(AbckitFile * file,const char * value,size_t len)136 AbckitString *CreateString(AbckitFile *file, const char *value, size_t len)
137 {
138 g_calledFuncs.push(__func__);
139 EXPECT_TRUE(file == DEFAULT_FILE);
140 EXPECT_TRUE(strncmp(value, DEFAULT_CONST_CHAR, DEFAULT_CONST_CHAR_SIZE) == 0);
141 EXPECT_TRUE(len + 1 == DEFAULT_CONST_CHAR_SIZE);
142 return DEFAULT_STRING;
143 }
144
145 // ========================================
146 // LiteralArray
147 // ========================================
148
CreateLiteralArray(AbckitFile * file,AbckitLiteral ** value,size_t size)149 AbckitLiteralArray *CreateLiteralArray(AbckitFile *file, AbckitLiteral **value, size_t size)
150 {
151 g_calledFuncs.push(__func__);
152 EXPECT_TRUE(file == DEFAULT_FILE);
153 EXPECT_TRUE(*value == DEFAULT_LITERAL);
154 EXPECT_TRUE(size == 1U);
155 return DEFAULT_LITERAL_ARRAY;
156 }
157
CreateLiteralBool(AbckitFile * file,bool value)158 AbckitLiteral *CreateLiteralBool(AbckitFile *file, bool value)
159 {
160 g_calledFuncs.push(__func__);
161 EXPECT_TRUE(file == DEFAULT_FILE);
162 EXPECT_TRUE(value == DEFAULT_BOOL);
163 return DEFAULT_LITERAL;
164 }
165
CreateLiteralU8(AbckitFile * file,uint8_t value)166 AbckitLiteral *CreateLiteralU8(AbckitFile *file, uint8_t value)
167 {
168 g_calledFuncs.push(__func__);
169 EXPECT_TRUE(file == DEFAULT_FILE);
170 EXPECT_TRUE(value == DEFAULT_U8);
171 return DEFAULT_LITERAL;
172 }
173
CreateLiteralU16(AbckitFile * file,uint16_t value)174 AbckitLiteral *CreateLiteralU16(AbckitFile *file, uint16_t value)
175 {
176 g_calledFuncs.push(__func__);
177 EXPECT_TRUE(file == DEFAULT_FILE);
178 EXPECT_TRUE(value == DEFAULT_U16);
179 return DEFAULT_LITERAL;
180 }
181
CreateLiteralMethodAffiliate(AbckitFile * file,uint16_t value)182 AbckitLiteral *CreateLiteralMethodAffiliate(AbckitFile *file, uint16_t value)
183 {
184 g_calledFuncs.push(__func__);
185 EXPECT_TRUE(file == DEFAULT_FILE);
186 EXPECT_TRUE(value == DEFAULT_U16);
187 return DEFAULT_LITERAL;
188 }
CreateLiteralU32(AbckitFile * file,uint32_t value)189 AbckitLiteral *CreateLiteralU32(AbckitFile *file, uint32_t value)
190 {
191 g_calledFuncs.push(__func__);
192 EXPECT_TRUE(file == DEFAULT_FILE);
193 EXPECT_TRUE(value == DEFAULT_U32);
194 return DEFAULT_LITERAL;
195 }
196
CreateLiteralU64(AbckitFile * file,uint64_t value)197 AbckitLiteral *CreateLiteralU64(AbckitFile *file, uint64_t value)
198 {
199 g_calledFuncs.push(__func__);
200 EXPECT_TRUE(file == DEFAULT_FILE);
201 EXPECT_TRUE(value == DEFAULT_U64);
202 return DEFAULT_LITERAL;
203 }
204
CreateLiteralFloat(AbckitFile * file,float value)205 AbckitLiteral *CreateLiteralFloat(AbckitFile *file, float value)
206 {
207 g_calledFuncs.push(__func__);
208 EXPECT_TRUE(file == DEFAULT_FILE);
209 EXPECT_TRUE(value == DEFAULT_FLOAT);
210 return DEFAULT_LITERAL;
211 }
212
CreateLiteralDouble(AbckitFile * file,double value)213 AbckitLiteral *CreateLiteralDouble(AbckitFile *file, double value)
214 {
215 g_calledFuncs.push(__func__);
216 EXPECT_TRUE(file == DEFAULT_FILE);
217 EXPECT_TRUE(value == DEFAULT_DOUBLE);
218 return DEFAULT_LITERAL;
219 }
220
CreateLiteralLiteralArray(AbckitFile * file,AbckitLiteralArray * litarr)221 AbckitLiteral *CreateLiteralLiteralArray(AbckitFile *file, AbckitLiteralArray *litarr)
222 {
223 g_calledFuncs.push(__func__);
224 EXPECT_TRUE(file == DEFAULT_FILE);
225 EXPECT_TRUE(litarr == DEFAULT_LITERAL_ARRAY);
226 return DEFAULT_LITERAL;
227 }
228
CreateLiteralString(AbckitFile * file,const char * value,size_t len)229 AbckitLiteral *CreateLiteralString(AbckitFile *file, const char *value, size_t len)
230 {
231 g_calledFuncs.push(__func__);
232 EXPECT_TRUE(file == DEFAULT_FILE);
233 EXPECT_TRUE(strncmp(value, DEFAULT_CONST_CHAR, DEFAULT_CONST_CHAR_SIZE) == 0);
234 EXPECT_TRUE(len + 1 == DEFAULT_CONST_CHAR_SIZE);
235 return DEFAULT_LITERAL;
236 }
237
CreateLiteralMethod(AbckitFile * file,AbckitCoreFunction * function)238 AbckitLiteral *CreateLiteralMethod(AbckitFile *file, AbckitCoreFunction *function)
239 {
240 g_calledFuncs.push(__func__);
241 EXPECT_TRUE(file == DEFAULT_FILE);
242 EXPECT_TRUE(function == DEFAULT_CORE_FUNCTION);
243 return DEFAULT_LITERAL;
244 }
245
246 // NOLINTEND(readability-identifier-naming)
247
248 static AbckitModifyApi g_modifyApiImpl = {
249
250 // ========================================
251 // File
252 // ========================================
253
254 // ========================================
255 // Module
256 // ========================================
257
258 // ========================================
259 // Class
260 // ========================================
261
262 // ========================================
263 // AnnotationInterface
264 // ========================================
265
266 // ========================================
267 // Function
268 // ========================================
269
270 FunctionSetGraph,
271
272 // ========================================
273 // Annotation
274 // ========================================
275
276 // ========================================
277 // Type
278 // ========================================
279
280 CreateType,
281 CreateReferenceType,
282
283 // ========================================
284 // Value
285 // ========================================
286
287 CreateValueU1,
288 CreateValueDouble,
289 CreateValueString,
290 CreateLiteralArrayValue,
291
292 // ========================================
293 // String
294 // ========================================
295
296 CreateString,
297
298 // ========================================
299 // LiteralArray
300 // ========================================
301
302 CreateLiteralArray,
303
304 // ========================================
305 // LiteralArray
306 // ========================================
307
308 CreateLiteralBool,
309 CreateLiteralU8,
310 CreateLiteralU16,
311 CreateLiteralMethodAffiliate,
312 CreateLiteralU32,
313 CreateLiteralU64,
314 CreateLiteralFloat,
315 CreateLiteralDouble,
316 CreateLiteralLiteralArray,
317 CreateLiteralString,
318 CreateLiteralMethod,
319 };
320
321 } // namespace libabckit::mock::metadata_modify
322
AbckitGetMockModifyApiImpl(AbckitApiVersion version)323 AbckitModifyApi const *AbckitGetMockModifyApiImpl([[maybe_unused]] AbckitApiVersion version)
324 {
325 return &libabckit::mock::metadata_modify::g_modifyApiImpl;
326 }
327
328 #endif // ABCKIT_MODIFY_IMPL_MOCK
329