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 #include "gtest/gtest.h"
17 #include "test/unittest/core/event/event_manager_test_ng.h"
18 #include "test/mock/core/pipeline/mock_pipeline_context.h"
19
20 #include "core/components_ng/base/frame_node.h"
21 #include "core/components_ng/event/event_hub.h"
22 #include "core/components_ng/event/input_event.h"
23 #include "core/components_ng/pattern/pattern.h"
24 #include "core/components_v2/inspector/inspector_constants.h"
25 #include "core/event/mouse_event.h"
26
27 using namespace testing;
28 using namespace testing::ext;
29
30 namespace OHOS::Ace::NG {
31 namespace {
32 constexpr float WIDTH = 400.0f;
33 constexpr float HEIGHT = 400.0f;
34 const OffsetF COORDINATE_OFFSET(WIDTH, HEIGHT);
35 const std::string RESULT_SUCCESS_ONE = "sucess1";
36 const std::string RESULT_SUCCESS_TWO = "sucess2";
37 } // namespace
38
39 class InputEventTestNg : public testing::Test {
40 public:
41 static void SetUpTestSuite();
42 static void TearDownTestSuite();
43 void SetUp() override;
44 void TearDown() override;
45 };
46
SetUpTestSuite()47 void InputEventTestNg::SetUpTestSuite()
48 {
49 GTEST_LOG_(INFO) << "InputEventTestNg SetUpTestCase";
50 }
51
TearDownTestSuite()52 void InputEventTestNg::TearDownTestSuite()
53 {
54 GTEST_LOG_(INFO) << "InputEventTestNg TearDownTestCase";
55 }
56
SetUp()57 void InputEventTestNg::SetUp()
58 {
59 MockPipelineContext::SetUp();
60 }
61
TearDown()62 void InputEventTestNg::TearDown()
63 {
64 MockPipelineContext::TearDown();
65 }
66
67 /**
68 * @tc.name: InputEventTest001
69 * @tc.desc: test InputEvent
70 * @tc.type: FUNC
71 */
72 HWTEST_F(InputEventTestNg, InputEventTest001, TestSize.Level1)
73 {
74 auto eventHub = AceType::MakeRefPtr<EventHub>();
75 auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::TEXT_ETS_TAG, -1, AceType::MakeRefPtr<Pattern>());
76 eventHub->AttachHost(frameNode);
77 auto inputEventHub = AceType::MakeRefPtr<InputEventHub>(AceType::WeakClaim(AceType::RawPtr(eventHub)));
78 inputEventHub->mouseEventActuator_ =
79 AceType::MakeRefPtr<InputEventActuator>(AceType::WeakClaim(AceType::RawPtr(inputEventHub)));
80 inputEventHub->hoverEventActuator_ =
81 AceType::MakeRefPtr<InputEventActuator>(AceType::WeakClaim(AceType::RawPtr(inputEventHub)));
__anon8da78ddb0202(MouseInfo& info) 82 const OnMouseEventFunc onMouse = [](MouseInfo& info) {};
83 OnMouseEventFunc onMouse1 = onMouse;
84 inputEventHub->SetJSFrameNodeOnMouseEvent(std::move(onMouse1));
85 OnMouseEventFunc onMouse2 = onMouse;
86 inputEventHub->SetMouseEvent(std::move(onMouse2));
87
88 TouchTestResult Result;
89 auto getEventTargetImpl = eventHub->CreateGetEventTargetImpl();
90 inputEventHub->mouseEventActuator_->OnCollectMouseEvent(COORDINATE_OFFSET, getEventTargetImpl, Result);
91 MouseInfo mouse;
92 inputEventHub->mouseEventActuator_->mouseEventTarget_->onMouseCallback_(mouse);
93 EXPECT_NE(inputEventHub, nullptr);
94 }
95
96 /**
97 * @tc.name: InputEventTest002
98 * @tc.desc: test InputEvent
99 * @tc.type: FUNC
100 */
101 HWTEST_F(InputEventTestNg, InputEventTest002, TestSize.Level1)
102 {
103 auto eventHub = AceType::MakeRefPtr<EventHub>();
104 auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::TEXT_ETS_TAG, -1, AceType::MakeRefPtr<Pattern>());
105 eventHub->AttachHost(frameNode);
106 auto inputEventHub = AceType::MakeRefPtr<InputEventHub>(AceType::WeakClaim(AceType::RawPtr(eventHub)));
107 inputEventHub->hoverEventActuator_ =
108 AceType::MakeRefPtr<InputEventActuator>(AceType::WeakClaim(AceType::RawPtr(inputEventHub)));
109 OnHoverFunc onHoverEventFunc;
110 OnHoverFunc onHoverEventFunc2;
111 inputEventHub->SetJSFrameNodeOnHoverEvent(std::move(onHoverEventFunc));
112 inputEventHub->SetHoverEvent(std::move(onHoverEventFunc2));
113
__anon8da78ddb0302(bool, HoverInfo) 114 const OnHoverFunc onHover = [](bool, HoverInfo) {};
115 OnHoverFunc onHover1 = onHover;
116 auto onHoverEvent = AceType::MakeRefPtr<InputEvent>(std::move(onHover1));
117 inputEventHub->AddOnHoverEvent(onHoverEvent);
118 inputEventHub->AddOnHoverEvent(nullptr);
119
120 TouchTestResult hoverResult;
121 auto getEventTargetImpl = eventHub->CreateGetEventTargetImpl();
122 inputEventHub->hoverEventActuator_->OnCollectHoverEvent(COORDINATE_OFFSET, getEventTargetImpl, hoverResult);
123 HoverInfo hover;
124 inputEventHub->hoverEventActuator_->hoverEventTarget_->onHoverEventCallback_(true, hover);
125 EXPECT_NE(inputEventHub, nullptr);
126 }
127
128 /**
129 * @tc.name: InputEventTest003
130 * @tc.desc: test InputEvent
131 * @tc.type: FUNC
132 */
133 HWTEST_F(InputEventTestNg, InputEventTest003, TestSize.Level1)
134 {
135 auto eventHub = AceType::MakeRefPtr<EventHub>();
136 auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::TEXT_ETS_TAG, -1, AceType::MakeRefPtr<Pattern>());
137 eventHub->AttachHost(frameNode);
138 auto inputEventHub = AceType::MakeRefPtr<InputEventHub>(AceType::WeakClaim(AceType::RawPtr(eventHub)));
139 inputEventHub->hoverEventActuator_ =
140 AceType::MakeRefPtr<InputEventActuator>(AceType::WeakClaim(AceType::RawPtr(inputEventHub)));
141 OnHoverFunc onHoverEventFunc;
142 inputEventHub->SetHoverEvent(std::move(onHoverEventFunc));
143
144 TouchTestResult hoverResult;
145 auto getEventTargetImpl = eventHub->CreateGetEventTargetImpl();
146 inputEventHub->hoverEventActuator_->OnCollectHoverEvent(COORDINATE_OFFSET, getEventTargetImpl, hoverResult);
147 HoverInfo hover;
148 inputEventHub->hoverEventActuator_->hoverEventTarget_->onHoverEventCallback_(true, hover);
149 EXPECT_NE(inputEventHub, nullptr);
150 }
151
152 /**
153 * @tc.name: InputEventTest004
154 * @tc.desc: test InputEvent
155 * @tc.type: FUNC
156 */
157 HWTEST_F(InputEventTestNg, InputEventTest004, TestSize.Level1)
158 {
159 auto eventHub = AceType::MakeRefPtr<EventHub>();
160 auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::TEXT_ETS_TAG, -1, AceType::MakeRefPtr<Pattern>());
161 eventHub->AttachHost(frameNode);
162 auto inputEventHub = AceType::MakeRefPtr<InputEventHub>(AceType::WeakClaim(AceType::RawPtr(eventHub)));
163 inputEventHub->hoverEventActuator_ =
164 AceType::MakeRefPtr<InputEventActuator>(AceType::WeakClaim(AceType::RawPtr(inputEventHub)));
165 OnHoverFunc onHoverEventFunc;
166 inputEventHub->SetJSFrameNodeOnHoverEvent(std::move(onHoverEventFunc));
167
168 TouchTestResult hoverResult;
169 auto getEventTargetImpl = eventHub->CreateGetEventTargetImpl();
170 inputEventHub->hoverEventActuator_->OnCollectHoverEvent(COORDINATE_OFFSET, getEventTargetImpl, hoverResult);
171 HoverInfo hover;
172 inputEventHub->hoverEventActuator_->hoverEventTarget_->onHoverEventCallback_(true, hover);
173 EXPECT_NE(inputEventHub, nullptr);
174 }
175
176 /**
177 * @tc.name: InputEventTest005
178 * @tc.desc: test InputEvent
179 * @tc.type: FUNC
180 */
181 HWTEST_F(InputEventTestNg, InputEventTest005, TestSize.Level1)
182 {
183 auto eventHub = AceType::MakeRefPtr<EventHub>();
184 auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::TEXT_ETS_TAG, -1, AceType::MakeRefPtr<Pattern>());
185 eventHub->AttachHost(frameNode);
186 auto inputEventHub = AceType::MakeRefPtr<InputEventHub>(AceType::WeakClaim(AceType::RawPtr(eventHub)));
187 inputEventHub->hoverEventActuator_ =
188 AceType::MakeRefPtr<InputEventActuator>(AceType::WeakClaim(AceType::RawPtr(inputEventHub)));
189
190 TouchTestResult hoverResult;
191 auto getEventTargetImpl = eventHub->CreateGetEventTargetImpl();
192 inputEventHub->hoverEventActuator_->OnCollectHoverEvent(COORDINATE_OFFSET, getEventTargetImpl, hoverResult);
193 EXPECT_NE(inputEventHub, nullptr);
194 }
195
196 /**
197 * @tc.name: InputEventTest006
198 * @tc.desc: test InputEvent
199 * @tc.type: FUNC
200 */
201 HWTEST_F(InputEventTestNg, InputEventTest006, TestSize.Level1)
202 {
203 auto eventHub = AceType::MakeRefPtr<EventHub>();
204 auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::TEXT_ETS_TAG, -1, AceType::MakeRefPtr<Pattern>());
205 eventHub->AttachHost(frameNode);
206 auto inputEventHub = AceType::MakeRefPtr<InputEventHub>(AceType::WeakClaim(AceType::RawPtr(eventHub)));
207 inputEventHub->axisEventActuator_ =
208 AceType::MakeRefPtr<InputEventActuator>(AceType::WeakClaim(AceType::RawPtr(inputEventHub)));
209
__anon8da78ddb0402(MouseInfo& info) 210 OnMouseEventFunc onAxis = [](MouseInfo& info) {};
211 auto onAxisEvent = AceType::MakeRefPtr<InputEvent>(std::move(onAxis));
212 inputEventHub->AddOnAxisEvent(onAxisEvent);
213 inputEventHub->AddOnAxisEvent(nullptr);
214 inputEventHub->axisEventActuator_->userCallback_ = onAxisEvent;
215
216 AxisTestResult Result;
217 auto getEventTargetImpl = eventHub->CreateGetEventTargetImpl();
218 inputEventHub->axisEventActuator_->OnCollectAxisEvent(COORDINATE_OFFSET, getEventTargetImpl, Result);
219 AxisInfo axisInfo;
220 inputEventHub->axisEventActuator_->axisEventTarget_->onAxisCallback_(axisInfo);
221 EXPECT_NE(inputEventHub, nullptr);
222 }
223
224 /**
225 * @tc.name: InputEventTest007
226 * @tc.desc: test InputEvent
227 * @tc.type: FUNC
228 */
229 HWTEST_F(InputEventTestNg, InputEventTest007, TestSize.Level1)
230 {
231 auto eventHub = AceType::MakeRefPtr<EventHub>();
232 auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::TEXT_ETS_TAG, -1, AceType::MakeRefPtr<Pattern>());
233 eventHub->AttachHost(frameNode);
234 auto inputEventHub = AceType::MakeRefPtr<InputEventHub>(AceType::WeakClaim(AceType::RawPtr(eventHub)));
235 inputEventHub->axisEventActuator_ =
236 AceType::MakeRefPtr<InputEventActuator>(AceType::WeakClaim(AceType::RawPtr(inputEventHub)));
237
__anon8da78ddb0502(MouseInfo& info) 238 OnMouseEventFunc onAxis = [](MouseInfo& info) {};
239 auto onAxisEvent = AceType::MakeRefPtr<InputEvent>(std::move(onAxis));
240 inputEventHub->axisEventActuator_->userCallback_ = onAxisEvent;
241
242 AxisTestResult Result;
243 auto getEventTargetImpl = eventHub->CreateGetEventTargetImpl();
244 inputEventHub->axisEventActuator_->OnCollectAxisEvent(COORDINATE_OFFSET, getEventTargetImpl, Result);
245 AxisInfo axisInfo;
246 inputEventHub->axisEventActuator_->axisEventTarget_->onAxisCallback_(axisInfo);
247 EXPECT_NE(inputEventHub, nullptr);
248 }
249
250 /**
251 * @tc.name: InputEventTest008
252 * @tc.desc: test InputEvent
253 * @tc.type: FUNC
254 */
255 HWTEST_F(InputEventTestNg, InputEventTest008, TestSize.Level1)
256 {
257 auto eventHub = AceType::MakeRefPtr<EventHub>();
258 auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::TEXT_ETS_TAG, -1, AceType::MakeRefPtr<Pattern>());
259 eventHub->AttachHost(frameNode);
260 auto inputEventHub = AceType::MakeRefPtr<InputEventHub>(AceType::WeakClaim(AceType::RawPtr(eventHub)));
261 inputEventHub->axisEventActuator_ =
262 AceType::MakeRefPtr<InputEventActuator>(AceType::WeakClaim(AceType::RawPtr(inputEventHub)));
263
__anon8da78ddb0602(MouseInfo& info) 264 OnMouseEventFunc onAxis = [](MouseInfo& info) {};
265 auto onAxisEvent = AceType::MakeRefPtr<InputEvent>(std::move(onAxis));
266 inputEventHub->AddOnAxisEvent(onAxisEvent);
267 inputEventHub->AddOnAxisEvent(nullptr);
268
269 AxisTestResult Result;
270 auto getEventTargetImpl = eventHub->CreateGetEventTargetImpl();
271 inputEventHub->axisEventActuator_->OnCollectAxisEvent(COORDINATE_OFFSET, getEventTargetImpl, Result);
272 AxisInfo axisInfo;
273 inputEventHub->axisEventActuator_->axisEventTarget_->onAxisCallback_(axisInfo);
274 EXPECT_NE(inputEventHub, nullptr);
275 }
276
277 /**
278 * @tc.name: InputEventTest009
279 * @tc.desc: test InputEvent
280 * @tc.type: FUNC
281 */
282 HWTEST_F(InputEventTestNg, InputEventTest009, TestSize.Level1)
283 {
284 auto eventHub = AceType::MakeRefPtr<EventHub>();
285 auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::TEXT_ETS_TAG, -1, AceType::MakeRefPtr<Pattern>());
286 eventHub->AttachHost(frameNode);
287 auto inputEventHub = AceType::MakeRefPtr<InputEventHub>(AceType::WeakClaim(AceType::RawPtr(eventHub)));
288 inputEventHub->axisEventActuator_ =
289 AceType::MakeRefPtr<InputEventActuator>(AceType::WeakClaim(AceType::RawPtr(inputEventHub)));
290
291 AxisTestResult Result;
292 auto getEventTargetImpl = eventHub->CreateGetEventTargetImpl();
293 inputEventHub->axisEventActuator_->OnCollectAxisEvent(COORDINATE_OFFSET, getEventTargetImpl, Result);
294 EXPECT_NE(inputEventHub, nullptr);
295 }
296 } // namespace OHOS::Ace::NG