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 namespace OHOS::Ace { 21 22 namespace { 23 struct GetPointerIdInputType { GetPointerIdInputTypeOHOS::Ace::__anona66fbd9d0111::GetPointerIdInputType24 explicit GetPointerIdInputType(const ArkUI_UIInputEvent event, uint32_t pointerIndex = 0) 25 : event(event), pointerIndex(pointerIndex) 26 {}; 27 ArkUI_UIInputEvent event; 28 uint32_t pointerIndex; 29 }; 30 } // namespace 31 32 /** 33 * @tc.name: OH_ArkUI_PointerEvent_GetPointerId001 34 * @tc.desc: Test the OH_ArkUI_PointerEvent_GetPointerId function. 35 * @tc.type: FUNC 36 */ 37 HWTEST_F(UIInputEventTest, OH_ArkUI_PointerEvent_GetPointerId001, TestSize.Level0) 38 { 39 /** 40 * @tc.steps: step1.call functions and return expected results. 41 */ 42 auto result = OH_ArkUI_PointerEvent_GetPointerId(nullptr, 0); 43 EXPECT_EQ(result, 0); 44 } 45 46 /** 47 * @tc.name: OH_ArkUI_PointerEvent_GetPointerId101 48 * @tc.desc: Test the OH_ArkUI_PointerEvent_GetPointerId function. 49 * @tc.type: FUNC 50 */ 51 HWTEST_F(UIInputEventTest, OH_ArkUI_PointerEvent_GetPointerId101, TestSize.Level0) 52 { 53 /** 54 * @tc.steps: step1.create and init ArkUI_UIInputEvent. 55 */ 56 // 1 ArkUITouchEvent {C_TOUCH_EVENT_ID, touchEvent->touchPointes[pointerIndex].id} 57 ArkUITouchEvent inputEvent; 58 ArkUIEventTypeId eventTypeId = C_TOUCH_EVENT_ID; 59 ArkUITouchPoint points[1]; 60 points[0].id = 10; 61 inputEvent.touchPointes = &points[0]; 62 inputEvent.touchPointSize = 1; 63 64 ArkUITouchEvent inputEventEmpty; 65 66 std::vector<std::pair<GetPointerIdInputType, int32_t>> testCases = { 67 // case 1 !touchEvent 68 { GetPointerIdInputType( 69 ArkUI_UIInputEvent { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, eventTypeId, nullptr}, 0), 0 }, 70 // case 2 pointerIndex < 0 71 { GetPointerIdInputType( 72 ArkUI_UIInputEvent { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, eventTypeId, &inputEvent}, -1), 0 }, 73 // case 3 pointerIndex >= touchEvent->touchPointSize 74 { GetPointerIdInputType( 75 ArkUI_UIInputEvent { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, eventTypeId, &inputEvent}, 1), 0 }, 76 // case 4 !(touchEvent->touchPointes) 77 { GetPointerIdInputType( 78 ArkUI_UIInputEvent { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, eventTypeId, &inputEventEmpty}, 0), 0 }, 79 // case 5 getValue 80 { GetPointerIdInputType( 81 ArkUI_UIInputEvent { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, eventTypeId, &inputEvent}, 0), points[0].id }, 82 }; 83 84 /** 85 * @tc.steps: step2. Init testCases and call functions. 86 * @tc.expected: Return expected results. 87 */ 88 auto count = 0; 89 for (auto testCase : testCases) { 90 auto input = testCase.first; 91 auto expect = testCase.second; 92 auto result = OH_ArkUI_PointerEvent_GetPointerId(&input.event, input.pointerIndex); 93 EXPECT_FLOAT_EQ(result, expect) << "index = " << count << ",result = " << result << ",expect = " << expect; 94 count++; 95 } 96 } 97 98 /** 99 * @tc.name: OH_ArkUI_PointerEvent_GetPointerId102 100 * @tc.desc: Test the OH_ArkUI_PointerEvent_GetPointerId function. 101 * @tc.type: FUNC 102 */ 103 HWTEST_F(UIInputEventTest, OH_ArkUI_PointerEvent_GetPointerId102, TestSize.Level0) 104 { 105 /** 106 * @tc.steps: step1.create and init ArkUI_UIInputEvent. 107 */ 108 // 2 ArkUIMouseEvent {C_MOUSE_EVENT_ID, mouseEvent->actionTouchPoint.id} 109 ArkUIMouseEvent inputEvent; 110 ArkUIEventTypeId eventTypeId = C_MOUSE_EVENT_ID; 111 inputEvent.actionTouchPoint.id = 10; 112 113 std::vector<std::pair<GetPointerIdInputType, int32_t>> testCases = { 114 // case 1 !mouseEvent 115 { GetPointerIdInputType( 116 ArkUI_UIInputEvent { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, eventTypeId, nullptr}, 0), 0 }, 117 // case 2 pointerIndex != 0 118 { GetPointerIdInputType( 119 ArkUI_UIInputEvent { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, eventTypeId, &inputEvent}, 1), 0 }, 120 // case 3 getValue 121 { GetPointerIdInputType( 122 ArkUI_UIInputEvent { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, eventTypeId, &inputEvent}, 0), 123 inputEvent.actionTouchPoint.id }, 124 }; 125 126 /** 127 * @tc.steps: step2. Init testCases and call functions. 128 * @tc.expected: Return expected results. 129 */ 130 auto count = 0; 131 for (auto testCase : testCases) { 132 auto input = testCase.first; 133 auto expect = testCase.second; 134 auto result = OH_ArkUI_PointerEvent_GetPointerId(&input.event, input.pointerIndex); 135 EXPECT_FLOAT_EQ(result, expect) << "index = " << count << ",result = " << result << ",expect = " << expect; 136 count++; 137 } 138 } 139 140 /** 141 * @tc.name: OH_ArkUI_PointerEvent_GetPointerId103 142 * @tc.desc: Test the OH_ArkUI_PointerEvent_GetPointerId function. 143 * @tc.type: FUNC 144 */ 145 HWTEST_F(UIInputEventTest, OH_ArkUI_PointerEvent_GetPointerId103, TestSize.Level0) 146 { 147 /** 148 * @tc.steps: step1.create and init ArkUI_UIInputEvent. 149 */ 150 // 3 ArkUIAxisEvent {C_AXIS_EVENT_ID, axisEvent->actionTouchPoint.id} 151 ArkUIAxisEvent inputEvent; 152 ArkUIEventTypeId eventTypeId = C_AXIS_EVENT_ID; 153 inputEvent.actionTouchPoint.id = 10; 154 155 std::vector<std::pair<GetPointerIdInputType, int32_t>> testCases = { 156 // case 1 !mouseEvent 157 { GetPointerIdInputType( 158 ArkUI_UIInputEvent { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, eventTypeId, nullptr}, 0), 0 }, 159 // case 2 pointerIndex != 0 160 { GetPointerIdInputType( 161 ArkUI_UIInputEvent { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, eventTypeId, &inputEvent}, 1), 0 }, 162 // case 3 getValue 163 { GetPointerIdInputType( 164 ArkUI_UIInputEvent { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, eventTypeId, &inputEvent}, 0), 165 inputEvent.actionTouchPoint.id }, 166 }; 167 168 /** 169 * @tc.steps: step2. Init testCases and call functions. 170 * @tc.expected: Return expected results. 171 */ 172 auto count = 0; 173 for (auto testCase : testCases) { 174 auto input = testCase.first; 175 auto expect = testCase.second; 176 auto result = OH_ArkUI_PointerEvent_GetPointerId(&input.event, input.pointerIndex); 177 EXPECT_FLOAT_EQ(result, expect) << "index = " << count << ",result = " << result << ",expect = " << expect; 178 count++; 179 } 180 } 181 182 /** 183 * @tc.name: OH_ArkUI_PointerEvent_GetPointerId104 184 * @tc.desc: Test the OH_ArkUI_PointerEvent_GetPointerId function. 185 * @tc.type: FUNC 186 */ 187 HWTEST_F(UIInputEventTest, OH_ArkUI_PointerEvent_GetPointerId104, TestSize.Level0) 188 { 189 /** 190 * @tc.steps: step1.create and init ArkUI_UIInputEvent. 191 */ 192 // 2 Other ArkUIEventTypeId 193 std::vector<ArkUIEventTypeId> typeIds = { 194 AXIS_EVENT_ID, 195 TOUCH_EVENT_ID, 196 C_KEY_EVENT_ID, 197 C_FOCUS_AXIS_EVENT_ID, 198 C_CLICK_EVENT_ID, 199 C_HOVER_EVENT_ID 200 }; 201 202 /** 203 * @tc.steps: step2. Init testCases and call functions. 204 * @tc.expected: Return expected results. 205 */ 206 auto count = 0; 207 uint32_t pointerIndex = 0; 208 for (auto typeId : typeIds) { 209 auto uiInputEvent = ArkUI_UIInputEvent { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, typeId, nullptr }; 210 auto result = OH_ArkUI_PointerEvent_GetPointerId(&uiInputEvent, pointerIndex); 211 EXPECT_EQ(result, 0) << "other index = " << count; 212 count++; 213 } 214 } 215 216 } // namespace OHOS::Ace