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 #include <vector>
19
20 #include "libabckit/include/c/abckit.h"
21 #include "helpers/helpers.h"
22 #include "libabckit/include/c/metadata_core.h"
23
24 namespace libabckit::test {
25
26 static auto g_impl = AbckitGetApiImpl(ABCKIT_VERSION_RELEASE_1_0_0);
27 static auto g_implI = AbckitGetInspectApiImpl(ABCKIT_VERSION_RELEASE_1_0_0);
28 static auto g_implM = AbckitGetModifyApiImpl(ABCKIT_VERSION_RELEASE_1_0_0);
29 static auto g_implG = AbckitGetGraphApiImpl(ABCKIT_VERSION_RELEASE_1_0_0);
30
31 static constexpr auto MODIFIED_DYNAMIC =
32 ABCKIT_ABC_DIR "ut/metadata_core/modify_api/values/values_dynamic_modified.abc";
33 static constexpr auto MODIFIED_STATIC = ABCKIT_ABC_DIR "ut/metadata_core/modify_api/values/values_static_modified.abc";
34
35 class LibAbcKitModifyApiValuesTest : public ::testing::Test {};
36
37 // Test: test-kind=api, api=ModifyApiImpl::createValueU1, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitModifyApiValuesTest,CreateValueU1_1)38 TEST_F(LibAbcKitModifyApiValuesTest, CreateValueU1_1)
39 {
40 AbckitFile *file = nullptr;
41 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/values/values_dynamic.abc", &file);
42 auto *res = g_implM->createValueU1(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::createValueDouble, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitModifyApiValuesTest,CreateValueDouble_1)53 TEST_F(LibAbcKitModifyApiValuesTest, CreateValueDouble_1)
54 {
55 AbckitFile *file = nullptr;
56 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/values/values_dynamic.abc", &file);
57 auto *res = g_implM->createValueDouble(file, 1.0);
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::createValueString, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitModifyApiValuesTest,CreateValueString_1)68 TEST_F(LibAbcKitModifyApiValuesTest, CreateValueString_1)
69 {
70 AbckitFile *file = nullptr;
71 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/values/values_dynamic.abc", &file);
72 auto *res = g_implM->createValueString(file, "test", strlen("test"));
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::createLiteralArrayValue, abc-kind=ArkTS1, category=positive, extension=c
TEST_F(LibAbcKitModifyApiValuesTest,CreateLiteralArrayValue_1)83 TEST_F(LibAbcKitModifyApiValuesTest, CreateLiteralArrayValue_1)
84 {
85 AbckitFile *file = nullptr;
86 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/values/values_dynamic.abc", &file);
87 std::vector<AbckitValue *> abcArr;
88 abcArr.emplace_back(g_implM->createValueString(file, "test", strlen("test")));
89 abcArr.emplace_back(g_implM->createValueU1(file, true));
90 auto *arr = g_implM->createLiteralArrayValue(file, abcArr.data(), 2);
91
92 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
93 ASSERT_NE(arr, nullptr);
94 // Write output file
95 g_impl->writeAbc(file, MODIFIED_DYNAMIC, strlen(MODIFIED_DYNAMIC));
96 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
97 g_impl->closeFile(file);
98 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
99 }
100
101 // Test: test-kind=api, api=ModifyApiImpl::createValueU1, abc-kind=ArkTS2, category=positive, extension=c
TEST_F(LibAbcKitModifyApiValuesTest,CreateValueU1_2)102 TEST_F(LibAbcKitModifyApiValuesTest, CreateValueU1_2)
103 {
104 AbckitFile *file = nullptr;
105 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/values/values_static.abc", &file);
106 auto *res = g_implM->createValueU1(file, true);
107 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
108 ASSERT_NE(res, nullptr);
109 // Write output file
110 g_impl->writeAbc(file, MODIFIED_STATIC, strlen(MODIFIED_STATIC));
111 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
112 g_impl->closeFile(file);
113 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
114 }
115
116 // Test: test-kind=api, api=ModifyApiImpl::createValueDouble, abc-kind=ArkTS2, category=positive, extension=c
TEST_F(LibAbcKitModifyApiValuesTest,CreateValueDouble_2)117 TEST_F(LibAbcKitModifyApiValuesTest, CreateValueDouble_2)
118 {
119 AbckitFile *file = nullptr;
120 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/values/values_static.abc", &file);
121 auto *res = g_implM->createValueDouble(file, 1.0);
122 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
123 ASSERT_NE(res, nullptr);
124 // Write output file
125 g_impl->writeAbc(file, MODIFIED_STATIC, strlen(MODIFIED_STATIC));
126 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
127 g_impl->closeFile(file);
128 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
129 }
130
131 // Test: test-kind=api, api=ModifyApiImpl::createValueString, abc-kind=ArkTS2, category=positive, extension=c
TEST_F(LibAbcKitModifyApiValuesTest,CreateValueString_2)132 TEST_F(LibAbcKitModifyApiValuesTest, CreateValueString_2)
133 {
134 AbckitFile *file = nullptr;
135 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/values/values_static.abc", &file);
136 auto *res = g_implM->createValueString(file, "test", strlen("test"));
137 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
138 ASSERT_NE(res, nullptr);
139 // Write output file
140 g_impl->writeAbc(file, MODIFIED_STATIC, strlen(MODIFIED_STATIC));
141 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
142 g_impl->closeFile(file);
143 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
144 }
145
146 // Test: test-kind=api, api=ModifyApiImpl::createLiteralArrayValue, abc-kind=ArkTS2, category=positive, extension=c
TEST_F(LibAbcKitModifyApiValuesTest,CreateLiteralArrayValue_2)147 TEST_F(LibAbcKitModifyApiValuesTest, CreateLiteralArrayValue_2)
148 {
149 AbckitFile *file = nullptr;
150 helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/modify_api/values/values_static.abc", &file);
151 std::vector<AbckitValue *> abcArr;
152 abcArr.emplace_back(g_implM->createValueString(file, "test", strlen("test")));
153 abcArr.emplace_back(g_implM->createValueU1(file, true));
154 auto *arr = g_implM->createLiteralArrayValue(file, abcArr.data(), 2);
155
156 ASSERT_NE(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
157 ASSERT_EQ(arr, nullptr);
158 // Write output file
159 g_impl->writeAbc(file, MODIFIED_STATIC, strlen(MODIFIED_STATIC));
160 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
161 g_impl->closeFile(file);
162 ASSERT_EQ(g_impl->getLastError(), ABCKIT_STATUS_NO_ERROR);
163 }
164
165 } // namespace libabckit::test
166