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 <gtest/gtest.h>
17 #include <cstring>
18
19 #include "libabckit/include/c/abckit.h"
20 #include "helpers/helpers.h"
21 #include "libabckit/include/c/metadata_core.h"
22
23 namespace libabckit::test {
24
25 static auto g_impl = AbckitGetApiImpl(ABCKIT_VERSION_RELEASE_1_0_0);
26 static auto g_implI = AbckitGetInspectApiImpl(ABCKIT_VERSION_RELEASE_1_0_0);
27 static auto g_implM = AbckitGetModifyApiImpl(ABCKIT_VERSION_RELEASE_1_0_0);
28 static auto g_implG = AbckitGetGraphApiImpl(ABCKIT_VERSION_RELEASE_1_0_0);
29
30 static constexpr auto MODIFIED_DYNAMIC =
31 ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_dynamic_modified.abc";
32 static constexpr auto MODIFIED_STATIC =
33 ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_static_modified.abc";
34
35 class LibAbcKitModifyApiLiteralsTest : public ::testing::Test {};
36
37 // Test: test-kind=api, api=ModifyApiImpl::createLiteralBool, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitModifyApiLiteralsTest,CreateLiteralBool_1)38 TEST_F(LibAbcKitModifyApiLiteralsTest, CreateLiteralBool_1)
39 {
40 AbckitFile *file = nullptr;
41 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_dynamic.abc", &file);
42 AbckitLiteral *res = g_implM->createLiteralBool(file, true);
43 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
44 ASSERT_NE(res, nullptr);
45 // Write output file
46 g_impl->writeAbc(file, MODIFIED_DYNAMIC, strlen(MODIFIED_DYNAMIC));
47 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
48 g_impl->closeFile(file);
49 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
50 }
51
52 // Test: test-kind=api, api=ModifyApiImpl::createLiteralU8, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitModifyApiLiteralsTest,CreateLiteralU8_1)53 TEST_F(LibAbcKitModifyApiLiteralsTest, CreateLiteralU8_1)
54 {
55 AbckitFile *file = nullptr;
56 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_dynamic.abc", &file);
57 AbckitLiteral *res = g_implM->createLiteralU8(file, 1);
58 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
59 ASSERT_NE(res, nullptr);
60 // Write output file
61 g_impl->writeAbc(file, MODIFIED_DYNAMIC, strlen(MODIFIED_DYNAMIC));
62 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
63 g_impl->closeFile(file);
64 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
65 }
66
67 // Test: test-kind=api, api=ModifyApiImpl::createLiteralU16, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitModifyApiLiteralsTest,CreateLiteralU16_1)68 TEST_F(LibAbcKitModifyApiLiteralsTest, CreateLiteralU16_1)
69 {
70 AbckitFile *file = nullptr;
71 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_dynamic.abc", &file);
72 AbckitLiteral *res = g_implM->createLiteralU16(file, 1);
73 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
74 ASSERT_NE(res, nullptr);
75 // Write output file
76 g_impl->writeAbc(file, MODIFIED_DYNAMIC, strlen(MODIFIED_DYNAMIC));
77 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
78 g_impl->closeFile(file);
79 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
80 }
81
82 // Test: test-kind=api, api=ModifyApiImpl::createLiteralMethodAffiliate, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitModifyApiLiteralsTest,CreateLiteralMethodAffiliate_1)83 TEST_F(LibAbcKitModifyApiLiteralsTest, CreateLiteralMethodAffiliate_1)
84 {
85 AbckitFile *file = nullptr;
86 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_dynamic.abc", &file);
87 AbckitLiteral *res = g_implM->createLiteralMethodAffiliate(file, 1);
88 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
89 ASSERT_NE(res, nullptr);
90 // Write output file
91 g_impl->writeAbc(file, MODIFIED_DYNAMIC, strlen(MODIFIED_DYNAMIC));
92 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
93 g_impl->closeFile(file);
94 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
95 }
96
97 // Test: test-kind=api, api=ModifyApiImpl::createLiteralU32, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitModifyApiLiteralsTest,CreateLiteralU32_1)98 TEST_F(LibAbcKitModifyApiLiteralsTest, CreateLiteralU32_1)
99 {
100 AbckitFile *file = nullptr;
101 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_dynamic.abc", &file);
102 AbckitLiteral *res = g_implM->createLiteralU32(file, 1);
103 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
104 ASSERT_NE(res, nullptr);
105 // Write output file
106 g_impl->writeAbc(file, MODIFIED_DYNAMIC, strlen(MODIFIED_DYNAMIC));
107 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
108 g_impl->closeFile(file);
109 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
110 }
111
112 // Test: test-kind=api, api=ModifyApiImpl::createLiteralU64, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitModifyApiLiteralsTest,CreateLiteralU64_1)113 TEST_F(LibAbcKitModifyApiLiteralsTest, CreateLiteralU64_1)
114 {
115 AbckitFile *file = nullptr;
116 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_dynamic.abc", &file);
117 AbckitLiteral *res = g_implM->createLiteralU64(file, 1);
118 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
119 ASSERT_NE(res, nullptr);
120 // Write output file
121 g_impl->writeAbc(file, MODIFIED_DYNAMIC, strlen(MODIFIED_DYNAMIC));
122 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
123 g_impl->closeFile(file);
124 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
125 }
126
127 // Test: test-kind=api, api=ModifyApiImpl::createLiteralFloat, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitModifyApiLiteralsTest,CreateLiteralFloat_1)128 TEST_F(LibAbcKitModifyApiLiteralsTest, CreateLiteralFloat_1)
129 {
130 AbckitFile *file = nullptr;
131 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_dynamic.abc", &file);
132 AbckitLiteral *res = g_implM->createLiteralFloat(file, 1.0);
133 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
134 ASSERT_NE(res, nullptr);
135 // Write output file
136 g_impl->writeAbc(file, MODIFIED_DYNAMIC, strlen(MODIFIED_DYNAMIC));
137 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
138 g_impl->closeFile(file);
139 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
140 }
141
142 // Test: test-kind=api, api=ModifyApiImpl::createLiteralDouble, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitModifyApiLiteralsTest,CreateLiteralDouble_1)143 TEST_F(LibAbcKitModifyApiLiteralsTest, CreateLiteralDouble_1)
144 {
145 AbckitFile *file = nullptr;
146 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_dynamic.abc", &file);
147 AbckitLiteral *res = g_implM->createLiteralDouble(file, 1.0);
148 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
149 ASSERT_NE(res, nullptr);
150 // Write output file
151 g_impl->writeAbc(file, MODIFIED_DYNAMIC, strlen(MODIFIED_DYNAMIC));
152 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
153 g_impl->closeFile(file);
154 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
155 }
156
157 // Test: test-kind=api, api=ModifyApiImpl::createLiteralLiteralArray, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitModifyApiLiteralsTest,CreateLiteralLiteralArray_1)158 TEST_F(LibAbcKitModifyApiLiteralsTest, CreateLiteralLiteralArray_1)
159 {
160 AbckitFile *file = nullptr;
161 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_dynamic.abc", &file);
162 const double val1 = 0.7;
163 const int val2 = 7U;
164 std::array<AbckitLiteral *, 2U> statlitarr = {g_implM->createLiteralDouble(file, val1),
165 g_implM->createLiteralU32(file, val2)};
166 AbckitLiteralArray *litarr = g_implM->createLiteralArray(file, statlitarr.data(), 2U);
167 AbckitLiteral *res = g_implM->createLiteralLiteralArray(file, litarr);
168 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
169 ASSERT_NE(res, nullptr);
170 // Write output file
171 g_impl->writeAbc(file, MODIFIED_DYNAMIC, strlen(MODIFIED_DYNAMIC));
172 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
173 g_impl->closeFile(file);
174 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
175 }
176
177 // Test: test-kind=api, api=ModifyApiImpl::createLiteralString, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitModifyApiLiteralsTest,CreateLiteralString_1)178 TEST_F(LibAbcKitModifyApiLiteralsTest, CreateLiteralString_1)
179 {
180 AbckitFile *file = nullptr;
181 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_dynamic.abc", &file);
182 AbckitLiteral *res = g_implM->createLiteralString(file, "asdf", strlen("asdf"));
183 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
184 ASSERT_NE(res, nullptr);
185 // Write output file
186 g_impl->writeAbc(file, MODIFIED_DYNAMIC, strlen(MODIFIED_DYNAMIC));
187 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
188 g_impl->closeFile(file);
189 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
190 }
191
192 // Test: test-kind=api, api=ModifyApiImpl::createLiteralMethod, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitModifyApiLiteralsTest,CreateLiteralMethod_1)193 TEST_F(LibAbcKitModifyApiLiteralsTest, CreateLiteralMethod_1)
194 {
195 AbckitFile *file = nullptr;
196 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_dynamic.abc", &file);
197 AbckitLiteral *res = g_implM->createLiteralMethod(file, helpers::FindMethodByName(file, "foo"));
198 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
199 ASSERT_NE(res, nullptr);
200 // Write output file
201 g_impl->writeAbc(file, MODIFIED_DYNAMIC, strlen(MODIFIED_DYNAMIC));
202 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
203 g_impl->closeFile(file);
204 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
205 }
206
207 // Test: test-kind=api, api=ModifyApiImpl::createLiteralArray, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitModifyApiLiteralsTest,CreateLiteralArray_1)208 TEST_F(LibAbcKitModifyApiLiteralsTest, CreateLiteralArray_1)
209 {
210 AbckitFile *file = nullptr;
211 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_dynamic.abc", &file);
212 auto arr = std::vector<AbckitLiteral *>();
213 AbckitLiteral *res1 = g_implM->createLiteralString(file, "asdf", strlen("asdf"));
214 AbckitLiteral *res2 = g_implM->createLiteralDouble(file, 1.0);
215 arr.emplace_back(res1);
216 arr.emplace_back(res2);
217 auto litArr = g_implM->createLiteralArray(file, arr.data(), arr.size());
218 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
219 ASSERT_NE(litArr, nullptr);
220
221 // Write output file
222 g_impl->writeAbc(file, MODIFIED_DYNAMIC, strlen(MODIFIED_DYNAMIC));
223 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
224 g_impl->closeFile(file);
225 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
226 }
227
228 // Test: test-kind=api, api=ModifyApiImpl::createLiteralArray, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitModifyApiLiteralsTest,CreateLiteralArray_2)229 TEST_F(LibAbcKitModifyApiLiteralsTest, CreateLiteralArray_2)
230 {
231 AbckitFile *file = nullptr;
232 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_dynamic.abc", &file);
233 auto arr = std::vector<AbckitLiteral *>();
234 AbckitLiteral *res1 = g_implM->createLiteralString(file, "asdf", strlen("asdf"));
235 AbckitLiteral *res2 = g_implM->createLiteralDouble(file, 1.0);
236 arr.emplace_back(res1);
237 arr.emplace_back(res2);
238 auto litArr = g_implM->createLiteralArray(file, arr.data(), arr.size());
239 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
240 ASSERT_NE(litArr, nullptr);
241
242 // Write output file
243 g_impl->writeAbc(file, MODIFIED_DYNAMIC, strlen(MODIFIED_DYNAMIC));
244 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
245 g_impl->closeFile(file);
246 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
247 }
248
249 // Test: test-kind=api, api=ModifyApiImpl::createLiteralBool, abc-kind=ArkTS2, category=positive, extension=c
TEST_F(LibAbcKitModifyApiLiteralsTest,CreateLiteralBool_2)250 TEST_F(LibAbcKitModifyApiLiteralsTest, CreateLiteralBool_2)
251 {
252 AbckitFile *file = nullptr;
253 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_static.abc", &file);
254 AbckitLiteral *res = g_implM->createLiteralBool(file, true);
255 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
256 ASSERT_NE(res, nullptr);
257 // Write output file
258 g_impl->writeAbc(file, MODIFIED_STATIC, strlen(MODIFIED_STATIC));
259 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
260 g_impl->closeFile(file);
261 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
262 }
263
264 // Test: test-kind=api, api=ModifyApiImpl::createLiteralU8, abc-kind=ArkTS2, category=positive, extension=c
TEST_F(LibAbcKitModifyApiLiteralsTest,CreateLiteralU8_2)265 TEST_F(LibAbcKitModifyApiLiteralsTest, CreateLiteralU8_2)
266 {
267 AbckitFile *file = nullptr;
268 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_static.abc", &file);
269 AbckitLiteral *res = g_implM->createLiteralU8(file, 1);
270 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
271 ASSERT_NE(res, nullptr);
272 // Write output file
273 g_impl->writeAbc(file, MODIFIED_STATIC, strlen(MODIFIED_STATIC));
274 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
275 g_impl->closeFile(file);
276 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
277 }
278
279 // Test: test-kind=api, api=ModifyApiImpl::createLiteralU16, abc-kind=ArkTS2, category=positive, extension=c
TEST_F(LibAbcKitModifyApiLiteralsTest,CreateLiteralU16_2)280 TEST_F(LibAbcKitModifyApiLiteralsTest, CreateLiteralU16_2)
281 {
282 AbckitFile *file = nullptr;
283 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_static.abc", &file);
284 AbckitLiteral *res = g_implM->createLiteralU16(file, 1);
285 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
286 ASSERT_NE(res, nullptr);
287 // Write output file
288 g_impl->writeAbc(file, MODIFIED_STATIC, strlen(MODIFIED_STATIC));
289 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
290 g_impl->closeFile(file);
291 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
292 }
293
294 // Test: test-kind=api, api=ModifyApiImpl::createLiteralMethodAffiliate, abc-kind=ArkTS2, category=positive, extension=c
TEST_F(LibAbcKitModifyApiLiteralsTest,CreateLiteralMethodAffiliate_2)295 TEST_F(LibAbcKitModifyApiLiteralsTest, CreateLiteralMethodAffiliate_2)
296 {
297 AbckitFile *file = nullptr;
298 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_static.abc", &file);
299 AbckitLiteral *res = g_implM->createLiteralMethodAffiliate(file, 1);
300 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
301 ASSERT_NE(res, nullptr);
302 // Write output file
303 g_impl->writeAbc(file, MODIFIED_STATIC, strlen(MODIFIED_STATIC));
304 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
305 g_impl->closeFile(file);
306 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
307 }
308
309 // Test: test-kind=api, api=ModifyApiImpl::createLiteralU32, abc-kind=ArkTS2, category=positive, extension=c
TEST_F(LibAbcKitModifyApiLiteralsTest,CreateLiteralU32_2)310 TEST_F(LibAbcKitModifyApiLiteralsTest, CreateLiteralU32_2)
311 {
312 AbckitFile *file = nullptr;
313 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_static.abc", &file);
314 AbckitLiteral *res = g_implM->createLiteralU32(file, 1);
315 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
316 ASSERT_NE(res, nullptr);
317 // Write output file
318 g_impl->writeAbc(file, MODIFIED_STATIC, strlen(MODIFIED_STATIC));
319 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
320 g_impl->closeFile(file);
321 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
322 }
323
324 // Test: test-kind=api, api=ModifyApiImpl::createLiteralU64, abc-kind=ArkTS2, category=positive, extension=c
TEST_F(LibAbcKitModifyApiLiteralsTest,CreateLiteralU64_2)325 TEST_F(LibAbcKitModifyApiLiteralsTest, CreateLiteralU64_2)
326 {
327 AbckitFile *file = nullptr;
328 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_static.abc", &file);
329 AbckitLiteral *res = g_implM->createLiteralU64(file, 1);
330 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
331 ASSERT_NE(res, nullptr);
332 // Write output file
333 g_impl->writeAbc(file, MODIFIED_STATIC, strlen(MODIFIED_STATIC));
334 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
335 g_impl->closeFile(file);
336 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
337 }
338
339 // Test: test-kind=api, api=ModifyApiImpl::createLiteralFloat, abc-kind=ArkTS2, category=positive, extension=c
TEST_F(LibAbcKitModifyApiLiteralsTest,CreateLiteralFloat_2)340 TEST_F(LibAbcKitModifyApiLiteralsTest, CreateLiteralFloat_2)
341 {
342 AbckitFile *file = nullptr;
343 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_static.abc", &file);
344 AbckitLiteral *res = g_implM->createLiteralFloat(file, 1.0);
345 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
346 ASSERT_NE(res, nullptr);
347 // Write output file
348 g_impl->writeAbc(file, MODIFIED_STATIC, strlen(MODIFIED_STATIC));
349 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
350 g_impl->closeFile(file);
351 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
352 }
353
354 // Test: test-kind=api, api=ModifyApiImpl::createLiteralDouble, abc-kind=ArkTS2, category=positive, extension=c
TEST_F(LibAbcKitModifyApiLiteralsTest,CreateLiteralDouble_2)355 TEST_F(LibAbcKitModifyApiLiteralsTest, CreateLiteralDouble_2)
356 {
357 AbckitFile *file = nullptr;
358 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_static.abc", &file);
359 AbckitLiteral *res = g_implM->createLiteralDouble(file, 1.0);
360 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
361 ASSERT_NE(res, nullptr);
362 // Write output file
363 g_impl->writeAbc(file, MODIFIED_STATIC, strlen(MODIFIED_STATIC));
364 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
365 g_impl->closeFile(file);
366 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
367 }
368
369 // Test: test-kind=api, api=ModifyApiImpl::createLiteralLiteralArray, abc-kind=ArkTS2, category=negative
TEST_F(LibAbcKitModifyApiLiteralsTest,CreateLiteralLiteralArray_2)370 TEST_F(LibAbcKitModifyApiLiteralsTest, CreateLiteralLiteralArray_2)
371 {
372 AbckitFile *file = nullptr;
373 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_static.abc", &file);
374 const double val1 = 0.7;
375 const int val2 = 7U;
376 std::array<AbckitLiteral *, 2U> statlitarr = {g_implM->createLiteralDouble(file, val1),
377 g_implM->createLiteralU32(file, val2)};
378 AbckitLiteralArray *litarr = g_implM->createLiteralArray(file, statlitarr.data(), 2U);
379 AbckitLiteral *res = g_implM->createLiteralLiteralArray(file, litarr);
380 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_UNSUPPORTED);
381 ASSERT_EQ(res, nullptr);
382 // Write output file
383 g_impl->writeAbc(file, MODIFIED_STATIC, strlen(MODIFIED_STATIC));
384 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
385 g_impl->closeFile(file);
386 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
387 }
388
389 // Test: test-kind=api, api=ModifyApiImpl::createLiteralString, abc-kind=ArkTS2, category=positive, extension=c
TEST_F(LibAbcKitModifyApiLiteralsTest,CreateLiteralString_2)390 TEST_F(LibAbcKitModifyApiLiteralsTest, CreateLiteralString_2)
391 {
392 AbckitFile *file = nullptr;
393 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_static.abc", &file);
394 AbckitLiteral *res = g_implM->createLiteralString(file, "asdf", strlen("asdf"));
395 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
396 ASSERT_NE(res, nullptr);
397 // Write output file
398 g_impl->writeAbc(file, MODIFIED_STATIC, strlen(MODIFIED_STATIC));
399 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
400 g_impl->closeFile(file);
401 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
402 }
403
404 // Test: test-kind=api, api=ModifyApiImpl::createLiteralMethod, abc-kind=ArkTS2, category=positive, extension=c
TEST_F(LibAbcKitModifyApiLiteralsTest,CreateLiteralMethod_2)405 TEST_F(LibAbcKitModifyApiLiteralsTest, CreateLiteralMethod_2)
406 {
407 AbckitFile *file = nullptr;
408 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/literals/literals_static.abc", &file);
409 AbckitLiteral *res = g_implM->createLiteralMethod(file, helpers::FindMethodByName(file, "foo"));
410 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
411 ASSERT_NE(res, nullptr);
412 // Write output file
413 g_impl->writeAbc(file, MODIFIED_STATIC, strlen(MODIFIED_STATIC));
414 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
415 g_impl->closeFile(file);
416 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
417 }
418
419 } // namespace libabckit::test
420