• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 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 <functional>
17 #include <gtest/gtest.h>
18 #include "gmock/gmock.h"
19 
20 #include "work_queue_manager.h"
21 #include "work_scheduler_service.h"
22 #include "work_standby_state_change_callback.h"
23 #include "work_sched_data_manager.h"
24 #include "work_sched_utils.h"
25 
26 using namespace testing::ext;
27 
28 namespace OHOS {
29 namespace WorkScheduler {
30 class WorkStandbyStateChangeCallbackTest : public testing::Test {
31 public:
32     static void SetUpTestCase();
TearDownTestCase()33     static void TearDownTestCase() {}
SetUp()34     void SetUp() {}
TearDown()35     void TearDown() {}
36     static std::shared_ptr<WorkStandbyStateChangeCallback> callback_;
37     static std::shared_ptr<DataManager> dataManager_;
38 };
39 
40 std::shared_ptr<WorkStandbyStateChangeCallback> WorkStandbyStateChangeCallbackTest::callback_ = nullptr;
41 std::shared_ptr<DataManager> WorkStandbyStateChangeCallbackTest::dataManager_ = nullptr;
42 
SetUpTestCase()43 void WorkStandbyStateChangeCallbackTest::SetUpTestCase()
44 {
45     std::shared_ptr<WorkSchedulerService> workSchedulerService_ = std::make_shared<WorkSchedulerService>();
46     std::shared_ptr<WorkQueueManager> workQueueManger_ = std::make_shared<WorkQueueManager>(workSchedulerService_);
47     callback_ = std::make_shared<WorkStandbyStateChangeCallback>(workQueueManger_);
48 
49     dataManager_ = DelayedSingleton<DataManager>::GetInstance();
50 }
51 
52 /**
53  * @tc.name: OnDeviceIdleMode_001
54  * @tc.desc: Test WorkStandbyStateChangeCallbackTest OnDeviceIdleMode.
55  * @tc.type: FUNC
56  * @tc.require: https://gitee.com/openharmony/resourceschedule_work_scheduler/issues/ICB1SP
57  */
58 HWTEST_F(WorkStandbyStateChangeCallbackTest, OnDeviceIdleMode_001, TestSize.Level1)
59 {
60     dataManager_->SetDeviceSleep(false);
61     callback_->OnDeviceIdleMode(true, false);
62     EXPECT_FALSE(dataManager_->GetDeviceSleep());
63 }
64 
65 /**
66  * @tc.name: OnDeviceIdleMode_002
67  * @tc.desc: Test WorkStandbyStateChangeCallbackTest OnDeviceIdleMode.
68  * @tc.type: FUNC
69  * @tc.require: https://gitee.com/openharmony/resourceschedule_work_scheduler/issues/ICB1SP
70  */
71 HWTEST_F(WorkStandbyStateChangeCallbackTest, OnDeviceIdleMode_002, TestSize.Level1)
72 {
73     dataManager_->SetDeviceSleep(false);
74     callback_->OnDeviceIdleMode(false, true);
75     EXPECT_TRUE(dataManager_->GetDeviceSleep());
76 }
77 
78 /**
79  * @tc.name: OnDeviceIdleMode_003
80  * @tc.desc: Test WorkStandbyStateChangeCallbackTest OnDeviceIdleMode.
81  * @tc.type: FUNC
82  * @tc.require: https://gitee.com/openharmony/resourceschedule_work_scheduler/issues/ICB1SP
83  */
84 HWTEST_F(WorkStandbyStateChangeCallbackTest, OnDeviceIdleMode_003, TestSize.Level1)
85 {
86     dataManager_->SetDeviceSleep(false);
87     callback_->OnDeviceIdleMode(false, false);
88     EXPECT_FALSE(dataManager_->GetDeviceSleep());
89 }
90 
91 /**
92  * @tc.name: OnDeviceIdleMode_004
93  * @tc.desc: Test WorkStandbyStateChangeCallbackTest OnDeviceIdleMode.
94  * @tc.type: FUNC
95  * @tc.require: https://gitee.com/openharmony/resourceschedule_work_scheduler/issues/ICB1SP
96  */
97 HWTEST_F(WorkStandbyStateChangeCallbackTest, OnDeviceIdleMode_004, TestSize.Level1)
98 {
99     dataManager_->SetDeviceSleep(false);
100     callback_->OnDeviceIdleMode(true, true);
101     EXPECT_TRUE(dataManager_->GetDeviceSleep());
102 }
103 
104 /**
105  * @tc.name: OnDeviceIdleMode_005
106  * @tc.desc: Test WorkStandbyStateChangeCallbackTest OnDeviceIdleMode.
107  * @tc.type: FUNC
108  * @tc.require: https://gitee.com/openharmony/resourceschedule_work_scheduler/issues/ICB1SP
109  */
110 HWTEST_F(WorkStandbyStateChangeCallbackTest, OnDeviceIdleMode_005, TestSize.Level1)
111 {
112     dataManager_->SetDeviceSleep(true);
113     callback_->OnDeviceIdleMode(false, true);
114     EXPECT_TRUE(dataManager_->GetDeviceSleep());
115 }
116 }
117 }