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     EXPECT_NE(event.get(), nullptr);
103     GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_001 end";
104 }
105 
106 /**
107  * @tc.number: AccessibilityMouseAutoclick_Unittest_OnPointerEvent_002
108  * @tc.name: OnPointerEvent
109  * @tc.desc: Test function OnPointerEvent
110  * @tc.require: issueI5NTXC
111  */
112 HWTEST_F(AccessibilityMouseAutoclickUnitTest, AccessibilityMouseAutoclick_Unittest_OnPointerEvent_002, TestSize.Level1)
113 {
114     GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_002 start";
115     if (!mouseAutoclick_) {
116         return;
117     }
118     std::shared_ptr<MMI::PointerEvent> event = MMI::PointerEvent::Create();
119     if (!event) {
120         return;
121     }
122     sptr<AccessibilityAccountData> accountData =
123         Singleton<AccessibleAbilityManagerService>::GetInstance().GetCurrentAccountData();
124     if (!accountData) {
125         return;
126     }
127     accountData->GetConfig()->SetMouseAutoClick(DELAY_TIME);
128     event->SetSourceType(MMI::PointerEvent::SOURCE_TYPE_MOUSE);
129     event->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_MOVE);
130     event->SetPointerId(1);
131     MMI::PointerEvent::PointerItem item;
132     item.SetPointerId(1);
133     event->AddPointerItem(item);
134     mouseAutoclick_->OnPointerEvent(*event);
135 
136     MMI::PointerEvent::PointerItem item1;
137     item1.SetPointerId(1);
138     item1.SetDisplayX(1);
139     item1.SetDisplayY(1);
140     event->UpdatePointerItem(1, item1);
141     mouseAutoclick_->OnPointerEvent(*event);
142     sleep(2);
143 
144     EXPECT_NE(event.get(), nullptr);
145     GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_002 end";
146 }
147 
148 /**
149  * @tc.number: AccessibilityMouseAutoclick_Unittest_OnPointerEvent_003
150  * @tc.name: OnPointerEvent
151  * @tc.desc: Test function OnPointerEvent
152  * @tc.require: issueI5NTXC
153  */
154 HWTEST_F(AccessibilityMouseAutoclickUnitTest, AccessibilityMouseAutoclick_Unittest_OnPointerEvent_003, TestSize.Level1)
155 {
156     GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_003 start";
157     if (!mouseAutoclick_) {
158         return;
159     }
160     std::shared_ptr<MMI::PointerEvent> event = MMI::PointerEvent::Create();
161     if (!event) {
162         return;
163     }
164     sptr<AccessibilityAccountData> accountData =
165         Singleton<AccessibleAbilityManagerService>::GetInstance().GetCurrentAccountData();
166     if (!accountData) {
167         return;
168     }
169     accountData->GetConfig()->SetMouseAutoClick(DELAY_TIME);
170     event->SetSourceType(MMI::PointerEvent::SOURCE_TYPE_MOUSE);
171     event->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_MOVE);
172     event->SetPointerId(1);
173     MMI::PointerEvent::PointerItem item;
174     item.SetPointerId(1);
175     event->AddPointerItem(item);
176     mouseAutoclick_->OnPointerEvent(*event);
177     mouseAutoclick_->OnPointerEvent(*event);
178     sleep(2);
179 
180     EXPECT_NE(event.get(), nullptr);
181     GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_003 end";
182 }
183 
184 /**
185  * @tc.number: AccessibilityMouseAutoclick_Unittest_OnPointerEvent_004
186  * @tc.name: OnPointerEvent
187  * @tc.desc: Test function OnPointerEvent
188  * @tc.require: issueI5NTXC
189  */
190 HWTEST_F(AccessibilityMouseAutoclickUnitTest, AccessibilityMouseAutoclick_Unittest_OnPointerEvent_004, TestSize.Level1)
191 {
192     GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_004 start";
193     if (!mouseAutoclick_) {
194         return;
195     }
196     std::shared_ptr<MMI::PointerEvent> event = MMI::PointerEvent::Create();
197     if (!event) {
198         return;
199     }
200     event->SetSourceType(MMI::PointerEvent::SOURCE_TYPE_TOUCHSCREEN);
201     event->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_UP);
202     MMI::PointerEvent::PointerItem item;
203     event->AddPointerItem(item);
204     mouseAutoclick_->OnPointerEvent(*event);
205 
206     EXPECT_NE(event.get(), nullptr);
207     GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_004 end";
208 }
209 
210 /**
211  * @tc.number: AccessibilityMouseAutoclick_Unittest_OnPointerEvent_005
212  * @tc.name: OnPointerEvent
213  * @tc.desc: Test function OnPointerEvent
214  */
215 HWTEST_F(AccessibilityMouseAutoclickUnitTest, AccessibilityMouseAutoclick_Unittest_OnPointerEvent_005, TestSize.Level1)
216 {
217     GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_005 start";
218     if (!mouseAutoclick_) {
219         return;
220     }
221     std::shared_ptr<MMI::PointerEvent> event = MMI::PointerEvent::Create();
222     if (!event) {
223         return;
224     }
225     event->SetSourceType(MMI::PointerEvent::SOURCE_TYPE_TOUCHSCREEN);
226     event->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_MOVE);
227     MMI::PointerEvent::PointerItem item;
228     event->AddPointerItem(item);
229     mouseAutoclick_->OnPointerEvent(*event);
230 
231     EXPECT_NE(event.get(), nullptr);
232     GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_005 end";
233 }
234 
235 /**
236  * @tc.number: AccessibilityMouseAutoclick_Unittest_OnPointerEvent_006
237  * @tc.name: OnPointerEvent
238  * @tc.desc: Test function OnPointerEvent
239  */
240 HWTEST_F(AccessibilityMouseAutoclickUnitTest, AccessibilityMouseAutoclick_Unittest_OnPointerEvent_006, TestSize.Level1)
241 {
242     GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_006 start";
243     if (!mouseAutoclick_) {
244         return;
245     }
246     std::shared_ptr<MMI::PointerEvent> event = MMI::PointerEvent::Create();
247     if (!event) {
248         return;
249     }
250     event->SetSourceType(MMI::PointerEvent::SOURCE_TYPE_MOUSE);
251     event->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_UP);
252     MMI::PointerEvent::PointerItem item;
253     event->AddPointerItem(item);
254     mouseAutoclick_->OnPointerEvent(*event);
255 
256     EXPECT_NE(event.get(), nullptr);
257     GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_006 end";
258 }
259 } // namespace Accessibility
260 } // namespace OHOS