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