1c29fa5a6Sopenharmony_ci/*
2c29fa5a6Sopenharmony_ci * Copyright (c) 2023-2024 Huawei Device Co., Ltd.
3c29fa5a6Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4c29fa5a6Sopenharmony_ci * you may not use this file except in compliance with the License.
5c29fa5a6Sopenharmony_ci * You may obtain a copy of the License at
6c29fa5a6Sopenharmony_ci *
7c29fa5a6Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
8c29fa5a6Sopenharmony_ci *
9c29fa5a6Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10c29fa5a6Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11c29fa5a6Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12c29fa5a6Sopenharmony_ci * See the License for the specific language governing permissions and
13c29fa5a6Sopenharmony_ci * limitations under the License.
14c29fa5a6Sopenharmony_ci */
15c29fa5a6Sopenharmony_ci
16c29fa5a6Sopenharmony_ci#include <fcntl.h>
17c29fa5a6Sopenharmony_ci#include <gtest/gtest.h>
18c29fa5a6Sopenharmony_ci
19c29fa5a6Sopenharmony_ci#include <cerrno>
20c29fa5a6Sopenharmony_ci#include <cstdio>
21c29fa5a6Sopenharmony_ci
22c29fa5a6Sopenharmony_ci#include "event_dump.h"
23c29fa5a6Sopenharmony_ci#include "event_log_helper.h"
24c29fa5a6Sopenharmony_ci#include "i_input_windows_manager.h"
25c29fa5a6Sopenharmony_ci#include "input_device_manager.h"
26c29fa5a6Sopenharmony_ci#include "input_event_handler.h"
27c29fa5a6Sopenharmony_ci#include "input_manager.h"
28c29fa5a6Sopenharmony_ci#include "input_manager_util.h"
29c29fa5a6Sopenharmony_ci#include "mouse_event_normalize.h"
30c29fa5a6Sopenharmony_ci#include "multimodal_event_handler.h"
31c29fa5a6Sopenharmony_ci#include "system_info.h"
32c29fa5a6Sopenharmony_ci
33c29fa5a6Sopenharmony_ci#undef MMI_LOG_TAG
34c29fa5a6Sopenharmony_ci#define MMI_LOG_TAG "EventDumpTest"
35c29fa5a6Sopenharmony_ci
36c29fa5a6Sopenharmony_cinamespace OHOS {
37c29fa5a6Sopenharmony_cinamespace MMI {
38c29fa5a6Sopenharmony_cinamespace {
39c29fa5a6Sopenharmony_ciusing namespace testing::ext;
40c29fa5a6Sopenharmony_ciconst std::string TEST_FILE_NAME = "/data/log.log";
41c29fa5a6Sopenharmony_ci} // namespace
42c29fa5a6Sopenharmony_ci
43c29fa5a6Sopenharmony_ciclass EventDumpTest : public testing::Test {
44c29fa5a6Sopenharmony_cipublic:
45c29fa5a6Sopenharmony_ci    void SetUp() override
46c29fa5a6Sopenharmony_ci    {
47c29fa5a6Sopenharmony_ci        fd_ = open(TEST_FILE_NAME.c_str(), O_WRONLY);
48c29fa5a6Sopenharmony_ci    }
49c29fa5a6Sopenharmony_ci
50c29fa5a6Sopenharmony_ci    void TearDown() override
51c29fa5a6Sopenharmony_ci    {
52c29fa5a6Sopenharmony_ci        close(fd_);
53c29fa5a6Sopenharmony_ci        fd_ = -1;
54c29fa5a6Sopenharmony_ci    }
55c29fa5a6Sopenharmony_ci
56c29fa5a6Sopenharmony_ci    int32_t fd_;
57c29fa5a6Sopenharmony_ci};
58c29fa5a6Sopenharmony_ci
59c29fa5a6Sopenharmony_ci/**
60c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_CheckCount_001
61c29fa5a6Sopenharmony_ci * @tc.desc: Event dump CheckCount
62c29fa5a6Sopenharmony_ci * @tc.type: FUNC
63c29fa5a6Sopenharmony_ci * @tc.require:
64c29fa5a6Sopenharmony_ci */
65c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest001, TestSize.Level1)
66c29fa5a6Sopenharmony_ci{
67c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
68c29fa5a6Sopenharmony_ci    std::vector<std::string> args;
69c29fa5a6Sopenharmony_ci    int32_t count = 0;
70c29fa5a6Sopenharmony_ci    MMIEventDump->CheckCount(fd_, args, count);
71c29fa5a6Sopenharmony_ci    EXPECT_EQ(count, 0);
72c29fa5a6Sopenharmony_ci}
73c29fa5a6Sopenharmony_ci
74c29fa5a6Sopenharmony_ci/**
75c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_CheckCount_002
76c29fa5a6Sopenharmony_ci * @tc.desc: Event dump CheckCount
77c29fa5a6Sopenharmony_ci * @tc.type: FUNC
78c29fa5a6Sopenharmony_ci * @tc.require:
79c29fa5a6Sopenharmony_ci */
80c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest002, TestSize.Level1)
81c29fa5a6Sopenharmony_ci{
82c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
83c29fa5a6Sopenharmony_ci    std::vector<std::string> args = {"--help"};
84c29fa5a6Sopenharmony_ci    int32_t count = 0;
85c29fa5a6Sopenharmony_ci    MMIEventDump->CheckCount(fd_, args, count);
86c29fa5a6Sopenharmony_ci    MMIEventDump->ParseCommand(fd_, args);
87c29fa5a6Sopenharmony_ci    EXPECT_EQ(count, 1);
88c29fa5a6Sopenharmony_ci}
89c29fa5a6Sopenharmony_ci
90c29fa5a6Sopenharmony_ci/**
91c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_CheckCount_003
92c29fa5a6Sopenharmony_ci * @tc.desc: Event dump CheckCount
93c29fa5a6Sopenharmony_ci * @tc.type: FUNC
94c29fa5a6Sopenharmony_ci * @tc.require:
95c29fa5a6Sopenharmony_ci */
96c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest003, TestSize.Level1)
97c29fa5a6Sopenharmony_ci{
98c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
99c29fa5a6Sopenharmony_ci    std::vector<std::string> args = {"-h"};
100c29fa5a6Sopenharmony_ci    int32_t count = 0;
101c29fa5a6Sopenharmony_ci    MMIEventDump->CheckCount(fd_, args, count);
102c29fa5a6Sopenharmony_ci    MMIEventDump->ParseCommand(fd_, args);
103c29fa5a6Sopenharmony_ci    EXPECT_EQ(count, 1);
104c29fa5a6Sopenharmony_ci}
105c29fa5a6Sopenharmony_ci
106c29fa5a6Sopenharmony_ci/**
107c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_CheckCount_004
108c29fa5a6Sopenharmony_ci * @tc.desc: Event dump CheckCount
109c29fa5a6Sopenharmony_ci * @tc.type: FUNC
110c29fa5a6Sopenharmony_ci * @tc.require:
111c29fa5a6Sopenharmony_ci */
112c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest004, TestSize.Level1)
113c29fa5a6Sopenharmony_ci{
114c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
115c29fa5a6Sopenharmony_ci    std::vector<std::string> args = {"-abc"};
116c29fa5a6Sopenharmony_ci    int32_t count = 0;
117c29fa5a6Sopenharmony_ci    MMIEventDump->CheckCount(fd_, args, count);
118c29fa5a6Sopenharmony_ci    MMIEventDump->ParseCommand(fd_, args);
119c29fa5a6Sopenharmony_ci    EXPECT_EQ(count, 3);
120c29fa5a6Sopenharmony_ci}
121c29fa5a6Sopenharmony_ci
122c29fa5a6Sopenharmony_ci/**
123c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_CheckCount_005
124c29fa5a6Sopenharmony_ci * @tc.desc: Event dump CheckCount
125c29fa5a6Sopenharmony_ci * @tc.type: FUNC
126c29fa5a6Sopenharmony_ci * @tc.require:
127c29fa5a6Sopenharmony_ci */
128c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest005, TestSize.Level1)
129c29fa5a6Sopenharmony_ci{
130c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
131c29fa5a6Sopenharmony_ci    std::vector<std::string> args = {"-a", "--help", "foo", "-bc", "bar"};
132c29fa5a6Sopenharmony_ci    int32_t count = 0;
133c29fa5a6Sopenharmony_ci    MMIEventDump->CheckCount(fd_, args, count);
134c29fa5a6Sopenharmony_ci    MMIEventDump->ParseCommand(fd_, args);
135c29fa5a6Sopenharmony_ci    MMIEventDump->DumpEventHelp(fd_, args);
136c29fa5a6Sopenharmony_ci    EXPECT_EQ(count, 4);
137c29fa5a6Sopenharmony_ci}
138c29fa5a6Sopenharmony_ci
139c29fa5a6Sopenharmony_ci/**
140c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_006
141c29fa5a6Sopenharmony_ci * @tc.desc: Event dump InputDeviceManager
142c29fa5a6Sopenharmony_ci * @tc.type: FUNC
143c29fa5a6Sopenharmony_ci * @tc.require:
144c29fa5a6Sopenharmony_ci */
145c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest006, TestSize.Level1)
146c29fa5a6Sopenharmony_ci{
147c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
148c29fa5a6Sopenharmony_ci    std::vector<std::string> args = {"-d"};
149c29fa5a6Sopenharmony_ci    int32_t count = 0;
150c29fa5a6Sopenharmony_ci    MMIEventDump->CheckCount(fd_, args, count);
151c29fa5a6Sopenharmony_ci    MMIEventDump->ParseCommand(fd_, args);
152c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(INPUT_DEV_MGR->Dump(fd_, args));
153c29fa5a6Sopenharmony_ci}
154c29fa5a6Sopenharmony_ci
155c29fa5a6Sopenharmony_ci/**
156c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_007
157c29fa5a6Sopenharmony_ci * @tc.desc: Event dump DeviceList
158c29fa5a6Sopenharmony_ci * @tc.type: FUNC
159c29fa5a6Sopenharmony_ci * @tc.require:
160c29fa5a6Sopenharmony_ci */
161c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest007, TestSize.Level1)
162c29fa5a6Sopenharmony_ci{
163c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
164c29fa5a6Sopenharmony_ci    std::vector<std::string> args = {"-l"};
165c29fa5a6Sopenharmony_ci    int32_t count = 0;
166c29fa5a6Sopenharmony_ci    MMIEventDump->CheckCount(fd_, args, count);
167c29fa5a6Sopenharmony_ci    MMIEventDump->ParseCommand(fd_, args);
168c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(INPUT_DEV_MGR->DumpDeviceList(fd_, args));
169c29fa5a6Sopenharmony_ci}
170c29fa5a6Sopenharmony_ci
171c29fa5a6Sopenharmony_ci/**
172c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_008
173c29fa5a6Sopenharmony_ci * @tc.desc: Event dump WindowsManager
174c29fa5a6Sopenharmony_ci * @tc.type: FUNC
175c29fa5a6Sopenharmony_ci * @tc.require:
176c29fa5a6Sopenharmony_ci */
177c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest008, TestSize.Level1)
178c29fa5a6Sopenharmony_ci{
179c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
180c29fa5a6Sopenharmony_ci    std::vector<std::string> args = {"-w"};
181c29fa5a6Sopenharmony_ci    int32_t count = 0;
182c29fa5a6Sopenharmony_ci    MMIEventDump->CheckCount(fd_, args, count);
183c29fa5a6Sopenharmony_ci    MMIEventDump->ParseCommand(fd_, args);
184c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(WIN_MGR->Dump(fd_, args));
185c29fa5a6Sopenharmony_ci}
186c29fa5a6Sopenharmony_ci
187c29fa5a6Sopenharmony_ci/**
188c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_009
189c29fa5a6Sopenharmony_ci * @tc.desc: Event dump UDSServer
190c29fa5a6Sopenharmony_ci * @tc.type: FUNC
191c29fa5a6Sopenharmony_ci * @tc.require:
192c29fa5a6Sopenharmony_ci */
193c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest009, TestSize.Level1)
194c29fa5a6Sopenharmony_ci{
195c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
196c29fa5a6Sopenharmony_ci    std::vector<std::string> args = {"-u"};
197c29fa5a6Sopenharmony_ci    int32_t count = 0;
198c29fa5a6Sopenharmony_ci    auto udsServer = InputHandler->GetUDSServer();
199c29fa5a6Sopenharmony_ci    CHKPV(udsServer);
200c29fa5a6Sopenharmony_ci    MMIEventDump->CheckCount(fd_, args, count);
201c29fa5a6Sopenharmony_ci    MMIEventDump->ParseCommand(fd_, args);
202c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(udsServer->Dump(fd_, args));
203c29fa5a6Sopenharmony_ci}
204c29fa5a6Sopenharmony_ci
205c29fa5a6Sopenharmony_ci/**
206c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_010
207c29fa5a6Sopenharmony_ci * @tc.desc: Event dump SubscriberHandler
208c29fa5a6Sopenharmony_ci * @tc.type: FUNC
209c29fa5a6Sopenharmony_ci * @tc.require:
210c29fa5a6Sopenharmony_ci */
211c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest010, TestSize.Level1)
212c29fa5a6Sopenharmony_ci{
213c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
214c29fa5a6Sopenharmony_ci    std::vector<std::string> args = {"-s"};
215c29fa5a6Sopenharmony_ci    int32_t count = 0;
216c29fa5a6Sopenharmony_ci    auto subscriberHandler = InputHandler->GetSubscriberHandler();
217c29fa5a6Sopenharmony_ci    CHKPV(subscriberHandler);
218c29fa5a6Sopenharmony_ci    MMIEventDump->CheckCount(fd_, args, count);
219c29fa5a6Sopenharmony_ci    MMIEventDump->ParseCommand(fd_, args);
220c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(subscriberHandler->Dump(fd_, args));
221c29fa5a6Sopenharmony_ci}
222c29fa5a6Sopenharmony_ci
223c29fa5a6Sopenharmony_ci/**
224c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_011
225c29fa5a6Sopenharmony_ci * @tc.desc: Event dump MonitorHandler
226c29fa5a6Sopenharmony_ci * @tc.type: FUNC
227c29fa5a6Sopenharmony_ci * @tc.require:
228c29fa5a6Sopenharmony_ci */
229c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest011, TestSize.Level1)
230c29fa5a6Sopenharmony_ci{
231c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
232c29fa5a6Sopenharmony_ci    std::vector<std::string> args = {"-o"};
233c29fa5a6Sopenharmony_ci    int32_t count = 0;
234c29fa5a6Sopenharmony_ci    auto monitorHandler = InputHandler->GetMonitorHandler();
235c29fa5a6Sopenharmony_ci    CHKPV(monitorHandler);
236c29fa5a6Sopenharmony_ci    MMIEventDump->CheckCount(fd_, args, count);
237c29fa5a6Sopenharmony_ci    MMIEventDump->ParseCommand(fd_, args);
238c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(monitorHandler->Dump(fd_, args));
239c29fa5a6Sopenharmony_ci}
240c29fa5a6Sopenharmony_ci
241c29fa5a6Sopenharmony_ci/**
242c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_012
243c29fa5a6Sopenharmony_ci * @tc.desc: Event dump InterceptorHandler
244c29fa5a6Sopenharmony_ci * @tc.type: FUNC
245c29fa5a6Sopenharmony_ci * @tc.require:
246c29fa5a6Sopenharmony_ci */
247c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest012, TestSize.Level1)
248c29fa5a6Sopenharmony_ci{
249c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
250c29fa5a6Sopenharmony_ci    std::vector<std::string> args = {"-i"};
251c29fa5a6Sopenharmony_ci    int32_t count = 0;
252c29fa5a6Sopenharmony_ci    auto interceptorHandler = InputHandler->GetInterceptorHandler();
253c29fa5a6Sopenharmony_ci    CHKPV(interceptorHandler);
254c29fa5a6Sopenharmony_ci    MMIEventDump->CheckCount(fd_, args, count);
255c29fa5a6Sopenharmony_ci    MMIEventDump->ParseCommand(fd_, args);
256c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(interceptorHandler->Dump(fd_, args));
257c29fa5a6Sopenharmony_ci}
258c29fa5a6Sopenharmony_ci
259c29fa5a6Sopenharmony_ci/**
260c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_013
261c29fa5a6Sopenharmony_ci * @tc.desc: Event dump FilterHandler
262c29fa5a6Sopenharmony_ci * @tc.type: FUNC
263c29fa5a6Sopenharmony_ci * @tc.require:
264c29fa5a6Sopenharmony_ci */
265c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest013, TestSize.Level1)
266c29fa5a6Sopenharmony_ci{
267c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
268c29fa5a6Sopenharmony_ci    std::vector<std::string> args = {"-f"};
269c29fa5a6Sopenharmony_ci    int32_t count = 0;
270c29fa5a6Sopenharmony_ci    auto filterHandler = InputHandler->GetFilterHandler();
271c29fa5a6Sopenharmony_ci    CHKPV(filterHandler);
272c29fa5a6Sopenharmony_ci    MMIEventDump->CheckCount(fd_, args, count);
273c29fa5a6Sopenharmony_ci    MMIEventDump->ParseCommand(fd_, args);
274c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(filterHandler->Dump(fd_, args));
275c29fa5a6Sopenharmony_ci}
276c29fa5a6Sopenharmony_ci
277c29fa5a6Sopenharmony_ci/**
278c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_014
279c29fa5a6Sopenharmony_ci * @tc.desc: Event dump MouseEventHandler
280c29fa5a6Sopenharmony_ci * @tc.type: FUNC
281c29fa5a6Sopenharmony_ci * @tc.require:
282c29fa5a6Sopenharmony_ci */
283c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest014, TestSize.Level1)
284c29fa5a6Sopenharmony_ci{
285c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
286c29fa5a6Sopenharmony_ci    std::vector<std::string> args = {"-m"};
287c29fa5a6Sopenharmony_ci    int32_t count = 0;
288c29fa5a6Sopenharmony_ci    MMIEventDump->CheckCount(fd_, args, count);
289c29fa5a6Sopenharmony_ci    MMIEventDump->ParseCommand(fd_, args);
290c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(MouseEventHdr->Dump(fd_, args));
291c29fa5a6Sopenharmony_ci}
292c29fa5a6Sopenharmony_ci} // namespace MMI
293c29fa5a6Sopenharmony_ci} // namespace OHOS