• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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