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 | Level0)
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 | Level0)
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 | Level0)
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 | Level0)
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 | Level0)
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 | Level0)
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 | Level0)
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 | Level0)
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 | Level0)
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 | Level0)
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 | Level0)
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 | Level0)
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 | Level0)
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 | Level0)
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 | Level0)
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 | Level0)
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 | Level0)
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 | Level0)
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 | Level0)
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.RefreshUid(1);
325 workInfo.RequestRepeatCycle(timeInterval, 3);
326 AAFwk::WantParams extras;
327 extras.SetParam("key1", OHOS::AAFwk::String::Box("value1"));
328 workInfo.RequestExtras(extras);
329 res = workInfo.ParseToJsonStr();
330
331 std::shared_ptr<Condition> condUnknown = std::make_shared<Condition>();
332 condUnknown->boolVal = true;
333 workInfo.conditionMap_.emplace(WorkCondition::Type::UNKNOWN, condUnknown);
334 res = workInfo.ParseToJsonStr();
335 EXPECT_NE(res, "");
336 }
337
338 /**
339 * @tc.name WorkInfoTestJson002
340 * @tc.desc Set workInfo json func
341 * @tc.type FUNC
342 * @tc.require: issueI5Y6YK
343 */
344 HWTEST_F (WorkInfoTest, WorkInfoTestJson002, Function | MediumTest | Level0)
345 {
346 using namespace OHOS::WorkScheduler;
347 WorkInfo workInfo = WorkInfo();
348 Json::Value root;
349 bool res = workInfo.ParseFromJson(root);
350 EXPECT_FALSE(res);
351
352 root["workId"] = 1;
353 res = workInfo.ParseFromJson(root);
354 EXPECT_FALSE(res);
355
356 root.clear();
357 root["bundleName"] = "bundleName";
358 res = workInfo.ParseFromJson(root);
359 EXPECT_FALSE(res);
360
361 root.clear();
362 root["abilityName"] = "abilityName";
363 res = workInfo.ParseFromJson(root);
364 EXPECT_FALSE(res);
365
366 root.clear();
367 root["workId"] = 1;
368 root["bundleName"] = "bundleName";
369 res = workInfo.ParseFromJson(root);
370 EXPECT_FALSE(res);
371
372 root.clear();
373 root["workId"] = 1;
374 root["abilityName"] = "abilityName";
375 res = workInfo.ParseFromJson(root);
376 EXPECT_FALSE(res);
377
378 root.clear();
379 root["bundleName"] = "bundleName";
380 root["abilityName"] = "abilityName";
381 res = workInfo.ParseFromJson(root);
382 EXPECT_FALSE(res);
383
384 root.clear();
385 root["workId"] = 1;
386 root["bundleName"] = "bundleName";
387 root["abilityName"] = "abilityName";
388 root["persisted"] = false;
389 root["uriKey"] = "uriKey";
390 root["callBySystemApp"] = false;
391 res = workInfo.ParseFromJson(root);
392 EXPECT_TRUE(res);
393 }
394
395 /**
396 * @tc.name WorkInfoTestJson003
397 * @tc.desc Set workInfo json func
398 * @tc.type FUNC
399 * @tc.require: issueI5Y6YK
400 */
401 HWTEST_F (WorkInfoTest, WorkInfoTestJson003, Function | MediumTest | Level0)
402 {
403 WorkInfo workInfo = WorkInfo();
404 Json::Value root;
405 root["workId"] = 1;
406 root["bundleName"] = "bundleName";
407 root["abilityName"] = "abilityName";
408 root["uid"] = 1;
409 Json::Value conditions;
410 conditions["network"] = 0;
411 conditions["isCharging"] = true;
412 conditions["batteryLevel"] = 0;
413 conditions["batteryStatus"] = 0;
414 conditions["storage"] = 0;
415 conditions["timer"] = 0;
416 root["conditions"] = conditions;
417 bool res = workInfo.ParseFromJson(root);
418 EXPECT_TRUE(res);
419
420 conditions.clear();
421 conditions["chargerType"] = 0;
422 conditions["repeat"] = true;
423 root["conditions"] = conditions;
424 res = workInfo.ParseFromJson(root);
425 EXPECT_TRUE(res);
426
427 conditions.clear();
428 conditions["isCharging"] = true;
429 conditions["chargerType"] = 0;
430 conditions["timer"] = 0;
431 conditions["repeat"] = true;
432 conditions["cycle"] = 0;
433 root["conditions"] = conditions;
434 res = workInfo.ParseFromJson(root);
435 EXPECT_TRUE(res);
436
437 conditions.clear();
438 conditions["timer"] = 0;
439 conditions["repeat"] = true;
440 root["conditions"] = conditions;
441 res = workInfo.ParseFromJson(root);
442 EXPECT_TRUE(res);
443
444 conditions.clear();
445 conditions["timer"] = 0;
446 conditions["repeat"] = false;
447 root["conditions"] = conditions;
448 res = workInfo.ParseFromJson(root);
449 EXPECT_TRUE(res);
450 }
451
452 /**
453 * @tc.name WorkInfoTestJson004
454 * @tc.desc Set workInfo json func
455 * @tc.type FUNC
456 * @tc.require: issueI5Y6YK
457 */
458 HWTEST_F (WorkInfoTest, WorkInfoTestJson004, Function | MediumTest | Level0)
459 {
460 WorkInfo workInfo = WorkInfo();
461 Json::Value root;
462 root["workId"] = 1;
463 root["bundleName"] = "bundleName";
464 root["abilityName"] = "abilityName";
465 root["uid"] = 1;
466 Json::Value extrasJson;
467 extrasJson["key1"] = "value1";
468 extrasJson["key2"] = "value2";
469 root["parameters"] = extrasJson;
470 Json::Value extrasType;
471 extrasType["key1"] = 9;
472 extrasType["key2"] = -1;
473 root["parametersType"] = extrasType;
474 bool res = workInfo.ParseFromJson(root);
475 EXPECT_TRUE(res);
476 }
477
478 /**
479 * @tc.name WorkInfoTestJson005
480 * @tc.desc Set workInfo json func
481 * @tc.type FUNC
482 * @tc.require: issueI5Y6YK
483 */
484 HWTEST_F (WorkInfoTest, WorkInfoTestJson005, Function | MediumTest | Level0)
485 {
486 using namespace OHOS::WorkScheduler;
487 WorkInfo workInfo = WorkInfo();
488 Json::Value root;
489 root.clear();
490 root["workId"] = "1";
491 bool res = workInfo.ParseFromJson(root);
492 EXPECT_FALSE(res);
493
494 root.clear();
495 root["bundleName"] = 1;
496 res = workInfo.ParseFromJson(root);
497 EXPECT_FALSE(res);
498
499 root.clear();
500 root["abilityName"] = 1;
501 res = workInfo.ParseFromJson(root);
502 EXPECT_FALSE(res);
503 }
504
505 /**
506 * @tc.name WorkInfoTest019
507 * @tc.desc Set workInfo Marshalling and Unmarshalling
508 * @tc.type FUNC
509 * @tc.require: issueI5Y6YK
510 */
511 HWTEST_F (WorkInfoTest, WorkInfoTest019, Function | MediumTest | Level0)
512 {
513 WorkInfo workInfo = WorkInfo();
514 workInfo.SetElement("bundle_name", "ability_name");
515 workInfo.RequestBatteryStatus(WorkCondition::BatteryStatus::BATTERY_STATUS_OKAY);
516 MessageParcel data;
517 WRITE_PARCEL_WITHOUT_RET(data, Parcelable, &workInfo);
518 sptr<WorkInfo> workInfoRead = data.ReadStrongParcelable<WorkInfo>();
519 EXPECT_EQ(workInfo.GetBatteryStatus(), workInfoRead->GetBatteryStatus());
520
521 workInfo.RequestChargerType(true, WorkCondition::Charger::CHARGING_PLUGGED_ANY);
522 WRITE_PARCEL_WITHOUT_RET(data, Parcelable, &workInfo);
523 workInfoRead = data.ReadStrongParcelable<WorkInfo>();
524 EXPECT_EQ(workInfo.GetChargerType(), workInfoRead->GetChargerType());
525
526 workInfo.RequestStorageLevel(WorkCondition::Storage::STORAGE_LEVEL_LOW);
527 WRITE_PARCEL_WITHOUT_RET(data, Parcelable, &workInfo);
528 workInfoRead = data.ReadStrongParcelable<WorkInfo>();
529 EXPECT_EQ(workInfo.GetStorageLevel(), workInfoRead->GetStorageLevel());
530
531 workInfo.RequestNetworkType(WorkCondition::Network::NETWORK_TYPE_ANY);
532 WRITE_PARCEL_WITHOUT_RET(data, Parcelable, &workInfo);
533 workInfoRead = data.ReadStrongParcelable<WorkInfo>();
534 EXPECT_EQ(workInfo.GetNetworkType(), workInfoRead->GetNetworkType());
535
536 workInfo.RequestBatteryLevel(1);
537 WRITE_PARCEL_WITHOUT_RET(data, Parcelable, &workInfo);
538 workInfoRead = data.ReadStrongParcelable<WorkInfo>();
539 EXPECT_EQ(workInfo.GetBatteryLevel(), workInfoRead->GetBatteryLevel());
540
541 uint32_t timeInterval = 120;
542 workInfo.RequestRepeatCycle(timeInterval);
543 WRITE_PARCEL_WITHOUT_RET(data, Parcelable, &workInfo);
544 workInfoRead = data.ReadStrongParcelable<WorkInfo>();
545 EXPECT_EQ(workInfo.GetTimeInterval(), workInfoRead->GetTimeInterval());
546
547 workInfo.RequestRepeatCycle(timeInterval, 3);
548 WRITE_PARCEL_WITHOUT_RET(data, Parcelable, &workInfo);
549 workInfoRead = data.ReadStrongParcelable<WorkInfo>();
550 EXPECT_EQ(workInfo.GetTimeInterval(), workInfoRead->GetTimeInterval());
551 }
552
553 /**
554 * @tc.name WorkInfoTest020
555 * @tc.desc Set workInfo Marshalling and Unmarshalling with extras.
556 * @tc.type FUNC
557 * @tc.require: issueI5Y6YK
558 */
559 HWTEST_F (WorkInfoTest, WorkInfoTest020, Function | MediumTest | Level0)
560 {
561 WorkInfo workInfo = WorkInfo();
562 workInfo.SetElement("bundle_name", "ability_name");
563 workInfo.RequestBatteryStatus(WorkCondition::BatteryStatus::BATTERY_STATUS_OKAY);
564 MessageParcel data;
565 AAFwk::WantParams extras;
566 workInfo.RequestExtras(extras);
567 WRITE_PARCEL_WITHOUT_RET(data, Parcelable, &workInfo);
568 sptr<WorkInfo> workInfoRead = data.ReadStrongParcelable<WorkInfo>();
569 EXPECT_EQ(workInfo.GetBundleName(), workInfoRead->GetBundleName());
570
571 extras.SetParam("key1", OHOS::AAFwk::String::Box("value1"));
572 workInfo.RequestExtras(extras);
573 WRITE_PARCEL_WITHOUT_RET(data, Parcelable, &workInfo);
574 workInfoRead = data.ReadStrongParcelable<WorkInfo>();
575 std::string valueRead = workInfoRead->GetExtras()->GetStringParam("key1");
576 EXPECT_EQ(valueRead, "value1");
577
578 std::shared_ptr<Condition> condNetWork = std::make_shared<Condition>();
579 condNetWork->enumVal = WorkCondition::Network::NETWORK_TYPE_ANY;
580 workInfo.conditionMap_.emplace(WorkCondition::Type::NETWORK, condNetWork);
581 WRITE_PARCEL_WITHOUT_RET(data, Parcelable, &workInfo);
582 workInfoRead = data.ReadStrongParcelable<WorkInfo>();
583 auto condRead = workInfoRead->GetConditionMap();
584 EXPECT_EQ(workInfoRead->GetConditionMap()->size(), 2);
585 }
586 /**
587 * @tc.name WorkInfoTest021
588 * @tc.desc test SetCallBySystemApp.
589 * @tc.type FUNC
590 * @tc.require: issueI5Y6YK
591 */
592 HWTEST_F (WorkInfoTest, WorkInfoTest021, Function | MediumTest | Level0)
593 {
594 WorkInfo workInfo = WorkInfo();
595 workInfo.SetCallBySystemApp(true);
596 EXPECT_TRUE(workInfo.IsCallBySystemApp());
597 }
598
599 /**
600 * @tc.name WorkInfoTest022
601 * @tc.desc test SetCallBySystemApp.
602 * @tc.type FUNC
603 * @tc.require: issueI5Y6YK
604 */
605 HWTEST_F (WorkInfoTest, WorkInfoTest022, Function | MediumTest | Level0)
606 {
607 WorkInfo workInfo = WorkInfo();
608 time_t result;
609 time(&result);
610 workInfo.RequestRepeatCycle(20000);
611 workInfo.RequestBaseTimeAndCycle(result, 20);
612 EXPECT_TRUE(workInfo.IsRepeat());
613 }
614
615 /**
616 * @tc.name WorkSchedUtils001
617 * @tc.desc test GetCurrentAccountId
618 * @tc.type FUNC
619 * @tc.require: issueI5Y6YK
620 */
621 HWTEST_F (WorkInfoTest, WorkSchedUtils001, Function | MediumTest | Level0)
622 {
623 int32_t res = WorkSchedUtils::GetCurrentAccountId();
624 EXPECT_NE(res, -1000);
625 }
626
627 /**
628 * @tc.name WorkSchedUtils002
629 * @tc.desc test IsIdActive
630 * @tc.type FUNC
631 * @tc.require: issueI5Y6YK
632 */
633 HWTEST_F (WorkInfoTest, WorkSchedUtils002, Function | MediumTest | Level0)
634 {
635 bool res = WorkSchedUtils::IsIdActive(0);
636 EXPECT_FALSE(res);
637 }
638
639 /**
640 * @tc.name WorkSchedUtils003
641 * @tc.desc test GetUserIdByUid
642 * @tc.type FUNC
643 * @tc.require: issueI5Y6YK
644 */
645 HWTEST_F (WorkInfoTest, WorkSchedUtils003, Function | MediumTest | Level0)
646 {
647 int32_t res = WorkSchedUtils::GetUserIdByUid(1);
648 EXPECT_EQ(res, 0);
649 res = WorkSchedUtils::GetUserIdByUid(INVALID_VALUE);
650 EXPECT_EQ(res, INVALID_VALUE);
651 }
652
653 /**
654 * @tc.name WorkSchedUtils004
655 * @tc.desc test ConvertFullPath
656 * @tc.type FUNC
657 * @tc.require: issueI5Y6YK
658 */
659 HWTEST_F (WorkInfoTest, WorkSchedUtils004, Function | MediumTest | Level0)
660 {
661 std::string partialPath;
662 std::string fullPath;
663 bool res = WorkSchedUtils::ConvertFullPath(partialPath, fullPath);
664 EXPECT_FALSE(res);
665
666 std::string partialPathLong(4097, 'c');
667 res = WorkSchedUtils::ConvertFullPath(partialPathLong, fullPath);
668 EXPECT_FALSE(res);
669
670 partialPath = "partialPath";
671 res = WorkSchedUtils::ConvertFullPath(partialPath, fullPath);
672 EXPECT_FALSE(res);
673
674 partialPath = "/data";
675 res = WorkSchedUtils::ConvertFullPath(partialPath, fullPath);
676 EXPECT_TRUE(res);
677 }
678
679 /**
680 * @tc.name WorkSchedUtils006
681 * @tc.desc test IsSystemApp
682 * @tc.type FUNC
683 * @tc.require: issueI5Y6YK
684 */
685 HWTEST_F (WorkInfoTest, WorkSchedUtils006, Function | MediumTest | Level0)
686 {
687 bool res = WorkSchedUtils::IsSystemApp();
688 EXPECT_EQ(res, false);
689 }
690
691 /**
692 * @tc.name GetSaId001
693 * @tc.desc test GetSaId and IsResidentSa
694 * @tc.type FUNC
695 * @tc.require: issueIAHY0B
696 */
697 HWTEST_F (WorkInfoTest, GetSaId001, Function | MediumTest | Level0)
698 {
699 int32_t saId = 5300;
700 WorkInfo workInfo = WorkInfo();
701 workInfo.RefreshSaId(saId);
702 int32_t id = workInfo.GetSaId();
703 EXPECT_EQ(id, saId);
704
705 bool residentSa = workInfo.IsResidentSa();
706 EXPECT_FALSE(residentSa);
707 }
708 } // namespace WorkScheduler
709 } // namespace OHOS