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 #include "../../src/mock/abckit_mock.h"
17 #include "../../src/mock/mock_values.h"
18
19 #include "../include/c/extensions/js/metadata_js.h"
20 #include "../../include/c/metadata_core.h"
21
22 #include <cstring>
23 #include <gtest/gtest.h>
24
25 // CC-OFFNXT(G.PRE.02) code readability
26 // NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
27 #define LIBABCKIT_CHECK_JS_TARGET(m) \
28 if ((m)->target != ABCKIT_TARGET_JS) { \
29 libabckit::statuses::SetLastError(ABCKIT_STATUS_WRONG_TARGET); \
30 /* CC-OFFNXT(G.PRE.05) code generation */ \
31 return nullptr; \
32 }
33
34 namespace libabckit::mock {
35
36 // ========================================
37 // File
38 // ========================================
39
40 // ========================================
41 // Module
42 // ========================================
43
JsModuleToCoreModule(AbckitJsModule * m)44 inline AbckitCoreModule *JsModuleToCoreModule(AbckitJsModule *m)
45 {
46 g_calledFuncs.push(__func__);
47
48 EXPECT_TRUE(m == DEFAULT_JS_MODULE);
49 return DEFAULT_CORE_MODULE;
50 }
51
CoreModuleToJsModule(AbckitCoreModule * m)52 inline AbckitJsModule *CoreModuleToJsModule(AbckitCoreModule *m)
53 {
54 g_calledFuncs.push(__func__);
55
56 EXPECT_TRUE(m == DEFAULT_CORE_MODULE);
57 return DEFAULT_JS_MODULE;
58 }
59
60 // ========================================
61 // ImportDescriptor
62 // ========================================
63
JsImportDescriptorToCoreImportDescriptor(AbckitJsImportDescriptor * id)64 inline AbckitCoreImportDescriptor *JsImportDescriptorToCoreImportDescriptor(AbckitJsImportDescriptor *id)
65 {
66 g_calledFuncs.push(__func__);
67
68 EXPECT_TRUE(id == DEFAULT_JS_IMPORT_DESCRIPTOR);
69 return DEFAULT_CORE_IMPORT_DESCRIPTOR;
70 }
71
CoreImportDescriptorToJsImportDescriptor(AbckitCoreImportDescriptor * id)72 inline AbckitJsImportDescriptor *CoreImportDescriptorToJsImportDescriptor(AbckitCoreImportDescriptor *id)
73 {
74 g_calledFuncs.push(__func__);
75
76 EXPECT_TRUE(id == DEFAULT_CORE_IMPORT_DESCRIPTOR);
77 return DEFAULT_JS_IMPORT_DESCRIPTOR;
78 }
79
80 // ========================================
81 // ExportDescriptor
82 // ========================================
83
JsExportDescriptorToCoreExportDescriptor(AbckitJsExportDescriptor * ed)84 inline AbckitCoreExportDescriptor *JsExportDescriptorToCoreExportDescriptor(AbckitJsExportDescriptor *ed)
85 {
86 g_calledFuncs.push(__func__);
87
88 EXPECT_TRUE(ed == DEFAULT_JS_EXPORT_DESCRIPTOR);
89 return DEFAULT_CORE_EXPORT_DESCRIPTOR;
90 }
91
CoreExportDescriptorToJsExportDescriptor(AbckitCoreExportDescriptor * ed)92 inline AbckitJsExportDescriptor *CoreExportDescriptorToJsExportDescriptor(AbckitCoreExportDescriptor *ed)
93 {
94 g_calledFuncs.push(__func__);
95
96 EXPECT_TRUE(ed == DEFAULT_CORE_EXPORT_DESCRIPTOR);
97 return DEFAULT_JS_EXPORT_DESCRIPTOR;
98 }
99
100 // ========================================
101 // Class
102 // ========================================
103
JsClassToCoreClass(AbckitJsClass * c)104 inline AbckitCoreClass *JsClassToCoreClass(AbckitJsClass *c)
105 {
106 g_calledFuncs.push(__func__);
107
108 EXPECT_TRUE(c == DEFAULT_JS_CLASS);
109 return DEFAULT_CORE_CLASS;
110 }
111
CoreClassToJsClass(AbckitCoreClass * c)112 inline AbckitJsClass *CoreClassToJsClass(AbckitCoreClass *c)
113 {
114 g_calledFuncs.push(__func__);
115
116 EXPECT_TRUE(c == DEFAULT_CORE_CLASS);
117 return DEFAULT_JS_CLASS;
118 }
119
120 // ========================================
121 // AnnotationInterface
122 // ========================================
123
124 // ========================================
125 // AnnotationInterfaceField
126 // ========================================
127
128 // ========================================
129 // Function
130 // ========================================
131
JsFunctionToCoreFunction(AbckitJsFunction * m)132 inline AbckitCoreFunction *JsFunctionToCoreFunction(AbckitJsFunction *m)
133 {
134 g_calledFuncs.push(__func__);
135
136 EXPECT_TRUE(m == DEFAULT_JS_FUNCTION);
137 return DEFAULT_CORE_FUNCTION;
138 }
139
CoreFunctionToJsFunction(AbckitCoreFunction * m)140 inline AbckitJsFunction *CoreFunctionToJsFunction(AbckitCoreFunction *m)
141 {
142 g_calledFuncs.push(__func__);
143
144 EXPECT_TRUE(m == DEFAULT_CORE_FUNCTION);
145 return DEFAULT_JS_FUNCTION;
146 }
147
148 // ========================================
149 // Annotation
150 // ========================================
151
152 // ========================================
153 // AnnotationElement
154 // ========================================
155
156 // ========================================
157 // Type
158 // ========================================
159
160 // ========================================
161 // Value
162 // ========================================
163
164 // ========================================
165 // String
166 // ========================================
167
168 // ========================================
169 // LiteralArray
170 // ========================================
171
172 // ========================================
173 // Literal
174 // ========================================
175
176 AbckitJsInspectApi g_jsInspectApiImpl = {
177 // ========================================
178 // File
179 // ========================================
180
181 // ========================================
182 // Module
183 // ========================================
184
185 JsModuleToCoreModule, CoreModuleToJsModule,
186
187 // ========================================
188 // ImportDescriptor
189 // ========================================
190
191 JsImportDescriptorToCoreImportDescriptor, CoreImportDescriptorToJsImportDescriptor,
192
193 // ========================================
194 // ExportDescriptor
195 // ========================================
196
197 JsExportDescriptorToCoreExportDescriptor, CoreExportDescriptorToJsExportDescriptor,
198
199 // ========================================
200 // Class
201 // ========================================
202
203 JsClassToCoreClass, CoreClassToJsClass,
204
205 // ========================================
206 // AnnotationInterface
207 // ========================================
208
209 // ========================================
210 // AnnotationInterfaceField
211 // ========================================
212
213 // ========================================
214 // Function
215 // ========================================
216
217 JsFunctionToCoreFunction, CoreFunctionToJsFunction,
218
219 // ========================================
220 // Annotation
221 // ========================================
222
223 // ========================================
224 // Type
225 // ========================================
226
227 // ========================================
228 // Value
229 // ========================================
230
231 // ========================================
232 // String
233 // ========================================
234
235 // ========================================
236 // LiteralArray
237 // ========================================
238
239 // ========================================
240 // Literal
241 // ========================================
242 };
243
244 } // namespace libabckit::mock
245
AbckitGetMockJsInspectApiImpl(AbckitApiVersion version)246 AbckitJsInspectApi const *AbckitGetMockJsInspectApiImpl([[maybe_unused]] AbckitApiVersion version)
247 {
248 return &libabckit::mock::g_jsInspectApiImpl;
249 }
250