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 OHOS::Ace { 22 23 /** 24 * @tc.name: OH_ArkUI_PointerEvent_SetInterceptHitTestMode001 25 * @tc.desc: Test OH_ArkUI_PointerEvent_SetInterceptHitTestMode with null event pointer 26 * @tc.type: FUNC 27 */ 28 HWTEST_F(UIInputEventTest, OH_ArkUI_PointerEvent_SetInterceptHitTestMode001, TestSize.Level0) 29 { 30 auto result = OH_ArkUI_PointerEvent_SetInterceptHitTestMode(nullptr, HTM_DEFAULT); 31 EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID); 32 } 33 34 /** 35 * @tc.name: OH_ArkUI_PointerEvent_SetInterceptHitTestMode002 36 * @tc.desc: Test OH_ArkUI_PointerEvent_SetInterceptHitTestMode with unsupported event type 37 * @tc.type: FUNC 38 */ 39 HWTEST_F(UIInputEventTest, OH_ArkUI_PointerEvent_SetInterceptHitTestMode002, TestSize.Level0) 40 { 41 ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, AXIS_EVENT_ID, nullptr }; 42 auto result = OH_ArkUI_PointerEvent_SetInterceptHitTestMode(&event, HTM_DEFAULT); 43 EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID); 44 } 45 46 /** 47 * @tc.name: OH_ArkUI_PointerEvent_SetInterceptHitTestMode101 48 * @tc.desc: Test OH_ArkUI_PointerEvent_SetInterceptHitTestMode with C_TOUCH_EVENT_ID type 49 * @tc.type: FUNC 50 */ 51 HWTEST_F(UIInputEventTest, OH_ArkUI_PointerEvent_SetInterceptHitTestMode101, TestSize.Level0) 52 { 53 // Prepare test data 54 ArkUITouchEvent touchEvent; 55 ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_TOUCH_EVENT_ID, &touchEvent }; 56 57 // Test HTM_DEFAULT mode 58 auto result = OH_ArkUI_PointerEvent_SetInterceptHitTestMode(&event, HTM_DEFAULT); 59 EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR); 60 EXPECT_EQ(touchEvent.interceptResult, HTM_DEFAULT); 61 62 // Test HTM_BLOCK mode 63 result = OH_ArkUI_PointerEvent_SetInterceptHitTestMode(&event, HTM_BLOCK); 64 EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR); 65 EXPECT_EQ(touchEvent.interceptResult, HTM_BLOCK); 66 } 67 68 /** 69 * @tc.name: OH_ArkUI_PointerEvent_SetInterceptHitTestMode102 70 * @tc.desc: Test OH_ArkUI_PointerEvent_SetInterceptHitTestMode with C_MOUSE_EVENT_ID type 71 * @tc.type: FUNC 72 */ 73 HWTEST_F(UIInputEventTest, OH_ArkUI_PointerEvent_SetInterceptHitTestMode102, TestSize.Level0) 74 { 75 // Prepare test data 76 ArkUIMouseEvent mouseEvent; 77 ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_MOUSE_EVENT_ID, &mouseEvent }; 78 79 // Test HTM_TRANSPARENT mode 80 auto result = OH_ArkUI_PointerEvent_SetInterceptHitTestMode(&event, HTM_TRANSPARENT); 81 EXPECT_EQ(result, static_cast<int32_t>(HTM_TRANSPARENT)); 82 EXPECT_EQ(mouseEvent.interceptResult, HTM_TRANSPARENT); 83 84 // Test HTM_NONE mode 85 result = OH_ArkUI_PointerEvent_SetInterceptHitTestMode(&event, HTM_NONE); 86 EXPECT_EQ(result, static_cast<int32_t>(HTM_NONE)); 87 EXPECT_EQ(mouseEvent.interceptResult, HTM_NONE); 88 } 89 90 /** 91 * @tc.name: OH_ArkUI_PointerEvent_SetInterceptHitTestMode103 92 * @tc.desc: Test OH_ArkUI_PointerEvent_SetInterceptHitTestMode with null inputEvent for C_MOUSE_EVENT_ID 93 * @tc.type: FUNC 94 */ 95 HWTEST_F(UIInputEventTest, OH_ArkUI_PointerEvent_SetInterceptHitTestMode103, TestSize.Level0) 96 { 97 ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_MOUSE_EVENT_ID, nullptr }; 98 auto result = OH_ArkUI_PointerEvent_SetInterceptHitTestMode(&event, HTM_DEFAULT); 99 EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID); 100 } 101 102 /** 103 * @tc.name: OH_ArkUI_PointerEvent_SetInterceptHitTestMode104 104 * @tc.desc: Test OH_ArkUI_PointerEvent_SetInterceptHitTestMode with all HitTestMode values 105 * @tc.type: FUNC 106 */ 107 HWTEST_F(UIInputEventTest, OH_ArkUI_PointerEvent_SetInterceptHitTestMode104, TestSize.Level0) 108 { 109 ArkUITouchEvent touchEvent; 110 ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_TOUCH_EVENT_ID, &touchEvent }; 111 112 // Test all possible HitTestMode values 113 auto result = OH_ArkUI_PointerEvent_SetInterceptHitTestMode(&event, HTM_DEFAULT); 114 EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR); 115 EXPECT_EQ(touchEvent.interceptResult, HTM_DEFAULT); 116 117 result = OH_ArkUI_PointerEvent_SetInterceptHitTestMode(&event, HTM_BLOCK); 118 EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR); 119 EXPECT_EQ(touchEvent.interceptResult, HTM_BLOCK); 120 121 result = OH_ArkUI_PointerEvent_SetInterceptHitTestMode(&event, HTM_TRANSPARENT); 122 EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR); 123 EXPECT_EQ(touchEvent.interceptResult, HTM_TRANSPARENT); 124 125 result = OH_ArkUI_PointerEvent_SetInterceptHitTestMode(&event, HTM_NONE); 126 EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR); 127 EXPECT_EQ(touchEvent.interceptResult, HTM_NONE); 128 } 129 130 } // namespace OHOS::Ace