• 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 <cstddef>
18 #include <cstring>
19 
20 #include "libabckit/include/c/abckit.h"
21 #include "helpers/helpers.h"
22 #include "libabckit/include/c/metadata_core.h"
23 #include "libabckit/src/metadata_inspect_impl.h"  // NOTE(mredkin)
24 #include "libabckit/src/adapter_dynamic/metadata_inspect_dynamic.h"
25 #include "libabckit/src/adapter_static/metadata_inspect_static.h"
26 
27 namespace libabckit::test {
28 
29 static auto g_impl = AbckitGetApiImpl(ABCKIT_VERSION_RELEASE_1_0_0);
30 static auto g_implI = AbckitGetInspectApiImpl(ABCKIT_VERSION_RELEASE_1_0_0);
31 static auto g_implM = AbckitGetModifyApiImpl(ABCKIT_VERSION_RELEASE_1_0_0);
32 
33 constexpr auto MODIFIED_DYNAMIC = ABCKIT_ABC_DIR "ut/metadata_core/inspect_api/values/values_dynamic_modified.abc";
34 constexpr auto MODIFIED_STATIC = ABCKIT_ABC_DIR "ut/metadata_core/inspect_api/values/values_static_modified.abc";
35 
36 class LibAbcKitInspectApiValuesTest : public ::testing::Test {};
37 
38 // Test: test-kind=api, api=InspectApiImpl::valueGetU1, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitInspectApiValuesTest,ValueGetU1_1)39 TEST_F(LibAbcKitInspectApiValuesTest, ValueGetU1_1)
40 {
41     AbckitFile *file = nullptr;
42     helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/inspect_api/values/values_dynamic.abc", &file);
43     auto *res = g_implM->createValueU1(file, true);
44     auto val = g_implI->valueGetU1(res);
45     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
46     ASSERT_TRUE(val);
47     // Write output file
48     g_impl->writeAbc(file, MODIFIED_DYNAMIC, strlen(MODIFIED_DYNAMIC));
49     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
50     g_impl->closeFile(file);
51     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
52 }
53 
54 // Test: test-kind=api, api=InspectApiImpl::valueGetFile, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitInspectApiValuesTest,ValueGetFile_1)55 TEST_F(LibAbcKitInspectApiValuesTest, ValueGetFile_1)
56 {
57     AbckitFile *file = nullptr;
58     helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/inspect_api/values/values_dynamic.abc", &file);
59     auto *res = g_implM->createValueU1(file, true);
60     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
61 
62     ASSERT_EQ(g_implI->valueGetFile(res), file);
63     // Write output file
64     g_impl->writeAbc(file, MODIFIED_DYNAMIC, strlen(MODIFIED_DYNAMIC));
65     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
66     g_impl->closeFile(file);
67     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
68 }
69 
70 // Test: test-kind=api, api=InspectApiImpl::valueGetDouble, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitInspectApiValuesTest,ValueGetDouble_1)71 TEST_F(LibAbcKitInspectApiValuesTest, ValueGetDouble_1)
72 {
73     AbckitFile *file = nullptr;
74     helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/inspect_api/values/values_dynamic.abc", &file);
75     const double implVal = 1.2;
76     auto *res = g_implM->createValueDouble(file, implVal);
77     auto val = g_implI->valueGetDouble(res);
78     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
79     ASSERT_EQ(val, implVal);
80     // Write output file
81     g_impl->writeAbc(file, MODIFIED_DYNAMIC, strlen(MODIFIED_DYNAMIC));
82     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
83     g_impl->closeFile(file);
84     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
85 }
86 
87 // Test: test-kind=api, api=InspectApiImpl::valueGetString, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitInspectApiValuesTest,ValueGetString_1)88 TEST_F(LibAbcKitInspectApiValuesTest, ValueGetString_1)
89 {
90     AbckitFile *file = nullptr;
91     helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/inspect_api/values/values_dynamic.abc", &file);
92     auto *res = g_implM->createValueString(file, "test", strlen("test"));
93     auto val = g_implI->valueGetString(res);
94     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
95     ASSERT_EQ(val->impl, "test");
96     // Write output file
97     g_impl->writeAbc(file, MODIFIED_DYNAMIC, strlen(MODIFIED_DYNAMIC));
98     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
99     g_impl->closeFile(file);
100     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
101 }
102 
103 // Test: test-kind=api, api=ModifyApiImpl::createLiteralArrayValue, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitInspectApiValuesTest,CreateLiteralArrayValue_1)104 TEST_F(LibAbcKitInspectApiValuesTest, CreateLiteralArrayValue_1)
105 {
106     AbckitFile *file = nullptr;
107     helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/values/values_dynamic.abc", &file);
108     std::vector<AbckitValue *> abcArr;
109     abcArr.emplace_back(g_implM->createValueString(file, "test", strlen("test")));
110     abcArr.emplace_back(g_implM->createValueU1(file, true));
111     auto *arr = g_implM->createLiteralArrayValue(file, abcArr.data(), 2U);
112     auto *litArr = g_implI->arrayValueGetLiteralArray(arr);
113     std::vector<AbckitLiteral *> newArr;
114     g_implI->literalArrayEnumerateElements(litArr, &newArr, [](AbckitFile *, AbckitLiteral *lit, void *data) {
115         (reinterpret_cast<std::vector<AbckitLiteral *> *>(data))->emplace_back(lit);
116         return true;
117     });
118 
119     ASSERT_EQ(newArr.size(), 2U);
120     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
121     ASSERT_NE(arr, nullptr);
122 
123     ASSERT_EQ(g_implI->literalGetString(newArr[0])->impl, "test");
124     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
125 
126     ASSERT_TRUE(g_implI->literalGetBool(newArr[1]));
127     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
128 
129     // Write output file
130     g_impl->writeAbc(file, MODIFIED_DYNAMIC, strlen(MODIFIED_DYNAMIC));
131     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
132     g_impl->closeFile(file);
133     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
134 }
135 
136 // Test: test-kind=api, api=InspectApiImpl::arrayValueGetLiteralArray, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitInspectApiValuesTest,ArrayValueGetLiteralArray_1)137 TEST_F(LibAbcKitInspectApiValuesTest, ArrayValueGetLiteralArray_1)
138 {
139     AbckitFile *file = nullptr;
140     helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/values/values_dynamic.abc", &file);
141     std::vector<AbckitValue *> abcArr;
142     abcArr.emplace_back(g_implM->createValueString(file, "test", strlen("test")));
143     abcArr.emplace_back(g_implM->createValueU1(file, true));
144     auto *arr = g_implM->createLiteralArrayValue(file, abcArr.data(), 2);
145     auto *larr = g_implI->arrayValueGetLiteralArray(arr);
146     size_t counter = 0;
147     g_implI->literalArrayEnumerateElements(larr, &counter, [](AbckitFile *, AbckitLiteral *, void *data) {
148         (*(reinterpret_cast<uint32_t *>(data)))++;
149         return true;
150     });
151     ASSERT_EQ(counter, 2U);
152 
153     // Write output file
154     g_impl->writeAbc(file, MODIFIED_DYNAMIC, strlen(MODIFIED_DYNAMIC));
155     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
156     g_impl->closeFile(file);
157     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
158 }
159 
160 // Test: test-kind=api, api=InspectApiImpl::valueGetType, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitInspectApiValuesTest,ValueGetType_1)161 TEST_F(LibAbcKitInspectApiValuesTest, ValueGetType_1)
162 {
163     AbckitFile *file = nullptr;
164     helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/inspect_api/values/values_dynamic.abc", &file);
165     auto *res = g_implM->createValueString(file, "test", strlen("test"));
166     auto val = g_implI->valueGetType(res);
167     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
168     ASSERT_EQ(val->id, ABCKIT_TYPE_ID_STRING);
169     res = g_implM->createValueU1(file, true);
170     val = g_implI->valueGetType(res);
171     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
172     ASSERT_EQ(val->id, ABCKIT_TYPE_ID_U1);
173     const double implVal = 1.2;
174     res = g_implM->createValueDouble(file, implVal);
175     val = g_implI->valueGetType(res);
176     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
177     ASSERT_EQ(val->id, ABCKIT_TYPE_ID_F64);
178     // Write output file
179     g_impl->writeAbc(file, MODIFIED_DYNAMIC, strlen(MODIFIED_DYNAMIC));
180     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
181     g_impl->closeFile(file);
182     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
183 }
184 
185 // Test: test-kind=api, api=InspectApiImpl::valueGetU1, abc-kind=ArkTS2, category=positive, extension=c
TEST_F(LibAbcKitInspectApiValuesTest,ValueGetU1_2)186 TEST_F(LibAbcKitInspectApiValuesTest, ValueGetU1_2)
187 {
188     AbckitFile *file = nullptr;
189     helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/inspect_api/values/values_static.abc", &file);
190     auto *res = g_implM->createValueU1(file, true);
191     auto val = g_implI->valueGetU1(res);
192     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
193     ASSERT_TRUE(val);
194     // Write output file
195     g_impl->writeAbc(file, MODIFIED_STATIC, strlen(MODIFIED_STATIC));
196     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
197     g_impl->closeFile(file);
198     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
199 }
200 
201 // Test: test-kind=api, api=InspectApiImpl::valueGetDouble, abc-kind=ArkTS2, category=positive, extension=c
TEST_F(LibAbcKitInspectApiValuesTest,ValueGetDouble_2)202 TEST_F(LibAbcKitInspectApiValuesTest, ValueGetDouble_2)
203 {
204     AbckitFile *file = nullptr;
205     helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/inspect_api/values/values_static.abc", &file);
206     const double implVal = 1.2;
207     auto *res = g_implM->createValueDouble(file, implVal);
208     auto val = g_implI->valueGetDouble(res);
209     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
210     ASSERT_EQ(val, implVal);
211     // Write output file
212     g_impl->writeAbc(file, MODIFIED_STATIC, strlen(MODIFIED_STATIC));
213     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
214     g_impl->closeFile(file);
215     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
216 }
217 
218 // Test: test-kind=api, api=InspectApiImpl::valueGetString, abc-kind=ArkTS2, category=positive, extension=c
TEST_F(LibAbcKitInspectApiValuesTest,ValueGetString_2)219 TEST_F(LibAbcKitInspectApiValuesTest, ValueGetString_2)
220 {
221     AbckitFile *file = nullptr;
222     helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/inspect_api/values/values_static.abc", &file);
223     auto *res = g_implM->createValueString(file, "test", strlen("test"));
224     auto val = g_implI->valueGetString(res);
225     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
226     ASSERT_EQ(val->impl, "test");
227     // Write output file
228     g_impl->writeAbc(file, MODIFIED_STATIC, strlen(MODIFIED_STATIC));
229     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
230     g_impl->closeFile(file);
231     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
232 }
233 
234 // Test: test-kind=api, api=ModifyApiImpl::createLiteralArrayValue, abc-kind=ArkTS2, category=positive, extension=c
TEST_F(LibAbcKitInspectApiValuesTest,CreateLiteralArrayValue_2)235 TEST_F(LibAbcKitInspectApiValuesTest, CreateLiteralArrayValue_2)
236 {
237     AbckitFile *file = nullptr;
238     helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/values/values_static.abc", &file);
239     std::vector<AbckitValue *> abcArr;
240     abcArr.emplace_back(g_implM->createValueString(file, "test", strlen("test")));
241     abcArr.emplace_back(g_implM->createValueU1(file, true));
242     auto *arr = g_implM->createLiteralArrayValue(file, abcArr.data(), 2);
243 
244     ASSERT_NE(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
245     ASSERT_EQ(arr, nullptr);
246 
247     // Write output file
248     g_impl->writeAbc(file, MODIFIED_STATIC, strlen(MODIFIED_STATIC));
249     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
250     g_impl->closeFile(file);
251     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
252 }
253 
254 // Test: test-kind=api, api=InspectApiImpl::valueGetFile, abc-kind=ArkTS2, category=positive, extension=c
TEST_F(LibAbcKitInspectApiValuesTest,ValueGetFile_2)255 TEST_F(LibAbcKitInspectApiValuesTest, ValueGetFile_2)
256 {
257     AbckitFile *file = nullptr;
258     helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/inspect_api/values/values_static.abc", &file);
259     auto *res = g_implM->createValueU1(file, true);
260     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
261 
262     ASSERT_EQ(g_implI->valueGetFile(res), file);
263     // Write output file
264     g_impl->writeAbc(file, MODIFIED_STATIC, strlen(MODIFIED_STATIC));
265     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
266     g_impl->closeFile(file);
267     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
268 }
269 
270 // Test: test-kind=api, api=InspectApiImpl::arrayValueGetLiteralArray, abc-kind=ArkTS2, category=positive, extension=c
TEST_F(LibAbcKitInspectApiValuesTest,ArrayValueGetLiteralArray_2)271 TEST_F(LibAbcKitInspectApiValuesTest, ArrayValueGetLiteralArray_2)
272 {
273     AbckitFile *file = nullptr;
274     helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/values/values_static.abc", &file);
275     std::vector<AbckitValue *> abcArr;
276     abcArr.emplace_back(g_implM->createValueString(file, "test", strlen("test")));
277     abcArr.emplace_back(g_implM->createValueU1(file, true));
278     auto *arr = g_implM->createLiteralArrayValue(file, abcArr.data(), 2);
279     auto *larr = g_implI->arrayValueGetLiteralArray(arr);
280 
281     ASSERT_NE(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
282     ASSERT_EQ(larr, nullptr);
283 
284     // Write output file
285     g_impl->writeAbc(file, MODIFIED_STATIC, strlen(MODIFIED_STATIC));
286     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
287     g_impl->closeFile(file);
288     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
289 }
290 
291 // Test: test-kind=api, api=InspectApiImpl::valueGetType, abc-kind=ArkTS2, category=positive, extension=c
TEST_F(LibAbcKitInspectApiValuesTest,ValueGetType_2)292 TEST_F(LibAbcKitInspectApiValuesTest, ValueGetType_2)
293 {
294     AbckitFile *file = nullptr;
295     helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/inspect_api/values/values_static.abc", &file);
296     auto *res = g_implM->createValueString(file, "test", strlen("test"));
297     auto val = g_implI->valueGetType(res);
298     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
299     ASSERT_EQ(val->id, ABCKIT_TYPE_ID_STRING);
300     res = g_implM->createValueU1(file, true);
301     val = g_implI->valueGetType(res);
302     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
303     ASSERT_EQ(val->id, ABCKIT_TYPE_ID_U1);
304     const double implVal = 1.2;
305     res = g_implM->createValueDouble(file, implVal);
306     val = g_implI->valueGetType(res);
307     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
308     ASSERT_EQ(val->id, ABCKIT_TYPE_ID_F64);
309     // Write output file
310     g_impl->writeAbc(file, MODIFIED_STATIC, strlen(MODIFIED_STATIC));
311     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
312     g_impl->closeFile(file);
313     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
314 }
315 
316 // Test: test-kind=api, api=InspectApiImpl::valueGetU1, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitInspectApiValuesTest,ValueGetU1_3)317 TEST_F(LibAbcKitInspectApiValuesTest, ValueGetU1_3)
318 {
319     AbckitFile *file = nullptr;
320     helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/inspect_api/values/values_dynamic.abc", &file);
321     auto *res = g_implM->createValueU1(file, true);
322     ValueGetTypeDynamic(res)->id = ABCKIT_TYPE_ID_INVALID;
323     g_implI->valueGetU1(res);
324     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_BAD_ARGUMENT);
325     g_impl->closeFile(file);
326     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
327 }
328 
329 // Test: test-kind=api, api=InspectApiImpl::valueGetU1, abc-kind=ArkTS2, category=positive, extension=c
TEST_F(LibAbcKitInspectApiValuesTest,ValueGetU1_4)330 TEST_F(LibAbcKitInspectApiValuesTest, ValueGetU1_4)
331 {
332     AbckitFile *file = nullptr;
333     helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/inspect_api/values/values_static.abc", &file);
334     auto *res = g_implM->createValueU1(file, true);
335     ValueGetTypeStatic(res)->id = ABCKIT_TYPE_ID_INVALID;
336     g_implI->valueGetU1(res);
337     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_BAD_ARGUMENT);
338     g_impl->closeFile(file);
339     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
340 }
341 
342 // Test: test-kind=api, api=InspectApiImpl::valueGetDouble, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitInspectApiValuesTest,ValueGetDouble_3)343 TEST_F(LibAbcKitInspectApiValuesTest, ValueGetDouble_3)
344 {
345     AbckitFile *file = nullptr;
346     helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/inspect_api/values/values_dynamic.abc", &file);
347     const double initVal = .1f;
348     auto *res = g_implM->createValueDouble(file, initVal);
349     ValueGetTypeDynamic(res)->id = ABCKIT_TYPE_ID_INVALID;
350     g_implI->valueGetU1(res);
351     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_BAD_ARGUMENT);
352     g_impl->closeFile(file);
353     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
354 }
355 
356 // Test: test-kind=api, api=InspectApiImpl::valueGetDouble, abc-kind=ArkTS2, category=positive, extension=c
TEST_F(LibAbcKitInspectApiValuesTest,ValueGetDouble_4)357 TEST_F(LibAbcKitInspectApiValuesTest, ValueGetDouble_4)
358 {
359     AbckitFile *file = nullptr;
360     helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/inspect_api/values/values_static.abc", &file);
361     const double initVal = .1f;
362     auto *res = g_implM->createValueDouble(file, initVal);
363     ValueGetTypeStatic(res)->id = ABCKIT_TYPE_ID_INVALID;
364     g_implI->valueGetDouble(res);
365     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_BAD_ARGUMENT);
366     g_impl->closeFile(file);
367     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
368 }
369 
370 // Test: test-kind=api, api=InspectApiImpl::valueGetString, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitInspectApiValuesTest,ValueGetString_3)371 TEST_F(LibAbcKitInspectApiValuesTest, ValueGetString_3)
372 {
373     AbckitFile *file = nullptr;
374     helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/inspect_api/values/values_dynamic.abc", &file);
375     auto *res = g_implM->createValueString(file, "test", strlen("test"));
376     ValueGetTypeDynamic(res)->id = ABCKIT_TYPE_ID_INVALID;
377     g_implI->valueGetString(res);
378     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_BAD_ARGUMENT);
379     g_impl->closeFile(file);
380     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
381 }
382 
383 // Test: test-kind=api, api=InspectApiImpl::valueGetString, abc-kind=ArkTS2, category=positive, extension=c
TEST_F(LibAbcKitInspectApiValuesTest,ValueGetString_4)384 TEST_F(LibAbcKitInspectApiValuesTest, ValueGetString_4)
385 {
386     AbckitFile *file = nullptr;
387     helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/inspect_api/values/values_static.abc", &file);
388     auto *res = g_implM->createValueString(file, "test", strlen("test"));
389     ValueGetTypeStatic(res)->id = ABCKIT_TYPE_ID_INVALID;
390     g_implI->valueGetString(res);
391     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_BAD_ARGUMENT);
392     g_impl->closeFile(file);
393     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
394 }
395 
396 // Test: test-kind=api, api=InspectApiImpl::valueGetLiteralArray, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitInspectApiValuesTest,ArrayValueGetLiteralArray_3)397 TEST_F(LibAbcKitInspectApiValuesTest, ArrayValueGetLiteralArray_3)
398 {
399     AbckitFile *file = nullptr;
400     helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/values/values_dynamic.abc", &file);
401     std::vector<AbckitValue *> abcArr;
402     abcArr.emplace_back(g_implM->createValueString(file, "test", strlen("test")));
403     abcArr.emplace_back(g_implM->createValueU1(file, true));
404     auto *arr = g_implM->createLiteralArrayValue(file, abcArr.data(), 2);
405     ValueGetTypeDynamic(arr)->id = ABCKIT_TYPE_ID_INVALID;
406     g_implI->arrayValueGetLiteralArray(arr);
407     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_BAD_ARGUMENT);
408     g_impl->closeFile(file);
409     ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
410 }
411 }  // namespace libabckit::test
412