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 "cj_want_ffi.h"
17 #include <gtest/gtest.h>
18
19 #include <iostream>
20 #include <cstring>
21 #include <string>
22 #include <vector>
23
24 #include "cj_utils_ffi.h"
25 #include "want.h"
26 #include "want_params_wrapper.h"
27 #include "securec.h"
28
29 #define URI_SIZE 9
30 #define ACTION_SIZE 11
31 #define WANT_TYPE_SIZE 12
32 #define PARAMETERS_SIZE 11
33
34 using namespace testing;
35 using namespace testing::ext;
36 using OHOS::AAFwk::Want;
37 using OHOS::AppExecFwk::ElementName;
38
39 class CjWantFfiTest : public testing::Test {
40 public:
CjWantFfiTest()41 CjWantFfiTest()
42 {}
~CjWantFfiTest()43 ~CjWantFfiTest()
44 {}
45 static void SetUpTestCase();
46 static void TearDownTestCase();
47 void SetUp() override;
48 void TearDown() override;
49 };
50
SetUpTestCase()51 void CjWantFfiTest::SetUpTestCase()
52 {}
53
TearDownTestCase()54 void CjWantFfiTest::TearDownTestCase()
55 {}
56
SetUp()57 void CjWantFfiTest::SetUp()
58 {}
59
TearDown()60 void CjWantFfiTest::TearDown()
61 {}
62
63 /**
64 * @tc.name: CjWantFfiTestFFICJWantCreateWithWantInfo_0100
65 * @tc.desc: CjWantFfiTest test for FFICJWantCreateWithWantInfo.
66 * @tc.type: FUNC
67 */
68 HWTEST_F(CjWantFfiTest, CjWantFfiTestFFICJWantCreateWithWantInfo_0100, TestSize.Level1)
69 {
70 const char* deviceId = "deviceId";
71 const char* bundleName = "bundleName";
72 const char* abilityName = "abilityName";
73 const char* moduleName = "moduleName";
74 ElementNameHandle elementNameHandle = new ElementName(deviceId, bundleName, abilityName, moduleName);
75
76 CJWantParams params;
77 params.elementName = elementNameHandle;
78 params.flags = 123;
79
80 params.uri = new char[URI_SIZE];
81 strcpy_s(params.uri, URI_SIZE, "deviceId");
82
83 params.action = new char[ACTION_SIZE];
84 strcpy_s(params.action, ACTION_SIZE, "bundleName");
85
86 params.wantType = new char[WANT_TYPE_SIZE];
87 strcpy_s(params.wantType, WANT_TYPE_SIZE, "abilityName");
88
89 params.parameters = new char[PARAMETERS_SIZE];
90 strcpy_s(params.parameters, PARAMETERS_SIZE, "moduleName");
91
92 WantHandle want = FFICJWantCreateWithWantInfo(params);
93 EXPECT_NE(want, nullptr);
94 }
95
96 /**
97 * @tc.name: CjWantFfiTestFFICJWantDelete_0100
98 * @tc.desc: CjWantFfiTest test for FFICJWantDelete.
99 * @tc.type: FUNC
100 */
101 HWTEST_F(CjWantFfiTest, CjWantFfiTestFFICJWantDelete_0100, TestSize.Level1)
102 {
103 const char* deviceId = "deviceId";
104 const char* bundleName = "bundleName";
105 const char* abilityName = "abilityName";
106 const char* moduleName = "moduleName";
107 ElementNameHandle elementNameHandle = new ElementName(deviceId, bundleName, abilityName, moduleName);
108
109 CJWantParams params;
110 params.elementName = elementNameHandle;
111 params.flags = 123;
112
113 params.uri = new char[URI_SIZE];
114 strcpy_s(params.uri, URI_SIZE, "deviceId");
115
116 params.action = new char[ACTION_SIZE];
117 strcpy_s(params.action, ACTION_SIZE, "bundleName");
118
119 params.wantType = new char[WANT_TYPE_SIZE];
120 strcpy_s(params.wantType, WANT_TYPE_SIZE, "abilityName");
121
122 params.parameters = new char[PARAMETERS_SIZE];
123 strcpy_s(params.parameters, PARAMETERS_SIZE, "moduleName");
124 WantHandle want = FFICJWantCreateWithWantInfo(params);
125 FFICJWantDelete(want);
126 EXPECT_NE(want, nullptr);
127 }
128
129 /**
130 * @tc.name: CjWantFfiTestFFICJWantGetWantInfo_0100
131 * @tc.desc: CjWantFfiTest test for OnCreate.
132 * @tc.type: FUNC
133 */
134 HWTEST_F(CjWantFfiTest, CjWantFfiTestFFICJWantGetWantInfo_0100, TestSize.Level1)
135 {
136 const char* deviceId = "deviceId";
137 const char* bundleName = "bundleName";
138 const char* abilityName = "abilityName";
139 const char* moduleName = "moduleName";
140 ElementNameHandle elementNameHandle = new ElementName(deviceId, bundleName, abilityName, moduleName);
141
142 CJWantParams params;
143 params.elementName = elementNameHandle;
144 params.flags = 123;
145
146 params.uri = new char[URI_SIZE];
147 strcpy_s(params.uri, URI_SIZE, "deviceId");
148
149 params.action = new char[ACTION_SIZE];
150 strcpy_s(params.action, ACTION_SIZE, "bundleName");
151
152 params.wantType = new char[WANT_TYPE_SIZE];
153 strcpy_s(params.wantType, WANT_TYPE_SIZE, "abilityName");
154
155 params.parameters = new char[PARAMETERS_SIZE];
156 strcpy_s(params.parameters, PARAMETERS_SIZE, "moduleName");
157 WantHandle want = FFICJWantCreateWithWantInfo(params);
158
159 CJWantParams* paramsResult = FFICJWantGetWantInfo(want);
160 EXPECT_NE(paramsResult, nullptr);
161 FFICJWantParamsDelete(paramsResult);
162 FFICJWantDelete(reinterpret_cast<WantHandle>(want));
163 }
164
165 /**
166 * @tc.name: CjWantFfiTestFFICJWantAddEntity_0100
167 * @tc.desc: CjWantFfiTest test for FFICJWantAddEntity.
168 * @tc.type: FUNC
169 */
170 HWTEST_F(CjWantFfiTest, CjWantFfiTestFFICJWantAddEntity_0100, TestSize.Level1)
171 {
172 const char* deviceId = "deviceId";
173 const char* bundleName = "bundleName";
174 const char* abilityName = "abilityName";
175 const char* moduleName = "moduleName";
176 ElementNameHandle elementNameHandle = new ElementName(deviceId, bundleName, abilityName, moduleName);
177
178 CJWantParams params;
179 params.elementName = elementNameHandle;
180 params.flags = 123;
181
182 params.uri = new char[URI_SIZE];
183 strcpy_s(params.uri, URI_SIZE, "deviceId");
184
185 params.action = new char[ACTION_SIZE];
186 strcpy_s(params.action, ACTION_SIZE, "bundleName");
187
188 params.wantType = new char[WANT_TYPE_SIZE];
189 strcpy_s(params.wantType, WANT_TYPE_SIZE, "abilityName");
190
191 params.parameters = new char[PARAMETERS_SIZE];
192 strcpy_s(params.parameters, PARAMETERS_SIZE, "moduleName");
193 WantHandle want = FFICJWantCreateWithWantInfo(params);
194
195 const char* entity = "test_entity";
196 FFICJWantAddEntity(want, entity);
197 EXPECT_NE(want, nullptr);
198 }
199
200 /**
201 * @tc.name: CjWantFfiTestFFICJWantParseUri_0100
202 * @tc.desc: CjWantFfiTest test for FFICJWantParseUri.
203 * @tc.type: FUNC
204 */
205 HWTEST_F(CjWantFfiTest, CjWantFfiTestFFICJWantParseUri_0100, TestSize.Level1)
206 {
207 const char* uri = "test_uri";
208 WantHandle want = FFICJWantParseUri(uri);
209 EXPECT_EQ(want, nullptr);
210 }