• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_VERTICAL_AXIS = 1.5;
23 constexpr double TEST_VERTICAL_AXIS_2 = -2.3;
24 } // namespace
25 
26 namespace OHOS::Ace {
27 
28 /**
29  * @tc.name: OH_ArkUI_AxisEvent_GetVerticalAxisValue001
30  * @tc.desc: Test OH_ArkUI_AxisEvent_GetVerticalAxisValue with null event pointer
31  * @tc.type: FUNC
32  */
33 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetVerticalAxisValue001, TestSize.Level0)
34 {
35     auto result = OH_ArkUI_AxisEvent_GetVerticalAxisValue(nullptr);
36     EXPECT_DOUBLE_EQ(result, 0.0);
37 }
38 
39 /**
40  * @tc.name: OH_ArkUI_AxisEvent_GetVerticalAxisValue002
41  * @tc.desc: Test OH_ArkUI_AxisEvent_GetVerticalAxisValue with all unsupported event types
42  * @tc.type: FUNC
43  */
44 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetVerticalAxisValue002, TestSize.Level0)
45 {
46     // Define all unsupported event types (excluding AXIS_EVENT_ID which should be supported)
47     std::vector<std::pair<ArkUI_UIInputEvent_Type, ArkUIEventTypeId>> unsupportedEventTypes = {
48         { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, TOUCH_EVENT_ID },        // 1
49         { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_TOUCH_EVENT_ID },      // 2
50         { ARKUI_UIINPUTEVENT_TYPE_MOUSE, C_MOUSE_EVENT_ID },        // 3
51         { ARKUI_UIINPUTEVENT_TYPE_KEY, C_KEY_EVENT_ID },            // 5
52         { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_FOCUS_AXIS_EVENT_ID }, // 6
53         { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_CLICK_EVENT_ID },      // 7
54         { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_HOVER_EVENT_ID },      // 8
55     };
56 
57     // Test each unsupported event type
58     for (const auto& [inputType, eventTypeId] : unsupportedEventTypes) {
59         ArkUITouchEvent inputEvent;
60         ArkUI_UIInputEvent event = { inputType, eventTypeId, &inputEvent, false };
61         auto result = OH_ArkUI_AxisEvent_GetVerticalAxisValue(&event);
62         EXPECT_DOUBLE_EQ(result, 0.0) << "Failed for event type: " << static_cast<int>(eventTypeId);
63     }
64 }
65 
66 /**
67  * @tc.name: OH_ArkUI_AxisEvent_GetVerticalAxisValue101
68  * @tc.desc: Test OH_ArkUI_AxisEvent_GetVerticalAxisValue with AXIS_EVENT_ID type event
69  * @tc.type: FUNC
70  */
71 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetVerticalAxisValue101, TestSize.Level0)
72 {
73     // Prepare test data
74     OHOS::Ace::AxisEvent axisEvent;
75     axisEvent.verticalAxis = TEST_VERTICAL_AXIS;
76 
77     ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, AXIS_EVENT_ID, &axisEvent };
78 
79     // Test normal case
80     auto result = OH_ArkUI_AxisEvent_GetVerticalAxisValue(&event);
81     EXPECT_DOUBLE_EQ(result, TEST_VERTICAL_AXIS);
82 
83     // Test case with null inputEvent
84     ArkUI_UIInputEvent nullEvent = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, AXIS_EVENT_ID, nullptr };
85     result = OH_ArkUI_AxisEvent_GetVerticalAxisValue(&nullEvent);
86     EXPECT_DOUBLE_EQ(result, 0.0);
87 }
88 
89 /**
90  * @tc.name: OH_ArkUI_AxisEvent_GetVerticalAxisValue102
91  * @tc.desc: Test OH_ArkUI_AxisEvent_GetVerticalAxisValue with C_AXIS_EVENT_ID type event
92  * @tc.type: FUNC
93  */
94 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetVerticalAxisValue102, TestSize.Level0)
95 {
96     // Prepare test data
97 
98     ArkUIAxisEvent axisEvent;
99 
100     axisEvent.verticalAxis = TEST_VERTICAL_AXIS_2;
101 
102     ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_AXIS_EVENT_ID, &axisEvent };
103 
104     // Test normal case
105     auto result = OH_ArkUI_AxisEvent_GetVerticalAxisValue(&event);
106     EXPECT_DOUBLE_EQ(result, TEST_VERTICAL_AXIS_2);
107 
108     // Test case with null inputEvent
109     ArkUI_UIInputEvent nullEvent = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_AXIS_EVENT_ID, nullptr };
110     result = OH_ArkUI_AxisEvent_GetVerticalAxisValue(&nullEvent);
111     EXPECT_DOUBLE_EQ(result, 0.0);
112 }
113 
114 /**
115  * @tc.name: OH_ArkUI_AxisEvent_GetVerticalAxisValue103
116  * @tc.desc: Test OH_ArkUI_AxisEvent_GetVerticalAxisValue with boundary values
117  * @tc.type: FUNC
118  */
119 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetVerticalAxisValue103, TestSize.Level0)
120 {
121     // Test zero value
122     OHOS::Ace::AxisEvent zeroEvent;
123     zeroEvent.verticalAxis = 0.0;
124     ArkUI_UIInputEvent event1 = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, AXIS_EVENT_ID, &zeroEvent };
125     auto result = OH_ArkUI_AxisEvent_GetVerticalAxisValue(&event1);
126     EXPECT_DOUBLE_EQ(result, 0.0);
127 
128     // Test maximum value
129     ArkUIAxisEvent largeEvent;
130     largeEvent.verticalAxis = DBL_MAX;
131     ArkUI_UIInputEvent event2 = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_AXIS_EVENT_ID, &largeEvent };
132     result = OH_ArkUI_AxisEvent_GetVerticalAxisValue(&event2);
133     EXPECT_DOUBLE_EQ(result, DBL_MAX);
134 
135     // Test minimum value
136     ArkUIAxisEvent smallEvent;
137     smallEvent.verticalAxis = -DBL_MAX;
138     ArkUI_UIInputEvent event3 = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_AXIS_EVENT_ID, &smallEvent };
139     result = OH_ArkUI_AxisEvent_GetVerticalAxisValue(&event3);
140     EXPECT_DOUBLE_EQ(result, -DBL_MAX);
141 }
142 
143 } // namespace OHOS::Ace