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 18 using namespace testing; 19 using namespace testing::ext; 20 21 namespace { 22 constexpr double TEST_VERTICAL_AXIS = 1.5; 23 constexpr double TEST_VERTICAL_AXIS_2 = -2.3; 24 } // namespace 25 26 namespace OHOS::Ace { 27 28 /** 29 * @tc.name: OH_ArkUI_AxisEvent_GetVerticalAxisValue001 30 * @tc.desc: Test OH_ArkUI_AxisEvent_GetVerticalAxisValue with null event pointer 31 * @tc.type: FUNC 32 */ 33 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetVerticalAxisValue001, TestSize.Level0) 34 { 35 auto result = OH_ArkUI_AxisEvent_GetVerticalAxisValue(nullptr); 36 EXPECT_DOUBLE_EQ(result, 0.0); 37 } 38 39 /** 40 * @tc.name: OH_ArkUI_AxisEvent_GetVerticalAxisValue002 41 * @tc.desc: Test OH_ArkUI_AxisEvent_GetVerticalAxisValue with all unsupported event types 42 * @tc.type: FUNC 43 */ 44 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetVerticalAxisValue002, TestSize.Level0) 45 { 46 // Define all unsupported event types (excluding AXIS_EVENT_ID which should be supported) 47 std::vector<std::pair<ArkUI_UIInputEvent_Type, ArkUIEventTypeId>> unsupportedEventTypes = { 48 { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, TOUCH_EVENT_ID }, // 1 49 { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_TOUCH_EVENT_ID }, // 2 50 { ARKUI_UIINPUTEVENT_TYPE_MOUSE, C_MOUSE_EVENT_ID }, // 3 51 { ARKUI_UIINPUTEVENT_TYPE_KEY, C_KEY_EVENT_ID }, // 5 52 { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_FOCUS_AXIS_EVENT_ID }, // 6 53 { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_CLICK_EVENT_ID }, // 7 54 { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_HOVER_EVENT_ID }, // 8 55 }; 56 57 // Test each unsupported event type 58 for (const auto& [inputType, eventTypeId] : unsupportedEventTypes) { 59 ArkUITouchEvent inputEvent; 60 ArkUI_UIInputEvent event = { inputType, eventTypeId, &inputEvent, false }; 61 auto result = OH_ArkUI_AxisEvent_GetVerticalAxisValue(&event); 62 EXPECT_DOUBLE_EQ(result, 0.0) << "Failed for event type: " << static_cast<int>(eventTypeId); 63 } 64 } 65 66 /** 67 * @tc.name: OH_ArkUI_AxisEvent_GetVerticalAxisValue101 68 * @tc.desc: Test OH_ArkUI_AxisEvent_GetVerticalAxisValue with AXIS_EVENT_ID type event 69 * @tc.type: FUNC 70 */ 71 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetVerticalAxisValue101, TestSize.Level0) 72 { 73 // Prepare test data 74 OHOS::Ace::AxisEvent axisEvent; 75 axisEvent.verticalAxis = TEST_VERTICAL_AXIS; 76 77 ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, AXIS_EVENT_ID, &axisEvent }; 78 79 // Test normal case 80 auto result = OH_ArkUI_AxisEvent_GetVerticalAxisValue(&event); 81 EXPECT_DOUBLE_EQ(result, TEST_VERTICAL_AXIS); 82 83 // Test case with null inputEvent 84 ArkUI_UIInputEvent nullEvent = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, AXIS_EVENT_ID, nullptr }; 85 result = OH_ArkUI_AxisEvent_GetVerticalAxisValue(&nullEvent); 86 EXPECT_DOUBLE_EQ(result, 0.0); 87 } 88 89 /** 90 * @tc.name: OH_ArkUI_AxisEvent_GetVerticalAxisValue102 91 * @tc.desc: Test OH_ArkUI_AxisEvent_GetVerticalAxisValue with C_AXIS_EVENT_ID type event 92 * @tc.type: FUNC 93 */ 94 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetVerticalAxisValue102, TestSize.Level0) 95 { 96 // Prepare test data 97 98 ArkUIAxisEvent axisEvent; 99 100 axisEvent.verticalAxis = TEST_VERTICAL_AXIS_2; 101 102 ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_AXIS_EVENT_ID, &axisEvent }; 103 104 // Test normal case 105 auto result = OH_ArkUI_AxisEvent_GetVerticalAxisValue(&event); 106 EXPECT_DOUBLE_EQ(result, TEST_VERTICAL_AXIS_2); 107 108 // Test case with null inputEvent 109 ArkUI_UIInputEvent nullEvent = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_AXIS_EVENT_ID, nullptr }; 110 result = OH_ArkUI_AxisEvent_GetVerticalAxisValue(&nullEvent); 111 EXPECT_DOUBLE_EQ(result, 0.0); 112 } 113 114 /** 115 * @tc.name: OH_ArkUI_AxisEvent_GetVerticalAxisValue103 116 * @tc.desc: Test OH_ArkUI_AxisEvent_GetVerticalAxisValue with boundary values 117 * @tc.type: FUNC 118 */ 119 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetVerticalAxisValue103, TestSize.Level0) 120 { 121 // Test zero value 122 OHOS::Ace::AxisEvent zeroEvent; 123 zeroEvent.verticalAxis = 0.0; 124 ArkUI_UIInputEvent event1 = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, AXIS_EVENT_ID, &zeroEvent }; 125 auto result = OH_ArkUI_AxisEvent_GetVerticalAxisValue(&event1); 126 EXPECT_DOUBLE_EQ(result, 0.0); 127 128 // Test maximum value 129 ArkUIAxisEvent largeEvent; 130 largeEvent.verticalAxis = DBL_MAX; 131 ArkUI_UIInputEvent event2 = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_AXIS_EVENT_ID, &largeEvent }; 132 result = OH_ArkUI_AxisEvent_GetVerticalAxisValue(&event2); 133 EXPECT_DOUBLE_EQ(result, DBL_MAX); 134 135 // Test minimum value 136 ArkUIAxisEvent smallEvent; 137 smallEvent.verticalAxis = -DBL_MAX; 138 ArkUI_UIInputEvent event3 = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_AXIS_EVENT_ID, &smallEvent }; 139 result = OH_ArkUI_AxisEvent_GetVerticalAxisValue(&event3); 140 EXPECT_DOUBLE_EQ(result, -DBL_MAX); 141 } 142 143 } // namespace OHOS::Ace