• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-2022 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 #define private public
19 #define protected public
20 #include "operation.h"
21 #include "operation_builder.h"
22 #undef private
23 #undef protected
24 
25 using namespace testing::ext;
26 using namespace OHOS::AAFwk;
27 using OHOS::Parcel;
28 using Uri = OHOS::Uri;
29 class OperationBaseTest : public testing::Test {
30 public:
OperationBaseTest()31     OperationBaseTest()
32     {}
~OperationBaseTest()33     ~OperationBaseTest()
34     {}
35     static void SetUpTestCase(void);
36     static void TearDownTestCase(void);
37     void SetUp();
38     void TearDown();
39 
40     std::shared_ptr<OperationBuilder> operationbuilder_ = nullptr;
41 };
42 
SetUpTestCase(void)43 void OperationBaseTest::SetUpTestCase(void)
44 {}
45 
TearDownTestCase(void)46 void OperationBaseTest::TearDownTestCase(void)
47 {}
48 
SetUp(void)49 void OperationBaseTest::SetUp(void)
50 {
51     operationbuilder_ = std::make_shared<OperationBuilder>();
52 }
53 
TearDown(void)54 void OperationBaseTest::TearDown(void)
55 {}
56 
57 /**
58  * @tc.number: AaFwk_Operation_GetAbilityName_0100
59  * @tc.name: WithAbilityName/GetAbilityName.
60  * @tc.desc: Verify the function when the input string contains special characters.
61  */
62 HWTEST_F(OperationBaseTest, AaFwk_Operation_GetAbilityName_0100, Function | MediumTest | Level1)
63 {
64     std::string value = "enter";
65     GTEST_LOG_(INFO) << "AaFwk_Operation_GetAbilityName_0100 start";
66 
67     operationbuilder_->WithAbilityName(value);
68     std::shared_ptr<Operation> operation = operationbuilder_->build();
69     EXPECT_STREQ(value.c_str(), operation->GetAbilityName().c_str());
70 
71     GTEST_LOG_(INFO) << "AaFwk_Operation_GetAbilityName_0100 end";
72 }
73 
74 /**
75  * @tc.number: AaFwk_Operation_GetAbilityName_0200
76  * @tc.name: WithAbilityName/GetAbilityName.
77  * @tc.desc: Verify the function when the input string is empty.
78  */
79 HWTEST_F(OperationBaseTest, AaFwk_Operation_GetAbilityName_0200, Function | MediumTest | Level3)
80 {
81     std::string value = "";
82     operationbuilder_->WithAbilityName(value);
83     std::shared_ptr<Operation> operation = operationbuilder_->build();
84 
85     EXPECT_STREQ(value.c_str(), operation->GetAbilityName().c_str());
86 }
87 
88 /**
89  * @tc.number:  AaFwk_Operation_GetBundleName_0100
90  * @tc.name: WithBundleName/GetBundleName
91  * @tc.desc: Verify the function when the input string contains special characters.
92  */
93 HWTEST_F(OperationBaseTest, AaFwk_Operation_GetBundleName_0100, Function | MediumTest | Level1)
94 {
95     std::string value = "value";
96     operationbuilder_->WithBundleName(value);
97     std::shared_ptr<Operation> operation = operationbuilder_->build();
98     EXPECT_STREQ(value.c_str(), operation->GetBundleName().c_str());
99 }
100 
101 /**
102  * @tc.number: AaFwk_Operation_GetBundleName_0200
103  * @tc.name: WithBundleName/GetBundleName
104  * @tc.desc: Verify the function when the input string is empty.
105  */
106 HWTEST_F(OperationBaseTest, AaFwk_Operation_GetBundleName_0200, Function | MediumTest | Level3)
107 {
108     std::string value = "";
109     operationbuilder_->WithBundleName(value);
110     std::shared_ptr<Operation> operation = operationbuilder_->build();
111     EXPECT_STREQ(value.c_str(), operation->GetBundleName().c_str());
112 }
113 
114 /**
115  * @tc.number: AaFwk_Operation_GetDeviceId_0100
116  * @tc.name: WithDeviceId/GetDeviceId
117  * @tc.desc: Verify the function when the input string contains special characters.
118  */
119 HWTEST_F(OperationBaseTest, AaFwk_Operation_GetDeviceId_0100, Function | MediumTest | Level1)
120 {
121     std::string value = "value";
122     operationbuilder_->WithDeviceId(value);
123     std::shared_ptr<Operation> operation = operationbuilder_->build();
124     EXPECT_STREQ(value.c_str(), operation->GetDeviceId().c_str());
125 }
126 
127 /**
128  * @tc.number: AaFwk_Operation_GetDeviceId_0200
129  * @tc.name: WithDeviceId/GetDeviceId
130  * @tc.desc: Verify the function when the input string is empty.
131  */
132 HWTEST_F(OperationBaseTest, AaFwk_Operation_GetDeviceId_0200, Function | MediumTest | Level3)
133 {
134     std::string value = "";
135     operationbuilder_->WithDeviceId(value);
136     std::shared_ptr<Operation> operation = operationbuilder_->build();
137     EXPECT_STREQ(value.c_str(), operation->GetDeviceId().c_str());
138 }
139 
140 /**
141  * @tc.number: AaFwk_Operation_GetAction_0100
142  * @tc.name: WithAction/GetAction
143  * @tc.desc: Verify the function when the input string contains special characters.
144  */
145 HWTEST_F(OperationBaseTest, AaFwk_Operation_GetAction_0100, Function | MediumTest | Level1)
146 {
147     std::string value = "value";
148     operationbuilder_->WithAction(value);
149     std::shared_ptr<Operation> operation = operationbuilder_->build();
150     EXPECT_STREQ(value.c_str(), operation->GetAction().c_str());
151 }
152 
153 /**
154  * @tc.number: AaFwk_Operation_GetAction_0200
155  * @tc.name: WithAction/GetAction
156  * @tc.desc: Verify the function when the input string is empty.
157  */
158 HWTEST_F(OperationBaseTest, AaFwk_Operation_GetAction_0200, Function | MediumTest | Level3)
159 {
160     std::string value = "";
161     operationbuilder_->WithAction(value);
162     std::shared_ptr<Operation> operation = operationbuilder_->build();
163     EXPECT_STREQ(value.c_str(), operation->GetAction().c_str());
164 }
165 
166 /**
167  * @tc.number: AaFwk_Operation_GetEntities_0100
168  * @tc.name: WithEntities/GetEntities
169  * @tc.desc: Verify the function when the input string contains special characters.
170  */
171 HWTEST_F(OperationBaseTest, AaFwk_Operation_GetEntities_0100, Function | MediumTest | Level1)
172 {
173     std::vector<std::string> value;
174     value.push_back("string1");
175     operationbuilder_->WithEntities(value);
176     std::shared_ptr<Operation> operation = operationbuilder_->build();
177 
178     std::vector<std::string> revValue = operation->GetEntities();
179 
180     if (value.size() > 0 && revValue.size() > 0) {
181         EXPECT_STREQ(value.at(0).c_str(), operation->GetEntities().at(0).c_str());
182     } else {
183         EXPECT_EQ(true, revValue.size() > 0);
184     }
185 }
186 
187 /**
188  * @tc.number: AaFwk_Operation_GetEntities_0200
189  * @tc.name: WithEntities/GetEntities
190  * @tc.desc: Verify the function when the input string is empty.
191  */
192 HWTEST_F(OperationBaseTest, AaFwk_Operation_GetEntities_0200, Function | MediumTest | Level3)
193 {
194     std::vector<std::string> value;
195     operationbuilder_->WithEntities(value);
196     std::shared_ptr<Operation> operation = operationbuilder_->build();
197     EXPECT_EQ(true, operation->GetEntities().size() == 0);
198 }
199 
200 /**
201  * @tc.number: AaFwk_Operation_GetFlags_0100
202  * @tc.name: WithFlags/GetFlags
203  * @tc.desc: Verify the function when the input string contains special characters.
204  */
205 HWTEST_F(OperationBaseTest, AaFwk_Operation_GetFlags_0100, Function | MediumTest | Level1)
206 {
207     unsigned int value = 1;
208     operationbuilder_->WithFlags(value);
209     std::shared_ptr<Operation> operation = operationbuilder_->build();
210     EXPECT_EQ(value, operation->GetFlags());
211 }
212 
213 /**
214  * @tc.number: AaFwk_Operation_GetFlags_0200
215  * @tc.name: WithFlags/GetFlags
216  * @tc.desc: Verify the function when the input string is empty.
217  */
218 HWTEST_F(OperationBaseTest, AaFwk_Operation_GetFlags_0200, Function | MediumTest | Level3)
219 {
220     unsigned int value = 0;
221     operationbuilder_->WithFlags(value);
222     std::shared_ptr<Operation> operation = operationbuilder_->build();
223     EXPECT_EQ(value, operation->GetFlags());
224 }
225 
226 /**
227  * @tc.number: AaFwk_Operation_GetUri_0100
228  * @tc.name: WithUri/GetUri
229  * @tc.desc: Verify the function when the input string contains special characters.
230  */
231 HWTEST_F(OperationBaseTest, AaFwk_Operation_GetUri_0100, Function | MediumTest | Level1)
232 {
233     std::string value = "scheme://authority/path1/path2/path3?id = 1&name = mingming&old#fragment";
234     OHOS::Uri uri(value);
235     operationbuilder_->WithUri(uri);
236     std::shared_ptr<Operation> operation = operationbuilder_->build();
237 
238     EXPECT_EQ(uri, operation->GetUri());
239 }
240 
241 /**
242  * @tc.number: AaFwk_Operation_GetUri_0200
243  * @tc.name: WithUri/GetUri
244  * @tc.desc: Verify the function when the input string is empty.
245  */
246 HWTEST_F(OperationBaseTest, AaFwk_Operation_GetUri_0200, Function | MediumTest | Level3)
247 {
248     std::string value = "";
249     OHOS::Uri uri(value);
250     operationbuilder_->WithUri(uri);
251     std::shared_ptr<Operation> operation = operationbuilder_->build();
252     EXPECT_EQ(uri, operation->GetUri());
253 }
254 
255 /**
256  * @tc.number: AaFwk_Operation_build_0100
257  * @tc.name: build
258  * @tc.desc: Verify that the parameters are correct.
259  */
260 HWTEST_F(OperationBaseTest, AaFwk_Operation_build_0100, Function | MediumTest | Level1)
261 {
262     std::string value = "value";
263     OHOS::Uri uri(value);
264     std::vector<std::string> columns;
265     columns.push_back("string1");
266     operationbuilder_->WithUri(uri);
267     operationbuilder_->WithAction(value);
268     operationbuilder_->WithEntities(columns);
269     operationbuilder_->WithDeviceId(value);
270     operationbuilder_->WithBundleName(value);
271     operationbuilder_->WithAbilityName(value);
272 
273     std::shared_ptr<Operation> operation = operationbuilder_->build();
274 
275     EXPECT_EQ(uri, operation->GetUri());
276     EXPECT_STREQ(value.c_str(), operation->GetAction().c_str());
277 
278     std::vector<std::string> revValue = operation->GetEntities();
279 
280     if (columns.size() > 0 && revValue.size() > 0) {
281         EXPECT_STREQ(columns.at(0).c_str(), operation->GetEntities().at(0).c_str());
282     } else {
283         EXPECT_EQ(true, revValue.size() > 0);
284     }
285     EXPECT_STREQ(value.c_str(), operation->GetDeviceId().c_str());
286     EXPECT_STREQ(value.c_str(), operation->GetBundleName().c_str());
287     EXPECT_STREQ(value.c_str(), operation->GetAbilityName().c_str());
288 }
289 
290 /**
291  * @tc.number: AaFwk_Operation_Marshalling_0100
292  * @tc.name: Marshalling/Unmarshalling
293  * @tc.desc: Validation serialization.
294  */
295 HWTEST_F(OperationBaseTest, AaFwk_Operation_Marshalling_0100, Function | MediumTest | Level1)
296 {
297     std::string value = "value";
298     OHOS::Uri uri(value);
299     std::vector<std::string> columns;
300     columns.push_back("string1");
301     operationbuilder_->WithUri(uri);
302     operationbuilder_->WithAction(value);
303     operationbuilder_->WithEntities(columns);
304     operationbuilder_->WithDeviceId(value);
305     operationbuilder_->WithBundleName(value);
306     operationbuilder_->WithAbilityName(value);
307 
308     std::shared_ptr<Operation> operation = operationbuilder_->build();
309     Parcel in;
310     operation->Marshalling(in);
311 
312     Operation *pOperation = operation->Unmarshalling(in);
313     if (pOperation != nullptr) {
314         EXPECT_EQ(true, *pOperation == *(operation.get()));
315     } else {
316         EXPECT_EQ(true, pOperation != nullptr);
317     }
318 }
319 
320 /**
321  * @tc.number: AaFwk_Operation_Operator_0100
322  * @tc.name: Operator
323  * @tc.desc: Verify string overload.
324  */
325 HWTEST_F(OperationBaseTest, AaFwk_Operation_Operator_0100, Function | MediumTest | Level1)
326 {
327     Operation operation_;
328     std::string value = "value";
329     OHOS::Uri uri(value);
330     std::vector<std::string> columns;
331     columns.push_back("string1");
332     operationbuilder_->WithUri(uri);
333     operationbuilder_->WithAction(value);
334     operationbuilder_->WithEntities(columns);
335     operationbuilder_->WithDeviceId(value);
336     operationbuilder_->WithBundleName(value);
337     operationbuilder_->WithAbilityName(value);
338 
339     std::shared_ptr<Operation> operation = operationbuilder_->build();
340     operation_ = *(operation.get());
341 
342     EXPECT_EQ(true, operation_ == *(operation.get()));
343 }
344 
345 /**
346  * @tc.number: AaFwk_Operation_DumpInfo_0100
347  * @tc.name: DumpInfo
348  * @tc.desc: Verify string overload.
349  */
350 HWTEST_F(OperationBaseTest, AaFwk_Operation_DumpInfo_0100, Function | MediumTest | Level1)
351 {
352     GTEST_LOG_(INFO) << "AaFwk_Operation_DumpInfo_0100 start";
353     std::shared_ptr<Operation> operation = operationbuilder_->build();
354     int level = 10;
355     operation->entities_.push_back("a");
356     operation->entities_.push_back("b");
357     operation->DumpInfo(level);
358     EXPECT_EQ(true, operation->GetEntities().size() == 2);
359     GTEST_LOG_(INFO) << "AaFwk_Operation_DumpInfo_0100 end";
360 }
361