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