1 /* 2 * Copyright (c) 2025 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 "../ui_input_event_test.h" 17 #include "interfaces/native/event/ui_input_event_impl.h" 18 #include "interfaces/native/ui_input_event.h" 19 20 using namespace testing; 21 using namespace testing::ext; 22 namespace OHOS::Ace { 23 24 HWTEST_F(UIInputEventTest, OH_ArkUI_MouseEvent_GetMouseButton_NullEvent, TestSize.Level0) 25 { 26 int32_t result = OH_ArkUI_MouseEvent_GetMouseButton(nullptr); 27 EXPECT_EQ(result, -1); 28 } 29 30 HWTEST_F(UIInputEventTest, OH_ArkUI_MouseEvent_GetMouseButton_EventTypeNotMouse, TestSize.Level0) 31 { 32 ArkUIMouseEvent mouseEvent = {}; 33 mouseEvent.button = 1; // Left button 34 ArkUI_UIInputEvent inputEvent = { ARKUI_UIINPUTEVENT_TYPE_MOUSE, 35 C_CLICK_EVENT_ID, // Not mouse event 36 &mouseEvent }; 37 int32_t result = OH_ArkUI_MouseEvent_GetMouseButton(&inputEvent); 38 EXPECT_EQ(result, -1); 39 } 40 41 HWTEST_F(UIInputEventTest, OH_ArkUI_MouseEvent_GetMouseButton_NullInputEvent, TestSize.Level0) 42 { 43 ArkUI_UIInputEvent inputEvent = { ARKUI_UIINPUTEVENT_TYPE_MOUSE, C_MOUSE_EVENT_ID, nullptr }; 44 int32_t result = OH_ArkUI_MouseEvent_GetMouseButton(&inputEvent); 45 EXPECT_EQ(result, -1); 46 } 47 48 HWTEST_F(UIInputEventTest, OH_ArkUI_MouseEvent_GetMouseButton_Normal, TestSize.Level0) 49 { 50 ArkUIMouseEvent mouseEvent = {}; 51 mouseEvent.button = 1; // Left button 52 ArkUI_UIInputEvent inputEvent = { ARKUI_UIINPUTEVENT_TYPE_MOUSE, C_MOUSE_EVENT_ID, &mouseEvent }; 53 int32_t result = OH_ArkUI_MouseEvent_GetMouseButton(&inputEvent); 54 EXPECT_EQ(result, 1); 55 } 56 57 HWTEST_F(UIInputEventTest, OH_ArkUI_MouseEvent_GetMouseButton_ButtonVariants, TestSize.Level0) 58 { 59 struct ButtonTestCase { 60 int32_t rawButton; // Raw button value from event 61 int32_t expected; // Expected converted value 62 const char* desc; 63 }; 64 std::vector<ButtonTestCase> cases = { { 0, 0, "No button pressed" }, { 1, 1, "Left button pressed" }, 65 { 2, 2, "Right button pressed" }, { 4, 3, "Middle button pressed" }, { 8, 4, "Back button pressed" }, 66 { 16, 5, "Forward button pressed" }, { 3, 0, "Invalid combination" }, { 32, 0, "Unsupported button" } }; 67 68 ArkUIMouseEvent mouseEvent = {}; 69 ArkUI_UIInputEvent inputEvent = { ARKUI_UIINPUTEVENT_TYPE_MOUSE, C_MOUSE_EVENT_ID, &mouseEvent }; 70 int count = 0; 71 for (const auto& testCase : cases) { 72 mouseEvent.button = testCase.rawButton; 73 int32_t result = OH_ArkUI_MouseEvent_GetMouseButton(&inputEvent); 74 EXPECT_EQ(result, testCase.expected) 75 << "Test case " << count << " failed: " << testCase.desc << ", rawButton=" << testCase.rawButton 76 << ", expected=" << testCase.expected << ", actual=" << result; 77 count++; 78 } 79 } 80 81 } // namespace OHOS::Ace