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 "include/cpp/abckit_cpp.h"
17 #include "include/cpp/headers/core/annotation_interface.h"
18 #include "include/cpp/headers/core/export_descriptor.h"
19 #include "include/cpp/headers/core/function.h"
20 #include "include/cpp/headers/core/import_descriptor.h"
21 #include "include/cpp/headers/core/namespace.h"
22 #include "tests/mock/check_mock.h"
23 #include "src/mock/mock_values.h"
24 #include "tests/mock/cpp_helpers_mock.h"
25 #include <gtest/gtest.h>
26
27 namespace libabckit::cpp_test {
28
29 class LibAbcKitCppMockCoreTestModule : public ::testing::Test {};
30
31 // Test: test-kind=mock, api=Module::GetFile, abc-kind=ArkTS1, category=internal, extension=cpp
TEST_F(LibAbcKitCppMockCoreTestModule,Module_GetFile)32 TEST_F(LibAbcKitCppMockCoreTestModule, Module_GetFile)
33 {
34 ASSERT_TRUE(CheckMockedStackEmpty());
35 {
36 abckit::File f(DEFAULT_PATH);
37 ASSERT_TRUE(CheckMockedApi("OpenAbc"));
38 abckit::mock::helpers::GetMockCoreModule(f).GetFile();
39 }
40 ASSERT_TRUE(CheckMockedApi("CloseFile"));
41 ASSERT_TRUE(CheckMockedStackEmpty());
42 }
43
44 // Test: test-kind=mock, api=Module::GetTarget, abc-kind=ArkTS1, category=internal, extension=cpp
TEST_F(LibAbcKitCppMockCoreTestModule,Module_GetTarget)45 TEST_F(LibAbcKitCppMockCoreTestModule, Module_GetTarget)
46 {
47 ASSERT_TRUE(CheckMockedStackEmpty());
48 {
49 abckit::File f(DEFAULT_PATH);
50 ASSERT_TRUE(CheckMockedApi("OpenAbc"));
51 abckit::mock::helpers::GetMockCoreModule(f).GetTarget();
52 ASSERT_TRUE(CheckMockedApi("ModuleGetTarget"));
53 }
54 ASSERT_TRUE(CheckMockedApi("CloseFile"));
55 ASSERT_TRUE(CheckMockedStackEmpty());
56 }
57
58 // Test: test-kind=mock, api=Module::GetName, abc-kind=ArkTS1, category=internal, extension=cpp
TEST_F(LibAbcKitCppMockCoreTestModule,Module_GetName)59 TEST_F(LibAbcKitCppMockCoreTestModule, Module_GetName)
60 {
61 ASSERT_TRUE(CheckMockedStackEmpty());
62 {
63 abckit::File f(DEFAULT_PATH);
64 ASSERT_TRUE(CheckMockedApi("OpenAbc"));
65 abckit::mock::helpers::GetMockCoreModule(f).GetName();
66 ASSERT_TRUE(CheckMockedApi("AbckitStringToString"));
67 ASSERT_TRUE(CheckMockedApi("ModuleGetName"));
68 }
69 ASSERT_TRUE(CheckMockedApi("CloseFile"));
70 ASSERT_TRUE(CheckMockedStackEmpty());
71 }
72
73 // Test: test-kind=mock, api=Module::IsExternal, abc-kind=ArkTS1, category=internal, extension=cpp
TEST_F(LibAbcKitCppMockCoreTestModule,Module_IsExternal)74 TEST_F(LibAbcKitCppMockCoreTestModule, Module_IsExternal)
75 {
76 ASSERT_TRUE(CheckMockedStackEmpty());
77 {
78 abckit::File f(DEFAULT_PATH);
79 ASSERT_TRUE(CheckMockedApi("OpenAbc"));
80 abckit::mock::helpers::GetMockCoreModule(f).IsExternal();
81 ASSERT_TRUE(CheckMockedApi("ModuleIsExternal"));
82 }
83 ASSERT_TRUE(CheckMockedApi("CloseFile"));
84 ASSERT_TRUE(CheckMockedStackEmpty());
85 }
86
87 // Test: test-kind=mock, api=Module::GetClasses, abc-kind=ArkTS1, category=internal, extension=cpp
TEST_F(LibAbcKitCppMockCoreTestModule,Module_GetClasses)88 TEST_F(LibAbcKitCppMockCoreTestModule, Module_GetClasses)
89 {
90 ASSERT_TRUE(CheckMockedStackEmpty());
91 {
92 abckit::File f(DEFAULT_PATH);
93 ASSERT_TRUE(CheckMockedApi("OpenAbc"));
94 abckit::mock::helpers::GetMockCoreModule(f).GetClasses();
95 ASSERT_TRUE(CheckMockedApi("ModuleEnumerateClasses"));
96 }
97 ASSERT_TRUE(CheckMockedApi("CloseFile"));
98 ASSERT_TRUE(CheckMockedStackEmpty());
99 }
100
101 // Test: test-kind=mock, api=Module::GetTopLevelFunctions, abc-kind=ArkTS1, category=internal, extension=cpp
TEST_F(LibAbcKitCppMockCoreTestModule,Module_GetTopLevelFunctions)102 TEST_F(LibAbcKitCppMockCoreTestModule, Module_GetTopLevelFunctions)
103 {
104 ASSERT_TRUE(CheckMockedStackEmpty());
105 {
106 abckit::File f(DEFAULT_PATH);
107 ASSERT_TRUE(CheckMockedApi("OpenAbc"));
108 abckit::mock::helpers::GetMockCoreModule(f).GetTopLevelFunctions();
109 ASSERT_TRUE(CheckMockedApi("ModuleEnumerateTopLevelFunctions"));
110 }
111 ASSERT_TRUE(CheckMockedApi("CloseFile"));
112 ASSERT_TRUE(CheckMockedStackEmpty());
113 }
114
115 // Test: test-kind=mock, api=Module::GetAnnotationInterfaces, abc-kind=ArkTS1, category=internal, extension=cpp
TEST_F(LibAbcKitCppMockCoreTestModule,Module_GetAnnotationInterfaces)116 TEST_F(LibAbcKitCppMockCoreTestModule, Module_GetAnnotationInterfaces)
117 {
118 ASSERT_TRUE(CheckMockedStackEmpty());
119 {
120 abckit::File f(DEFAULT_PATH);
121 ASSERT_TRUE(CheckMockedApi("OpenAbc"));
122 abckit::mock::helpers::GetMockCoreModule(f).GetAnnotationInterfaces();
123 ASSERT_TRUE(CheckMockedApi("ModuleEnumerateAnnotationInterfaces"));
124 }
125 ASSERT_TRUE(CheckMockedApi("CloseFile"));
126 ASSERT_TRUE(CheckMockedStackEmpty());
127 }
128
129 // Test: test-kind=mock, api=Module::GetNamespaces, abc-kind=ArkTS1, category=internal, extension=cpp
TEST_F(LibAbcKitCppMockCoreTestModule,Module_GetNamespaces)130 TEST_F(LibAbcKitCppMockCoreTestModule, Module_GetNamespaces)
131 {
132 ASSERT_TRUE(CheckMockedStackEmpty());
133 {
134 abckit::File f(DEFAULT_PATH);
135 ASSERT_TRUE(CheckMockedApi("OpenAbc"));
136 abckit::mock::helpers::GetMockCoreModule(f).GetNamespaces();
137 ASSERT_TRUE(CheckMockedApi("ModuleEnumerateNamespaces"));
138 }
139 ASSERT_TRUE(CheckMockedApi("CloseFile"));
140 ASSERT_TRUE(CheckMockedStackEmpty());
141 }
142
143 // Test: test-kind=mock, api=Module::GetImports, abc-kind=ArkTS1, category=internal, extension=cpp
TEST_F(LibAbcKitCppMockCoreTestModule,Module_GetImports)144 TEST_F(LibAbcKitCppMockCoreTestModule, Module_GetImports)
145 {
146 ASSERT_TRUE(CheckMockedStackEmpty());
147 {
148 abckit::File f(DEFAULT_PATH);
149 ASSERT_TRUE(CheckMockedApi("OpenAbc"));
150 abckit::mock::helpers::GetMockCoreModule(f).GetImports();
151 ASSERT_TRUE(CheckMockedApi("ModuleEnumerateImports"));
152 }
153 ASSERT_TRUE(CheckMockedApi("CloseFile"));
154 ASSERT_TRUE(CheckMockedStackEmpty());
155 }
156
157 // Test: test-kind=mock, api=Module::GetExports, abc-kind=ArkTS1, category=internal, extension=cpp
TEST_F(LibAbcKitCppMockCoreTestModule,Module_GetExports)158 TEST_F(LibAbcKitCppMockCoreTestModule, Module_GetExports)
159 {
160 ASSERT_TRUE(CheckMockedStackEmpty());
161 {
162 abckit::File f(DEFAULT_PATH);
163 ASSERT_TRUE(CheckMockedApi("OpenAbc"));
164 abckit::mock::helpers::GetMockCoreModule(f).GetExports();
165 ASSERT_TRUE(CheckMockedApi("ModuleEnumerateExports"));
166 }
167 ASSERT_TRUE(CheckMockedApi("CloseFile"));
168 ASSERT_TRUE(CheckMockedStackEmpty());
169 }
170
171 // Test: test-kind=mock, api=Module::EnumerateNamespaces, abc-kind=ArkTS1, category=internal, extension=cpp
TEST_F(LibAbcKitCppMockCoreTestModule,Module_EnumerateNamespaces)172 TEST_F(LibAbcKitCppMockCoreTestModule, Module_EnumerateNamespaces)
173 {
174 ASSERT_TRUE(CheckMockedStackEmpty());
175 {
176 abckit::File f(DEFAULT_PATH);
177 ASSERT_TRUE(CheckMockedApi("OpenAbc"));
178 abckit::mock::helpers::GetMockCoreModule(f).EnumerateNamespaces(DEFAULT_LAMBDA(abckit::core::Namespace));
179 ASSERT_TRUE(CheckMockedApi("ModuleEnumerateNamespaces"));
180 }
181 ASSERT_TRUE(CheckMockedApi("CloseFile"));
182 ASSERT_TRUE(CheckMockedStackEmpty());
183 }
184
185 // Test: test-kind=mock, api=Module::EnumerateTopLevelFunctions, abc-kind=ArkTS1, category=internal, extension=cpp
TEST_F(LibAbcKitCppMockCoreTestModule,Module_EnumerateTopLevelFunctions)186 TEST_F(LibAbcKitCppMockCoreTestModule, Module_EnumerateTopLevelFunctions)
187 {
188 ASSERT_TRUE(CheckMockedStackEmpty());
189 {
190 abckit::File f(DEFAULT_PATH);
191 ASSERT_TRUE(CheckMockedApi("OpenAbc"));
192 abckit::mock::helpers::GetMockCoreModule(f).EnumerateTopLevelFunctions(DEFAULT_LAMBDA(abckit::core::Function));
193 ASSERT_TRUE(CheckMockedApi("ModuleEnumerateTopLevelFunctions"));
194 }
195 ASSERT_TRUE(CheckMockedApi("CloseFile"));
196 ASSERT_TRUE(CheckMockedStackEmpty());
197 }
198
199 // Test: test-kind=mock, api=Module::EnumerateClasses, abc-kind=ArkTS1, category=internal, extension=cpp
TEST_F(LibAbcKitCppMockCoreTestModule,Module_EnumerateClasses)200 TEST_F(LibAbcKitCppMockCoreTestModule, Module_EnumerateClasses)
201 {
202 ASSERT_TRUE(CheckMockedStackEmpty());
203 {
204 abckit::File f(DEFAULT_PATH);
205 ASSERT_TRUE(CheckMockedApi("OpenAbc"));
206 abckit::mock::helpers::GetMockCoreModule(f).EnumerateClasses(DEFAULT_LAMBDA(abckit::core::Class));
207 ASSERT_TRUE(CheckMockedApi("ModuleEnumerateClasses"));
208 }
209 ASSERT_TRUE(CheckMockedApi("CloseFile"));
210 ASSERT_TRUE(CheckMockedStackEmpty());
211 }
212
213 // Test: test-kind=mock, api=Module::EnumerateImports, abc-kind=ArkTS1, category=internal, extension=cpp
TEST_F(LibAbcKitCppMockCoreTestModule,Module_EnumerateImports)214 TEST_F(LibAbcKitCppMockCoreTestModule, Module_EnumerateImports)
215 {
216 ASSERT_TRUE(CheckMockedStackEmpty());
217 {
218 abckit::File f(DEFAULT_PATH);
219 ASSERT_TRUE(CheckMockedApi("OpenAbc"));
220 abckit::mock::helpers::GetMockCoreModule(f).EnumerateImports(DEFAULT_LAMBDA(abckit::core::ImportDescriptor));
221 ASSERT_TRUE(CheckMockedApi("ModuleEnumerateImports"));
222 }
223 ASSERT_TRUE(CheckMockedApi("CloseFile"));
224 ASSERT_TRUE(CheckMockedStackEmpty());
225 }
226
227 // Test: test-kind=mock, api=Module::EnumerateAnonymousFunctions, abc-kind=ArkTS1, category=internal, extension=cpp
TEST_F(LibAbcKitCppMockCoreTestModule,Module_EnumerateAnonymousFunctions)228 TEST_F(LibAbcKitCppMockCoreTestModule, Module_EnumerateAnonymousFunctions)
229 {
230 ASSERT_TRUE(CheckMockedStackEmpty());
231 {
232 abckit::File f(DEFAULT_PATH);
233 ASSERT_TRUE(CheckMockedApi("OpenAbc"));
234 abckit::mock::helpers::GetMockCoreModule(f).EnumerateAnonymousFunctions(DEFAULT_LAMBDA(abckit::core::Function));
235 ASSERT_TRUE(CheckMockedApi("ModuleEnumerateAnonymousFunctions"));
236 }
237 ASSERT_TRUE(CheckMockedApi("CloseFile"));
238 ASSERT_TRUE(CheckMockedStackEmpty());
239 }
240
241 // Test: test-kind=mock, api=Module::EnumerateExports, abc-kind=ArkTS1, category=internal, extension=cpp
TEST_F(LibAbcKitCppMockCoreTestModule,Module_EnumerateExports)242 TEST_F(LibAbcKitCppMockCoreTestModule, Module_EnumerateExports)
243 {
244 ASSERT_TRUE(CheckMockedStackEmpty());
245 {
246 abckit::File f(DEFAULT_PATH);
247 ASSERT_TRUE(CheckMockedApi("OpenAbc"));
248 abckit::mock::helpers::GetMockCoreModule(f).EnumerateExports(DEFAULT_LAMBDA(abckit::core::ExportDescriptor));
249 ASSERT_TRUE(CheckMockedApi("ModuleEnumerateExports"));
250 }
251 ASSERT_TRUE(CheckMockedApi("CloseFile"));
252 ASSERT_TRUE(CheckMockedStackEmpty());
253 }
254
255 // Test: test-kind=mock, api=Module::EnumerateAnnotationInterfaces, abc-kind=ArkTS1, category=internal, extension=cpp
TEST_F(LibAbcKitCppMockCoreTestModule,Module_EnumerateAnnotationInterfaces)256 TEST_F(LibAbcKitCppMockCoreTestModule, Module_EnumerateAnnotationInterfaces)
257 {
258 ASSERT_TRUE(CheckMockedStackEmpty());
259 {
260 abckit::File f(DEFAULT_PATH);
261 ASSERT_TRUE(CheckMockedApi("OpenAbc"));
262 abckit::mock::helpers::GetMockCoreModule(f).EnumerateAnnotationInterfaces(
263 DEFAULT_LAMBDA(abckit::core::AnnotationInterface));
264 ASSERT_TRUE(CheckMockedApi("ModuleEnumerateAnnotationInterfaces"));
265 }
266 ASSERT_TRUE(CheckMockedApi("CloseFile"));
267 ASSERT_TRUE(CheckMockedStackEmpty());
268 }
269
270 } // namespace libabckit::cpp_test