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
16 #include <gtest/gtest.h>
17 #include <map>
18 #include <memory>
19 #include "accessibility_common_helper.h"
20 #include "accessibility_mouse_autoclick.h"
21 #include "accessibility_ut_helper.h"
22 #include "accessible_ability_manager_service.h"
23
24 using namespace testing;
25 using namespace testing::ext;
26
27 namespace OHOS {
28 namespace Accessibility {
29 namespace {
30 constexpr int32_t DELAY_TIME = 100;
31 } // namespace
32
33 class AccessibilityMouseAutoclickUnitTest : public ::testing::Test {
34 public:
AccessibilityMouseAutoclickUnitTest()35 AccessibilityMouseAutoclickUnitTest()
36 {}
~AccessibilityMouseAutoclickUnitTest()37 ~AccessibilityMouseAutoclickUnitTest()
38 {}
39
40 static void SetUpTestCase();
41 static void TearDownTestCase();
42 void SetUp() override;
43 void TearDown() override;
44
45 std::shared_ptr<AccessibilityMouseAutoclick> mouseAutoclick_ = nullptr;
46 };
47
SetUpTestCase()48 void AccessibilityMouseAutoclickUnitTest::SetUpTestCase()
49 {
50 GTEST_LOG_(INFO) << "###################### AccessibilityMouseAutoclickUnitTest Start ######################";
51 Singleton<AccessibleAbilityManagerService>::GetInstance().OnStart();
52 AccessibilityCommonHelper::GetInstance().WaitForServicePublish();
53 }
54
TearDownTestCase()55 void AccessibilityMouseAutoclickUnitTest::TearDownTestCase()
56 {
57 GTEST_LOG_(INFO) << "###################### AccessibilityMouseAutoclickUnitTest End ######################";
58 Singleton<AccessibleAbilityManagerService>::GetInstance().OnStop();
59 }
60
SetUp()61 void AccessibilityMouseAutoclickUnitTest::SetUp()
62 {
63 GTEST_LOG_(INFO) << "SetUp";
64 mouseAutoclick_ = std::make_shared<AccessibilityMouseAutoclick>();
65 }
66
TearDown()67 void AccessibilityMouseAutoclickUnitTest::TearDown()
68 {
69 GTEST_LOG_(INFO) << "TearDown";
70 mouseAutoclick_ = nullptr;
71 }
72
73 /**
74 * @tc.number: AccessibilityMouseAutoclick_Unittest_OnPointerEvent_001
75 * @tc.name: OnPointerEvent
76 * @tc.desc: Test function OnPointerEvent
77 * @tc.require: issueI5NTXC
78 */
79 HWTEST_F(AccessibilityMouseAutoclickUnitTest, AccessibilityMouseAutoclick_Unittest_OnPointerEvent_001, TestSize.Level1)
80 {
81 GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_001 start";
82 if (!mouseAutoclick_) {
83 return;
84 }
85 std::shared_ptr<MMI::PointerEvent> event = MMI::PointerEvent::Create();
86 if (!event) {
87 return;
88 }
89 sptr<AccessibilityAccountData> accountData =
90 Singleton<AccessibleAbilityManagerService>::GetInstance().GetCurrentAccountData();
91 if (!accountData) {
92 return;
93 }
94 accountData->GetConfig()->SetMouseAutoClick(DELAY_TIME);
95 event->SetSourceType(MMI::PointerEvent::SOURCE_TYPE_MOUSE);
96 event->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_MOVE);
97 MMI::PointerEvent::PointerItem item;
98 event->AddPointerItem(item);
99 mouseAutoclick_->OnPointerEvent(*event);
100 sleep(2);
101
102 GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_001 end";
103 }
104
105 /**
106 * @tc.number: AccessibilityMouseAutoclick_Unittest_OnPointerEvent_002
107 * @tc.name: OnPointerEvent
108 * @tc.desc: Test function OnPointerEvent
109 * @tc.require: issueI5NTXC
110 */
111 HWTEST_F(AccessibilityMouseAutoclickUnitTest, AccessibilityMouseAutoclick_Unittest_OnPointerEvent_002, TestSize.Level1)
112 {
113 GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_002 start";
114 if (!mouseAutoclick_) {
115 return;
116 }
117 std::shared_ptr<MMI::PointerEvent> event = MMI::PointerEvent::Create();
118 if (!event) {
119 return;
120 }
121 sptr<AccessibilityAccountData> accountData =
122 Singleton<AccessibleAbilityManagerService>::GetInstance().GetCurrentAccountData();
123 if (!accountData) {
124 return;
125 }
126 accountData->GetConfig()->SetMouseAutoClick(DELAY_TIME);
127 event->SetSourceType(MMI::PointerEvent::SOURCE_TYPE_MOUSE);
128 event->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_MOVE);
129 event->SetPointerId(1);
130 MMI::PointerEvent::PointerItem item;
131 item.SetPointerId(1);
132 event->AddPointerItem(item);
133 mouseAutoclick_->OnPointerEvent(*event);
134
135 MMI::PointerEvent::PointerItem item1;
136 item1.SetPointerId(1);
137 item1.SetDisplayX(1);
138 item1.SetDisplayY(1);
139 event->UpdatePointerItem(1, item1);
140 mouseAutoclick_->OnPointerEvent(*event);
141 sleep(2);
142
143 GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_002 end";
144 }
145
146 /**
147 * @tc.number: AccessibilityMouseAutoclick_Unittest_OnPointerEvent_003
148 * @tc.name: OnPointerEvent
149 * @tc.desc: Test function OnPointerEvent
150 * @tc.require: issueI5NTXC
151 */
152 HWTEST_F(AccessibilityMouseAutoclickUnitTest, AccessibilityMouseAutoclick_Unittest_OnPointerEvent_003, TestSize.Level1)
153 {
154 GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_003 start";
155 if (!mouseAutoclick_) {
156 return;
157 }
158 std::shared_ptr<MMI::PointerEvent> event = MMI::PointerEvent::Create();
159 if (!event) {
160 return;
161 }
162 sptr<AccessibilityAccountData> accountData =
163 Singleton<AccessibleAbilityManagerService>::GetInstance().GetCurrentAccountData();
164 if (!accountData) {
165 return;
166 }
167 accountData->GetConfig()->SetMouseAutoClick(DELAY_TIME);
168 event->SetSourceType(MMI::PointerEvent::SOURCE_TYPE_MOUSE);
169 event->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_MOVE);
170 event->SetPointerId(1);
171 MMI::PointerEvent::PointerItem item;
172 item.SetPointerId(1);
173 event->AddPointerItem(item);
174 mouseAutoclick_->OnPointerEvent(*event);
175 mouseAutoclick_->OnPointerEvent(*event);
176 sleep(2);
177
178 GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_003 end";
179 }
180
181 /**
182 * @tc.number: AccessibilityMouseAutoclick_Unittest_OnPointerEvent_004
183 * @tc.name: OnPointerEvent
184 * @tc.desc: Test function OnPointerEvent
185 * @tc.require: issueI5NTXC
186 */
187 HWTEST_F(AccessibilityMouseAutoclickUnitTest, AccessibilityMouseAutoclick_Unittest_OnPointerEvent_004, TestSize.Level1)
188 {
189 GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_004 start";
190 if (!mouseAutoclick_) {
191 return;
192 }
193 std::shared_ptr<MMI::PointerEvent> event = MMI::PointerEvent::Create();
194 if (!event) {
195 return;
196 }
197 event->SetSourceType(MMI::PointerEvent::SOURCE_TYPE_TOUCHSCREEN);
198 event->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_UP);
199 MMI::PointerEvent::PointerItem item;
200 event->AddPointerItem(item);
201 mouseAutoclick_->OnPointerEvent(*event);
202
203 GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_004 end";
204 }
205 } // namespace Accessibility
206 } // namespace OHOS