• 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 #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