1 /*
2 * Copyright (c) 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 #include "workinfo_test.h"
16 #include <message_parcel.h>
17
18 #include "work_info.h"
19 #include "work_sched_common.h"
20 #include "work_sched_utils.h"
21 #include "string_wrapper.h"
22
23 using namespace std;
24 using namespace testing::ext;
25
26 namespace OHOS {
27 namespace WorkScheduler {
28 const int32_t INVALID_VALUE = -1;
SetUpTestCase(void)29 void WorkInfoTest::SetUpTestCase(void)
30 {
31 }
32
TearDownTestCase(void)33 void WorkInfoTest::TearDownTestCase(void)
34 {
35 }
36
SetUp()37 void WorkInfoTest::SetUp()
38 {
39 }
40
TearDown()41 void WorkInfoTest::TearDown()
42 {
43 }
44
45 /**
46 * @tc.name WorkInfoTest001
47 * @tc.desc Set WorkId to WorkInfo
48 * @tc.type FUNC
49 * @tc.require: SR000GGTN6 AR000GH896 AR000GH897 AR000GH898
50 */
51 HWTEST_F (WorkInfoTest, WorkInfoTest001, Function | MediumTest | Level2)
52 {
53 WorkInfo workInfo = WorkInfo();
54 workInfo.SetWorkId(1);
55 EXPECT_EQ(workInfo.GetWorkId(), 1);
56 }
57
58 /**
59 * @tc.name WorkInfoTest002
60 * @tc.desc Set bundleName and abilityName to WorkInfo
61 * @tc.type FUNC
62 * @tc.require: SR000GGTN6 AR000GH896 AR000GH897 AR000GH898
63 */
64 HWTEST_F (WorkInfoTest, WorkInfoTest002, Function | MediumTest | Level2)
65 {
66 WorkInfo workInfo = WorkInfo();
67 workInfo.SetElement("bundle_name", "ability_name");
68 EXPECT_EQ(workInfo.GetBundleName(), "bundle_name");
69 EXPECT_EQ(workInfo.GetAbilityName(), "ability_name");
70 }
71
72 /**
73 * @tc.name WorkInfoTest003
74 * @tc.desc Set workInfo persisted
75 * @tc.type FUNC
76 * @tc.require: SR000GGTN6 AR000GH896 AR000GH897 AR000GH898
77 */
78 HWTEST_F (WorkInfoTest, WorkInfoTest003, Function | MediumTest | Level2)
79 {
80 WorkInfo workInfo = WorkInfo();
81 workInfo.RequestPersisted(true);
82 EXPECT_EQ(workInfo.IsPersisted(), true);
83 workInfo.RequestPersisted(false);
84 EXPECT_EQ(workInfo.IsPersisted(), false);
85 }
86
87 /**
88 * @tc.name WorkInfoTest004
89 * @tc.desc Set workInfo charger condition charging
90 * @tc.type FUNC
91 * @tc.require: SR000GGTN6 AR000GH896 AR000GH897 AR000GH898
92 */
93 HWTEST_F (WorkInfoTest, WorkInfoTest004, Function | MediumTest | Level2)
94 {
95 WorkInfo workInfo = WorkInfo();
96 EXPECT_EQ(workInfo.GetChargerType(), WorkCondition::Charger::CHARGING_UNKNOWN);
97 workInfo.RequestChargerType(true, WorkCondition::Charger::CHARGING_PLUGGED_ANY);
98 EXPECT_EQ(workInfo.GetChargerType(), WorkCondition::Charger::CHARGING_PLUGGED_ANY);
99 }
100
101 /**
102 * @tc.name WorkInfoTest005
103 * @tc.desc Set workInfo charger condiiton discharging
104 * @tc.type FUNC
105 * @tc.require: SR000GGTN6 AR000GH896 AR000GH897 AR000GH898
106 */
107 HWTEST_F (WorkInfoTest, WorkInfoTest005, Function | MediumTest | Level2)
108 {
109 WorkInfo workInfo = WorkInfo();
110 workInfo.RequestChargerType(false, WorkCondition::Charger::CHARGING_UNPLUGGED);
111 EXPECT_EQ(workInfo.GetChargerType(), WorkCondition::Charger::CHARGING_UNPLUGGED);
112 }
113
114 /**
115 * @tc.name WorkInfoTest006
116 * @tc.desc Set workInfo battery condition battery changed
117 * @tc.type FUNC
118 * @tc.require: SR000GGTN6 AR000GH896 AR000GH897 AR000GH898
119 */
120 HWTEST_F (WorkInfoTest, WorkInfoTest006, Function | MediumTest | Level2)
121 {
122 WorkInfo workInfo = WorkInfo();
123 workInfo.RequestBatteryStatus(WorkCondition::BatteryStatus::BATTERY_STATUS_LOW_OR_OKAY);
124 EXPECT_EQ(workInfo.GetBatteryStatus(), WorkCondition::BatteryStatus::BATTERY_STATUS_LOW_OR_OKAY);
125 }
126
127 /**
128 * @tc.name WorkInfoTest007
129 * @tc.desc Set workInfo battery condition battery low
130 * @tc.type FUNC
131 * @tc.require: SR000GGTN6 AR000GH896 AR000GH897 AR000GH898
132 */
133 HWTEST_F (WorkInfoTest, WorkInfoTest007, Function | MediumTest | Level2)
134 {
135 WorkInfo workInfo = WorkInfo();
136 workInfo.RequestBatteryStatus(WorkCondition::BatteryStatus::BATTERY_STATUS_LOW);
137 EXPECT_EQ(workInfo.GetBatteryStatus(), WorkCondition::BatteryStatus::BATTERY_STATUS_LOW);
138 }
139
140 /**
141 * @tc.name WorkInfoTest008
142 * @tc.desc Set workInfo battery condition battery okey
143 * @tc.type FUNC
144 * @tc.require: SR000GGTN6 AR000GH896 AR000GH897 AR000GH898
145 */
146 HWTEST_F (WorkInfoTest, WorkInfoTest008, Function | MediumTest | Level2)
147 {
148 WorkInfo workInfo = WorkInfo();
149 EXPECT_EQ(workInfo.GetBatteryStatus(), WorkCondition::BatteryStatus::BATTERY_UNKNOWN);
150 workInfo.RequestBatteryStatus(WorkCondition::BatteryStatus::BATTERY_STATUS_OKAY);
151 EXPECT_EQ(workInfo.GetBatteryStatus(), WorkCondition::BatteryStatus::BATTERY_STATUS_OKAY);
152 }
153
154 /**
155 * @tc.name WorkInfoTest009
156 * @tc.desc Set workInfo storage condition storage change
157 * @tc.type FUNC
158 * @tc.require: SR000GGTN9 AR000GH89M
159 */
160 HWTEST_F (WorkInfoTest, WorkInfoTest009, Function | MediumTest | Level2)
161 {
162 WorkInfo workInfo = WorkInfo();
163 EXPECT_EQ(workInfo.GetStorageLevel(), WorkCondition::Storage::STORAGE_UNKNOWN);
164 workInfo.RequestStorageLevel(WorkCondition::Storage::STORAGE_LEVEL_LOW_OR_OKAY);
165 EXPECT_EQ(workInfo.GetStorageLevel(), WorkCondition::Storage::STORAGE_LEVEL_LOW_OR_OKAY);
166 }
167
168 /**
169 * @tc.name WorkInfoTest010
170 * @tc.desc Set workInfo storage condition storage low
171 * @tc.type FUNC
172 * @tc.require: SR000GGTN8 AR000GH89J AR000GH89K AR000GH89L
173 */
174 HWTEST_F (WorkInfoTest, WorkInfoTest010, Function | MediumTest | Level2)
175 {
176 WorkInfo workInfo = WorkInfo();
177 workInfo.RequestStorageLevel(WorkCondition::Storage::STORAGE_LEVEL_LOW);
178 EXPECT_EQ(workInfo.GetStorageLevel(), WorkCondition::Storage::STORAGE_LEVEL_LOW);
179 }
180
181 /**
182 * @tc.name WorkInfoTest011
183 * @tc.desc Set workInfo storage condition storage ok
184 * @tc.type FUNC
185 * @tc.require: SR000GGTNB AR000GH89Q
186 */
187 HWTEST_F (WorkInfoTest, WorkInfoTest011, Function | MediumTest | Level2)
188 {
189 WorkInfo workInfo = WorkInfo();
190 workInfo.RequestStorageLevel(WorkCondition::Storage::STORAGE_LEVEL_OKAY);
191 EXPECT_EQ(workInfo.GetStorageLevel(), WorkCondition::Storage::STORAGE_LEVEL_OKAY);
192 }
193
194 /**
195 * @tc.name WorkInfoTest012
196 * @tc.desc Set workInfo network condition
197 * @tc.type FUNC
198 * @tc.require: SR000GGTNA AR000GH89P AR000GH89N AR000GH89O
199 */
200 HWTEST_F (WorkInfoTest, WorkInfoTest012, Function | MediumTest | Level2)
201 {
202 WorkInfo workInfo = WorkInfo();
203 EXPECT_EQ(workInfo.GetNetworkType(), WorkCondition::Network::NETWORK_UNKNOWN);
204 workInfo.RequestNetworkType(WorkCondition::Network::NETWORK_TYPE_ANY);
205 EXPECT_EQ(workInfo.GetNetworkType(), WorkCondition::Network::NETWORK_TYPE_ANY);
206 }
207
208 /**
209 * @tc.name WorkInfoTest013
210 * @tc.desc Set workInfo repeat time condition repeat count 3
211 * @tc.type FUNC
212 * @tc.require: SR000GGTNA AR000GH89P AR000GH89N AR000GH89O
213 */
214 HWTEST_F (WorkInfoTest, WorkInfoTest013, Function | MediumTest | Level2)
215 {
216 uint32_t timeInterval = 120;
217 WorkInfo workInfo = WorkInfo();
218 EXPECT_EQ(workInfo.GetTimeInterval(), 0);
219 EXPECT_EQ(workInfo.GetCycleCount(), INVALID_VALUE);
220 workInfo.RequestRepeatCycle(timeInterval, 3);
221 EXPECT_EQ(workInfo.GetTimeInterval(), timeInterval);
222 EXPECT_EQ(workInfo.IsRepeat(), false);
223 EXPECT_EQ(workInfo.GetCycleCount(), 3);
224 }
225
226 /**
227 * @tc.name WorkInfoTest014
228 * @tc.desc Set workInfo repeat time condition repeat
229 * @tc.type FUNC
230 * @tc.require: SR000GGTNA AR000GH89P AR000GH89N AR000GH89O
231 */
232 HWTEST_F (WorkInfoTest, WorkInfoTest014, Function | MediumTest | Level2)
233 {
234 uint32_t timeInterval = 120;
235 WorkInfo workInfo = WorkInfo();
236 EXPECT_EQ(workInfo.IsRepeat(), false);
237 workInfo.RequestRepeatCycle(timeInterval);
238 EXPECT_EQ(workInfo.GetTimeInterval(), timeInterval);
239 EXPECT_EQ(workInfo.IsRepeat(), true);
240 EXPECT_EQ(workInfo.GetCycleCount(), INVALID_VALUE);
241 }
242
243 /**
244 * @tc.name WorkInfoTest015
245 * @tc.desc Set workInfo battery level
246 * @tc.type FUNC
247 * @tc.require: issueI5Y6YK
248 */
249 HWTEST_F (WorkInfoTest, WorkInfoTest015, Function | MediumTest | Level2)
250 {
251 WorkInfo workInfo = WorkInfo();
252 EXPECT_EQ(workInfo.GetBatteryLevel(), INVALID_VALUE);
253 workInfo.RequestBatteryLevel(1);
254 EXPECT_EQ(workInfo.GetBatteryLevel(), 1);
255 }
256
257 /**
258 * @tc.name WorkInfoTest016
259 * @tc.desc Set workInfo RefreshUid
260 * @tc.type FUNC
261 * @tc.require: issueI5Y6YK
262 */
263 HWTEST_F (WorkInfoTest, WorkInfoTest016, Function | MediumTest | Level2)
264 {
265 WorkInfo workInfo = WorkInfo();
266 workInfo.RefreshUid(0);
267 EXPECT_EQ(workInfo.GetUid(), 0);
268 }
269
270 /**
271 * @tc.name WorkInfoTest017
272 * @tc.desc Set workInfo extras
273 * @tc.type FUNC
274 * @tc.require: issueI5Y6YK
275 */
276 HWTEST_F (WorkInfoTest, WorkInfoTest017, Function | MediumTest | Level2)
277 {
278 WorkInfo workInfo = WorkInfo();
279 AAFwk::WantParams extras;
280 workInfo.RequestExtras(extras);
281 auto extrasRead = workInfo.GetExtras();
282 if (extras == *extrasRead.get()) {
283 EXPECT_TRUE(true);
284 } else {
285 EXPECT_FALSE(true);
286 }
287 }
288
289 /**
290 * @tc.name WorkInfoTest018
291 * @tc.desc Set workInfo GetConditionMap
292 * @tc.type FUNC
293 * @tc.require: issueI5Y6YK
294 */
295 HWTEST_F (WorkInfoTest, WorkInfoTest018, Function | MediumTest | Level2)
296 {
297 WorkInfo workInfo = WorkInfo();
298 workInfo.GetConditionMap();
299 std::string result;
300 workInfo.Dump(result);
301 EXPECT_NE(result, "");
302 }
303
304 /**
305 * @tc.name WorkInfoTestJson001
306 * @tc.desc Set workInfo json func
307 * @tc.type FUNC
308 * @tc.require: issueI5Y6YK
309 */
310 HWTEST_F (WorkInfoTest, WorkInfoTestJson001, Function | MediumTest | Level2)
311 {
312 WorkInfo workInfo = WorkInfo();
313 std::string res = workInfo.ParseToJsonStr();
314
315 workInfo.RequestBatteryStatus(WorkCondition::BatteryStatus::BATTERY_STATUS_OKAY);
316 workInfo.RequestChargerType(true, WorkCondition::Charger::CHARGING_PLUGGED_ANY);
317 workInfo.RequestStorageLevel(WorkCondition::Storage::STORAGE_LEVEL_LOW);
318 workInfo.RequestNetworkType(WorkCondition::Network::NETWORK_TYPE_ANY);
319 workInfo.RequestBatteryLevel(1);
320 uint32_t timeInterval = 120;
321 workInfo.RequestRepeatCycle(timeInterval);
322 res = workInfo.ParseToJsonStr();
323
324 workInfo.saId_ = 1000;
325 workInfo.residentSa_ = true;
326 res = workInfo.ParseToJsonStr();
327
328 workInfo.RefreshUid(1);
329 workInfo.RequestRepeatCycle(timeInterval, 3);
330 AAFwk::WantParams extras;
331 extras.SetParam("key1", OHOS::AAFwk::String::Box("value1"));
332 workInfo.RequestExtras(extras);
333 res = workInfo.ParseToJsonStr();
334
335 std::shared_ptr<Condition> condUnknown = std::make_shared<Condition>();
336 condUnknown->boolVal = true;
337 workInfo.conditionMap_.emplace(WorkCondition::Type::UNKNOWN, condUnknown);
338 res = workInfo.ParseToJsonStr();
339 EXPECT_NE(res, "");
340 }
341
342 /**
343 * @tc.name WorkInfoTestJson002
344 * @tc.desc Set workInfo json func
345 * @tc.type FUNC
346 * @tc.require: issueI5Y6YK
347 */
348 HWTEST_F (WorkInfoTest, WorkInfoTestJson002, Function | MediumTest | Level2)
349 {
350 using namespace OHOS::WorkScheduler;
351 WorkInfo workInfo = WorkInfo();
352 nlohmann::json root;
353 bool res = workInfo.ParseFromJson(root);
354 EXPECT_FALSE(res);
355
356 root["workId"] = 1;
357 res = workInfo.ParseFromJson(root);
358 EXPECT_FALSE(res);
359
360 root.clear();
361 root["bundleName"] = "bundleName";
362 res = workInfo.ParseFromJson(root);
363 EXPECT_FALSE(res);
364
365 root.clear();
366 root["abilityName"] = "abilityName";
367 res = workInfo.ParseFromJson(root);
368 EXPECT_FALSE(res);
369
370 root.clear();
371 root["workId"] = 1;
372 root["bundleName"] = "bundleName";
373 res = workInfo.ParseFromJson(root);
374 EXPECT_FALSE(res);
375
376 root.clear();
377 root["workId"] = 1;
378 root["abilityName"] = "abilityName";
379 res = workInfo.ParseFromJson(root);
380 EXPECT_FALSE(res);
381
382 root.clear();
383 root["bundleName"] = "bundleName";
384 root["abilityName"] = "abilityName";
385 res = workInfo.ParseFromJson(root);
386 EXPECT_FALSE(res);
387
388 root.clear();
389 root["workId"] = 1;
390 root["bundleName"] = "bundleName";
391 root["abilityName"] = "abilityName";
392 root["persisted"] = false;
393 root["uriKey"] = "uriKey";
394 root["callBySystemApp"] = false;
395 res = workInfo.ParseFromJson(root);
396 EXPECT_TRUE(res);
397 }
398
399 /**
400 * @tc.name WorkInfoTestJson003
401 * @tc.desc Set workInfo json func
402 * @tc.type FUNC
403 * @tc.require: issueI5Y6YK
404 */
405 HWTEST_F (WorkInfoTest, WorkInfoTestJson003, Function | MediumTest | Level2)
406 {
407 WorkInfo workInfo = WorkInfo();
408 nlohmann::json root;
409 root["workId"] = 1;
410 root["bundleName"] = "bundleName";
411 root["abilityName"] = "abilityName";
412 root["uid"] = 1;
413 nlohmann::json conditions;
414 conditions["network"] = 0;
415 conditions["isCharging"] = true;
416 conditions["batteryLevel"] = 0;
417 conditions["batteryStatus"] = 0;
418 conditions["storage"] = 0;
419 conditions["timer"] = 0;
420 root["conditions"] = conditions;
421 bool res = workInfo.ParseFromJson(root);
422 EXPECT_TRUE(res);
423
424 conditions.clear();
425 conditions["chargerType"] = 0;
426 conditions["repeat"] = true;
427 root["conditions"] = conditions;
428 res = workInfo.ParseFromJson(root);
429 EXPECT_TRUE(res);
430
431 conditions.clear();
432 conditions["isCharging"] = true;
433 conditions["chargerType"] = 0;
434 conditions["timer"] = 0;
435 conditions["repeat"] = true;
436 conditions["cycle"] = 0;
437 root["conditions"] = conditions;
438 res = workInfo.ParseFromJson(root);
439 EXPECT_TRUE(res);
440
441 conditions.clear();
442 conditions["timer"] = 0;
443 conditions["repeat"] = true;
444 root["conditions"] = conditions;
445 res = workInfo.ParseFromJson(root);
446 EXPECT_TRUE(res);
447
448 conditions.clear();
449 conditions["timer"] = 0;
450 conditions["repeat"] = false;
451 root["conditions"] = conditions;
452 res = workInfo.ParseFromJson(root);
453 EXPECT_TRUE(res);
454 }
455
456 /**
457 * @tc.name WorkInfoTestJson004
458 * @tc.desc Set workInfo json func
459 * @tc.type FUNC
460 * @tc.require: issueI5Y6YK
461 */
462 HWTEST_F (WorkInfoTest, WorkInfoTestJson004, Function | MediumTest | Level2)
463 {
464 WorkInfo workInfo = WorkInfo();
465 nlohmann::json root;
466 root["workId"] = 1;
467 root["bundleName"] = "bundleName";
468 root["abilityName"] = "abilityName";
469 root["uid"] = 1;
470 nlohmann::json extrasJson;
471 extrasJson["key1"] = "value1";
472 extrasJson["key2"] = "value2";
473 root["parameters"] = extrasJson;
474 nlohmann::json extrasType;
475 extrasType["key1"] = 9;
476 extrasType["key2"] = -1;
477 root["parametersType"] = extrasType;
478 bool res = workInfo.ParseFromJson(root);
479 EXPECT_TRUE(res);
480 }
481
482 /**
483 * @tc.name WorkInfoTestJson005
484 * @tc.desc Set workInfo json func
485 * @tc.type FUNC
486 * @tc.require: issueI5Y6YK
487 */
488 HWTEST_F (WorkInfoTest, WorkInfoTestJson005, Function | MediumTest | Level2)
489 {
490 using namespace OHOS::WorkScheduler;
491 WorkInfo workInfo = WorkInfo();
492 nlohmann::json root;
493 root.clear();
494 root["workId"] = "1";
495 bool res = workInfo.ParseFromJson(root);
496 EXPECT_FALSE(res);
497
498 root.clear();
499 root["bundleName"] = 1;
500 res = workInfo.ParseFromJson(root);
501 EXPECT_FALSE(res);
502
503 root.clear();
504 root["abilityName"] = 1;
505 res = workInfo.ParseFromJson(root);
506 EXPECT_FALSE(res);
507 }
508
509 /**
510 * @tc.name WorkInfoTestJson006
511 * @tc.desc Set workInfo json func
512 * @tc.type FUNC
513 * @tc.require: issueI5Y6YK
514 */
515 HWTEST_F (WorkInfoTest, WorkInfoTestJson006, Function | MediumTest | Level2)
516 {
517 using namespace OHOS::WorkScheduler;
518 WorkInfo workInfo = WorkInfo();
519 nlohmann::json root;
520 root.clear();
521 root["workId"] = 1;
522 root["bundleName"] = "bundleName";
523 root["abilityName"] = "abilityName";
524 root["saId"] = "1";
525 root["residentSa"] = true;
526 bool res = workInfo.ParseFromJson(root);
527 EXPECT_TRUE(res);
528
529 root.clear();
530 root["workId"] = 1;
531 root["bundleName"] = "bundleName";
532 root["abilityName"] = "abilityName";
533 root["saId"] = 1;
534 root["residentSa"] = "true";
535 res = workInfo.ParseFromJson(root);
536 EXPECT_TRUE(res);
537
538 root.clear();
539 root["workId"] = 1;
540 root["bundleName"] = "bundleName";
541 root["abilityName"] = "abilityName";
542 root["saId"] = 1;
543 root["residentSa"] = true;
544 res = workInfo.ParseFromJson(root);
545 EXPECT_TRUE(res);
546 }
547
548 /**
549 * @tc.name WorkInfoTest019
550 * @tc.desc Set workInfo Marshalling and Unmarshalling
551 * @tc.type FUNC
552 * @tc.require: issueI5Y6YK
553 */
554 HWTEST_F (WorkInfoTest, WorkInfoTest019, Function | MediumTest | Level2)
555 {
556 WorkInfo workInfo = WorkInfo();
557 workInfo.SetElement("bundle_name", "ability_name");
558 workInfo.RequestBatteryStatus(WorkCondition::BatteryStatus::BATTERY_STATUS_OKAY);
559 MessageParcel data;
560 WRITE_PARCEL_WITHOUT_RET(data, Parcelable, &workInfo);
561 sptr<WorkInfo> workInfoRead = data.ReadStrongParcelable<WorkInfo>();
562 EXPECT_EQ(workInfo.GetBatteryStatus(), workInfoRead->GetBatteryStatus());
563
564 workInfo.RequestChargerType(true, WorkCondition::Charger::CHARGING_PLUGGED_ANY);
565 WRITE_PARCEL_WITHOUT_RET(data, Parcelable, &workInfo);
566 workInfoRead = data.ReadStrongParcelable<WorkInfo>();
567 EXPECT_EQ(workInfo.GetChargerType(), workInfoRead->GetChargerType());
568
569 workInfo.RequestStorageLevel(WorkCondition::Storage::STORAGE_LEVEL_LOW);
570 WRITE_PARCEL_WITHOUT_RET(data, Parcelable, &workInfo);
571 workInfoRead = data.ReadStrongParcelable<WorkInfo>();
572 EXPECT_EQ(workInfo.GetStorageLevel(), workInfoRead->GetStorageLevel());
573
574 workInfo.RequestNetworkType(WorkCondition::Network::NETWORK_TYPE_ANY);
575 WRITE_PARCEL_WITHOUT_RET(data, Parcelable, &workInfo);
576 workInfoRead = data.ReadStrongParcelable<WorkInfo>();
577 EXPECT_EQ(workInfo.GetNetworkType(), workInfoRead->GetNetworkType());
578
579 workInfo.RequestBatteryLevel(1);
580 WRITE_PARCEL_WITHOUT_RET(data, Parcelable, &workInfo);
581 workInfoRead = data.ReadStrongParcelable<WorkInfo>();
582 EXPECT_EQ(workInfo.GetBatteryLevel(), workInfoRead->GetBatteryLevel());
583
584 uint32_t timeInterval = 120;
585 workInfo.RequestRepeatCycle(timeInterval);
586 WRITE_PARCEL_WITHOUT_RET(data, Parcelable, &workInfo);
587 workInfoRead = data.ReadStrongParcelable<WorkInfo>();
588 EXPECT_EQ(workInfo.GetTimeInterval(), workInfoRead->GetTimeInterval());
589
590 workInfo.RequestRepeatCycle(timeInterval, 3);
591 WRITE_PARCEL_WITHOUT_RET(data, Parcelable, &workInfo);
592 workInfoRead = data.ReadStrongParcelable<WorkInfo>();
593 EXPECT_EQ(workInfo.GetTimeInterval(), workInfoRead->GetTimeInterval());
594 }
595
596 /**
597 * @tc.name WorkInfoTest020
598 * @tc.desc Set workInfo Marshalling and Unmarshalling with extras.
599 * @tc.type FUNC
600 * @tc.require: issueI5Y6YK
601 */
602 HWTEST_F (WorkInfoTest, WorkInfoTest020, Function | MediumTest | Level2)
603 {
604 WorkInfo workInfo = WorkInfo();
605 workInfo.SetElement("bundle_name", "ability_name");
606 workInfo.RequestBatteryStatus(WorkCondition::BatteryStatus::BATTERY_STATUS_OKAY);
607 MessageParcel data;
608 AAFwk::WantParams extras;
609 workInfo.RequestExtras(extras);
610 WRITE_PARCEL_WITHOUT_RET(data, Parcelable, &workInfo);
611 sptr<WorkInfo> workInfoRead = data.ReadStrongParcelable<WorkInfo>();
612 EXPECT_EQ(workInfo.GetBundleName(), workInfoRead->GetBundleName());
613
614 extras.SetParam("key1", OHOS::AAFwk::String::Box("value1"));
615 workInfo.RequestExtras(extras);
616 WRITE_PARCEL_WITHOUT_RET(data, Parcelable, &workInfo);
617 workInfoRead = data.ReadStrongParcelable<WorkInfo>();
618 std::string valueRead = workInfoRead->GetExtras()->GetStringParam("key1");
619 EXPECT_EQ(valueRead, "value1");
620
621 std::shared_ptr<Condition> condNetWork = std::make_shared<Condition>();
622 condNetWork->enumVal = WorkCondition::Network::NETWORK_TYPE_ANY;
623 workInfo.conditionMap_.emplace(WorkCondition::Type::NETWORK, condNetWork);
624 WRITE_PARCEL_WITHOUT_RET(data, Parcelable, &workInfo);
625 workInfoRead = data.ReadStrongParcelable<WorkInfo>();
626 auto condRead = workInfoRead->GetConditionMap();
627 EXPECT_EQ(workInfoRead->GetConditionMap()->size(), 2);
628 }
629 /**
630 * @tc.name WorkInfoTest021
631 * @tc.desc test SetCallBySystemApp.
632 * @tc.type FUNC
633 * @tc.require: issueI5Y6YK
634 */
635 HWTEST_F (WorkInfoTest, WorkInfoTest021, Function | MediumTest | Level2)
636 {
637 WorkInfo workInfo = WorkInfo();
638 workInfo.SetCallBySystemApp(true);
639 EXPECT_TRUE(workInfo.IsCallBySystemApp());
640 }
641
642 /**
643 * @tc.name WorkInfoTest022
644 * @tc.desc test SetCallBySystemApp.
645 * @tc.type FUNC
646 * @tc.require: issueI5Y6YK
647 */
648 HWTEST_F (WorkInfoTest, WorkInfoTest022, Function | MediumTest | Level2)
649 {
650 WorkInfo workInfo = WorkInfo();
651 time_t result;
652 time(&result);
653 workInfo.RequestRepeatCycle(20000);
654 workInfo.RequestBaseTimeAndCycle(result, 20);
655 EXPECT_TRUE(workInfo.IsRepeat());
656 }
657
658 /**
659 * @tc.name WorkInfoTest023
660 * @tc.desc test SetIsInnerApply and GetIsInnerApply.
661 * @tc.type FUNC
662 * @tc.require: issue:#ICBWOI
663 */
664 HWTEST_F (WorkInfoTest, WorkInfoTest023, Function | MediumTest | Level2)
665 {
666 WorkInfo workInfo = WorkInfo();
667 workInfo.SetIsInnerApply(true);
668 EXPECT_TRUE(workInfo.GetIsInnerApply());
669 }
670
671 /**
672 * @tc.name WorkSchedUtils001
673 * @tc.desc test GetCurrentAccountId
674 * @tc.type FUNC
675 * @tc.require: issueI5Y6YK
676 */
677 HWTEST_F (WorkInfoTest, WorkSchedUtils001, Function | MediumTest | Level2)
678 {
679 int32_t res = WorkSchedUtils::GetCurrentAccountId();
680 EXPECT_NE(res, -1000);
681 }
682
683 /**
684 * @tc.name WorkSchedUtils002
685 * @tc.desc test IsIdActive
686 * @tc.type FUNC
687 * @tc.require: issueI5Y6YK
688 */
689 HWTEST_F (WorkInfoTest, WorkSchedUtils002, Function | MediumTest | Level2)
690 {
691 bool res = WorkSchedUtils::IsIdActive(0);
692 EXPECT_FALSE(res);
693 }
694
695 /**
696 * @tc.name WorkSchedUtils003
697 * @tc.desc test GetUserIdByUid
698 * @tc.type FUNC
699 * @tc.require: issueI5Y6YK
700 */
701 HWTEST_F (WorkInfoTest, WorkSchedUtils003, Function | MediumTest | Level2)
702 {
703 int32_t res = WorkSchedUtils::GetUserIdByUid(1);
704 EXPECT_EQ(res, 0);
705 res = WorkSchedUtils::GetUserIdByUid(INVALID_VALUE);
706 EXPECT_EQ(res, INVALID_VALUE);
707 }
708
709 /**
710 * @tc.name WorkSchedUtils004
711 * @tc.desc test ConvertFullPath
712 * @tc.type FUNC
713 * @tc.require: issueI5Y6YK
714 */
715 HWTEST_F (WorkInfoTest, WorkSchedUtils004, Function | MediumTest | Level2)
716 {
717 std::string partialPath;
718 std::string fullPath;
719 bool res = WorkSchedUtils::ConvertFullPath(partialPath, fullPath);
720 EXPECT_FALSE(res);
721
722 std::string partialPathLong(4097, 'c');
723 res = WorkSchedUtils::ConvertFullPath(partialPathLong, fullPath);
724 EXPECT_FALSE(res);
725
726 partialPath = "partialPath";
727 res = WorkSchedUtils::ConvertFullPath(partialPath, fullPath);
728 EXPECT_FALSE(res);
729
730 partialPath = "/data";
731 res = WorkSchedUtils::ConvertFullPath(partialPath, fullPath);
732 EXPECT_TRUE(res);
733 }
734
735 /**
736 * @tc.name WorkSchedUtils006
737 * @tc.desc test IsSystemApp
738 * @tc.type FUNC
739 * @tc.require: issueI5Y6YK
740 */
741 HWTEST_F (WorkInfoTest, WorkSchedUtils006, Function | MediumTest | Level2)
742 {
743 bool res = WorkSchedUtils::IsSystemApp();
744 EXPECT_EQ(res, false);
745 }
746
747 /**
748 * @tc.name GetSaId001
749 * @tc.desc test GetSaId and IsResidentSa
750 * @tc.type FUNC
751 * @tc.require: issueIAHY0B
752 */
753 HWTEST_F (WorkInfoTest, GetSaId001, Function | MediumTest | Level2)
754 {
755 int32_t saId = 5300;
756 WorkInfo workInfo = WorkInfo();
757 workInfo.RefreshSaId(saId);
758 int32_t id = workInfo.GetSaId();
759 EXPECT_EQ(id, saId);
760
761 bool residentSa = workInfo.IsResidentSa();
762 EXPECT_FALSE(residentSa);
763 }
764 } // namespace WorkScheduler
765 } // namespace OHOS