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 int32_t TEST_AXIS_ACTION_BEGIN = 1; 23 constexpr int32_t TEST_AXIS_ACTION_UPDATE = 2; 24 constexpr int32_t TEST_AXIS_ACTION_END = 3; 25 constexpr int32_t TEST_AXIS_ACTION_NONE = 0; 26 } // namespace 27 28 namespace OHOS::Ace { 29 30 /** 31 * @tc.name: OH_ArkUI_AxisEvent_GetAxisAction001 32 * @tc.desc: Test OH_ArkUI_AxisEvent_GetAxisAction with null event pointer 33 * @tc.type: FUNC 34 */ 35 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetAxisAction001, TestSize.Level0) 36 { 37 auto result = OH_ArkUI_AxisEvent_GetAxisAction(nullptr); 38 EXPECT_EQ(result, UI_AXIS_EVENT_ACTION_NONE); 39 } 40 41 /** 42 * @tc.name: OH_ArkUI_AxisEvent_GetAxisAction002 43 * @tc.desc: Test OH_ArkUI_AxisEvent_GetAxisAction with all unsupported event types 44 * @tc.type: FUNC 45 */ 46 /** 47 * @tc.name: OH_ArkUI_AxisEvent_GetAxisAction002 48 * @tc.desc: Test OH_ArkUI_AxisEvent_GetAxisAction with all unsupported event types 49 * @tc.type: FUNC 50 */ 51 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetAxisAction002, TestSize.Level0) 52 { 53 std::vector<std::pair<ArkUI_UIInputEvent_Type, ArkUIEventTypeId>> unsupportedEventTypes = { 54 { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, TOUCH_EVENT_ID }, // 1 55 { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_TOUCH_EVENT_ID }, // 2 56 { ARKUI_UIINPUTEVENT_TYPE_MOUSE, C_MOUSE_EVENT_ID }, // 3 57 { ARKUI_UIINPUTEVENT_TYPE_KEY, C_KEY_EVENT_ID }, // 5 58 { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_FOCUS_AXIS_EVENT_ID }, // 6 59 { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_CLICK_EVENT_ID }, // 7 60 { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_HOVER_EVENT_ID }, // 8 61 }; 62 63 // Test each unsupported event type 64 for (const auto& [inputType, eventTypeId] : unsupportedEventTypes) { 65 ArkUITouchEvent inputEvent; 66 ArkUI_UIInputEvent event = { inputType, eventTypeId, &inputEvent, false }; 67 auto result = OH_ArkUI_AxisEvent_GetAxisAction(&event); 68 EXPECT_EQ(result, UI_AXIS_EVENT_ACTION_NONE) << "Failed for event type: " << static_cast<int>(eventTypeId); 69 } 70 } 71 72 /** 73 * @tc.name: OH_ArkUI_AxisEvent_GetAxisAction101 74 * @tc.desc: Test OH_ArkUI_AxisEvent_GetAxisAction with AXIS_EVENT_ID type 75 * @tc.type: FUNC 76 */ 77 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetAxisAction101, TestSize.Level0) 78 { 79 // Prepare test data 80 OHOS::Ace::AxisEvent axisEvent; 81 axisEvent.action = OHOS::Ace::AxisAction::BEGIN; 82 83 ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, AXIS_EVENT_ID, &axisEvent }; 84 85 // Test normal case 86 auto result = OH_ArkUI_AxisEvent_GetAxisAction(&event); 87 EXPECT_EQ(result, TEST_AXIS_ACTION_BEGIN); 88 89 // Test null inputEvent case 90 ArkUI_UIInputEvent nullEvent = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, AXIS_EVENT_ID, nullptr }; 91 result = OH_ArkUI_AxisEvent_GetAxisAction(&nullEvent); 92 EXPECT_EQ(result, UI_AXIS_EVENT_ACTION_NONE); 93 } 94 95 /** 96 * @tc.name: OH_ArkUI_AxisEvent_GetAxisAction102 97 * @tc.desc: Test OH_ArkUI_AxisEvent_GetAxisAction with C_AXIS_EVENT_ID type 98 * @tc.type: FUNC 99 */ 100 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetAxisAction102, TestSize.Level0) 101 { 102 // Prepare test data 103 ArkUIAxisEvent axisEvent; 104 axisEvent.action = TEST_AXIS_ACTION_UPDATE; 105 106 ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_AXIS_EVENT_ID, &axisEvent }; 107 108 // Test normal case 109 auto result = OH_ArkUI_AxisEvent_GetAxisAction(&event); 110 EXPECT_EQ(result, TEST_AXIS_ACTION_UPDATE); 111 112 // Test null inputEvent case 113 ArkUI_UIInputEvent nullEvent = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_AXIS_EVENT_ID, nullptr }; 114 result = OH_ArkUI_AxisEvent_GetAxisAction(&nullEvent); 115 EXPECT_EQ(result, UI_AXIS_EVENT_ACTION_NONE); 116 } 117 118 /** 119 * @tc.name: OH_ArkUI_AxisEvent_GetAxisAction103 120 * @tc.desc: Test OH_ArkUI_AxisEvent_GetAxisAction with all action types 121 * @tc.type: FUNC 122 */ 123 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetAxisAction103, TestSize.Level0) 124 { 125 // Test BEGIN action 126 OHOS::Ace::AxisEvent beginEvent; 127 beginEvent.action = OHOS::Ace::AxisAction::BEGIN; 128 ArkUI_UIInputEvent event1 = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, AXIS_EVENT_ID, &beginEvent }; 129 auto result = OH_ArkUI_AxisEvent_GetAxisAction(&event1); 130 EXPECT_EQ(result, TEST_AXIS_ACTION_BEGIN); 131 132 // Test UPDATE action 133 ArkUIAxisEvent updateEvent; 134 updateEvent.action = TEST_AXIS_ACTION_UPDATE; 135 ArkUI_UIInputEvent event2 = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_AXIS_EVENT_ID, &updateEvent }; 136 result = OH_ArkUI_AxisEvent_GetAxisAction(&event2); 137 EXPECT_EQ(result, TEST_AXIS_ACTION_UPDATE); 138 139 // Test END action 140 OHOS::Ace::AxisEvent endEvent; 141 endEvent.action = OHOS::Ace::AxisAction::END; 142 ArkUI_UIInputEvent event3 = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, AXIS_EVENT_ID, &endEvent }; 143 result = OH_ArkUI_AxisEvent_GetAxisAction(&event3); 144 EXPECT_EQ(result, TEST_AXIS_ACTION_END); 145 146 // Test NONE action 147 ArkUIAxisEvent noneEvent; 148 noneEvent.action = TEST_AXIS_ACTION_NONE; 149 ArkUI_UIInputEvent event4 = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_AXIS_EVENT_ID, &noneEvent }; 150 result = OH_ArkUI_AxisEvent_GetAxisAction(&event4); 151 EXPECT_EQ(result, TEST_AXIS_ACTION_NONE); 152 } 153 154 } // namespace OHOS::Ace