1 /*
2  * Copyright (c) 2022-2023 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 #ifndef FOUNDATION_ACE_FRAMEWORKS_CORE_PIPELINE_NG_TEST_MOCK_MOCK_TASK_EXECUTOR_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_PIPELINE_NG_TEST_MOCK_MOCK_TASK_EXECUTOR_H
18 
19 #include "gmock/gmock.h"
20 
21 #include "base/thread/task_executor.h"
22 #include "base/utils/utils.h"
23 
24 namespace OHOS::Ace {
25 class MockTaskExecutor : public TaskExecutor {
26 public:
27     MockTaskExecutor() = default;
MockTaskExecutor(bool delayRun)28     MockTaskExecutor(bool delayRun): delayRun_(delayRun) {}
29 
30     bool OnPostTask(Task&& task, TaskType type, uint32_t delayTime, const std::string& name,
31         PriorityType priorityType = PriorityType::LOW) const override
32     {
33         CHECK_NULL_RETURN(task, false);
34         if (delayRun_) {
35             return true;
36         }
37         task();
38         return true;
39     }
40 
WillRunOnCurrentThread(TaskType type)41     bool WillRunOnCurrentThread(TaskType type) const override
42     {
43         return true;
44     }
45 
WrapTaskWithTraceId(Task &&,int32_t)46     Task WrapTaskWithTraceId(Task&&  /*task*/, int32_t  /*id*/) const override
47     {
48         return nullptr;
49     }
50 
AddTaskObserver(Task && callback)51     void AddTaskObserver(Task&& callback) override {}
52 
RemoveTaskObserver()53     void RemoveTaskObserver() override {}
54 
RemoveTask(TaskType type,const std::string & name)55     void RemoveTask(TaskType type, const std::string &name) override {}
56 
57     bool OnPostTaskWithoutTraceId(Task&& task, TaskType type, uint32_t delayTime, const std::string& name,
58         PriorityType priorityType = PriorityType::LOW) const override
59     {
60         CHECK_NULL_RETURN(task, false);
61         if (delayRun_) {
62             return true;
63         }
64         task();
65         return true;
66     }
67 
68 private:
69     bool delayRun_ = false;
70 };
71 } // namespace OHOS::Ace
72 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_PIPELINE_NG_TEST_MOCK_MOCK_TASK_EXECUTOR_H
73