1 /* 2 # Copyright (c) 2024 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 "oh_input_manager.h" 19 #include "oh_key_code.h" 20 21 namespace OHOS { 22 namespace MMI { 23 namespace { 24 using namespace testing::ext; 25 } // namespace 26 27 class InputNativeTest : public testing::Test { 28 public: SetUpTestCase(void)29 static void SetUpTestCase(void) {} TearDownTestCase(void)30 static void TearDownTestCase(void) {} 31 SetUp()32 void SetUp() {} TearDown()33 void TearDown() {} 34 }; 35 36 /** 37 * @tc.name: InputNativeTest_KeyState_001 38 * @tc.desc: Verify the create and destroy of key states 39 * @tc.type: FUNC 40 * @tc.require: 41 */ 42 HWTEST_F(InputNativeTest, InputNativeTest_KeyState_001, TestSize.Level1) 43 { 44 struct Input_KeyState *keyState = OH_Input_CreateKeyState(); 45 if (keyState == nullptr) { 46 ASSERT_EQ(keyState, nullptr); 47 } else { 48 ASSERT_NE(keyState, nullptr); 49 OH_Input_DestroyKeyState(&keyState); 50 } 51 } 52 53 /** 54 * @tc.name: InputNativeTest_KeyCode_001 55 * @tc.desc: Verify the set and get of key states 56 * @tc.type: FUNC 57 * @tc.require: 58 */ 59 HWTEST_F(InputNativeTest, InputNativeTest_KeyCode_001, TestSize.Level1) 60 { 61 struct Input_KeyState *keyState = OH_Input_CreateKeyState(); 62 ASSERT_NE(keyState, nullptr); 63 OH_Input_SetKeyCode(keyState, 2000); 64 int32_t keyCode = OH_Input_GetKeyCode(keyState); 65 ASSERT_EQ(keyCode, 2000); 66 OH_Input_DestroyKeyState(&keyState); 67 } 68 69 /** 70 * @tc.name: InputNativeTest_KeyPressed_001 71 * @tc.desc: Verify the set and get of key pressed 72 * @tc.type: FUNC 73 * @tc.require: 74 */ 75 HWTEST_F(InputNativeTest, InputNativeTest_KeyPressed_001, TestSize.Level1) 76 { 77 struct Input_KeyState *keyState = OH_Input_CreateKeyState(); 78 ASSERT_NE(keyState, nullptr); 79 OH_Input_SetKeyPressed(keyState, 0); 80 int32_t keyAction = OH_Input_GetKeyPressed(keyState); 81 ASSERT_EQ(keyAction, 0); 82 OH_Input_DestroyKeyState(&keyState); 83 } 84 85 /** 86 * @tc.name: InputNativeTest_KeySwitch_001 87 * @tc.desc: Verify the set and get of key switch 88 * @tc.type: FUNC 89 * @tc.require: 90 */ 91 HWTEST_F(InputNativeTest, InputNativeTest_KeySwitch_001, TestSize.Level1) 92 { 93 struct Input_KeyState *keyState = OH_Input_CreateKeyState(); 94 ASSERT_NE(keyState, nullptr); 95 OH_Input_SetKeySwitch(keyState, 2); 96 int32_t keySwitch = OH_Input_GetKeySwitch(keyState); 97 ASSERT_EQ(keySwitch, 2); 98 OH_Input_DestroyKeyState(&keyState); 99 } 100 101 /** 102 * @tc.name: InputNativeTest_GetKeyState_001 103 * @tc.desc: Verify the GetKeyState 104 * @tc.type: FUNC 105 * @tc.require: 106 */ 107 HWTEST_F(InputNativeTest, InputNativeTest_GetKeyState_001, TestSize.Level1) 108 { 109 struct Input_KeyState* keyState = OH_Input_CreateKeyState(); 110 ASSERT_NE(keyState, nullptr); 111 OH_Input_SetKeyCode(keyState, KEYCODE_DPAD_UP); 112 OH_Input_GetKeyState(keyState); 113 EXPECT_EQ(OH_Input_GetKeyPressed(keyState), KEY_RELEASED); 114 EXPECT_EQ(OH_Input_GetKeySwitch(keyState), KEY_DEFAULT); 115 EXPECT_EQ(OH_Input_GetKeyState(keyState), INPUT_SUCCESS); 116 OH_Input_DestroyKeyState(&keyState); 117 } 118 119 /** 120 * @tc.name: InputNativeTest_InjectKeyEvent_001 121 * @tc.desc: Verify the InjectKeyEvent 122 * @tc.type: FUNC 123 * @tc.require: 124 */ 125 HWTEST_F(InputNativeTest, InputNativeTest_InjectKeyEvent_001, TestSize.Level1) 126 { 127 Input_KeyEvent *keyEvent = OH_Input_CreateKeyEvent(); 128 ASSERT_NE(keyEvent, nullptr); 129 OH_Input_SetKeyEventAction(keyEvent, KEY_ACTION_DOWN); 130 OH_Input_SetKeyEventKeyCode(keyEvent, KEYCODE_UNKNOWN); 131 OH_Input_SetKeyEventActionTime(keyEvent, -1); 132 int32_t retResult = OH_Input_InjectKeyEvent(keyEvent); 133 EXPECT_EQ(retResult, INPUT_PARAMETER_ERROR); 134 OH_Input_SetKeyEventAction(keyEvent, KEY_ACTION_UP); 135 OH_Input_SetKeyEventKeyCode(keyEvent, KEYCODE_UNKNOWN); 136 OH_Input_SetKeyEventActionTime(keyEvent, -1); 137 retResult = OH_Input_InjectKeyEvent(keyEvent); 138 EXPECT_EQ(retResult, INPUT_PARAMETER_ERROR); 139 OH_Input_CancelInjection(); 140 OH_Input_DestroyKeyEvent(&keyEvent); 141 EXPECT_EQ(keyEvent, nullptr); 142 } 143 144 /** 145 * @tc.name: InputNativeTest_KeyEventAction_001 146 * @tc.desc: Verify the set and get of keyEvent action 147 * @tc.type: FUNC 148 * @tc.require: 149 */ 150 HWTEST_F(InputNativeTest, InputNativeTest_KeyEventAction_001, TestSize.Level1) 151 { 152 Input_KeyEvent *keyEvent = OH_Input_CreateKeyEvent(); 153 ASSERT_NE(keyEvent, nullptr); 154 OH_Input_SetKeyEventAction(keyEvent, KEY_ACTION_DOWN); 155 int32_t action = OH_Input_GetKeyEventAction(keyEvent); 156 EXPECT_EQ(action, KEY_ACTION_DOWN); 157 OH_Input_DestroyKeyEvent(&keyEvent); 158 EXPECT_EQ(keyEvent, nullptr); 159 } 160 161 /** 162 * @tc.name: InputNativeTest_KeyEventKeyCode_001 163 * @tc.desc: Verify the set and get of keyEvent code 164 * @tc.type: FUNC 165 * @tc.require: 166 */ 167 HWTEST_F(InputNativeTest, InputNativeTest_KeyEventKeyCode_001, TestSize.Level1) 168 { 169 Input_KeyEvent *keyEvent = OH_Input_CreateKeyEvent(); 170 ASSERT_NE(keyEvent, nullptr); 171 OH_Input_SetKeyEventKeyCode(keyEvent, KEYCODE_A); 172 int32_t keyCode = OH_Input_GetKeyEventKeyCode(keyEvent); 173 EXPECT_EQ(keyCode, KEYCODE_A); 174 OH_Input_DestroyKeyEvent(&keyEvent); 175 EXPECT_EQ(keyEvent, nullptr); 176 } 177 178 /** 179 * @tc.name: InputNativeTest_KeyEventActionTime_001 180 * @tc.desc: Verify the set and get of keyEvent time 181 * @tc.type: FUNC 182 * @tc.require: 183 */ 184 HWTEST_F(InputNativeTest, InputNativeTest_KeyEventActionTime_001, TestSize.Level1) 185 { 186 Input_KeyEvent *keyEvent = OH_Input_CreateKeyEvent(); 187 ASSERT_NE(keyEvent, nullptr); 188 OH_Input_SetKeyEventActionTime(keyEvent, 200); 189 int64_t actionTime = OH_Input_GetKeyEventActionTime(keyEvent); 190 EXPECT_EQ(actionTime, 200); 191 OH_Input_DestroyKeyEvent(&keyEvent); 192 EXPECT_EQ(keyEvent, nullptr); 193 } 194 195 /** 196 * @tc.name: InputNativeTest_InjectMouseEvent_001 197 * @tc.desc: Verify the InjectMouseEvent 198 * @tc.type: FUNC 199 * @tc.require: 200 */ 201 HWTEST_F(InputNativeTest, InputNativeTest_InjectMouseEvent_001, TestSize.Level1) 202 { 203 Input_MouseEvent *mouseEvent = OH_Input_CreateMouseEvent(); 204 ASSERT_NE(mouseEvent, nullptr); 205 OH_Input_SetMouseEventAction(mouseEvent, MOUSE_ACTION_MOVE); 206 OH_Input_SetMouseEventDisplayX(mouseEvent, 350); 207 OH_Input_SetMouseEventDisplayY(mouseEvent, 350); 208 OH_Input_SetMouseEventButton(mouseEvent, -2); 209 OH_Input_SetMouseEventActionTime(mouseEvent, -1); 210 int32_t retResult = OH_Input_InjectMouseEvent(mouseEvent); 211 EXPECT_EQ(retResult, INPUT_PARAMETER_ERROR); 212 OH_Input_DestroyMouseEvent(&mouseEvent); 213 EXPECT_EQ(mouseEvent, nullptr); 214 } 215 216 /** 217 * @tc.name: InputNativeTest_InjectMouseEvent_002 218 * @tc.desc: Verify the InjectMouseEvent 219 * @tc.type: FUNC 220 * @tc.require: 221 */ 222 HWTEST_F(InputNativeTest, InputNativeTest_InjectMouseEvent_002, TestSize.Level1) 223 { 224 Input_MouseEvent *mouseEvent = OH_Input_CreateMouseEvent(); 225 ASSERT_NE(mouseEvent, nullptr); 226 OH_Input_SetMouseEventAction(mouseEvent, MOUSE_ACTION_AXIS_BEGIN); 227 OH_Input_SetMouseEventDisplayX(mouseEvent, 350); 228 OH_Input_SetMouseEventDisplayY(mouseEvent, 350); 229 OH_Input_SetMouseEventAxisType(mouseEvent, MOUSE_AXIS_SCROLL_VERTICAL); 230 OH_Input_SetMouseEventAxisValue(mouseEvent, 1.1); 231 OH_Input_SetMouseEventButton(mouseEvent, -2); 232 OH_Input_SetMouseEventActionTime(mouseEvent, -1); 233 int32_t retResult = OH_Input_InjectMouseEvent(mouseEvent); 234 EXPECT_EQ(retResult, INPUT_PARAMETER_ERROR); 235 OH_Input_SetMouseEventAction(mouseEvent, MOUSE_ACTION_AXIS_END); 236 OH_Input_SetMouseEventDisplayX(mouseEvent, 350); 237 OH_Input_SetMouseEventDisplayY(mouseEvent, 350); 238 OH_Input_SetMouseEventAxisType(mouseEvent, MOUSE_AXIS_SCROLL_VERTICAL); 239 OH_Input_SetMouseEventAxisValue(mouseEvent, 1.1); 240 OH_Input_SetMouseEventButton(mouseEvent, -2); 241 OH_Input_SetMouseEventActionTime(mouseEvent, -1); 242 retResult = OH_Input_InjectMouseEvent(mouseEvent); 243 EXPECT_EQ(retResult, INPUT_PARAMETER_ERROR); 244 OH_Input_DestroyMouseEvent(&mouseEvent); 245 EXPECT_EQ(mouseEvent, nullptr); 246 } 247 248 /** 249 * @tc.name: InputNativeTest_MouseEventAction_001 250 * @tc.desc: Verify the set and get of mouseEvent action 251 * @tc.type: FUNC 252 * @tc.require: 253 */ 254 HWTEST_F(InputNativeTest, InputNativeTest_MouseEventAction_001, TestSize.Level1) 255 { 256 Input_MouseEvent *mouseEvent = OH_Input_CreateMouseEvent(); 257 ASSERT_NE(mouseEvent, nullptr); 258 OH_Input_SetMouseEventAction(mouseEvent, MOUSE_ACTION_BUTTON_DOWN); 259 int32_t action = OH_Input_GetMouseEventAction(mouseEvent); 260 EXPECT_EQ(action, MOUSE_ACTION_BUTTON_DOWN); 261 OH_Input_DestroyMouseEvent(&mouseEvent); 262 EXPECT_EQ(mouseEvent, nullptr); 263 } 264 265 /** 266 * @tc.name: InputNativeTest_MouseEventDisplayX_001 267 * @tc.desc: Verify the set and get of mouseEvent displayX 268 * @tc.type: FUNC 269 * @tc.require: 270 */ 271 HWTEST_F(InputNativeTest, InputNativeTest_MouseEventDisplayX_001, TestSize.Level1) 272 { 273 Input_MouseEvent *mouseEvent = OH_Input_CreateMouseEvent(); 274 ASSERT_NE(mouseEvent, nullptr); 275 OH_Input_SetMouseEventDisplayX(mouseEvent, 100); 276 int32_t displayX = OH_Input_GetMouseEventDisplayX(mouseEvent); 277 EXPECT_EQ(displayX, 100); 278 OH_Input_DestroyMouseEvent(&mouseEvent); 279 EXPECT_EQ(mouseEvent, nullptr); 280 } 281 282 /** 283 * @tc.name: InputNativeTest_MouseEventDisplayY_001 284 * @tc.desc: Verify the set and get of mouseEvent displayY 285 * @tc.type: FUNC 286 * @tc.require: 287 */ 288 HWTEST_F(InputNativeTest, InputNativeTest_MouseEventDisplayY_001, TestSize.Level1) 289 { 290 Input_MouseEvent *mouseEvent = OH_Input_CreateMouseEvent(); 291 ASSERT_NE(mouseEvent, nullptr); 292 OH_Input_SetMouseEventDisplayY(mouseEvent, 100); 293 int32_t displayY = OH_Input_GetMouseEventDisplayY(mouseEvent); 294 EXPECT_EQ(displayY, 100); 295 OH_Input_DestroyMouseEvent(&mouseEvent); 296 EXPECT_EQ(mouseEvent, nullptr); 297 } 298 299 /** 300 * @tc.name: InputNativeTest_MouseEventButton_001 301 * @tc.desc: Verify the set and get of mouseEvent button 302 * @tc.type: FUNC 303 * @tc.require: 304 */ 305 HWTEST_F(InputNativeTest, InputNativeTest_MouseEventButton_001, TestSize.Level1) 306 { 307 Input_MouseEvent *mouseEvent = OH_Input_CreateMouseEvent(); 308 ASSERT_NE(mouseEvent, nullptr); 309 OH_Input_SetMouseEventButton(mouseEvent, MOUSE_BUTTON_LEFT); 310 int32_t button = OH_Input_GetMouseEventButton(mouseEvent); 311 EXPECT_EQ(button, MOUSE_BUTTON_LEFT); 312 OH_Input_DestroyMouseEvent(&mouseEvent); 313 EXPECT_EQ(mouseEvent, nullptr); 314 } 315 316 /** 317 * @tc.name: InputNativeTest_MouseEventAxisType_001 318 * @tc.desc: Verify the set and get of mouseEvent axisType 319 * @tc.type: FUNC 320 * @tc.require: 321 */ 322 HWTEST_F(InputNativeTest, InputNativeTest_MouseEventAxisType_001, TestSize.Level1) 323 { 324 Input_MouseEvent *mouseEvent = OH_Input_CreateMouseEvent(); 325 ASSERT_NE(mouseEvent, nullptr); 326 OH_Input_SetMouseEventAxisType(mouseEvent, MOUSE_AXIS_SCROLL_VERTICAL); 327 int32_t axisType = OH_Input_GetMouseEventAxisType(mouseEvent); 328 EXPECT_EQ(axisType, MOUSE_BUTTON_LEFT); 329 OH_Input_DestroyMouseEvent(&mouseEvent); 330 EXPECT_EQ(mouseEvent, nullptr); 331 } 332 333 /** 334 * @tc.name: InputNativeTest_MouseEventAxisValue_001 335 * @tc.desc: Verify the set and get of mouseEvent axisValue 336 * @tc.type: FUNC 337 * @tc.require: 338 */ 339 HWTEST_F(InputNativeTest, InputNativeTest_MouseEventAxisValue_001, TestSize.Level1) 340 { 341 Input_MouseEvent *mouseEvent = OH_Input_CreateMouseEvent(); 342 ASSERT_NE(mouseEvent, nullptr); 343 OH_Input_SetMouseEventAxisValue(mouseEvent, 15.0); 344 float axisValue = OH_Input_GetMouseEventAxisValue(mouseEvent); 345 EXPECT_EQ(axisValue, 15.0); 346 OH_Input_DestroyMouseEvent(&mouseEvent); 347 EXPECT_EQ(mouseEvent, nullptr); 348 } 349 350 /** 351 * @tc.name: InputNativeTest_MouseEventActionTime_001 352 * @tc.desc: Verify the set and get of mouseEvent actionTime 353 * @tc.type: FUNC 354 * @tc.require: 355 */ 356 HWTEST_F(InputNativeTest, InputNativeTest_MouseEventActionTime_001, TestSize.Level1) 357 { 358 Input_MouseEvent *mouseEvent = OH_Input_CreateMouseEvent(); 359 ASSERT_NE(mouseEvent, nullptr); 360 OH_Input_SetMouseEventActionTime(mouseEvent, 200); 361 int64_t actionTime = OH_Input_GetMouseEventActionTime(mouseEvent); 362 EXPECT_EQ(actionTime, 200); 363 OH_Input_DestroyMouseEvent(&mouseEvent); 364 EXPECT_EQ(mouseEvent, nullptr); 365 } 366 367 /** 368 * @tc.name: InputNativeTest_InjectTouchEvent_001 369 * @tc.desc: Verify the InjectTouchEvent 370 * @tc.type: FUNC 371 * @tc.require: 372 */ 373 HWTEST_F(InputNativeTest, InputNativeTest_InjectTouchEvent_001, TestSize.Level1) 374 { 375 Input_TouchEvent *touchEvent = OH_Input_CreateTouchEvent(); 376 ASSERT_NE(touchEvent, nullptr); 377 OH_Input_SetTouchEventAction(touchEvent, TOUCH_ACTION_DOWN); 378 OH_Input_SetTouchEventFingerId(touchEvent, 0); 379 OH_Input_SetTouchEventDisplayX(touchEvent, 671); 380 OH_Input_SetTouchEventDisplayY(touchEvent, -10); 381 OH_Input_SetTouchEventActionTime(touchEvent, -1); 382 int32_t retResult = OH_Input_InjectTouchEvent(touchEvent); 383 EXPECT_EQ(retResult, INPUT_PARAMETER_ERROR); 384 OH_Input_SetTouchEventAction(touchEvent, TOUCH_ACTION_UP); 385 OH_Input_SetTouchEventFingerId(touchEvent, 0); 386 OH_Input_SetTouchEventDisplayX(touchEvent, 671); 387 OH_Input_SetTouchEventDisplayY(touchEvent, -10); 388 OH_Input_SetTouchEventActionTime(touchEvent, -1); 389 retResult = OH_Input_InjectTouchEvent(touchEvent); 390 EXPECT_EQ(retResult, INPUT_PARAMETER_ERROR); 391 OH_Input_DestroyTouchEvent(&touchEvent); 392 EXPECT_EQ(touchEvent, nullptr); 393 } 394 395 /** 396 * @tc.name: InputNativeTest_TouchEventAction_001 397 * @tc.desc: Verify the set and get of touchEvent action 398 * @tc.type: FUNC 399 * @tc.require: 400 */ 401 HWTEST_F(InputNativeTest, InputNativeTest_TouchEventAction_001, TestSize.Level1) 402 { 403 Input_TouchEvent *touchEvent = OH_Input_CreateTouchEvent(); 404 ASSERT_NE(touchEvent, nullptr); 405 OH_Input_SetTouchEventAction(touchEvent, TOUCH_ACTION_DOWN); 406 int32_t action = OH_Input_GetTouchEventAction(touchEvent); 407 EXPECT_EQ(action, TOUCH_ACTION_DOWN); 408 OH_Input_DestroyTouchEvent(&touchEvent); 409 EXPECT_EQ(touchEvent, nullptr); 410 } 411 412 /** 413 * @tc.name: InputNativeTest_TouchEventFingerId_001 414 * @tc.desc: Verify the set and get of touchEvent id 415 * @tc.type: FUNC 416 * @tc.require: 417 */ 418 HWTEST_F(InputNativeTest, InputNativeTest_TouchEventFingerId_001, TestSize.Level1) 419 { 420 Input_TouchEvent *touchEvent = OH_Input_CreateTouchEvent(); 421 ASSERT_NE(touchEvent, nullptr); 422 OH_Input_SetTouchEventFingerId(touchEvent, 0); 423 int32_t id = OH_Input_GetTouchEventFingerId(touchEvent); 424 EXPECT_EQ(id, 0); 425 OH_Input_DestroyTouchEvent(&touchEvent); 426 EXPECT_EQ(touchEvent, nullptr); 427 } 428 429 /** 430 * @tc.name: InputNativeTest_TouchEventDisplayX_001 431 * @tc.desc: Verify the set and get of touchEvent displayX 432 * @tc.type: FUNC 433 * @tc.require: 434 */ 435 HWTEST_F(InputNativeTest, InputNativeTest_TouchEventDisplayX_001, TestSize.Level1) 436 { 437 Input_TouchEvent *touchEvent = OH_Input_CreateTouchEvent(); 438 ASSERT_NE(touchEvent, nullptr); 439 OH_Input_SetTouchEventDisplayX(touchEvent, 100); 440 int32_t displayX = OH_Input_GetTouchEventDisplayX(touchEvent); 441 EXPECT_EQ(displayX, 100); 442 OH_Input_DestroyTouchEvent(&touchEvent); 443 EXPECT_EQ(touchEvent, nullptr); 444 } 445 446 /** 447 * @tc.name: InputNativeTest_TouchEventDisplayY_001 448 * @tc.desc: Verify the set and get of touchEvent displayY 449 * @tc.type: FUNC 450 * @tc.require: 451 */ 452 HWTEST_F(InputNativeTest, InputNativeTest_TouchEventDisplayY_001, TestSize.Level1) 453 { 454 Input_TouchEvent *touchEvent = OH_Input_CreateTouchEvent(); 455 ASSERT_NE(touchEvent, nullptr); 456 OH_Input_SetTouchEventDisplayY(touchEvent, 100); 457 int32_t displayY = OH_Input_GetTouchEventDisplayY(touchEvent); 458 EXPECT_EQ(displayY, 100); 459 OH_Input_DestroyTouchEvent(&touchEvent); 460 EXPECT_EQ(touchEvent, nullptr); 461 } 462 463 /** 464 * @tc.name: InputNativeTest_TouchEventActionTime_001 465 * @tc.desc: Verify the set and get of touchEvent actionTime 466 * @tc.type: FUNC 467 * @tc.require: 468 */ 469 HWTEST_F(InputNativeTest, InputNativeTest_TouchEventActionTime_001, TestSize.Level1) 470 { 471 Input_TouchEvent *touchEvent = OH_Input_CreateTouchEvent(); 472 ASSERT_NE(touchEvent, nullptr); 473 OH_Input_SetTouchEventActionTime(touchEvent, 200); 474 int64_t actionTime = OH_Input_GetTouchEventActionTime(touchEvent); 475 EXPECT_EQ(actionTime, 200); 476 OH_Input_DestroyTouchEvent(&touchEvent); 477 EXPECT_EQ(touchEvent, nullptr); 478 } 479 } // namespace MMI 480 } // namespace OHOS