1 /*
2 * Copyright (c) 2021-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
18 #include "manage_inject_device.h"
19 #include "msg_head.h"
20 #include "processing_game_pad_device.h"
21 #include "proto.h"
22
23 namespace OHOS {
24 namespace MMI {
25 namespace {
26 using namespace testing::ext;
27 } // namespace
28 class ProcessingGamePadDeviceTest : public testing::Test {
29 public:
SetUpTestCase(void)30 static void SetUpTestCase(void) {}
TearDownTestCase(void)31 static void TearDownTestCase(void) {}
CheckGamePadJson(const std::string path)32 static void CheckGamePadJson(const std::string path)
33 {
34 std::string startDeviceCmd = "vuinput start gamepad & ";
35 std::string closeDeviceCmd = "vuinput close all";
36 FILE* startDevice = popen(startDeviceCmd.c_str(), "rw");
37 if (!startDevice) {
38 ASSERT_TRUE(false) << "Start device failed";
39 }
40 pclose(startDevice);
41 std::string jsonBuf = ReadJsonFile(path);
42 if (jsonBuf.empty()) {
43 ASSERT_TRUE(false) << "Read file failed" << path;
44 }
45 ManageInjectDevice manageInjectDevice;
46 auto ret = manageInjectDevice.TransformJsonData(DataInit(jsonBuf, false));
47 FILE* closeDevice = popen(closeDeviceCmd.c_str(), "rw");
48 if (!closeDevice) {
49 ASSERT_TRUE(false) << "Close device failed";
50 }
51 pclose(closeDevice);
52 std::this_thread::sleep_for(std::chrono::seconds(1));
53 EXPECT_EQ(ret, RET_ERR);
54 }
55 };
56
57 /**
58 * @tc.name:Test_TransformGamePadJsonDataToInputData
59 * @tc.desc:Verify ManageInjectDevice function TransformJsonData
60 * @tc.type: FUNC
61 * @tc.require:
62 */
HWTEST_F(ProcessingGamePadDeviceTest, Test_TransformGamePadJsonDataToInputData, TestSize.Level1)63 HWTEST_F(ProcessingGamePadDeviceTest, Test_TransformGamePadJsonDataToInputData, TestSize.Level1)
64 {
65 const std::string path = "/data/json/Test_TransformGamePadJsonDataToInputData.json";
66 std::string startDeviceCmd = "vuinput start gamepad & ";
67 std::string closeDeviceCmd = "vuinput close all";
68 FILE* startDevice = popen(startDeviceCmd.c_str(), "rw");
69 if (!startDevice) {
70 ASSERT_TRUE(false) << "Start device failed";
71 }
72 pclose(startDevice);
73 std::this_thread::sleep_for(std::chrono::seconds(1));
74 std::string jsonBuf = ReadJsonFile(path);
75 if (jsonBuf.empty()) {
76 ASSERT_TRUE(false) << "Read file failed" << path;
77 }
78 ManageInjectDevice manageInjectDevice;
79 auto ret = manageInjectDevice.TransformJsonData(DataInit(jsonBuf, false));
80 FILE* closeDevice = popen(closeDeviceCmd.c_str(), "rw");
81 if (!closeDevice) {
82 ASSERT_TRUE(false) << "Close device failed";
83 }
84 pclose(closeDevice);
85 std::this_thread::sleep_for(std::chrono::seconds(1));
86 EXPECT_EQ(ret, RET_OK);
87 }
88
89 /**
90 * @tc.name:Test_TransformGamePadJsonDataToInputDataNotFindEvents
91 * @tc.desc:Verify ManageInjectDevice function TransformJsonData
92 * @tc.type: FUNC
93 * @tc.require:
94 */
HWTEST_F(ProcessingGamePadDeviceTest, Test_TransformGamePadJsonDataToInputDataNotFindEvents, TestSize.Level1)95 HWTEST_F(ProcessingGamePadDeviceTest, Test_TransformGamePadJsonDataToInputDataNotFindEvents, TestSize.Level1)
96 {
97 const std::string path = "/data/json/Test_TransformGamePadJsonDataToInputDataNotFindEvents.json";
98 CheckGamePadJson(path);
99 }
100
101 /**
102 * @tc.name:Test_TransformGamePadJsonDataToInputDataEventsIsEmpty
103 * @tc.desc:Verify ManageInjectDevice function TransformJsonData
104 * @tc.type: FUNC
105 * @tc.require:
106 */
HWTEST_F(ProcessingGamePadDeviceTest, Test_TransformGamePadJsonDataToInputDataEventsIsEmpty, TestSize.Level1)107 HWTEST_F(ProcessingGamePadDeviceTest, Test_TransformGamePadJsonDataToInputDataEventsIsEmpty, TestSize.Level1)
108 {
109 const std::string path = "/data/json/Test_TransformGamePadJsonDataToInputDataEventsIsEmpty.json";
110 CheckGamePadJson(path);
111 }
112
113 /**
114 * @tc.name:Test_TransformGamePadJsonDataToInputDataNotFindKeyValueInPress
115 * @tc.desc:Verify ManageInjectDevice function TransformJsonData
116 * @tc.type: FUNC
117 * @tc.require:
118 */
HWTEST_F(ProcessingGamePadDeviceTest, Test_TransformGamePadJsonDataToInputDataNotFindKeyValueInPress, TestSize.Level1)119 HWTEST_F(ProcessingGamePadDeviceTest, Test_TransformGamePadJsonDataToInputDataNotFindKeyValueInPress, TestSize.Level1)
120 {
121 const std::string path = "/data/json/Test_TransformGamePadJsonDataToInputDataNotFindKeyValueInPress.json";
122 CheckGamePadJson(path);
123 }
124
125 /**
126 * @tc.name:Test_TransformGamePadJsonDataToInputDataNotFindEventInRocker
127 * @tc.desc:Verify ManageInjectDevice function TransformJsonData
128 * @tc.type: FUNC
129 * @tc.require:
130 */
HWTEST_F(ProcessingGamePadDeviceTest, Test_TransformGamePadJsonDataToInputDataNotFindEventInRocker, TestSize.Level1)131 HWTEST_F(ProcessingGamePadDeviceTest, Test_TransformGamePadJsonDataToInputDataNotFindEventInRocker, TestSize.Level1)
132 {
133 const std::string path = "/data/json/Test_TransformGamePadJsonDataToInputDataNotFindEventInRocker.json";
134 CheckGamePadJson(path);
135 }
136
137 /**
138 * @tc.name:Test_TransformGamePadJsonDataToInputDataNotFindDirectionInRocker
139 * @tc.desc:Verify ManageInjectDevice function TransformJsonData
140 * @tc.type: FUNC
141 * @tc.require:
142 */
HWTEST_F(ProcessingGamePadDeviceTest, Test_TransformGamePadJsonDataToInputDataNotFindDirectionInRocker, TestSize.Level1)143 HWTEST_F(ProcessingGamePadDeviceTest, Test_TransformGamePadJsonDataToInputDataNotFindDirectionInRocker, TestSize.Level1)
144 {
145 const std::string path = "/data/json/Test_TransformGamePadJsonDataToInputDataNotFindDirectionInRocker.json";
146 CheckGamePadJson(path);
147 }
148
149 /**
150 * @tc.name:Test_TransformGamePadJsonDataToInputDataNotFindDirectionInRockerDirectionKey
151 * @tc.desc:Verify ManageInjectDevice function TransformJsonData
152 * @tc.type: FUNC
153 * @tc.require:
154 */
HWTEST_F(ProcessingGamePadDeviceTest, Test_TransformGamePadJsonDataToInputDataNotFindDirectionInRockerDirectionKey, TestSize.Level1)155 HWTEST_F(ProcessingGamePadDeviceTest, Test_TransformGamePadJsonDataToInputDataNotFindDirectionInRockerDirectionKey,
156 TestSize.Level1)
157 {
158 const std::string path =
159 "/data/json/Test_TransformGamePadJsonDataToInputDataNotFindDirectionInRockerDirectionKey.json";
160 CheckGamePadJson(path);
161 }
162 } // namespace MMI
163 } // namespace OHOS