* Copyright (c) 2024-2025 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <cstdio>
#include <fstream>
#include <gtest/gtest.h>
#include "mmi_log.h"
#include "oh_input_manager.h"
#include "pointer_event.h"
#include "pointer_event_ndk.h"
#undef MMI_LOG_TAG
#define MMI_LOG_TAG "PointerEventNdkTest"
struct Input_TouchEvent {
int32_t action;
int32_t id;
int32_t displayX;
int32_t displayY;
int64_t actionTime { -1 };
int32_t windowId { -1 };
int32_t displayId { -1 };
int32_t windowX { 0 };
int32_t windowY { 0 };
int64_t downTime { 0 };
Input_TouchEventToolType toolType { Input_TouchEventToolType::TOOL_TYPE_FINGER };
double pressure { 0.0 };
};
namespace OHOS {
namespace MMI {
namespace {
using namespace testing::ext;
}
class PointerEventNdkTest : public testing::Test {
public:
static void SetUpTestCase(void) {}
static void TearDownTestCase(void) {}
};
* @tc.name: PointerEventNdkTest_OH_Input_TouchEventToPointerEvent_Normal
* @tc.desc: Test the function OH_Input_TouchEventToPointerEvent with normal parameters
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(PointerEventNdkTest, PointerEventNdkTest_OH_Input_TouchEventToPointerEvent_001, TestSize.Level1)
{
CALL_TEST_DEBUG;
Input_TouchEvent inputTouchEvent;
inputTouchEvent.actionTime = 100;
inputTouchEvent.action = TOUCH_ACTION_DOWN;
inputTouchEvent.id = 1;
inputTouchEvent.displayX = 100;
inputTouchEvent.displayY = 200;
int32_t windowX = 10;
int32_t windowY = 20;
std::shared_ptr<OHOS::MMI::PointerEvent> result
= OH_Input_TouchEventToPointerEvent(&inputTouchEvent, windowX, windowY);
EXPECT_NE(result, nullptr);
}
* @tc.name: PointerEventNdkTest_OH_Input_TouchEventToPointerEvent_InvalidActionTime
* @tc.desc: Test the function OH_Input_TouchEventToPointerEvent with invalid actionTime
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(PointerEventNdkTest, PointerEventNdkTest_OH_Input_TouchEventToPointerEvent_002, TestSize.Level1)
{
CALL_TEST_DEBUG;
Input_TouchEvent inputTouchEvent;
inputTouchEvent.actionTime = -1;
inputTouchEvent.action = TOUCH_ACTION_DOWN;
inputTouchEvent.id = 1;
inputTouchEvent.displayX = 100;
inputTouchEvent.displayY = 200;
int32_t windowX = 10;
int32_t windowY = 20;
std::shared_ptr<OHOS::MMI::PointerEvent> result
= OH_Input_TouchEventToPointerEvent(&inputTouchEvent, windowX, windowY);
EXPECT_NE(result, nullptr);
}
* @tc.name: PointerEventNdkTest_OH_Input_TouchEventToPointerEvent_InvalidAction
* @tc.desc: Test the function OH_Input_TouchEventToPointerEvent with invalid action
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(PointerEventNdkTest, PointerEventNdkTest_OH_Input_TouchEventToPointerEvent_003, TestSize.Level1)
{
CALL_TEST_DEBUG;
Input_TouchEvent inputTouchEvent;
inputTouchEvent.actionTime = 100;
inputTouchEvent.action = static_cast<Input_TouchEventAction>(10);
inputTouchEvent.id = 1;
inputTouchEvent.displayX = 100;
inputTouchEvent.displayY = 200;
int32_t windowX = 10;
int32_t windowY = 20;
std::shared_ptr<OHOS::MMI::PointerEvent> result
= OH_Input_TouchEventToPointerEvent(&inputTouchEvent, windowX, windowY);
EXPECT_EQ(result, nullptr);
}
* @tc.name: PointerEventNdkTest_OH_Input_TouchEventToPointerEvent_InvalidDisplayX
* @tc.desc: Test the function OH_Input_TouchEventToPointerEvent with invalid displayX
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(PointerEventNdkTest, PointerEventNdkTest_OH_Input_TouchEventToPointerEvent_004, TestSize.Level1)
{
CALL_TEST_DEBUG;
Input_TouchEvent inputTouchEvent;
inputTouchEvent.actionTime = 100;
inputTouchEvent.action = TOUCH_ACTION_DOWN;
inputTouchEvent.id = 1;
inputTouchEvent.displayX = -1;
inputTouchEvent.displayY = 200;
int32_t windowX = 10;
int32_t windowY = 20;
std::shared_ptr<OHOS::MMI::PointerEvent> result
= OH_Input_TouchEventToPointerEvent(&inputTouchEvent, windowX, windowY);
EXPECT_EQ(result, nullptr);
}
* @tc.name: PointerEventNdkTest_OH_Input_TouchEventToPointerEvent_InvalidDisplayY
* @tc.desc: Test the function OH_Input_TouchEventToPointerEvent with invalid displayY
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(PointerEventNdkTest, PointerEventNdkTest_OH_Input_TouchEventToPointerEvent_005, TestSize.Level1)
{
CALL_TEST_DEBUG;
Input_TouchEvent inputTouchEvent;
inputTouchEvent.actionTime = 100;
inputTouchEvent.action = TOUCH_ACTION_DOWN;
inputTouchEvent.id = 1;
inputTouchEvent.displayX = 100;
inputTouchEvent.displayY = -1;
int32_t windowX = 10;
int32_t windowY = 20;
std::shared_ptr<OHOS::MMI::PointerEvent> result
= OH_Input_TouchEventToPointerEvent(&inputTouchEvent, windowX, windowY);
EXPECT_EQ(result, nullptr);
}
* @tc.name: PointerEventNdkTest_OH_Input_TouchEventToPointerEvent_InvalidWindowX
* @tc.desc: Test the function OH_Input_TouchEventToPointerEvent with invalid windowX
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(PointerEventNdkTest, PointerEventNdkTest_OH_Input_TouchEventToPointerEvent_006, TestSize.Level1)
{
CALL_TEST_DEBUG;
Input_TouchEvent inputTouchEvent;
inputTouchEvent.actionTime = 100;
inputTouchEvent.action = TOUCH_ACTION_DOWN;
inputTouchEvent.id = 1;
inputTouchEvent.displayX = 100;
inputTouchEvent.displayY = 200;
int32_t windowX = -1;
int32_t windowY = 20;
std::shared_ptr<OHOS::MMI::PointerEvent> result
= OH_Input_TouchEventToPointerEvent(&inputTouchEvent, windowX, windowY);
EXPECT_EQ(result, nullptr);
}
* @tc.name: PointerEventNdkTest_OH_Input_TouchEventToPointerEvent_InvalidWindowY
* @tc.desc: Test the function OH_Input_TouchEventToPointerEvent with invalid windowY
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(PointerEventNdkTest, PointerEventNdkTest_OH_Input_TouchEventToPointerEvent_007, TestSize.Level1)
{
CALL_TEST_DEBUG;
Input_TouchEvent inputTouchEvent;
inputTouchEvent.actionTime = 100;
inputTouchEvent.action = TOUCH_ACTION_DOWN;
inputTouchEvent.id = 1;
inputTouchEvent.displayX = 100;
inputTouchEvent.displayY = 200;
int32_t windowX = 10;
int32_t windowY = -1;
std::shared_ptr<OHOS::MMI::PointerEvent> result
= OH_Input_TouchEventToPointerEvent(&inputTouchEvent, windowX, windowY);
EXPECT_EQ(result, nullptr);
}
* @tc.name: PointerEventNdkTest_OH_Input_TouchEventToPointerEvent_ValidWindowX
* @tc.desc: Test the function OH_Input_TouchEventToPointerEvent with valid windowX
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(PointerEventNdkTest, PointerEventNdkTest_OH_Input_TouchEventToPointerEvent_008, TestSize.Level1)
{
CALL_TEST_DEBUG;
Input_TouchEvent inputTouchEvent;
inputTouchEvent.actionTime = 100;
inputTouchEvent.action = TOUCH_ACTION_DOWN;
inputTouchEvent.id = 1;
inputTouchEvent.displayX = 100;
inputTouchEvent.displayY = 200;
inputTouchEvent.windowX = 500;
inputTouchEvent.windowY = 600;
inputTouchEvent.pressure = 0.5;
inputTouchEvent.toolType = Input_TouchEventToolType::TOOL_TYPE_PENCIL;
inputTouchEvent.downTime = 100;
int32_t windowX = 10;
int32_t windowY = 1;
std::shared_ptr<OHOS::MMI::PointerEvent> result
= OH_Input_TouchEventToPointerEvent(&inputTouchEvent, windowX, windowY);
EXPECT_NE(result, nullptr);
OHOS::MMI::PointerEvent::PointerItem item;
auto ret = result->GetPointerItem(result->GetPointerId(), item);
EXPECT_TRUE(ret);
EXPECT_EQ(item.GetWindowX(), windowX);
EXPECT_EQ(item.GetWindowY(), windowY);
}
}
}