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_HORIZONTAL_AXIS = 2.5; 23 constexpr double TEST_HORIZONTAL_AXIS_2 = -1.8; 24 } // namespace 25 26 namespace OHOS::Ace { 27 28 /** 29 * @tc.name: OH_ArkUI_AxisEvent_GetHorizontalAxisValue001 30 * @tc.desc: Test OH_ArkUI_AxisEvent_GetHorizontalAxisValue with null event pointer 31 * @tc.type: FUNC 32 */ 33 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetHorizontalAxisValue001, TestSize.Level0) 34 { 35 auto result = OH_ArkUI_AxisEvent_GetHorizontalAxisValue(nullptr); 36 EXPECT_DOUBLE_EQ(result, 0.0); 37 } 38 39 /** 40 * @tc.name: OH_ArkUI_AxisEvent_GetHorizontalAxisValue002 41 * @tc.desc: Test OH_ArkUI_AxisEvent_GetHorizontalAxisValue with all unsupported event types 42 * @tc.type: FUNC 43 */ 44 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetHorizontalAxisValue002, TestSize.Level0) 45 { 46 std::vector<std::pair<ArkUI_UIInputEvent_Type, ArkUIEventTypeId>> unsupportedEventTypes = { 47 { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, TOUCH_EVENT_ID }, // 1 48 { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_TOUCH_EVENT_ID }, // 2 49 { ARKUI_UIINPUTEVENT_TYPE_MOUSE, C_MOUSE_EVENT_ID }, // 3 50 { ARKUI_UIINPUTEVENT_TYPE_KEY, C_KEY_EVENT_ID }, // 5 51 { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_FOCUS_AXIS_EVENT_ID }, // 6 52 { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_CLICK_EVENT_ID }, // 7 53 { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_HOVER_EVENT_ID }, // 8 54 }; 55 56 // Test each unsupported event type 57 for (const auto& [inputType, eventTypeId] : unsupportedEventTypes) { 58 ArkUITouchEvent inputEvent; 59 ArkUI_UIInputEvent event = { inputType, eventTypeId, &inputEvent, false }; 60 auto result = OH_ArkUI_AxisEvent_GetHorizontalAxisValue(&event); 61 EXPECT_DOUBLE_EQ(result, 0.0) << "Failed for event type: " << static_cast<int>(eventTypeId); 62 } 63 } 64 65 /** 66 * @tc.name: OH_ArkUI_AxisEvent_GetHorizontalAxisValue101 67 * @tc.desc: Test OH_ArkUI_AxisEvent_GetHorizontalAxisValue with AXIS_EVENT_ID type 68 * @tc.type: FUNC 69 */ 70 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetHorizontalAxisValue101, TestSize.Level0) 71 { 72 // Prepare test data 73 OHOS::Ace::AxisEvent axisEvent; 74 axisEvent.horizontalAxis = TEST_HORIZONTAL_AXIS; 75 76 ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, AXIS_EVENT_ID, &axisEvent }; 77 78 // Test normal case 79 auto result = OH_ArkUI_AxisEvent_GetHorizontalAxisValue(&event); 80 EXPECT_DOUBLE_EQ(result, TEST_HORIZONTAL_AXIS); 81 82 // Test null inputEvent case 83 ArkUI_UIInputEvent nullEvent = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, AXIS_EVENT_ID, nullptr }; 84 result = OH_ArkUI_AxisEvent_GetHorizontalAxisValue(&nullEvent); 85 EXPECT_DOUBLE_EQ(result, 0.0); 86 } 87 88 /** 89 * @tc.name: OH_ArkUI_AxisEvent_GetHorizontalAxisValue102 90 * @tc.desc: Test OH_ArkUI_AxisEvent_GetHorizontalAxisValue with C_AXIS_EVENT_ID type 91 * @tc.type: FUNC 92 */ 93 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetHorizontalAxisValue102, TestSize.Level0) 94 { 95 // Prepare test data 96 ArkUIAxisEvent axisEvent; 97 axisEvent.horizontalAxis = TEST_HORIZONTAL_AXIS_2; 98 99 ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_AXIS_EVENT_ID, &axisEvent }; 100 101 // Test normal case 102 auto result = OH_ArkUI_AxisEvent_GetHorizontalAxisValue(&event); 103 EXPECT_DOUBLE_EQ(result, TEST_HORIZONTAL_AXIS_2); 104 105 // Test null inputEvent case 106 ArkUI_UIInputEvent nullEvent = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_AXIS_EVENT_ID, nullptr }; 107 result = OH_ArkUI_AxisEvent_GetHorizontalAxisValue(&nullEvent); 108 EXPECT_DOUBLE_EQ(result, 0.0); 109 } 110 111 /** 112 * @tc.name: OH_ArkUI_AxisEvent_GetHorizontalAxisValue103 113 * @tc.desc: Test OH_ArkUI_AxisEvent_GetHorizontalAxisValue with boundary values for both event types 114 * @tc.type: FUNC 115 */ 116 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetHorizontalAxisValue103, TestSize.Level0) 117 { 118 // Test zero value for AXIS_EVENT_ID 119 OHOS::Ace::AxisEvent zeroEvent; 120 zeroEvent.horizontalAxis = 0.0; 121 ArkUI_UIInputEvent event1 = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, AXIS_EVENT_ID, &zeroEvent }; 122 auto result = OH_ArkUI_AxisEvent_GetHorizontalAxisValue(&event1); 123 EXPECT_DOUBLE_EQ(result, 0.0); 124 125 // Test maximum value for AXIS_EVENT_ID 126 OHOS::Ace::AxisEvent largeAceEvent; 127 largeAceEvent.horizontalAxis = DBL_MAX; 128 ArkUI_UIInputEvent event2 = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, AXIS_EVENT_ID, &largeAceEvent }; 129 result = OH_ArkUI_AxisEvent_GetHorizontalAxisValue(&event2); 130 EXPECT_DOUBLE_EQ(result, DBL_MAX); 131 132 // Test minimum value for AXIS_EVENT_ID 133 OHOS::Ace::AxisEvent smallAceEvent; 134 smallAceEvent.horizontalAxis = -DBL_MAX; 135 ArkUI_UIInputEvent event3 = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, AXIS_EVENT_ID, &smallAceEvent }; 136 result = OH_ArkUI_AxisEvent_GetHorizontalAxisValue(&event3); 137 EXPECT_DOUBLE_EQ(result, -DBL_MAX); 138 139 // Test zero value for C_AXIS_EVENT_ID 140 ArkUIAxisEvent zeroCEvent; 141 zeroCEvent.horizontalAxis = 0.0; 142 ArkUI_UIInputEvent event4 = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_AXIS_EVENT_ID, &zeroCEvent }; 143 result = OH_ArkUI_AxisEvent_GetHorizontalAxisValue(&event4); 144 EXPECT_DOUBLE_EQ(result, 0.0); 145 146 // Test maximum value for C_AXIS_EVENT_ID 147 ArkUIAxisEvent largeCEvent; 148 largeCEvent.horizontalAxis = DBL_MAX; 149 ArkUI_UIInputEvent event5 = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_AXIS_EVENT_ID, &largeCEvent }; 150 result = OH_ArkUI_AxisEvent_GetHorizontalAxisValue(&event5); 151 EXPECT_DOUBLE_EQ(result, DBL_MAX); 152 153 // Test minimum value for C_AXIS_EVENT_ID 154 ArkUIAxisEvent smallCEvent; 155 smallCEvent.horizontalAxis = -DBL_MAX; 156 ArkUI_UIInputEvent event6 = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_AXIS_EVENT_ID, &smallCEvent }; 157 result = OH_ArkUI_AxisEvent_GetHorizontalAxisValue(&event6); 158 EXPECT_DOUBLE_EQ(result, -DBL_MAX); 159 } 160 161 } // namespace OHOS::Ace