• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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