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