• 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_HORIZONTAL_AXIS = 2.5;
23 constexpr double TEST_HORIZONTAL_AXIS_2 = -1.8;
24 } // namespace
25 
26 namespace OHOS::Ace {
27 
28 /**
29  * @tc.name: OH_ArkUI_AxisEvent_GetHorizontalAxisValue001
30  * @tc.desc: Test OH_ArkUI_AxisEvent_GetHorizontalAxisValue with null event pointer
31  * @tc.type: FUNC
32  */
33 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetHorizontalAxisValue001, TestSize.Level0)
34 {
35     auto result = OH_ArkUI_AxisEvent_GetHorizontalAxisValue(nullptr);
36     EXPECT_DOUBLE_EQ(result, 0.0);
37 }
38 
39 /**
40  * @tc.name: OH_ArkUI_AxisEvent_GetHorizontalAxisValue002
41  * @tc.desc: Test OH_ArkUI_AxisEvent_GetHorizontalAxisValue with all unsupported event types
42  * @tc.type: FUNC
43  */
44 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetHorizontalAxisValue002, TestSize.Level0)
45 {
46     std::vector<std::pair<ArkUI_UIInputEvent_Type, ArkUIEventTypeId>> unsupportedEventTypes = {
47         { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, TOUCH_EVENT_ID },        // 1
48         { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_TOUCH_EVENT_ID },      // 2
49         { ARKUI_UIINPUTEVENT_TYPE_MOUSE, C_MOUSE_EVENT_ID },        // 3
50         { ARKUI_UIINPUTEVENT_TYPE_KEY, C_KEY_EVENT_ID },            // 5
51         { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_FOCUS_AXIS_EVENT_ID }, // 6
52         { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_CLICK_EVENT_ID },      // 7
53         { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_HOVER_EVENT_ID },      // 8
54     };
55 
56     // Test each unsupported event type
57     for (const auto& [inputType, eventTypeId] : unsupportedEventTypes) {
58         ArkUITouchEvent inputEvent;
59         ArkUI_UIInputEvent event = { inputType, eventTypeId, &inputEvent, false };
60         auto result = OH_ArkUI_AxisEvent_GetHorizontalAxisValue(&event);
61         EXPECT_DOUBLE_EQ(result, 0.0) << "Failed for event type: " << static_cast<int>(eventTypeId);
62     }
63 }
64 
65 /**
66  * @tc.name: OH_ArkUI_AxisEvent_GetHorizontalAxisValue101
67  * @tc.desc: Test OH_ArkUI_AxisEvent_GetHorizontalAxisValue with AXIS_EVENT_ID type
68  * @tc.type: FUNC
69  */
70 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetHorizontalAxisValue101, TestSize.Level0)
71 {
72     // Prepare test data
73     OHOS::Ace::AxisEvent axisEvent;
74     axisEvent.horizontalAxis = TEST_HORIZONTAL_AXIS;
75 
76     ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, AXIS_EVENT_ID, &axisEvent };
77 
78     // Test normal case
79     auto result = OH_ArkUI_AxisEvent_GetHorizontalAxisValue(&event);
80     EXPECT_DOUBLE_EQ(result, TEST_HORIZONTAL_AXIS);
81 
82     // Test null inputEvent case
83     ArkUI_UIInputEvent nullEvent = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, AXIS_EVENT_ID, nullptr };
84     result = OH_ArkUI_AxisEvent_GetHorizontalAxisValue(&nullEvent);
85     EXPECT_DOUBLE_EQ(result, 0.0);
86 }
87 
88 /**
89  * @tc.name: OH_ArkUI_AxisEvent_GetHorizontalAxisValue102
90  * @tc.desc: Test OH_ArkUI_AxisEvent_GetHorizontalAxisValue with C_AXIS_EVENT_ID type
91  * @tc.type: FUNC
92  */
93 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetHorizontalAxisValue102, TestSize.Level0)
94 {
95     // Prepare test data
96     ArkUIAxisEvent axisEvent;
97     axisEvent.horizontalAxis = TEST_HORIZONTAL_AXIS_2;
98 
99     ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_AXIS_EVENT_ID, &axisEvent };
100 
101     // Test normal case
102     auto result = OH_ArkUI_AxisEvent_GetHorizontalAxisValue(&event);
103     EXPECT_DOUBLE_EQ(result, TEST_HORIZONTAL_AXIS_2);
104 
105     // Test null inputEvent case
106     ArkUI_UIInputEvent nullEvent = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_AXIS_EVENT_ID, nullptr };
107     result = OH_ArkUI_AxisEvent_GetHorizontalAxisValue(&nullEvent);
108     EXPECT_DOUBLE_EQ(result, 0.0);
109 }
110 
111 /**
112  * @tc.name: OH_ArkUI_AxisEvent_GetHorizontalAxisValue103
113  * @tc.desc: Test OH_ArkUI_AxisEvent_GetHorizontalAxisValue with boundary values for both event types
114  * @tc.type: FUNC
115  */
116 HWTEST_F(UIInputEventTest, OH_ArkUI_AxisEvent_GetHorizontalAxisValue103, TestSize.Level0)
117 {
118     // Test zero value for AXIS_EVENT_ID
119     OHOS::Ace::AxisEvent zeroEvent;
120     zeroEvent.horizontalAxis = 0.0;
121     ArkUI_UIInputEvent event1 = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, AXIS_EVENT_ID, &zeroEvent };
122     auto result = OH_ArkUI_AxisEvent_GetHorizontalAxisValue(&event1);
123     EXPECT_DOUBLE_EQ(result, 0.0);
124 
125     // Test maximum value for AXIS_EVENT_ID
126     OHOS::Ace::AxisEvent largeAceEvent;
127     largeAceEvent.horizontalAxis = DBL_MAX;
128     ArkUI_UIInputEvent event2 = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, AXIS_EVENT_ID, &largeAceEvent };
129     result = OH_ArkUI_AxisEvent_GetHorizontalAxisValue(&event2);
130     EXPECT_DOUBLE_EQ(result, DBL_MAX);
131 
132     // Test minimum value for AXIS_EVENT_ID
133     OHOS::Ace::AxisEvent smallAceEvent;
134     smallAceEvent.horizontalAxis = -DBL_MAX;
135     ArkUI_UIInputEvent event3 = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, AXIS_EVENT_ID, &smallAceEvent };
136     result = OH_ArkUI_AxisEvent_GetHorizontalAxisValue(&event3);
137     EXPECT_DOUBLE_EQ(result, -DBL_MAX);
138 
139     // Test zero value for C_AXIS_EVENT_ID
140     ArkUIAxisEvent zeroCEvent;
141     zeroCEvent.horizontalAxis = 0.0;
142     ArkUI_UIInputEvent event4 = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_AXIS_EVENT_ID, &zeroCEvent };
143     result = OH_ArkUI_AxisEvent_GetHorizontalAxisValue(&event4);
144     EXPECT_DOUBLE_EQ(result, 0.0);
145 
146     // Test maximum value for C_AXIS_EVENT_ID
147     ArkUIAxisEvent largeCEvent;
148     largeCEvent.horizontalAxis = DBL_MAX;
149     ArkUI_UIInputEvent event5 = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_AXIS_EVENT_ID, &largeCEvent };
150     result = OH_ArkUI_AxisEvent_GetHorizontalAxisValue(&event5);
151     EXPECT_DOUBLE_EQ(result, DBL_MAX);
152 
153     // Test minimum value for C_AXIS_EVENT_ID
154     ArkUIAxisEvent smallCEvent;
155     smallCEvent.horizontalAxis = -DBL_MAX;
156     ArkUI_UIInputEvent event6 = { ARKUI_UIINPUTEVENT_TYPE_UNKNOWN, C_AXIS_EVENT_ID, &smallCEvent };
157     result = OH_ArkUI_AxisEvent_GetHorizontalAxisValue(&event6);
158     EXPECT_DOUBLE_EQ(result, -DBL_MAX);
159 }
160 
161 } // namespace OHOS::Ace