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
18 #include "cj_element_name_ffi.h"
19 #include "cj_utils_ffi.h"
20 #include "element_name.h"
21 #include "securec.h"
22
23 using namespace testing;
24 using namespace testing::ext;
25 using OHOS::AppExecFwk::ElementName;
26
27 class CjElementNameFfiTest : public testing::Test {
28 public:
CjElementNameFfiTest()29 CjElementNameFfiTest()
30 {}
~CjElementNameFfiTest()31 ~CjElementNameFfiTest()
32 {}
33 static void SetUpTestCase();
34 static void TearDownTestCase();
35 void SetUp() override;
36 void TearDown() override;
37 };
38
SetUpTestCase()39 void CjElementNameFfiTest::SetUpTestCase()
40 {}
41
TearDownTestCase()42 void CjElementNameFfiTest::TearDownTestCase()
43 {}
44
SetUp()45 void CjElementNameFfiTest::SetUp()
46 {}
47
TearDown()48 void CjElementNameFfiTest::TearDown()
49 {}
50
51 /**
52 * @tc.name: CJElementNameFFITestFFICJElementNameCreateWithContent_0100
53 * @tc.desc: CjElementNameFfiTest test for FFICJElementNameCreateWithContent.
54 * @tc.type: FUNC
55 */
56 HWTEST_F(CjElementNameFfiTest, CJElementNameFFITestFFICJElementNameCreateWithContent_0100, TestSize.Level1)
57 {
58 char* deviceId = new char[9];
59 strcpy_s(deviceId, 9, "deviceId");
60
61 char* bundleName = new char[11];
62 strcpy_s(bundleName, 11, "bundleName");
63
64 char* abilityName = new char[12];
65 strcpy_s(abilityName, 12, "abilityName");
66
67 char* moduleName = new char[11];
68 strcpy_s(moduleName, 11, "moduleName");
69
70 ElementNameHandle elementNameHandle =
71 FFICJElementNameCreateWithContent(deviceId, bundleName, abilityName, moduleName);
72 auto actualElementName = reinterpret_cast<ElementName*>(elementNameHandle);
73
74 EXPECT_EQ(actualElementName->GetDeviceID(), deviceId);
75 EXPECT_EQ(actualElementName->GetBundleName(), bundleName);
76 EXPECT_EQ(actualElementName->GetAbilityName(), abilityName);
77 EXPECT_EQ(actualElementName->GetModuleName(), moduleName);
78
79 FFICJElementNameDelete(elementNameHandle);
80 }
81
82 /**
83 * @tc.name: CJElementNameFFITestFFICJElementNameDelete_0100
84 * @tc.desc: CjElementNameFfiTest test for FFICJElementNameDelete.
85 * @tc.type: FUNC
86 */
87 HWTEST_F(CjElementNameFfiTest, CJElementNameFFITestFFICJElementNameDelete_0100, TestSize.Level1)
88 {
89 char* deviceId = new char[9];
90 strcpy_s(deviceId, 9, "deviceId");
91
92 char* bundleName = new char[11];
93 strcpy_s(bundleName, 11, "bundleName");
94
95 char* abilityName = new char[12];
96 strcpy_s(abilityName, 12, "abilityName");
97
98 char* moduleName = new char[11];
99 strcpy_s(moduleName, 11, "moduleName");
100
101 ElementNameHandle elementNameHandle =
102 FFICJElementNameCreateWithContent(deviceId, bundleName, abilityName, moduleName);
103 auto actualElementName = reinterpret_cast<ElementName*>(elementNameHandle);
104 EXPECT_EQ(actualElementName->GetDeviceID(), deviceId);
105 EXPECT_EQ(actualElementName->GetBundleName(), bundleName);
106 EXPECT_EQ(actualElementName->GetAbilityName(), abilityName);
107 EXPECT_EQ(actualElementName->GetModuleName(), moduleName);
108
109 FFICJElementNameDelete(elementNameHandle);
110 }
111
112 /**
113 * @tc.name: CjElementNameFfiTestContext_0100
114 * @tc.desc: CjElementNameFfiTest test for FFICJElementNameGetElementNameInfo.
115 * @tc.type: FUNC
116 */
117 HWTEST_F(CjElementNameFfiTest, CJElementNameFFITestFFICJElementNameGetElementNameInfo_0100, TestSize.Level1)
118 {
119 char* deviceId = new char[9];
120 strcpy_s(deviceId, 9, "deviceId");
121
122 char* bundleName = new char[11];
123 strcpy_s(bundleName, 11, "bundleName");
124
125 char* abilityName = new char[12];
126 strcpy_s(abilityName, 12, "abilityName");
127
128 char* moduleName = new char[11];
129 strcpy_s(moduleName, 11, "moduleName");
130
131 ElementNameHandle elementNameHandle =
132 FFICJElementNameCreateWithContent(deviceId, bundleName, abilityName, moduleName);
133 ElementNameParams* elementNameParams = FFICJElementNameGetElementNameInfo(elementNameHandle);
134
135 auto actualElementName = reinterpret_cast<ElementName*>(elementNameHandle);
136 EXPECT_STREQ(elementNameParams->deviceId, CreateCStringFromString(actualElementName->GetDeviceID()));
137 EXPECT_STREQ(elementNameParams->bundleName, CreateCStringFromString(actualElementName->GetBundleName()));
138 EXPECT_STREQ(elementNameParams->abilityName, CreateCStringFromString(actualElementName->GetAbilityName()));
139 EXPECT_STREQ(elementNameParams->moduleName, CreateCStringFromString(actualElementName->GetModuleName()));
140
141 FFICJElementNameParamsDelete(elementNameParams);
142 FFICJElementNameDelete(elementNameHandle);
143 }
144
145 /**
146 * @tc.name: CjElementNameFfiTestContext_0100
147 * @tc.desc: CjElementNameFfiTest test for FFICJElementNameParamsDelete.
148 * @tc.type: FUNC
149 */
150 HWTEST_F(CjElementNameFfiTest, CJElementNameFFITestFFICJElementNameParamsDelete_0100, TestSize.Level1)
151 {
152 char* deviceId = new char[9];
153 strcpy_s(deviceId, 9, "deviceId");
154
155 char* bundleName = new char[11];
156 strcpy_s(bundleName, 11, "bundleName");
157
158 char* abilityName = new char[12];
159 strcpy_s(abilityName, 12, "abilityName");
160
161 char* moduleName = new char[11];
162 strcpy_s(moduleName, 11, "moduleName");
163
164 ElementNameParams* elementNameParams = static_cast<ElementNameParams*>(malloc(sizeof(ElementNameParams)));
165 elementNameParams->deviceId = CreateCStringFromString(deviceId);
166 elementNameParams->bundleName = CreateCStringFromString(bundleName);
167 elementNameParams->abilityName = CreateCStringFromString(abilityName);
168 elementNameParams->moduleName = CreateCStringFromString(moduleName);
169
170 FFICJElementNameParamsDelete(elementNameParams);
171 EXPECT_TRUE(elementNameParams->deviceId != nullptr);
172 EXPECT_TRUE(elementNameParams->bundleName != nullptr);
173 EXPECT_TRUE(elementNameParams->abilityName != nullptr);
174 EXPECT_TRUE(elementNameParams->moduleName != nullptr);
175 }