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