1a3e0fd82Sopenharmony_ci/*
2a3e0fd82Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
3a3e0fd82Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4a3e0fd82Sopenharmony_ci * you may not use this file except in compliance with the License.
5a3e0fd82Sopenharmony_ci * You may obtain a copy of the License at
6a3e0fd82Sopenharmony_ci *
7a3e0fd82Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8a3e0fd82Sopenharmony_ci *
9a3e0fd82Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10a3e0fd82Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11a3e0fd82Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12a3e0fd82Sopenharmony_ci * See the License for the specific language governing permissions and
13a3e0fd82Sopenharmony_ci * limitations under the License.
14a3e0fd82Sopenharmony_ci */
15a3e0fd82Sopenharmony_ci
16a3e0fd82Sopenharmony_ci#include "auto_test_manager.h"
17a3e0fd82Sopenharmony_ci
18a3e0fd82Sopenharmony_ci#include <iostream>
19a3e0fd82Sopenharmony_ci#include <memory>
20a3e0fd82Sopenharmony_ci
21a3e0fd82Sopenharmony_ci#include "dfx/event_injector.h"
22a3e0fd82Sopenharmony_ci
23a3e0fd82Sopenharmony_cinamespace OHOS {
24a3e0fd82Sopenharmony_ciAutoTestManager::AutoTestManager()
25a3e0fd82Sopenharmony_ci{
26a3e0fd82Sopenharmony_ci    SetUpTestCase();
27a3e0fd82Sopenharmony_ci}
28a3e0fd82Sopenharmony_ci
29a3e0fd82Sopenharmony_ciAutoTestManager::~AutoTestManager()
30a3e0fd82Sopenharmony_ci{
31a3e0fd82Sopenharmony_ci    TearDownTestCase();
32a3e0fd82Sopenharmony_ci}
33a3e0fd82Sopenharmony_ci
34a3e0fd82Sopenharmony_ciAutoTestManager* AutoTestManager::GetInstance()
35a3e0fd82Sopenharmony_ci{
36a3e0fd82Sopenharmony_ci    static AutoTestManager instance;
37a3e0fd82Sopenharmony_ci    return &instance;
38a3e0fd82Sopenharmony_ci}
39a3e0fd82Sopenharmony_ci
40a3e0fd82Sopenharmony_civoid AutoTestManager::SetUpTestCase()
41a3e0fd82Sopenharmony_ci{
42a3e0fd82Sopenharmony_ci    autoTest_ = std::make_shared<UIAutoTest>();
43a3e0fd82Sopenharmony_ci
44a3e0fd82Sopenharmony_ci#ifdef _WIN32
45a3e0fd82Sopenharmony_ci    const char logPath[] = ".\\auto_test_log.txt";
46a3e0fd82Sopenharmony_ci    CompareTools::SetLogPath(logPath, sizeof(logPath));
47a3e0fd82Sopenharmony_ci#else
48a3e0fd82Sopenharmony_ci    const char logPath[] = "./auto_test_log.txt";
49a3e0fd82Sopenharmony_ci    CompareTools::SetLogPath(logPath, sizeof(logPath));
50a3e0fd82Sopenharmony_ci#endif
51a3e0fd82Sopenharmony_ci    EventInjector::GetInstance()->RegisterEventInjector(EventDataType::POINT_TYPE);
52a3e0fd82Sopenharmony_ci    EventInjector::GetInstance()->RegisterEventInjector(EventDataType::KEY_TYPE);
53a3e0fd82Sopenharmony_ci#if defined(ENABLE_WINDOW) && ENABLE_WINDOW
54a3e0fd82Sopenharmony_ci    Window* window = RootView::GetInstance()->GetBoundWindow();
55a3e0fd82Sopenharmony_ci    if (window != nullptr) {
56a3e0fd82Sopenharmony_ci        EventInjector::GetInstance()->SetWindowId(window->GetWindowId());
57a3e0fd82Sopenharmony_ci    }
58a3e0fd82Sopenharmony_ci#endif
59a3e0fd82Sopenharmony_ci}
60a3e0fd82Sopenharmony_ci
61a3e0fd82Sopenharmony_civoid AutoTestManager::TearDownTestCase()
62a3e0fd82Sopenharmony_ci{
63a3e0fd82Sopenharmony_ci    if (EventInjector::GetInstance()->IsEventInjectorRegistered(EventDataType::POINT_TYPE)) {
64a3e0fd82Sopenharmony_ci        EventInjector::GetInstance()->UnregisterEventInjector(EventDataType::POINT_TYPE);
65a3e0fd82Sopenharmony_ci    }
66a3e0fd82Sopenharmony_ci    if (EventInjector::GetInstance()->IsEventInjectorRegistered(EventDataType::KEY_TYPE)) {
67a3e0fd82Sopenharmony_ci        EventInjector::GetInstance()->UnregisterEventInjector(EventDataType::KEY_TYPE);
68a3e0fd82Sopenharmony_ci    }
69a3e0fd82Sopenharmony_ci}
70a3e0fd82Sopenharmony_ci
71a3e0fd82Sopenharmony_civoid AutoTestManager::SendMsg(size_t mainID)
72a3e0fd82Sopenharmony_ci{
73a3e0fd82Sopenharmony_ci    sendMsgFunc_(mainID);
74a3e0fd82Sopenharmony_ci}
75a3e0fd82Sopenharmony_ci
76a3e0fd82Sopenharmony_civoid AutoTestManager::SetSendMsgFuncCallBack(SendMsgFunc sendMsgFunc)
77a3e0fd82Sopenharmony_ci{
78a3e0fd82Sopenharmony_ci    sendMsgFunc_ = sendMsgFunc;
79a3e0fd82Sopenharmony_ci}
80a3e0fd82Sopenharmony_ci
81a3e0fd82Sopenharmony_civoid AutoTestManager::StartTest(std::vector<std::shared_ptr<TestMsgInfo>> msgInfo)
82a3e0fd82Sopenharmony_ci{
83a3e0fd82Sopenharmony_ci    printf("AutoTestManager::StartTest----msgInfo.size=[%d]\n", msgInfo.size());
84a3e0fd82Sopenharmony_ci    fflush(stdout);
85a3e0fd82Sopenharmony_ci    if (!autoTest_) {
86a3e0fd82Sopenharmony_ci        return;
87a3e0fd82Sopenharmony_ci    }
88a3e0fd82Sopenharmony_ci
89a3e0fd82Sopenharmony_ci    autoTest_->RunTest(msgInfo);
90a3e0fd82Sopenharmony_ci}
91a3e0fd82Sopenharmony_ci
92a3e0fd82Sopenharmony_civoid AutoTestManager::TestComplete()
93a3e0fd82Sopenharmony_ci{
94a3e0fd82Sopenharmony_ci    if (!autoTest_) {
95a3e0fd82Sopenharmony_ci        return;
96a3e0fd82Sopenharmony_ci    }
97a3e0fd82Sopenharmony_ci
98a3e0fd82Sopenharmony_ci    autoTest_->TestComplete();
99a3e0fd82Sopenharmony_ci}
100a3e0fd82Sopenharmony_ci
101a3e0fd82Sopenharmony_civoid AutoTestManager::SetConfigInfo(const std::shared_ptr<TestConfigInfo> configInfo)
102a3e0fd82Sopenharmony_ci{
103a3e0fd82Sopenharmony_ci    configInfo_ = configInfo;
104a3e0fd82Sopenharmony_ci    printf("AutoTestManager::SetConfigInfo--testMode=[%zu], baseDir=[%s], runDir=[%s], logDir=[%s]\n",
105a3e0fd82Sopenharmony_ci        configInfo_->testMode, configInfo_->baseDir.c_str(), configInfo_->runDir.c_str(),
106a3e0fd82Sopenharmony_ci        configInfo_->logDir.c_str());
107a3e0fd82Sopenharmony_ci    fflush(stdout);
108a3e0fd82Sopenharmony_ci    SendMsg(C_S_MAIN_ID_REQUEST_TEST_INFO);
109a3e0fd82Sopenharmony_ci}
110a3e0fd82Sopenharmony_ci
111a3e0fd82Sopenharmony_cistd::shared_ptr<TestConfigInfo> AutoTestManager::GetConfigInfo()
112a3e0fd82Sopenharmony_ci{
113a3e0fd82Sopenharmony_ci    return configInfo_;
114a3e0fd82Sopenharmony_ci}
115a3e0fd82Sopenharmony_ci}
116