/*
 * 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 <cstddef>
#include <cstdint>
#include "gtest/gtest.h"
#define private public
#define protected public
#include "native_interface.h"
#include "native_node.h"
#include "native_type.h"
#include "native_styled_string.h"
#include "event_converter.h"
#include "interfaces/inner_api/ace/node_module_inner.h"
#include "interfaces/native/native_styled_string.h"
#include "interfaces/native/native_key_event.h"
#include "interfaces/native/native_interface_focus.h"
#include "interfaces/native/drag_and_drop.h"
#include "interfaces/native/event/ui_input_event_impl.h"
#include "interfaces/native/node/node_extened.h"
#include "interfaces/native/node/node_model.h"
#include "interfaces/native/node/styled_string.h"
#include "interfaces/native/node/node_component_snapshot.h"
#include "interfaces/native/node/gesture_impl.h"
#include "test/mock/adapter/ohos/osal/mock_system_properties.h"
#include "test/mock/frameworks/base/thread/mock_task_executor.h"
#include "test/mock/frameworks/core/common/mock_container.h"
#include "test/mock/frameworks/core/common/mock_theme_manager.h"
#include "test/mock/frameworks/core/pipeline/mock_pipeline_context.h"
#include "frameworks/base/error/error_code.h"
#include "frameworks/core/components_ng/base/frame_node.h"
#include "frameworks/core/components_ng/base/ui_node.h"
#include "frameworks/core/components_ng/pattern/pattern.h"
#include "frameworks/core/components_v2/inspector/inspector_constants.h"
#include "core/interfaces/arkoala/arkoala_api.h"

using namespace testing;
using namespace testing::ext;
namespace OHOS::Ace {
class NativeNodeTest : public testing::Test {
public:
    static void SetUpTestSuite()
    {
        NG::MockPipelineContext::SetUp();
        MockContainer::SetUp();
        MockContainer::Current()->pipelineContext_ = NG::MockPipelineContext::GetCurrent();
        MockContainer::Current()->taskExecutor_ = AceType::MakeRefPtr<MockTaskExecutor>();
        MockContainer::Current()->pipelineContext_->taskExecutor_ = MockContainer::Current()->taskExecutor_;
        auto themeManager = AceType::MakeRefPtr<MockThemeManager>();
        PipelineBase::GetCurrentContext()->SetThemeManager(themeManager);
    }
    static void TearDownTestSuite()
    {
        NG::MockPipelineContext::TearDown();
        MockContainer::TearDown();
    }
    void SetUp() {}
    void TearDown() {}
};

namespace {
void RunTaskInScopeTestCallback(void* userData)
{
    auto* value = static_cast<int32_t*>(userData);
    if (value != nullptr) {
        *value = 1;
    }
}

void CommonVisibleAreaApproximateChangeEventCallback(ArkUI_NodeEvent* event)
{
    (void)event;
}

void SupportedUIStatesChangeCallback(int32_t currentStates, void* userData)
{
    (void)currentStates;
    (void)userData;
}
} // namespace

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetLayoutSize001
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetLayoutSize.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetLayoutSize001, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a node nullptr.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_PARAM_INVALID.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_NodeHandle node = nullptr;
    ArkUI_IntSize size = {0, 0};

    /**
     * @tc.steps: step2. Call the function.
     * @tc.expect: the function is be called.
     */
    int32_t result = OH_ArkUI_NodeUtils_GetLayoutSize(node, &size);

    /**
     * @tc.steps: step3. Verify the result.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_PARAM_INVALID.
     */
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_PARAM_INVALID);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetLayoutSize002
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetLayoutSize.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetLayoutSize002, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a node not nullptr.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_NO_ERROR.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto frameNode = NG::FrameNode::CreateFrameNode(
        V2::STACK_ETS_TAG, 100003, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(frameNode, nullptr);
    ArkUI_NodeHandle node =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(frameNode)));
    ASSERT_NE(node, nullptr);
    ArkUI_IntSize size = {0, 0};

    /**
     * @tc.steps: step2. Call the function.
     * @tc.expect: the function is be called.
     */
    int32_t result = OH_ArkUI_NodeUtils_GetLayoutSize(node, &size);

    /**
     * @tc.steps: step3. Verify the result.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_NO_ERROR.
     */
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetLayoutPosition001
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetLayoutPosition.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetLayoutPosition001, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a node nullptr.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_PARAM_INVALID.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_NodeHandle node = nullptr;
    ArkUI_IntOffset localOffset;

    /**
     * @tc.steps: step2. Call the function.
     * @tc.expect: the function is be called.
     */
    int32_t result = OH_ArkUI_NodeUtils_GetLayoutPosition(node, &localOffset);

    /**
     * @tc.steps: step3. Verify the result.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_PARAM_INVALID.
     */
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_PARAM_INVALID);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetLayoutPosition002
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetLayoutPosition.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetLayoutPosition002, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a node not nullptr.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_NO_ERROR.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto frameNode = NG::FrameNode::CreateFrameNode(
        V2::STACK_ETS_TAG, 100001, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(frameNode, nullptr);
    ArkUI_NodeHandle node =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(frameNode)));
    ASSERT_NE(node, nullptr);
    ArkUI_IntOffset localOffset;

    /**
     * @tc.steps: step2. Call the function.
     * @tc.expect: the function is be called.
     */
    int32_t result = OH_ArkUI_NodeUtils_GetLayoutPosition(node, &localOffset);

    /**
     * @tc.steps: step3. Verify the result.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_NO_ERROR.
     */
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetParentInPageTree001
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetParentInPageTree.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetParentInPageTree001, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a node  nullptr.
     * @tc.expect: result is nullptr.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_NodeHandle node = nullptr;

    /**
     * @tc.steps: step2. Call the function.
     * @tc.expect: the function is be called.
     */
    ArkUI_NodeHandle result = OH_ArkUI_NodeUtils_GetParentInPageTree(node);

    /**
     * @tc.steps: step3. Verify the result.
     * @tc.expect: result is nullptr.
     */
    EXPECT_EQ(result, nullptr);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetParentInPageTree002
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetParentInPageTree with valid parent.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetParentInPageTree002, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto parentNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(parentNode, nullptr);
    ASSERT_NE(childNode, nullptr);
    EXPECT_EQ(nodeAPI->addChild(parentNode, childNode), ARKUI_ERROR_CODE_NO_ERROR);

    ArkUI_NodeHandle result = OH_ArkUI_NodeUtils_GetParentInPageTree(childNode);

    EXPECT_EQ(result, parentNode);
    nodeAPI->disposeNode(parentNode);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetCurrentPageRootNode001
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetCurrentPageRootNode with valid page tree.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetCurrentPageRootNode001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto pageNode = NG::FrameNode::CreateFrameNode(
        V2::PAGE_ETS_TAG, 1, AceType::MakeRefPtr<NG::Pattern>(), true);
    auto childNode = NG::FrameNode::CreateFrameNode(
        V2::TEXT_ETS_TAG, 2, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(pageNode, nullptr);
    ASSERT_NE(childNode, nullptr);
    pageNode->AddChild(childNode);

    auto node = OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(childNode)));
    ASSERT_NE(node, nullptr);

    ArkUI_NodeHandle result = OH_ArkUI_NodeUtils_GetCurrentPageRootNode(node);

    ASSERT_NE(result, nullptr);
    EXPECT_EQ(result->uiNodeHandle, reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(childNode)));
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetLayoutPositionInWindow001
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetLayoutPositionInWindow.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetLayoutPositionInWindow001, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a node nullptr.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_PARAM_INVALID.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_NodeHandle node = nullptr;
    ArkUI_IntOffset globalOffset;

    /**
     * @tc.steps: step2. Call the function.
     * @tc.expect: the function is be called.
     */
    int32_t result = OH_ArkUI_NodeUtils_GetLayoutPositionInWindow(node, &globalOffset);

    /**
     * @tc.steps: step3. Verify the result.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_PARAM_INVALID.
     */
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_PARAM_INVALID);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetLayoutPositionInWindow002
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetLayoutPositionInWindow.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetLayoutPositionInWindow002, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a node not nullptr.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_NO_ERROR.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto frameNode = NG::FrameNode::CreateFrameNode(
        V2::STACK_ETS_TAG, 100004, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(frameNode, nullptr);
    ArkUI_NodeHandle node =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(frameNode)));
    ASSERT_NE(node, nullptr);
    ArkUI_IntOffset globalOffset;

    /**
     * @tc.steps: step2. Call the function.
     * @tc.expect: the function is be called.
     */
    int32_t result = OH_ArkUI_NodeUtils_GetLayoutPositionInWindow(node, &globalOffset);

    /**
     * @tc.steps: step3. Verify the result.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_NO_ERROR.
     */
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetLayoutPositionInScreen001
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetLayoutPositionInScreen.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetLayoutPositionInScreen001, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a node nullptr.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_PARAM_INVALID.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_NodeHandle node = nullptr;
    ArkUI_IntOffset screenOffset;

    /**
     * @tc.steps: step2. Call the function.
     * @tc.expect: the function is be called.
     */
    int32_t result = OH_ArkUI_NodeUtils_GetLayoutPositionInScreen(node, &screenOffset);

    /**
     * @tc.steps: step3. Verify the result.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_PARAM_INVALID.
     */
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_PARAM_INVALID);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetLayoutPositionInWindow002
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetLayoutPositionInScreen.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetLayoutPositionInScreen002, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a node not nullptr.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_NO_ERROR.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto frameNode = NG::FrameNode::CreateFrameNode(
        V2::STACK_ETS_TAG, 100005, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(frameNode, nullptr);
    ArkUI_NodeHandle node =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(frameNode)));
    ASSERT_NE(node, nullptr);
    ArkUI_IntOffset screenOffset;

    /**
     * @tc.steps: step2. Call the function.
     * @tc.expect: the function is be called.
     */
    int32_t result = OH_ArkUI_NodeUtils_GetLayoutPositionInScreen(node, &screenOffset);

    /**
     * @tc.steps: step3. Verify the result.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_NO_ERROR.
     */
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetPositionWithTranslateInWindow001
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetPositionWithTranslateInWindow.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetPositionWithTranslateInWindow001, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a node nullptr.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_PARAM_INVALID.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_NodeHandle node = nullptr;
    ArkUI_IntOffset translateOffset;

    /**
     * @tc.steps: step2. Call the function.
     * @tc.expect: the function is be called.
     */
    int32_t result = OH_ArkUI_NodeUtils_GetPositionWithTranslateInWindow(node, &translateOffset);

    /**
     * @tc.steps: step3. Verify the result.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_PARAM_INVALID.
     */
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_PARAM_INVALID);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetPositionWithTranslateInWindow002
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetPositionWithTranslateInWindow.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetPositionWithTranslateInWindow002, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a node not nullptr.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_NO_ERROR.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto frameNode = NG::FrameNode::CreateFrameNode(
        V2::STACK_ETS_TAG, 100006, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(frameNode, nullptr);
    ArkUI_NodeHandle node =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(frameNode)));
    ASSERT_NE(node, nullptr);
    ArkUI_IntOffset translateOffset;

    /**
     * @tc.steps: step2. Call the function.
     * @tc.expect: the function is be called.
     */
    int32_t result = OH_ArkUI_NodeUtils_GetPositionWithTranslateInWindow(node, &translateOffset);

    /**
     * @tc.steps: step3. Verify the result.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_NO_ERROR.
     */
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetPositionWithTranslateInScreen001
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetPositionWithTranslateInScreen.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetPositionWithTranslateInScreen001, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a node nullptr.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_PARAM_INVALID.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_NodeHandle node = nullptr;
    ArkUI_IntOffset translateOffset;

    /**
     * @tc.steps: step2. Call the function.
     * @tc.expect: the function is be called.
     */
    int32_t result = OH_ArkUI_NodeUtils_GetPositionWithTranslateInScreen(node, &translateOffset);

    /**
     * @tc.steps: step3. Verify the result.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_PARAM_INVALID.
     */
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_PARAM_INVALID);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetPositionWithTranslateInScreen002
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetPositionWithTranslateInScreen.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetPositionWithTranslateInScreen002, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a node not nullptr.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_NO_ERROR.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto frameNode = NG::FrameNode::CreateFrameNode(
        V2::STACK_ETS_TAG, 100007, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(frameNode, nullptr);
    ArkUI_NodeHandle node =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(frameNode)));
    ASSERT_NE(node, nullptr);
    ArkUI_IntOffset translateOffset;

    /**
     * @tc.steps: step2. Call the function.
     * @tc.expect: the function is be called.
     */
    int32_t result = OH_ArkUI_NodeUtils_GetPositionWithTranslateInScreen(node, &translateOffset);

    /**
     * @tc.steps: step3. Verify the result.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_NO_ERROR.
     */
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: OH_ArkUI_RegisterSystemColorModeChangeEvent001
 * @tc.desc: Test OH_ArkUI_RegisterSystemColorModeChangeEvent.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_RegisterSystemColorModeChangeEvent001, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a node nullptr.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_PARAM_INVALID.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_NodeHandle node = nullptr;
    void* userData = nullptr;
    void (*onColorModeChange)(ArkUI_SystemColorMode colorMode, void* userData) = nullptr;

    /**
     * @tc.steps: step2. Call the function.
     * @tc.expect: the function is be called.
     */
    int32_t result = OH_ArkUI_RegisterSystemColorModeChangeEvent(node, userData, onColorModeChange);

    /**
     * @tc.steps: step3. Verify the result.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_PARAM_INVALID.
     */
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_PARAM_INVALID);
}

/**
 * @tc.name: OH_ArkUI_RegisterSystemColorModeChangeEvent002
 * @tc.desc: Test OH_ArkUI_RegisterSystemColorModeChangeEvent.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_RegisterSystemColorModeChangeEvent002, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a node not nullptr.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_NO_ERROR.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto frameNode = NG::FrameNode::CreateFrameNode(
        V2::STACK_ETS_TAG, 100008, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(frameNode, nullptr);
    ArkUI_NodeHandle node =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(frameNode)));
    ASSERT_NE(node, nullptr);
    void* userData = nullptr;
    void (*onColorModeChange)(ArkUI_SystemColorMode colorMode, void* userData) = nullptr;

    /**
     * @tc.steps: step2. Call the function.
     * @tc.expect: the function is be called.
     */
    int32_t result = OH_ArkUI_RegisterSystemColorModeChangeEvent(node, userData, onColorModeChange);

    /**
     * @tc.steps: step3. Verify the result.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_NO_ERROR.
     */
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: OH_ArkUI_RegisterSystemFontStyleChangeEvent001
 * @tc.desc: Test OH_ArkUI_RegisterSystemFontStyleChangeEvent.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_RegisterSystemFontStyleChangeEvent001, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a node nullptr.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_PARAM_INVALID.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_NodeHandle node = nullptr;
    void* userData = nullptr;
    void (*onFontStyleChange)(ArkUI_SystemFontStyleEvent* event, void* userData) = nullptr;

    /**
     * @tc.steps: step2. Call the function.
     * @tc.expect: the function is be called.
     */
    int32_t result = OH_ArkUI_RegisterSystemFontStyleChangeEvent(node, userData, onFontStyleChange);

    /**
     * @tc.steps: step3. Verify the result.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_PARAM_INVALID.
     */
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_PARAM_INVALID);
}

/**
 * @tc.name: OH_ArkUI_RegisterSystemFontStyleChangeEvent002
 * @tc.desc: Test OH_ArkUI_RegisterSystemFontStyleChangeEvent.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_RegisterSystemFontStyleChangeEvent002, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a node not nullptr.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_NO_ERROR.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto frameNode = NG::FrameNode::CreateFrameNode(
        V2::STACK_ETS_TAG, 100009, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(frameNode, nullptr);
    ArkUI_NodeHandle node =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(frameNode)));
    ASSERT_NE(node, nullptr);
    void* userData = nullptr;
    void (*onFontStyleChange)(ArkUI_SystemFontStyleEvent* event, void* userData) = nullptr;

    /**
     * @tc.steps: step2. Call the function.
     * @tc.expect: the function is be called.
     */
    int32_t result = OH_ArkUI_RegisterSystemFontStyleChangeEvent(node, userData, onFontStyleChange);

    /**
     * @tc.steps: step3. Verify the result.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_PARAM_INVALID.
     */
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: OH_ArkUI_SystemFontStyleEvent_GetFontSizeScale001
 * @tc.desc: Test OH_ArkUI_SystemFontStyleEvent_GetFontSizeScale.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_SystemFontStyleEvent_GetFontSizeScale001, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a event, fontSize undefined.
     * @tc.expect: result is 0.0.
     */
    ArkUI_SystemFontStyleEvent event;

    /**
     * @tc.steps: step2. Call the function.
     * @tc.expect: the function is be called.
     */
    float result = OH_ArkUI_SystemFontStyleEvent_GetFontSizeScale(&event);

    /**
     * @tc.steps: step3. Verify the result.
     * @tc.expect: result is 0.0.
     */
    EXPECT_EQ(result, 0.0);
}

/**
 * @tc.name: OH_ArkUI_SystemFontStyleEvent_GetFontSizeScale002
 * @tc.desc: Test OH_ArkUI_SystemFontStyleEvent_GetFontSizeScale.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_SystemFontStyleEvent_GetFontSizeScale002, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a event, fontSize is 1.5f.
     * @tc.expect: result is 1.5f.
     */
    ArkUI_SystemFontStyleEvent event;
    event.fontSize = 1.5f;

    /**
     * @tc.steps: step2. Call the function.
     * @tc.expect: the function is be called.
     */
    float result = OH_ArkUI_SystemFontStyleEvent_GetFontSizeScale(&event);

    /**
     * @tc.steps: step3. Verify the result.
     * @tc.expect: result is 1.5f.
     */
    EXPECT_EQ(result, 1.5f);

    /**
     * @tc.steps: step4. Create a event, fontSize is -1.2f.
     * @tc.expect: result is -1.2f.
     */
    event.fontSize = -1.2f;

    /**
     * @tc.steps: step5. Call the function.
     * @tc.expect: the function is be called.
     */
    result = OH_ArkUI_SystemFontStyleEvent_GetFontSizeScale(&event);

    /**
     * @tc.steps: step6. Verify the result.
     * @tc.expect: result is -1.2f.
     */
    EXPECT_EQ(result, -1.2f);
}

/**
 * @tc.name: OH_ArkUI_SystemFontStyleEvent_GetFontWeightScale001
 * @tc.desc: Test OH_ArkUI_SystemFontStyleEvent_GetFontWeightScale.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_SystemFontStyleEvent_GetFontWeightScale001, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a event, fontWeight undefined.
     * @tc.expect: result is 0.0f.
     */
    ArkUI_SystemFontStyleEvent event;

    /**
     * @tc.steps: step2. Call the function.
     * @tc.expect: the function is be called.
     */
    float result = OH_ArkUI_SystemFontStyleEvent_GetFontWeightScale(&event);

    /**
     * @tc.steps: step3. Verify the result.
     * @tc.expect: result is 0.0f.
     */
    EXPECT_EQ(result, 0.0f);
}

/**
 * @tc.name: OH_ArkUI_SystemFontStyleEvent_GetFontWeightScale002
 * @tc.desc: Test OH_ArkUI_SystemFontStyleEvent_GetFontWeightScale.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_SystemFontStyleEvent_GetFontWeightScale002, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a event, fontWeight is 500.0f.
     * @tc.expect: result is 500.0f.
     */
    ArkUI_SystemFontStyleEvent event;
    event.fontWeight = 500.0f;

    /**
     * @tc.steps: step2. Call the function.
     * @tc.expect: the function is be called.
     */
    float result = OH_ArkUI_SystemFontStyleEvent_GetFontWeightScale(&event);

    /**
     * @tc.steps: step3. Verify the result.
     * @tc.expect: result is 500.0f.
     */
    EXPECT_EQ(result, 500.0f);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_AddCustomProperty001
 * @tc.desc: Test OH_ArkUI_NodeUtils_AddCustomProperty with nullptr node.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_AddCustomProperty001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_NodeHandle node = nullptr;
    const char* name = "test_name";
    const char* value = "test_value";

    OH_ArkUI_NodeUtils_AddCustomProperty(node, name, value);

    EXPECT_TRUE(true);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_AddCustomProperty002
 * @tc.desc: Test OH_ArkUI_NodeUtils_AddCustomProperty with valid CNode.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_AddCustomProperty002, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto node = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(node, nullptr);

    const char* name = "test_name";
    const char* value = "test_value";
    ArkUI_CustomProperty* handle = nullptr;

    OH_ArkUI_NodeUtils_AddCustomProperty(node, name, value);

    int32_t result = OH_ArkUI_NodeUtils_GetCustomProperty(node, name, &handle);
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_NO_ERROR);
    ASSERT_NE(handle, nullptr);
    ASSERT_NE(handle->value, nullptr);
    EXPECT_STREQ(handle->value, value);

    delete[] handle->value;
    delete handle;
    nodeAPI->disposeNode(node);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_RemoveCustomProperty001
 * @tc.desc: Test OH_ArkUI_NodeUtils_RemoveCustomProperty with valid CNode.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_RemoveCustomProperty001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto node = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(node, nullptr);

    const char* name = "test_name";
    const char* value = "test_value";
    ArkUI_CustomProperty* handle = nullptr;

    OH_ArkUI_NodeUtils_AddCustomProperty(node, name, value);
    OH_ArkUI_NodeUtils_RemoveCustomProperty(node, name);

    int32_t result = OH_ArkUI_NodeUtils_GetCustomProperty(node, name, &handle);
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_NO_ERROR);
    ASSERT_NE(handle, nullptr);
    EXPECT_STREQ(OH_ArkUI_CustomProperty_GetStringValue(handle), "");

    OH_ArkUI_CustomProperty_Destroy(handle);
    nodeAPI->disposeNode(node);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetCustomProperty001
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetCustomProperty.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetCustomProperty001, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a node nullptr.
     * @tc.expect: result is ARKUI_ERROR_CODE_PARAM_INVALID.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_NodeHandle node = nullptr;
    const char* name = "test_name";
    ArkUI_CustomProperty* handle = nullptr;

    /**
     * @tc.steps: step2. Call the function.
     * @tc.expect: the function is be called.
     */
    int32_t result = OH_ArkUI_NodeUtils_GetCustomProperty(node, name, &handle);

    /**
     * @tc.steps: step3. Verify the result.
     * @tc.expect: result is ARKUI_ERROR_CODE_PARAM_INVALID.
     */
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetCustomProperty002
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetCustomProperty.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetCustomProperty002, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create name nullptr.
     * @tc.expect: result is ARKUI_ERROR_CODE_PARAM_INVALID.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto frameNode = NG::FrameNode::CreateFrameNode(
        V2::STACK_ETS_TAG, 100010, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(frameNode, nullptr);
    ArkUI_NodeHandle node =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(frameNode)));
    ASSERT_NE(node, nullptr);
    const char* name = nullptr;
    ArkUI_CustomProperty* handle = nullptr;

    /**
     * @tc.steps: step2. Call the function.
     * @tc.expect: the function is be called.
     */
    int32_t result = OH_ArkUI_NodeUtils_GetCustomProperty(node, name, &handle);

    /**
     * @tc.steps: step3. Verify the result.
     * @tc.expect: result is ARKUI_ERROR_CODE_PARAM_INVALID.
     */
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetCustomProperty003
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetCustomProperty.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetCustomProperty003, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a node not nullptr.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_NO_ERROR.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    ArkUI_NodeHandle node = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(node, nullptr);
    const char* name = "test_name";
    ArkUI_CustomProperty* handle = nullptr;

    /**
     * @tc.steps: step2. Call the function.
     * @tc.expect: the function is be called.
     */
    int32_t result = OH_ArkUI_NodeUtils_GetCustomProperty(node, name, &handle);

    /**
     * @tc.steps: step3. Verify the result.
     * @tc.expect: result is OHOS::Ace::ERROR_CODE_NO_ERROR.
     */
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_NO_ERROR);
    nodeAPI->disposeNode(node);
}

/**
 * @tc.name: OH_ArkUI_CustomProperty_GetStringValue001
 * @tc.desc: Test OH_ArkUI_CustomProperty_GetStringValue with valid handle.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CustomProperty_GetStringValue001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto node = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(node, nullptr);

    const char* name = "test_name";
    const char* value = "test_value";
    ArkUI_CustomProperty* handle = nullptr;
    OH_ArkUI_NodeUtils_AddCustomProperty(node, name, value);

    int32_t result = OH_ArkUI_NodeUtils_GetCustomProperty(node, name, &handle);
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_NO_ERROR);
    ASSERT_NE(handle, nullptr);
    EXPECT_STREQ(OH_ArkUI_CustomProperty_GetStringValue(handle), value);

    OH_ArkUI_CustomProperty_Destroy(handle);
    nodeAPI->disposeNode(node);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetActiveChildrenInfo001
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetActiveChildrenInfo when active children exist.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetActiveChildrenInfo001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNodeOne = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNodeTwo = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);
    ASSERT_NE(childNodeOne, nullptr);
    ASSERT_NE(childNodeTwo, nullptr);
    EXPECT_EQ(nodeAPI->addChild(rootNode, childNodeOne), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->addChild(rootNode, childNodeTwo), ARKUI_ERROR_CODE_NO_ERROR);
    auto* childFrameNodeOne = reinterpret_cast<NG::FrameNode*>(childNodeOne->uiNodeHandle);
    auto* childFrameNodeTwo = reinterpret_cast<NG::FrameNode*>(childNodeTwo->uiNodeHandle);
    ASSERT_NE(childFrameNodeOne, nullptr);
    ASSERT_NE(childFrameNodeTwo, nullptr);
    childFrameNodeOne->SetActive(true);
    childFrameNodeTwo->SetActive(true);

    ArkUI_ActiveChildrenInfo* handle = nullptr;
    int32_t result = OH_ArkUI_NodeUtils_GetActiveChildrenInfo(rootNode, &handle);

    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_NO_ERROR);
    ASSERT_NE(handle, nullptr);
    EXPECT_EQ(OH_ArkUI_ActiveChildrenInfo_GetCount(handle), 2);
    EXPECT_EQ(OH_ArkUI_ActiveChildrenInfo_GetNodeByIndex(handle, 0), childNodeOne);
    EXPECT_EQ(OH_ArkUI_ActiveChildrenInfo_GetNodeByIndex(handle, 1), childNodeTwo);

    OH_ArkUI_ActiveChildrenInfo_Destroy(handle);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: OH_ArkUI_ActiveChildrenInfo_GetNodeByIndex001
 * @tc.desc: Test OH_ArkUI_ActiveChildrenInfo_GetNodeByIndex with valid handle.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_ActiveChildrenInfo_GetNodeByIndex001, TestSize.Level1)
{
    ArkUI_Node nodeOne {};
    ArkUI_Node nodeTwo {};
    ArkUI_NodeHandle nodeList[] = { &nodeOne, &nodeTwo };
    ArkUI_ActiveChildrenInfo handle { .nodeList = nodeList, .nodeCount = 2 };

    EXPECT_EQ(OH_ArkUI_ActiveChildrenInfo_GetNodeByIndex(&handle, 0), &nodeOne);
    EXPECT_EQ(OH_ArkUI_ActiveChildrenInfo_GetNodeByIndex(&handle, 1), &nodeTwo);
    EXPECT_EQ(OH_ArkUI_ActiveChildrenInfo_GetNodeByIndex(&handle, 2), nullptr);
}

/**
 * @tc.name: OH_ArkUI_ActiveChildrenInfo_GetCount001
 * @tc.desc: Test OH_ArkUI_ActiveChildrenInfo_GetCount with valid handle.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_ActiveChildrenInfo_GetCount001, TestSize.Level1)
{
    ArkUI_ActiveChildrenInfo handle { .nodeList = nullptr, .nodeCount = 2 };

    EXPECT_EQ(OH_ArkUI_ActiveChildrenInfo_GetCount(&handle), 2);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_IsCreatedByNDK001
 * @tc.desc: Test OH_ArkUI_NodeUtils_IsCreatedByNDK with different node types.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_IsCreatedByNDK001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto node = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(node, nullptr);
    auto manualNode = new ArkUI_Node({ ARKUI_NODE_TEXT, nullptr, false });

    EXPECT_TRUE(OH_ArkUI_NodeUtils_IsCreatedByNDK(node));
    EXPECT_FALSE(OH_ArkUI_NodeUtils_IsCreatedByNDK(manualNode));
    EXPECT_FALSE(OH_ArkUI_NodeUtils_IsCreatedByNDK(nullptr));

    delete manualNode;
    nodeAPI->disposeNode(node);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetNodeType001
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetNodeType with nullptr node.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetNodeType001, TestSize.Level1)
{
    EXPECT_EQ(OH_ArkUI_NodeUtils_GetNodeType(nullptr), -1);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetNodeType002
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetNodeType with cached and tag-based paths.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetNodeType002, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto node = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(node, nullptr);

    EXPECT_EQ(OH_ArkUI_NodeUtils_GetNodeType(node), static_cast<int32_t>(ARKUI_NODE_STACK));
    node->type = -1;
    EXPECT_EQ(OH_ArkUI_NodeUtils_GetNodeType(node), static_cast<int32_t>(ARKUI_NODE_STACK));

    nodeAPI->disposeNode(node);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetWindowInfo001
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetWindowInfo with invalid params.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetWindowInfo001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_HostWindowInfo* info = nullptr;

    EXPECT_EQ(OH_ArkUI_NodeUtils_GetWindowInfo(nullptr, &info), ARKUI_ERROR_CODE_PARAM_INVALID);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetWindowInfo002
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetWindowInfo with node not on main tree.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetWindowInfo002, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto node = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(node, nullptr);

    ArkUI_HostWindowInfo* info = nullptr;
    int32_t result = OH_ArkUI_NodeUtils_GetWindowInfo(node, &info);

    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_NATIVE_IMPL_NODE_NOT_ON_MAIN_TREE);
    ASSERT_NE(info, nullptr);
    EXPECT_EQ(info->name, nullptr);

    OH_ArkUI_HostWindowInfo_Destroy(info);
    nodeAPI->disposeNode(node);
}

/**
 * @tc.name: OH_ArkUI_HostWindowInfo_GetName001
 * @tc.desc: Test OH_ArkUI_HostWindowInfo_GetName with valid info.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_HostWindowInfo_GetName001, TestSize.Level1)
{
    char name[] = "window";
    ArkUI_HostWindowInfo info { .name = name };

    EXPECT_STREQ(OH_ArkUI_HostWindowInfo_GetName(&info), "window");
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetAttachedNodeHandleById001
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetAttachedNodeHandleById with invalid id.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetAttachedNodeHandleById001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_NodeHandle node = nullptr;

    EXPECT_EQ(OH_ArkUI_NodeUtils_GetAttachedNodeHandleById(nullptr, &node), ARKUI_ERROR_CODE_PARAM_INVALID);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetAttachedNodeHandleById002
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetAttachedNodeHandleById with id not found.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetAttachedNodeHandleById002, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_NodeHandle node = nullptr;
    int32_t result = OH_ArkUI_NodeUtils_GetAttachedNodeHandleById("attached_node_handle_by_id_not_exist", &node);

    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(node, nullptr);
}

/**
 * @tc.name: OH_ArkUI_NativeModule_SetNodeMountPolicy001
 * @tc.desc: Test OH_ArkUI_NativeModule_SetChildMountPolicy with nullptr node.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NativeModule_SetNodeMountPolicy001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());

    auto result = OH_ArkUI_NativeModule_SetChildMountPolicy(nullptr, OH_ARKUI_NODE_MOUNT_POLICY_MIXED);

    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

/**
 * @tc.name: OH_ArkUI_NativeModule_AdoptChild001
 * @tc.desc: Test OH_ArkUI_NativeModule_AdoptChild when node or child is not CNode.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NativeModule_AdoptChild001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto realNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto realChild = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(realNode, nullptr);
    ASSERT_NE(realChild, nullptr);
    auto fakeNode = new ArkUI_Node({ ARKUI_NODE_STACK, nullptr, false });
    auto fakeChild = new ArkUI_Node({ ARKUI_NODE_STACK, nullptr, false });

    EXPECT_EQ(OH_ArkUI_NativeModule_AdoptChild(fakeNode, realChild), ARKUI_ERROR_CODE_NODE_CAN_NOT_ADOPT_TO);
    EXPECT_EQ(OH_ArkUI_NativeModule_AdoptChild(realNode, fakeChild), ARKUI_ERROR_CODE_NODE_CAN_NOT_BE_ADOPTED);

    delete fakeNode;
    delete fakeChild;
    nodeAPI->disposeNode(realNode);
    nodeAPI->disposeNode(realChild);
}

/**
 * @tc.name: OH_ArkUI_NativeModule_RemoveAdoptedChild001
 * @tc.desc: Test OH_ArkUI_NativeModule_RemoveAdoptedChild when node or child is not CNode.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NativeModule_RemoveAdoptedChild001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto realNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto realChild = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(realNode, nullptr);
    ASSERT_NE(realChild, nullptr);
    auto fakeNode = new ArkUI_Node({ ARKUI_NODE_STACK, nullptr, false });
    auto fakeChild = new ArkUI_Node({ ARKUI_NODE_STACK, nullptr, false });

    EXPECT_EQ(OH_ArkUI_NativeModule_RemoveAdoptedChild(fakeNode, realChild),
        OHOS::Ace::ERROR_CODE_NODE_IS_NOT_IN_ADOPTED_CHILDREN);
    EXPECT_EQ(OH_ArkUI_NativeModule_RemoveAdoptedChild(realNode, fakeChild),
        OHOS::Ace::ERROR_CODE_NODE_IS_NOT_IN_ADOPTED_CHILDREN);

    delete fakeNode;
    delete fakeChild;
    nodeAPI->disposeNode(realNode);
    nodeAPI->disposeNode(realChild);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_MoveTo001
 * @tc.desc: Test OH_ArkUI_NodeUtils_MoveTo with invalid params.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_MoveTo001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto realNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto targetParent = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(realNode, nullptr);
    ASSERT_NE(targetParent, nullptr);
    auto fakeNode = new ArkUI_Node({ ARKUI_NODE_STACK, nullptr, false });

    EXPECT_EQ(OH_ArkUI_NodeUtils_MoveTo(fakeNode, targetParent, 0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(OH_ArkUI_NodeUtils_MoveTo(realNode, fakeNode, 0), ARKUI_ERROR_CODE_PARAM_INVALID);

    delete fakeNode;
    nodeAPI->disposeNode(realNode);
    nodeAPI->disposeNode(targetParent);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_MoveTo002
 * @tc.desc: Test OH_ArkUI_NodeUtils_MoveTo with valid params.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_MoveTo002, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto sourceParent = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto targetParent = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(sourceParent, nullptr);
    ASSERT_NE(targetParent, nullptr);
    ASSERT_NE(childNode, nullptr);
    ASSERT_EQ(nodeAPI->addChild(sourceParent, childNode), ARKUI_ERROR_CODE_NO_ERROR);

    int32_t result = OH_ArkUI_NodeUtils_MoveTo(childNode, targetParent, 0);

    EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(OH_ArkUI_NodeUtils_GetParentInPageTree(childNode), targetParent);

    nodeAPI->disposeNode(sourceParent);
    nodeAPI->disposeNode(targetParent);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageOption001
 * @tc.desc: Test CrossLanguageOption create, destroy, set and get helpers.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageOption001, TestSize.Level1)
{
    auto option = OH_ArkUI_CrossLanguageOption_Create();

    ASSERT_NE(option, nullptr);
    EXPECT_FALSE(OH_ArkUI_CrossLanguageOption_GetAttributeSettingStatus(option));
    EXPECT_FALSE(OH_ArkUI_CrossLanguageOption_GetAttributeSettingStatus(nullptr));

    OH_ArkUI_CrossLanguageOption_SetAttributeSettingStatus(nullptr, true);
    OH_ArkUI_CrossLanguageOption_SetAttributeSettingStatus(option, true);
    EXPECT_TRUE(OH_ArkUI_CrossLanguageOption_GetAttributeSettingStatus(option));
    OH_ArkUI_CrossLanguageOption_SetAttributeSettingStatus(option, false);
    EXPECT_FALSE(OH_ArkUI_CrossLanguageOption_GetAttributeSettingStatus(option));

    OH_ArkUI_CrossLanguageOption_Destroy(nullptr);
    OH_ArkUI_CrossLanguageOption_Destroy(option);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_SetCrossLanguageOption001
 * @tc.desc: Test OH_ArkUI_NodeUtils_SetCrossLanguageOption with invalid params.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_SetCrossLanguageOption001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto option = OH_ArkUI_CrossLanguageOption_Create();
    ASSERT_NE(option, nullptr);
    auto fakeNode = new ArkUI_Node({ ARKUI_NODE_STACK, nullptr, false });

    EXPECT_EQ(OH_ArkUI_NodeUtils_SetCrossLanguageOption(nullptr, option), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(OH_ArkUI_NodeUtils_SetCrossLanguageOption(fakeNode, option), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(OH_ArkUI_NodeUtils_SetCrossLanguageOption(fakeNode, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);

    delete fakeNode;
    OH_ArkUI_CrossLanguageOption_Destroy(option);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_SetCrossLanguageOption002
 * @tc.desc: Test OH_ArkUI_NodeUtils_SetCrossLanguageOption and GetCrossLanguageOption.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_SetCrossLanguageOption002, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto node = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(node, nullptr);
    auto option = OH_ArkUI_CrossLanguageOption_Create();
    auto queryOption = OH_ArkUI_CrossLanguageOption_Create();
    ASSERT_NE(option, nullptr);
    ASSERT_NE(queryOption, nullptr);
    OH_ArkUI_CrossLanguageOption_SetAttributeSettingStatus(option, true);

    EXPECT_EQ(OH_ArkUI_NodeUtils_SetCrossLanguageOption(node, option), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(OH_ArkUI_NodeUtils_GetCrossLanguageOption(node, queryOption), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_TRUE(OH_ArkUI_CrossLanguageOption_GetAttributeSettingStatus(queryOption));
    EXPECT_EQ(OH_ArkUI_NodeUtils_GetCrossLanguageOption(nullptr, queryOption), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(OH_ArkUI_NodeUtils_GetCrossLanguageOption(node, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);

    OH_ArkUI_CrossLanguageOption_Destroy(option);
    OH_ArkUI_CrossLanguageOption_Destroy(queryOption);
    nodeAPI->disposeNode(node);
}

/**
 * @tc.name: OH_ArkUI_NativeModule_InvalidateAttributes001
 * @tc.desc: Test OH_ArkUI_NativeModule_InvalidateAttributes with invalid and valid nodes.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NativeModule_InvalidateAttributes001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto node = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(node, nullptr);
    auto fakeNode = new ArkUI_Node({ ARKUI_NODE_STACK, nullptr, false });

    EXPECT_EQ(OH_ArkUI_NativeModule_InvalidateAttributes(nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(OH_ArkUI_NativeModule_InvalidateAttributes(fakeNode), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(OH_ArkUI_NativeModule_InvalidateAttributes(node), ARKUI_ERROR_CODE_NO_ERROR);

    delete fakeNode;
    nodeAPI->disposeNode(node);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetFirstChildIndexWithoutExpand001
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetFirstChildIndexWithoutExpand.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetFirstChildIndexWithoutExpand001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNodeOne = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNodeTwo = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);
    ASSERT_NE(childNodeOne, nullptr);
    ASSERT_NE(childNodeTwo, nullptr);
    ASSERT_EQ(nodeAPI->addChild(rootNode, childNodeOne), ARKUI_ERROR_CODE_NO_ERROR);
    ASSERT_EQ(nodeAPI->addChild(rootNode, childNodeTwo), ARKUI_ERROR_CODE_NO_ERROR);
    uint32_t index = 0;

    EXPECT_EQ(OH_ArkUI_NodeUtils_GetFirstChildIndexWithoutExpand(nullptr, &index), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(OH_ArkUI_NodeUtils_GetFirstChildIndexWithoutExpand(rootNode, &index), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(index, 0u);

    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetLastChildIndexWithoutExpand001
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetLastChildIndexWithoutExpand.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetLastChildIndexWithoutExpand001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNodeOne = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNodeTwo = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);
    ASSERT_NE(childNodeOne, nullptr);
    ASSERT_NE(childNodeTwo, nullptr);
    ASSERT_EQ(nodeAPI->addChild(rootNode, childNodeOne), ARKUI_ERROR_CODE_NO_ERROR);
    ASSERT_EQ(nodeAPI->addChild(rootNode, childNodeTwo), ARKUI_ERROR_CODE_NO_ERROR);
    uint32_t index = 0;

    EXPECT_EQ(OH_ArkUI_NodeUtils_GetLastChildIndexWithoutExpand(nullptr, &index), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(OH_ArkUI_NodeUtils_GetLastChildIndexWithoutExpand(rootNode, &index), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(index, 1u);

    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetChildWithExpandMode001
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetChildWithExpandMode.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetChildWithExpandMode001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNodeOne = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNodeTwo = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);
    ASSERT_NE(childNodeOne, nullptr);
    ASSERT_NE(childNodeTwo, nullptr);
    ASSERT_EQ(nodeAPI->addChild(rootNode, childNodeOne), ARKUI_ERROR_CODE_NO_ERROR);
    ASSERT_EQ(nodeAPI->addChild(rootNode, childNodeTwo), ARKUI_ERROR_CODE_NO_ERROR);
    ArkUI_NodeHandle subnode = nullptr;

    EXPECT_EQ(OH_ArkUI_NodeUtils_GetChildWithExpandMode(nullptr, 0, &subnode, ARKUI_NOT_EXPAND),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(OH_ArkUI_NodeUtils_GetChildWithExpandMode(rootNode, 1, &subnode, ARKUI_NOT_EXPAND),
        ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(subnode, childNodeTwo);

    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTestTextPunctuationOverflow
 * @tc.desc: Test NODE_TEXT_PUNCTUATION_OVERFLOW attribute set, reset and get functions.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTestTextPunctuationOverflow, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto rootNode = new ArkUI_Node({ARKUI_NODE_TEXT, nullptr, true});
    ASSERT_NE(rootNode, nullptr);

    ArkUI_NumberValue value[] = {{.i32 = true}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    auto result = nodeAPI->setAttribute(rootNode, NODE_TEXT_PUNCTUATION_OVERFLOW, &item);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);

    auto attrValue = nodeAPI->getAttribute(rootNode, NODE_TEXT_PUNCTUATION_OVERFLOW);
    EXPECT_NE(attrValue, nullptr);

    value[0].i32 = false;
    result = nodeAPI->setAttribute(rootNode, NODE_TEXT_PUNCTUATION_OVERFLOW, &item);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);

    attrValue = nodeAPI->getAttribute(rootNode, NODE_TEXT_PUNCTUATION_OVERFLOW);
    EXPECT_NE(attrValue, nullptr);
    EXPECT_EQ(attrValue->value[0].i32, false);

    result = nodeAPI->resetAttribute(rootNode, NODE_TEXT_PUNCTUATION_OVERFLOW);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);

    nodeAPI->disposeNode(rootNode);

    auto nonTextNode = new ArkUI_Node({ARKUI_NODE_STACK, nullptr, true});
    nodeAPI->setAttribute(nonTextNode, NODE_TEXT_PUNCTUATION_OVERFLOW, &item);
    attrValue = nodeAPI->getAttribute(nonTextNode, NODE_TEXT_PUNCTUATION_OVERFLOW);
    EXPECT_EQ(attrValue, nullptr);
    nodeAPI->disposeNode(nonTextNode);
}

/**
 * @tc.name: NativeNodeTestTextInputPunctuationOverflow
 * @tc.desc: Test NODE_TEXT_INPUT_PUNCTUATION_OVERFLOW attribute set, reset and get functions.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTestTextInputPunctuationOverflow, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto rootNode = new ArkUI_Node({ARKUI_NODE_TEXT_INPUT, nullptr, true});
    ASSERT_NE(rootNode, nullptr);

    ArkUI_NumberValue value[] = {{.i32 = true}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    auto result = nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_PUNCTUATION_OVERFLOW, &item);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);

    auto attrValue = nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_PUNCTUATION_OVERFLOW);
    EXPECT_NE(attrValue, nullptr);

    value[0].i32 = false;
    result = nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_PUNCTUATION_OVERFLOW, &item);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);

    attrValue = nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_PUNCTUATION_OVERFLOW);
    EXPECT_NE(attrValue, nullptr);
    EXPECT_EQ(attrValue->value[0].i32, false);

    result = nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_PUNCTUATION_OVERFLOW);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);

    nodeAPI->disposeNode(rootNode);

    auto nonTextInputNode = new ArkUI_Node({ARKUI_NODE_STACK, nullptr, true});
    nodeAPI->setAttribute(nonTextInputNode, NODE_TEXT_INPUT_PUNCTUATION_OVERFLOW, &item);
    attrValue = nodeAPI->getAttribute(nonTextInputNode, NODE_TEXT_INPUT_PUNCTUATION_OVERFLOW);
    EXPECT_EQ(attrValue, nullptr);
    nodeAPI->disposeNode(nonTextInputNode);
}

/**
 * @tc.name: NativeNodeTestTextAreaPunctuationOverflow
 * @tc.desc: Test NODE_TEXT_AREA_PUNCTUATION_OVERFLOW attribute set, reset and get functions.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTestTextAreaPunctuationOverflow, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto rootNode = new ArkUI_Node({ARKUI_NODE_TEXT_AREA, nullptr, true});
    ASSERT_NE(rootNode, nullptr);

    ArkUI_NumberValue value[] = {{.i32 = true}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    auto result = nodeAPI->setAttribute(rootNode, NODE_TEXT_AREA_PUNCTUATION_OVERFLOW, &item);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);

    auto attrValue = nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_PUNCTUATION_OVERFLOW);
    EXPECT_NE(attrValue, nullptr);

    value[0].i32 = false;
    result = nodeAPI->setAttribute(rootNode, NODE_TEXT_AREA_PUNCTUATION_OVERFLOW, &item);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);

    attrValue = nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_PUNCTUATION_OVERFLOW);
    EXPECT_NE(attrValue, nullptr);
    EXPECT_EQ(attrValue->value[0].i32, false);

    result = nodeAPI->resetAttribute(rootNode, NODE_TEXT_AREA_PUNCTUATION_OVERFLOW);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);

    nodeAPI->disposeNode(rootNode);

    auto nonTextAreaNode = new ArkUI_Node({ARKUI_NODE_STACK, nullptr, true});
    nodeAPI->setAttribute(nonTextAreaNode, NODE_TEXT_AREA_PUNCTUATION_OVERFLOW, &item);
    attrValue = nodeAPI->getAttribute(nonTextAreaNode, NODE_TEXT_AREA_PUNCTUATION_OVERFLOW);
    EXPECT_EQ(attrValue, nullptr);
    nodeAPI->disposeNode(nonTextAreaNode);
}

/**
 * @tc.name: NativeNodeTestPunctuationOverflowInvalidParam
 * @tc.desc: Test PunctuationOverflow attribute with invalid parameters.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTestPunctuationOverflowInvalidParam, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto rootNode = new ArkUI_Node({ARKUI_NODE_TEXT, nullptr, true});
    ASSERT_NE(rootNode, nullptr);

    ArkUI_NumberValue invalidValue[] = {{.i32 = true}, {.i32 = false}};
    ArkUI_AttributeItem invalidItem = {invalidValue, sizeof(invalidValue) / sizeof(ArkUI_NumberValue)};
    auto result = nodeAPI->setAttribute(rootNode, NODE_TEXT_PUNCTUATION_OVERFLOW, &invalidItem);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);

    ArkUI_NumberValue value[] = {{.i32 = 2}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    result = nodeAPI->setAttribute(rootNode, NODE_TEXT_PUNCTUATION_OVERFLOW, &item);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);

    result = nodeAPI->setAttribute(rootNode, NODE_TEXT_PUNCTUATION_OVERFLOW, nullptr);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);

    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetPositionToParent001
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetPositionToParent.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetPositionToParent001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto frameNode = NG::FrameNode::CreateFrameNode(
        V2::STACK_ETS_TAG, 100002, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(frameNode, nullptr);
    frameNode->GetRenderContext()->UpdatePaintRect(NG::RectF(12.0f, 34.0f, 1.0f, 1.0f));
    auto node = OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(frameNode)));
    ASSERT_NE(node, nullptr);
    ArkUI_IntOffset offset = { 0, 0 };

    EXPECT_EQ(OH_ArkUI_NodeUtils_GetPositionToParent(nullptr, &offset), OHOS::Ace::ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(OH_ArkUI_NodeUtils_GetPositionToParent(node, &offset), OHOS::Ace::ERROR_CODE_NO_ERROR);
    EXPECT_EQ(offset.x, 12);
    EXPECT_EQ(offset.y, 34);
}

/**
 * @tc.name: OH_ArkUI_AddSupportedUIStates001
 * @tc.desc: Test OH_ArkUI_AddSupportedUIStates and OH_ArkUI_RemoveSupportedUIStates with nullptr node.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_AddSupportedUIStates001, TestSize.Level1)
{
    int32_t settingUIStatus = 1;

    EXPECT_EQ(OH_ArkUI_AddSupportedUIStates(nullptr, settingUIStatus, nullptr, false, nullptr),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(OH_ArkUI_RemoveSupportedUIStates(nullptr, settingUIStatus), ARKUI_ERROR_CODE_PARAM_INVALID);
}

/**
 * @tc.name: OH_ArkUI_AddSupportedUIStates002
 * @tc.desc: Test OH_ArkUI_AddSupportedUIStates and OH_ArkUI_RemoveSupportedUIStates with valid node.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_AddSupportedUIStates002, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto node = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(node, nullptr);
    int32_t settingUIStatus = 1;

    EXPECT_EQ(OH_ArkUI_AddSupportedUIStates(node, settingUIStatus, SupportedUIStatesChangeCallback, false, nullptr),
        ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(OH_ArkUI_RemoveSupportedUIStates(node, settingUIStatus), ARKUI_ERROR_CODE_NO_ERROR);

    nodeAPI->disposeNode(node);
}

/**
 * @tc.name: OH_ArkUI_RunTaskInScope001
 * @tc.desc: Test OH_ArkUI_RunTaskInScope with invalid params.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_RunTaskInScope001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_ContextHandle uiContext = new ArkUI_Context({ .id = 0 });
    int32_t value = 0;

    EXPECT_EQ(OH_ArkUI_RunTaskInScope(nullptr, &value, RunTaskInScopeTestCallback),
        ARKUI_ERROR_CODE_UI_CONTEXT_INVALID);
    EXPECT_EQ(OH_ArkUI_RunTaskInScope(uiContext, &value, nullptr), ARKUI_ERROR_CODE_CALLBACK_INVALID);
}

/**
 * @tc.name: OH_ArkUI_RunTaskInScope002
 * @tc.desc: Test OH_ArkUI_RunTaskInScope with valid params.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_RunTaskInScope002, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_ContextHandle uiContext = new ArkUI_Context({ .id = 0 });
    int32_t value = 0;

    EXPECT_EQ(OH_ArkUI_RunTaskInScope(uiContext, &value, RunTaskInScopeTestCallback), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(value, 1);
}

/**
 * @tc.name: NativeNodeTest001
 * @tc.desc: Test OH_ArkUI_NodeEvent_GetEventType function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest001, TestSize.Level1)
{
    ArkUI_NodeEvent event = { 0, -1 };
    auto eventType = OH_ArkUI_NodeEvent_GetEventType(&event);
    EXPECT_EQ(eventType, ArkUI_NodeEventType::NODE_TOUCH_EVENT);
    event.kind = 0;
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetEventType(&event), ArkUI_NodeEventType::NODE_TOUCH_EVENT);
}

/**
 * @tc.name: NativeNodeTest002
 * @tc.desc: Test OH_ArkUI_NodeEvent_GetEventType function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest002, TestSize.Level1)
{
    auto eventType = OH_ArkUI_NodeEvent_GetEventType(nullptr);
    EXPECT_EQ(eventType, ArkUI_NodeEventType::NODE_TOUCH_EVENT);
}

/**
 * @tc.name: NativeNodeTest003
 * @tc.desc: Test OH_ArkUI_NodeEvent_GetTargetId function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest003, TestSize.Level1)
{
    auto targetId = OH_ArkUI_NodeEvent_GetTargetId(nullptr);
    EXPECT_EQ(targetId, -1);
    ArkUI_NodeEvent event = { 0, 0 };
    event.eventId = 0;
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetTargetId(&event), 0);
}

/**
 * @tc.name: NativeNodeTest004
 * @tc.desc: Test OH_ArkUI_NodeEvent_GetNodeHandle function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest004, TestSize.Level1)
{
    auto handle = OH_ArkUI_NodeEvent_GetNodeHandle(nullptr);
    EXPECT_EQ(handle, nullptr);
    ArkUI_NodeEvent event = { 0, 0 };
    event.node = nullptr;
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetNodeHandle(&event), nullptr);
}

/**
 * @tc.name: NativeNodeTest005
 * @tc.desc: Test customNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest005, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);
    int32_t ret1 = nodeAPI->addChild(rootNode, childNode);
    EXPECT_EQ(ret1, ARKUI_ERROR_CODE_NO_ERROR);
    float size = 100.0f;
    float padding = 10.0f;
    float val0 = 0.0f;
    float val01 = 0.1f;
    float val05 = 0.5f;
    float val1 = 1.0f;
    float val10 = 10.0f;
    float val100 = 100.0f;
    float negativeFloat = -1.0f;
    uint32_t color = 0xFFFF0000;
    const char* pathCommands = "M100 0 L200 240 L0 240 Z";

    ArkUI_NumberValue value[] = {{.f32 = size}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue value2[] = {{.f32 = val1}, {.f32 = val1}};
    ArkUI_AttributeItem item2 = {value2, sizeof(value2) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue value3[] = {{.f32 = val0}, {.f32 = val0}, {.f32 = val0}};
    ArkUI_AttributeItem item3 = {value3, sizeof(value3) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue value4[] = {{.f32 = padding}, {.f32 = padding}, {.f32 = padding}, {.f32 = padding}};
    ArkUI_AttributeItem item4 = {value4, sizeof(value4) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue value5[] = {{.f32 = val0}, {.f32 = val0}, {.f32 = val0}, {.f32 = val0}, {.f32 = val0}};
    ArkUI_AttributeItem item5 = {value5, sizeof(value5) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_WIDTH, &item);
    auto widthVal = nodeAPI->getAttribute(rootNode, NODE_WIDTH);
    EXPECT_EQ(widthVal->value[0].f32, size);

    nodeAPI->setAttribute(rootNode, NODE_HEIGHT, &item);
    auto heightVal = nodeAPI->getAttribute(rootNode, NODE_HEIGHT);
    EXPECT_EQ(heightVal->value[0].f32, size);

    value[0].u32 = color;
    nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_COLOR, &item);
    auto colorVal = nodeAPI->getAttribute(rootNode, NODE_BACKGROUND_COLOR);
    EXPECT_EQ(colorVal->value[0].u32, color);

    item.string = "test";
    value[0].i32 = ARKUI_IMAGE_REPEAT_X;
    nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_IMAGE, &item);
    nodeAPI->getAttribute(rootNode, NODE_BACKGROUND_IMAGE);

    value[0].f32 = padding;
    nodeAPI->setAttribute(rootNode, NODE_PADDING, &item);
    auto paddingVal = nodeAPI->getAttribute(rootNode, NODE_PADDING);
    EXPECT_EQ(paddingVal->value[0].f32, padding);
    nodeAPI->setAttribute(rootNode, NODE_PADDING, &item4);
    auto paddingVal4 = nodeAPI->getAttribute(rootNode, NODE_PADDING);
    EXPECT_EQ(paddingVal4->value[0].f32, padding);

    nodeAPI->setAttribute(rootNode, NODE_MARGIN, &item);
    auto marginVal = nodeAPI->getAttribute(rootNode, NODE_MARGIN);
    EXPECT_EQ(marginVal->value[0].f32, padding);
    nodeAPI->setAttribute(rootNode, NODE_MARGIN, &item4);
    auto marginVal4 = nodeAPI->getAttribute(rootNode, NODE_MARGIN);
    EXPECT_EQ(marginVal4->value[0].f32, padding);

    item.string = "test";
    ret1 = nodeAPI->setAttribute(rootNode, NODE_ID, &item);
    EXPECT_EQ(ret1, ARKUI_ERROR_CODE_NO_ERROR);
    auto keyVal = nodeAPI->getAttribute(rootNode, NODE_ID);
    EXPECT_NE(keyVal, nullptr);

    value[0].i32 = true;
    nodeAPI->setAttribute(rootNode, NODE_ENABLED, &item);
    auto enableVal = nodeAPI->getAttribute(rootNode, NODE_ENABLED);
    EXPECT_EQ(enableVal->value[0].i32, 1);

    nodeAPI->setAttribute(rootNode, NODE_TRANSLATE, &item3);
    auto translateVal = nodeAPI->getAttribute(rootNode, NODE_TRANSLATE);
    EXPECT_EQ(translateVal->value[0].f32, val0);

    nodeAPI->setAttribute(rootNode, NODE_SCALE, &item2);
    auto scaleVal = nodeAPI->getAttribute(rootNode, NODE_SCALE);
    EXPECT_EQ(scaleVal->value[0].f32, val1);
    nodeAPI->setAttribute(rootNode, NODE_SCALE, &item5);

    nodeAPI->setAttribute(rootNode, NODE_ROTATE, &item5);
    auto rotateVal = nodeAPI->getAttribute(rootNode, NODE_ROTATE);
    EXPECT_EQ(rotateVal->value[0].f32, val0);

    value[0].f32 = val0;
    nodeAPI->setAttribute(rootNode, NODE_BLUR, &item);
    auto blurVal = nodeAPI->getAttribute(rootNode, NODE_BLUR);
    EXPECT_EQ(blurVal->value[0].f32, val0);

    value[0].f32 = val0;
    nodeAPI->setAttribute(rootNode, NODE_SATURATION, &item);
    auto saturationVal = nodeAPI->getAttribute(rootNode, NODE_SATURATION);
    EXPECT_EQ(saturationVal->value[0].f32, val0);

    value[0].f32 = val0;
    nodeAPI->setAttribute(rootNode, NODE_BRIGHTNESS, &item);
    auto brightnessVal = nodeAPI->getAttribute(rootNode, NODE_BRIGHTNESS);
    EXPECT_EQ(brightnessVal->value[0].f32, val0);

    value3[0].f32 = val0;
    value3[1].i32 = ARKUI_LINEAR_GRADIENT_DIRECTION_LEFT;
    value3[2].i32 = false;
    uint32_t colors[] = {color, color};
    float stops[] = {val0, val05};
    ArkUI_ColorStop colorStop = {colors, stops, 2};
    ArkUI_ColorStop* colorStopPtr = &colorStop;
    item3.object = reinterpret_cast<void*>(colorStopPtr);
    nodeAPI->setAttribute(rootNode, NODE_LINEAR_GRADIENT, &item3);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_LINEAR_GRADIENT), nullptr);
    
    ArkUI_NumberValue sweepGradient[] = {{.f32 = val0}, {.f32 = val0}, {.f32 = val0}, {.f32 = val0}, {.f32 = val0},
        {.i32 = true}};
    ArkUI_AttributeItem sweepGradientItem = {sweepGradient, sizeof(sweepGradient) / sizeof(ArkUI_NumberValue)};
    sweepGradientItem.object = reinterpret_cast<void*>(colorStopPtr);
    sweepGradientItem.size = -1;
    nodeAPI->setAttribute(rootNode, NODE_SWEEP_GRADIENT, &sweepGradientItem);
    sweepGradientItem.size = 1;
    nodeAPI->setAttribute(rootNode, NODE_SWEEP_GRADIENT, &sweepGradientItem);
    sweepGradientItem.size = 2;
    nodeAPI->setAttribute(rootNode, NODE_SWEEP_GRADIENT, &sweepGradientItem);
    sweepGradientItem.size = 3;
    nodeAPI->setAttribute(rootNode, NODE_SWEEP_GRADIENT, &sweepGradientItem);
    sweepGradientItem.size = 4;
    nodeAPI->setAttribute(rootNode, NODE_SWEEP_GRADIENT, &sweepGradientItem);
    sweepGradientItem.size = sizeof(sweepGradient) / sizeof(ArkUI_NumberValue);
    nodeAPI->setAttribute(rootNode, NODE_SWEEP_GRADIENT, &sweepGradientItem);
    auto sweepGradientVal = nodeAPI->getAttribute(rootNode, NODE_SWEEP_GRADIENT);
    EXPECT_EQ(sweepGradientVal->value[0].f32, val0);

    ArkUI_NumberValue radialGradient[] = {{.f32 = val0}, {.f32 = val0}, {.f32 = val0}, {.i32 = true}};
    ArkUI_AttributeItem radialGradientItem = {radialGradient, sizeof(radialGradient) / sizeof(ArkUI_NumberValue)};
    radialGradientItem.object = reinterpret_cast<void*>(colorStopPtr);
    radialGradientItem.size = -1;
    nodeAPI->setAttribute(rootNode, NODE_RADIAL_GRADIENT, &radialGradientItem);
    radialGradientItem.size = 1;
    nodeAPI->setAttribute(rootNode, NODE_RADIAL_GRADIENT, &radialGradientItem);
    radialGradientItem.size = 2;
    nodeAPI->setAttribute(rootNode, NODE_RADIAL_GRADIENT, &radialGradientItem);
    radialGradientItem.size = sizeof(radialGradient) / sizeof(ArkUI_NumberValue);
    nodeAPI->setAttribute(rootNode, NODE_RADIAL_GRADIENT, &radialGradientItem);
    auto radialGradientVal = nodeAPI->getAttribute(rootNode, NODE_RADIAL_GRADIENT);
    EXPECT_EQ(radialGradientVal->value[0].f32, val0);

    value[0].i32 = ARKUI_ALIGNMENT_CENTER;
    nodeAPI->setAttribute(rootNode, NODE_ALIGNMENT, &item);
    auto alignVal = nodeAPI->getAttribute(rootNode, NODE_ALIGNMENT);
    EXPECT_EQ(alignVal->value[0].i32, static_cast<int32_t>(ARKUI_ALIGNMENT_CENTER));

    value[0].f32 = val0;
    nodeAPI->setAttribute(rootNode, NODE_OPACITY, &item);
    auto opacityVal = nodeAPI->getAttribute(rootNode, NODE_OPACITY);
    EXPECT_EQ(opacityVal->value[0].f32, val0);

    value[0].f32 = val10;
    nodeAPI->setAttribute(rootNode, NODE_BORDER_WIDTH, &item);
    auto borderWidthVal = nodeAPI->getAttribute(rootNode, NODE_BORDER_WIDTH);
    EXPECT_EQ(borderWidthVal->value[0].f32, val10);
    value4[0].f32 = val10;
    value4[1].f32 = val10;
    value4[2].f32 = val10;
    value4[3].f32 = val10;
    nodeAPI->setAttribute(rootNode, NODE_BORDER_WIDTH, &item4);
    auto borderWidthVal4 = nodeAPI->getAttribute(rootNode, NODE_BORDER_WIDTH);
    EXPECT_EQ(borderWidthVal4->value[0].f32, val10);

    value[0].f32 = val01;
    nodeAPI->setAttribute(rootNode, NODE_BORDER_WIDTH_PERCENT, &item);
    borderWidthVal = nodeAPI->getAttribute(rootNode, NODE_BORDER_WIDTH_PERCENT);
    EXPECT_EQ(borderWidthVal->value[0].f32, val01);
    value4[0].f32 = val01;
    value4[1].f32 = val01;
    value4[2].f32 = val01;
    value4[3].f32 = val01;
    nodeAPI->setAttribute(rootNode, NODE_BORDER_WIDTH_PERCENT, &item4);
    borderWidthVal4 = nodeAPI->getAttribute(rootNode, NODE_BORDER_WIDTH_PERCENT);
    EXPECT_EQ(borderWidthVal4->value[0].f32, val01);

    value[0].f32 = val10;
    nodeAPI->setAttribute(rootNode, NODE_BORDER_RADIUS, &item);
    auto borderRadiusVal = nodeAPI->getAttribute(rootNode, NODE_BORDER_RADIUS);
    EXPECT_EQ(borderRadiusVal->value[0].f32, val10);
    value4[0].f32 = val10;
    value4[1].f32 = val10;
    value4[2].f32 = val10;
    value4[3].f32 = val10;
    nodeAPI->setAttribute(rootNode, NODE_BORDER_RADIUS, &item4);
    auto borderRadiusVal4 = nodeAPI->getAttribute(rootNode, NODE_BORDER_RADIUS);
    EXPECT_EQ(borderRadiusVal4->value[0].f32, val10);
    value[0].f32 = val01;
    nodeAPI->setAttribute(rootNode, NODE_BORDER_RADIUS_PERCENT, &item);
    borderRadiusVal = nodeAPI->getAttribute(rootNode, NODE_BORDER_RADIUS_PERCENT);
    EXPECT_EQ(borderRadiusVal->value[0].f32, val01);
    value4[0].f32 = val01;
    value4[1].f32 = val01;
    value4[2].f32 = val01;
    value4[3].f32 = val01;
    nodeAPI->setAttribute(rootNode, NODE_BORDER_RADIUS_PERCENT, &item4);
    borderRadiusVal4 = nodeAPI->getAttribute(rootNode, NODE_BORDER_RADIUS_PERCENT);
    EXPECT_EQ(borderRadiusVal4->value[0].f32, val01);

    value[0].u32 = color;
    nodeAPI->setAttribute(rootNode, NODE_BORDER_COLOR, &item);
    auto borderColorVal = nodeAPI->getAttribute(rootNode, NODE_BORDER_COLOR);
    EXPECT_EQ(borderColorVal->value[0].u32, color);
    value4[0].u32 = color;
    value4[1].u32 = color;
    value4[2].u32 = color;
    value4[3].u32 = color;
    nodeAPI->setAttribute(rootNode, NODE_BORDER_COLOR, &item4);
    auto borderColorVal4 = nodeAPI->getAttribute(rootNode, NODE_BORDER_COLOR);
    EXPECT_EQ(borderColorVal4->value[0].u32, color);

    value[0].i32 = ARKUI_BORDER_STYLE_SOLID;
    nodeAPI->setAttribute(rootNode, NODE_BORDER_STYLE, &item);
    auto borderStyleVal = nodeAPI->getAttribute(rootNode, NODE_BORDER_STYLE);
    EXPECT_EQ(borderStyleVal->value[0].i32, static_cast<int32_t>(ARKUI_BORDER_STYLE_SOLID));
    value4[0].i32 = ARKUI_BORDER_STYLE_SOLID;
    value4[1].i32 = ARKUI_BORDER_STYLE_SOLID;
    value4[2].i32 = ARKUI_BORDER_STYLE_SOLID;
    value4[3].i32 = ARKUI_BORDER_STYLE_SOLID;
    nodeAPI->setAttribute(rootNode, NODE_BORDER_STYLE, &item4);
    auto borderStyleVal4 = nodeAPI->getAttribute(rootNode, NODE_BORDER_STYLE);
    EXPECT_EQ(borderStyleVal4->value[0].i32, ARKUI_BORDER_STYLE_SOLID);

    value[0].f32 = val1;
    nodeAPI->setAttribute(rootNode, NODE_Z_INDEX, &item);
    auto zIndexVal = nodeAPI->getAttribute(rootNode, NODE_Z_INDEX);
    EXPECT_EQ(zIndexVal->value[0].f32, val1);

    value[0].i32 = ARKUI_VISIBILITY_VISIBLE;
    nodeAPI->setAttribute(rootNode, NODE_VISIBILITY, &item);
    auto visibilityVal = nodeAPI->getAttribute(rootNode, NODE_VISIBILITY);
    EXPECT_EQ(visibilityVal->value[0].i32, static_cast<int32_t>(ARKUI_VISIBILITY_VISIBLE));

    value[0].i32 = true;
    nodeAPI->setAttribute(rootNode, NODE_CLIP, &item);
    auto clipVal = nodeAPI->getAttribute(rootNode, NODE_CLIP);
    EXPECT_EQ(clipVal->value[0].i32, true);

    value5[0].i32 = ARKUI_CLIP_TYPE_RECTANGLE;
    value5[1].f32 = size;
    value5[2].f32 = size;
    value5[3].f32 = val10;
    value5[4].f32 = val10;
    nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item5);
    auto clipShapeVal = nodeAPI->getAttribute(rootNode, NODE_CLIP_SHAPE);
    EXPECT_EQ(clipShapeVal->value[0].i32, ARKUI_CLIP_TYPE_RECTANGLE);
    value3[0].i32 = ARKUI_CLIP_TYPE_CIRCLE;
    value3[1].f32 = size;
    value3[2].f32 = size;
    nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item3);
    clipShapeVal = nodeAPI->getAttribute(rootNode, NODE_CLIP_SHAPE);
    EXPECT_EQ(clipShapeVal->value[0].i32, ARKUI_CLIP_TYPE_CIRCLE);
    value3[0].i32 = ARKUI_CLIP_TYPE_ELLIPSE;
    value3[1].f32 = size;
    value3[2].f32 = size;
    nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item3);
    clipShapeVal = nodeAPI->getAttribute(rootNode, NODE_CLIP_SHAPE);
    EXPECT_EQ(clipShapeVal->value[0].i32, ARKUI_CLIP_TYPE_ELLIPSE);
    value3[1].f32 = negativeFloat;
    nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item3);

    value3[0].i32 = ARKUI_CLIP_TYPE_PATH;
    value3[1].f32 = size;
    value3[2].f32 = size;
    item3.string = nullptr;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item3), ARKUI_ERROR_CODE_PARAM_INVALID);
    item3.string = pathCommands;
    nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item3);
    clipShapeVal = nodeAPI->getAttribute(rootNode, NODE_CLIP_SHAPE);
    EXPECT_EQ(clipShapeVal->value[0].i32, ARKUI_CLIP_TYPE_PATH);
    value3[2].f32 = negativeFloat;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item3), ARKUI_ERROR_CODE_PARAM_INVALID);
    value3[1].f32 = negativeFloat;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item3), ARKUI_ERROR_CODE_PARAM_INVALID);

    ArkUI_NumberValue transformVal[] =
        {{.f32 = val1}, {.f32 = val0}, {.f32 = val0}, {.f32 = val0},
        {.f32 = val0}, {.f32 = val1}, {.f32 = val0}, {.f32 = val0},
        {.f32 = val0}, {.f32 = val0}, {.f32 = val1}, {.f32 = val0},
        {.f32 = val0}, {.f32 = val0}, {.f32 = val0}, {.f32 = val1}};
    ArkUI_AttributeItem transformItem = {transformVal, sizeof(transformVal) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_TRANSFORM, &transformItem);
    auto transformResult = nodeAPI->getAttribute(rootNode, NODE_TRANSFORM);
    EXPECT_EQ(transformResult->value[0].f32, val1);

    value[0].i32 = ARKUI_HIT_TEST_MODE_DEFAULT;
    nodeAPI->setAttribute(rootNode, NODE_HIT_TEST_BEHAVIOR, &item);
    auto hitVal = nodeAPI->getAttribute(rootNode, NODE_HIT_TEST_BEHAVIOR);
    EXPECT_EQ(hitVal->value[0].i32, static_cast<int32_t>(ARKUI_HIT_TEST_MODE_DEFAULT));

    value2[0].f32 = val10;
    value2[1].f32 = val10;
    nodeAPI->setAttribute(rootNode, NODE_POSITION, &item2);
    auto positionVal = nodeAPI->getAttribute(rootNode, NODE_POSITION);
    EXPECT_EQ(positionVal->value[0].f32, val10);

    value[0].i32 = ARKUI_SHADOW_STYLE_OUTER_DEFAULT_MD;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SHADOW, &item), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SHADOW), nullptr);
    

    ArkUI_NumberValue customShadowVal[] = {{.f32 = val10}, {.i32 = false}, {.f32 = val0}, {.f32 = val0},
        {.i32 = ARKUI_SHADOW_TYPE_COLOR}, {.u32 = color}, {.u32 = 1}};
    ArkUI_AttributeItem customShadowItem = {customShadowVal, sizeof(customShadowVal) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_CUSTOM_SHADOW, &customShadowItem);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_CUSTOM_SHADOW), nullptr);
    customShadowItem.size = 1;
    nodeAPI->setAttribute(rootNode, NODE_CUSTOM_SHADOW, &customShadowItem);
    customShadowItem.size = 2;
    nodeAPI->setAttribute(rootNode, NODE_CUSTOM_SHADOW, &customShadowItem);
    customShadowItem.size = 3;
    nodeAPI->setAttribute(rootNode, NODE_CUSTOM_SHADOW, &customShadowItem);
    customShadowItem.size = 4;
    nodeAPI->setAttribute(rootNode, NODE_CUSTOM_SHADOW, &customShadowItem);
    customShadowItem.size = 5;
    nodeAPI->setAttribute(rootNode, NODE_CUSTOM_SHADOW, &customShadowItem);
    customShadowVal[4].i32 = -1;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CUSTOM_SHADOW, &customShadowItem), ARKUI_ERROR_CODE_PARAM_INVALID);
    customShadowItem.size = 6;
    customShadowVal[4].i32 = ARKUI_SHADOW_TYPE_COLOR;
    nodeAPI->setAttribute(rootNode, NODE_CUSTOM_SHADOW, &customShadowItem);
    customShadowVal[1].i32 = true;
    customShadowVal[5].i32 = -1;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CUSTOM_SHADOW, &customShadowItem), ARKUI_ERROR_CODE_PARAM_INVALID);
    customShadowVal[5].i32 = 0;
    nodeAPI->setAttribute(rootNode, NODE_CUSTOM_SHADOW, &customShadowItem);


    value2[0].f32 = size;
    value2[1].f32 = size;
    nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_IMAGE_SIZE, &item2);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_BACKGROUND_IMAGE_SIZE), nullptr);

    value[0].i32 = ARKUI_IMAGE_SIZE_COVER;
    nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_IMAGE_SIZE_WITH_STYLE, &item);
    auto imagesizeStyleVal = nodeAPI->getAttribute(rootNode, NODE_BACKGROUND_IMAGE_SIZE_WITH_STYLE);
    EXPECT_EQ(imagesizeStyleVal->value[0].i32, static_cast<int32_t>(ARKUI_IMAGE_SIZE_COVER));
    value[0].i32 = ARKUI_IMAGE_SIZE_AUTO;
    nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_IMAGE_SIZE_WITH_STYLE, &item);
    value[0].i32 = ARKUI_IMAGE_SIZE_CONTAIN;
    nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_IMAGE_SIZE_WITH_STYLE, &item);

    ArkUI_NumberValue backgroundBlurVal[] = {{.i32 = ARKUI_BLUR_STYLE_THIN}, {.i32 = ARKUI_COLOR_MODE_SYSTEM},
        {.i32 = ARKUI_ADAPTIVE_COLOR_DEFAULT}, {.f32 = val05}, {.f32 = val0}, {.f32 = val0}};
    ArkUI_AttributeItem backgroundBlurItem = {backgroundBlurVal, sizeof(backgroundBlurVal) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_BLUR_STYLE, &backgroundBlurItem);
    auto backgroundBlurResult = nodeAPI->getAttribute(rootNode, NODE_BACKGROUND_BLUR_STYLE);
    EXPECT_NE(backgroundBlurResult, nullptr);
    nodeAPI->setAttribute(rootNode, NODE_FOREGROUND_BLUR_STYLE, &backgroundBlurItem);
    auto foregroundBlurStyleVal = nodeAPI->getAttribute(rootNode, NODE_FOREGROUND_BLUR_STYLE);
    EXPECT_NE(foregroundBlurStyleVal, nullptr);
    backgroundBlurVal[0].i32 = ARKUI_BLUR_STYLE_NONE;
    nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_BLUR_STYLE, &backgroundBlurItem);
    nodeAPI->getAttribute(rootNode, NODE_BACKGROUND_BLUR_STYLE);
    backgroundBlurVal[0].i32 = ARKUI_BLUR_STYLE_COMPONENT_ULTRA_THIN;
    nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_BLUR_STYLE, &backgroundBlurItem);
    nodeAPI->getAttribute(rootNode, NODE_BACKGROUND_BLUR_STYLE);
    backgroundBlurItem.size = 1;
    nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_BLUR_STYLE, &backgroundBlurItem);
    nodeAPI->setAttribute(rootNode, NODE_FOREGROUND_BLUR_STYLE, &backgroundBlurItem);
    

    ArkUI_NumberValue transformCenter[] = {{.f32 = val0}, {.i32 = val0}, {.f32 = val0}, {.f32 = val05},
        {.f32 = val05}, {.f32 = val0}};
    ArkUI_AttributeItem transformCenterItem = {transformCenter, sizeof(transformCenter) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_TRANSFORM_CENTER, &transformCenterItem);
    auto transformCenterVal = nodeAPI->getAttribute(rootNode, NODE_TRANSFORM_CENTER);
    EXPECT_EQ(transformCenterVal->value[0].f32, val0);
    transformCenterItem.size = 0;
    nodeAPI->setAttribute(rootNode, NODE_TRANSFORM_CENTER, &transformCenterItem);
    transformCenterItem.size = sizeof(transformCenter) / sizeof(ArkUI_NumberValue);
    transformCenter[5].f32 = -1.0f;
    nodeAPI->setAttribute(rootNode, NODE_TRANSFORM_CENTER, &transformCenterItem);
    transformCenter[5].f32 = 2.0f;
    nodeAPI->setAttribute(rootNode, NODE_TRANSFORM_CENTER, &transformCenterItem);
    transformCenter[4].f32 = -1.0f;
    nodeAPI->setAttribute(rootNode, NODE_TRANSFORM_CENTER, &transformCenterItem);
    transformCenter[4].f32 = 2.0f;
    nodeAPI->setAttribute(rootNode, NODE_TRANSFORM_CENTER, &transformCenterItem);
    transformCenter[3].f32 = -1.0f;
    nodeAPI->setAttribute(rootNode, NODE_TRANSFORM_CENTER, &transformCenterItem);
    transformCenter[3].f32 = 2.0f;
    nodeAPI->setAttribute(rootNode, NODE_TRANSFORM_CENTER, &transformCenterItem);

    ArkUI_NumberValue opacityTransition[] = {{.f32 = val0}, {.i32 = 1000}, {.i32 = ARKUI_CURVE_LINEAR}, {.i32 = 1000},
        {.i32 = 1}, {.i32 = ARKUI_ANIMATION_PLAY_MODE_NORMAL}, {.f32 = val1}};
    ArkUI_AttributeItem opacityTransitionItem =
        {opacityTransition, sizeof(opacityTransition) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_OPACITY_TRANSITION, &opacityTransitionItem);
    auto opacityTransitionVal = nodeAPI->getAttribute(rootNode, NODE_OPACITY_TRANSITION);
    EXPECT_EQ(opacityTransitionVal->value[0].f32, val0);
    opacityTransition[5].i32 = ARKUI_ANIMATION_PLAY_MODE_REVERSE;
    nodeAPI->setAttribute(rootNode, NODE_OPACITY_TRANSITION, &opacityTransitionItem);
    nodeAPI->getAttribute(rootNode, NODE_OPACITY_TRANSITION);
    opacityTransition[5].i32 = ARKUI_ANIMATION_PLAY_MODE_ALTERNATE;
    nodeAPI->setAttribute(rootNode, NODE_OPACITY_TRANSITION, &opacityTransitionItem);
    nodeAPI->getAttribute(rootNode, NODE_OPACITY_TRANSITION);

    ArkUI_NumberValue rotateTransition[] = {{.f32 = val0}, {.f32 = val0}, {.f32 = val0}, {.f32 = val10},
        {.f32 = val0}, {.i32 = 1000}, {.i32 = ARKUI_CURVE_LINEAR}, {.i32 = 1000},
        {.i32 = 1}, {.i32 = ARKUI_ANIMATION_PLAY_MODE_NORMAL}, {.f32 = val1}};
    ArkUI_AttributeItem rotateTransitionItem =
        {rotateTransition, sizeof(rotateTransition) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_ROTATE_TRANSITION, &rotateTransitionItem);
    auto rotateTransitionVal = nodeAPI->getAttribute(rootNode, NODE_ROTATE_TRANSITION);
    EXPECT_EQ(rotateTransitionVal->value[0].f32, val0);
    rotateTransition[6].i32 = -1;
    nodeAPI->setAttribute(rootNode, NODE_ROTATE_TRANSITION, &rotateTransitionItem);

    ArkUI_NumberValue scaleTransition[] = {{.f32 = val0}, {.f32 = val0}, {.f32 = val0},
        {.i32 = 1000}, {.i32 = ARKUI_CURVE_LINEAR}, {.i32 = 1000},
        {.i32 = 1}, {.i32 = ARKUI_ANIMATION_PLAY_MODE_NORMAL}, {.f32 = val1}};
    ArkUI_AttributeItem scaleTransitionItem =
        {scaleTransition, sizeof(scaleTransition) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_SCALE_TRANSITION, &scaleTransitionItem);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCALE_TRANSITION), nullptr);
    scaleTransition[4].i32 = -1;
    nodeAPI->setAttribute(rootNode, NODE_SCALE_TRANSITION, &scaleTransitionItem);

    ArkUI_NumberValue translateTransition[] = {{.f32 = val0}, {.f32 = val0}, {.f32 = val0},
        {.i32 = 1000}, {.i32 = ARKUI_CURVE_LINEAR}, {.i32 = 1000},
        {.i32 = 1}, {.i32 = ARKUI_ANIMATION_PLAY_MODE_NORMAL}, {.f32 = val1}};
    ArkUI_AttributeItem translateTransitionItem =
        {translateTransition, sizeof(translateTransition) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_TRANSLATE_TRANSITION, &translateTransitionItem);
    auto translateTransitionVal = nodeAPI->getAttribute(rootNode, NODE_TRANSLATE_TRANSITION);
    EXPECT_EQ(translateTransitionVal->value[0].f32, val0);
    translateTransition[4].i32 = -1;
    nodeAPI->setAttribute(rootNode, NODE_TRANSLATE_TRANSITION, &translateTransitionItem);

    ArkUI_NumberValue moveTransition[] = {{.i32 = ARKUI_TRANSITION_EDGE_TOP},
        {.i32 = 1000}, {.i32 = ARKUI_CURVE_LINEAR}, {.i32 = 1000},
        {.i32 = 1}, {.i32 = ARKUI_ANIMATION_PLAY_MODE_NORMAL}, {.f32 = val1}};
    ArkUI_AttributeItem moveTransitionItem =
        {moveTransition, sizeof(moveTransition) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_MOVE_TRANSITION, &moveTransitionItem);
    auto moveTransitionVal = nodeAPI->getAttribute(rootNode, NODE_MOVE_TRANSITION);
    EXPECT_EQ(moveTransitionVal->value[0].i32, static_cast<int32_t>(ARKUI_TRANSITION_EDGE_TOP));
    moveTransition[0].i32 = -1;
    nodeAPI->setAttribute(rootNode, NODE_MOVE_TRANSITION, &moveTransitionItem);
    moveTransition[0].i32 = ARKUI_TRANSITION_EDGE_TOP;
    moveTransition[2].i32 = -1;
    nodeAPI->setAttribute(rootNode, NODE_MOVE_TRANSITION, &moveTransitionItem);

    value[0].i32 = true;
    nodeAPI->setAttribute(rootNode, NODE_FOCUSABLE, &item);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FOCUSABLE), nullptr);

    value[0].i32 = true;
    nodeAPI->setAttribute(rootNode, NODE_DEFAULT_FOCUS, &item);
    auto defaultFocusVal = nodeAPI->getAttribute(rootNode, NODE_DEFAULT_FOCUS);
    EXPECT_EQ(defaultFocusVal->value[0].i32, true);

    value4[0].f32 = val0;
    value4[1].f32 = val0;
    value4[2].f32 = val100;
    value4[3].f32 = val100;
    nodeAPI->setAttribute(rootNode, NODE_RESPONSE_REGION, &item4);
    auto responseRegionVal = nodeAPI->getAttribute(rootNode, NODE_RESPONSE_REGION);
    EXPECT_EQ(responseRegionVal->value[0].f32, val0);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_RESPONSE_REGION, &item5), ARKUI_ERROR_CODE_PARAM_INVALID);

    value3[0].i32 = ARKUI_ALIGNMENT_TOP_START;
    value3[1].f32 = val0;
    value3[2].f32 = val0;
    item3.string = "test";
    item3.size = 0;
    nodeAPI->setAttribute(rootNode, NODE_OVERLAY, &item3);
    item3.size = 1;
    nodeAPI->setAttribute(rootNode, NODE_OVERLAY, &item3);
    item3.size = 2;
    nodeAPI->setAttribute(rootNode, NODE_OVERLAY, &item3);
    item3.size = 3;
    nodeAPI->setAttribute(rootNode, NODE_OVERLAY, &item3);
    auto overlayVal = nodeAPI->getAttribute(rootNode, NODE_OVERLAY);
    EXPECT_EQ(overlayVal->value[0].i32, static_cast<int32_t>(ARKUI_ALIGNMENT_TOP_START));

    ArkUI_NumberValue mask[] = {{.u32 = color}, {.u32 = color}, {.f32 = val10}, {.i32 = ARKUI_MASK_TYPE_RECTANGLE},
        {.f32 = size}, {.f32 = size}, {.f32 = val10}, {.f32 = val10}};
    ArkUI_AttributeItem maskItem = {mask, sizeof(mask) / sizeof(ArkUI_NumberValue)};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_MASK, &maskItem), ARKUI_ERROR_CODE_NO_ERROR);
    auto maskVal = nodeAPI->getAttribute(rootNode, NODE_MASK);
    EXPECT_NE(maskVal, nullptr);
    mask[3].i32 = ARKUI_MASK_TYPE_CIRCLE;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_MASK, &maskItem), ARKUI_ERROR_CODE_NO_ERROR);
    maskVal = nodeAPI->getAttribute(rootNode, NODE_MASK);
    EXPECT_NE(maskVal, nullptr);
    mask[3].i32 = ARKUI_MASK_TYPE_ELLIPSE;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_MASK, &maskItem), ARKUI_ERROR_CODE_NO_ERROR);
    maskVal = nodeAPI->getAttribute(rootNode, NODE_MASK);
    EXPECT_NE(maskVal, nullptr);
    mask[3].i32 = ARKUI_MASK_TYPE_PATH;
    maskItem.string = pathCommands;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_MASK, &maskItem), ARKUI_ERROR_CODE_NO_ERROR);
    maskVal = nodeAPI->getAttribute(rootNode, NODE_MASK);
    EXPECT_NE(maskVal, nullptr);
    value4[0].i32 = ARKUI_MASK_TYPE_PROGRESS;
    value4[1].f32 = val10;
    value4[2].f32 = val100;
    value4[3].u32 = color;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_MASK, &item4), ARKUI_ERROR_CODE_NO_ERROR);
    maskVal = nodeAPI->getAttribute(rootNode, NODE_MASK);

    value2[0].i32 = ARKUI_BLEND_MODE_NONE;
    value2[1].i32 = BLEND_APPLY_TYPE_FAST;
    nodeAPI->setAttribute(rootNode, NODE_BLEND_MODE, &item2);
    auto blendModeVal = nodeAPI->getAttribute(rootNode, NODE_BLEND_MODE);
    EXPECT_EQ(blendModeVal->value[0].i32, static_cast<int32_t>(ARKUI_BLEND_MODE_NONE));

    value[0].i32 = ARKUI_DIRECTION_LTR;
    nodeAPI->setAttribute(rootNode, NODE_DIRECTION, &item);
    auto directionVal = nodeAPI->getAttribute(rootNode, NODE_DIRECTION);
    EXPECT_EQ(directionVal->value[0].i32, static_cast<int32_t>(ARKUI_DIRECTION_LTR));

    value4[0].f32 = val0;
    value4[1].f32 = size;
    value4[2].f32 = val0;
    value4[3].f32 = size;
    nodeAPI->setAttribute(rootNode, NODE_CONSTRAINT_SIZE, &item4);
    auto constraintSizeVal = nodeAPI->getAttribute(rootNode, NODE_CONSTRAINT_SIZE);
    EXPECT_EQ(constraintSizeVal->value[0].f32, val0);

    value[0].f32 = val05;
    nodeAPI->setAttribute(rootNode, NODE_GRAY_SCALE, &item);
    auto grayScaleVal = nodeAPI->getAttribute(rootNode, NODE_GRAY_SCALE);
    EXPECT_EQ(grayScaleVal->value[0].f32, val05);
    value[0].f32 = val10;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_GRAY_SCALE, &item), ARKUI_ERROR_CODE_PARAM_INVALID);

    value[0].f32 = val05;
    nodeAPI->setAttribute(rootNode, NODE_INVERT, &item);
    auto invertVal = nodeAPI->getAttribute(rootNode, NODE_INVERT);
    EXPECT_EQ(invertVal->value[0].f32, val05);
    value[0].f32 = val10;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_INVERT, &item), ARKUI_ERROR_CODE_PARAM_INVALID);

    value[0].f32 = val05;
    nodeAPI->setAttribute(rootNode, NODE_SEPIA, &item);
    auto sepiaVal = nodeAPI->getAttribute(rootNode, NODE_SEPIA);
    EXPECT_EQ(sepiaVal->value[0].f32, val05);
    value[0].f32 = val10;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SEPIA, &item), ARKUI_ERROR_CODE_PARAM_INVALID);

    value[0].f32 = val05;
    nodeAPI->setAttribute(rootNode, NODE_CONTRAST, &item);
    auto contrastVal = nodeAPI->getAttribute(rootNode, NODE_CONTRAST);
    EXPECT_EQ(contrastVal->value[0].f32, val05);
    value[0].f32 = val100;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CONTRAST, &item), ARKUI_ERROR_CODE_PARAM_INVALID);

    value[0].u32 = color;
    nodeAPI->setAttribute(rootNode, NODE_FOREGROUND_COLOR, &item);
    auto foregroundColorVal = nodeAPI->getAttribute(rootNode, NODE_FOREGROUND_COLOR);
    EXPECT_NE(foregroundColorVal, nullptr);
    value[0].i32 = ARKUI_COLOR_STRATEGY_INVERT;
    nodeAPI->setAttribute(rootNode, NODE_FOREGROUND_COLOR, &item);
    value[0].i32 = ARKUI_COLOR_STRATEGY_AVERAGE;
    nodeAPI->setAttribute(rootNode, NODE_FOREGROUND_COLOR, &item);
    value[0].i32 = ARKUI_COLOR_STRATEGY_PRIMARY;
    nodeAPI->setAttribute(rootNode, NODE_FOREGROUND_COLOR, &item);

    value2[0].f32 = val10;
    value2[1].f32 = val10;
    nodeAPI->setAttribute(rootNode, NODE_OFFSET, &item2);
    auto offsetVal = nodeAPI->getAttribute(rootNode, NODE_OFFSET);
    EXPECT_EQ(offsetVal->value[0].f32, val10);

    value2[0].f32 = val10;
    value2[1].f32 = val10;
    nodeAPI->setAttribute(rootNode, NODE_MARK_ANCHOR, &item2);
    auto maskAnchorVal = nodeAPI->getAttribute(rootNode, NODE_MARK_ANCHOR);
    EXPECT_EQ(maskAnchorVal->value[0].f32, val10);

    value2[0].f32 = val10;
    value2[1].f32 = val10;
    nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_IMAGE_POSITION, &item2);
    auto backgroundImagePositionVal = nodeAPI->getAttribute(rootNode, NODE_BACKGROUND_IMAGE_POSITION);
    EXPECT_EQ(backgroundImagePositionVal->value[0].f32, val10);

    value[0].i32 = 0;
    nodeAPI->setAttribute(rootNode, NODE_ACCESSIBILITY_GROUP, &item);
    auto accessibilityGroupVal = nodeAPI->getAttribute(rootNode, NODE_ACCESSIBILITY_GROUP);
    EXPECT_EQ(accessibilityGroupVal->value[0].i32, 0);

    item.string = "test";
    nodeAPI->setAttribute(rootNode, NODE_ACCESSIBILITY_TEXT, &item);
    auto accessibilityTextVal = nodeAPI->getAttribute(rootNode, NODE_ACCESSIBILITY_TEXT);
    EXPECT_NE(accessibilityTextVal, nullptr);
    nodeAPI->setAttribute(rootNode, NODE_ACCESSIBILITY_DESCRIPTION, &item);
    auto accessibilityDescVal = nodeAPI->getAttribute(rootNode, NODE_ACCESSIBILITY_DESCRIPTION);
    EXPECT_NE(accessibilityDescVal, nullptr);

    value[0].i32 = ARKUI_ACCESSIBILITY_MODE_AUTO;
    nodeAPI->setAttribute(rootNode, NODE_ACCESSIBILITY_MODE, &item);
    auto accessibilityModeVal = nodeAPI->getAttribute(rootNode, NODE_ACCESSIBILITY_MODE);
    EXPECT_EQ(accessibilityModeVal->value[0].i32, static_cast<int32_t>(ARKUI_ACCESSIBILITY_MODE_AUTO));

    value[0].f32 = val05;
    nodeAPI->setAttribute(rootNode, NODE_ASPECT_RATIO, &item);
    auto aspectRatioVal = nodeAPI->getAttribute(rootNode, NODE_ASPECT_RATIO);
    EXPECT_EQ(aspectRatioVal->value[0].f32, val05);

    value[0].f32 = val05;
    nodeAPI->setAttribute(rootNode, NODE_LAYOUT_WEIGHT, &item);
    auto layoutWeightVal = nodeAPI->getAttribute(rootNode, NODE_LAYOUT_WEIGHT);
    EXPECT_EQ(layoutWeightVal->value[0].f32, val05);

    value[0].u32 = 0;
    nodeAPI->setAttribute(rootNode, NODE_DISPLAY_PRIORITY, &item);
    auto displayPriorityVal = nodeAPI->getAttribute(rootNode, NODE_DISPLAY_PRIORITY);
    EXPECT_EQ(displayPriorityVal->value[0].u32, 0);

    value4[0].f32 = val10;
    value4[1].f32 = val10;
    value4[2].f32 = val10;
    value4[3].f32 = val10;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_OUTLINE_WIDTH, &item4), ARKUI_ERROR_CODE_NO_ERROR);

    value[0].f32 = val05;
    nodeAPI->setAttribute(rootNode, NODE_WIDTH_PERCENT, &item);
    auto widthPercentVal = nodeAPI->getAttribute(rootNode, NODE_WIDTH_PERCENT);
    EXPECT_EQ(widthPercentVal->value[0].f32, val05);

    value[0].f32 = val05;
    nodeAPI->setAttribute(rootNode, NODE_HEIGHT_PERCENT, &item);
    auto heightPercentVal = nodeAPI->getAttribute(rootNode, NODE_HEIGHT_PERCENT);
    EXPECT_EQ(heightPercentVal->value[0].f32, val05);

    value[0].f32 = val01;
    nodeAPI->setAttribute(rootNode, NODE_PADDING_PERCENT, &item);
    auto paddingPercentVal = nodeAPI->getAttribute(rootNode, NODE_PADDING_PERCENT);
    EXPECT_EQ(paddingPercentVal->value[0].f32, val01);
    value4[0].f32 = val01;
    value4[1].f32 = val01;
    value4[2].f32 = val01;
    value4[3].f32 = val01;
    nodeAPI->setAttribute(rootNode, NODE_PADDING_PERCENT, &item4);
    auto paddingPercentVal4 = nodeAPI->getAttribute(rootNode, NODE_PADDING_PERCENT);
    EXPECT_EQ(paddingPercentVal4->value[0].f32, val01);

    nodeAPI->setAttribute(rootNode, NODE_MARGIN_PERCENT, &item);
    auto marginPercentVal = nodeAPI->getAttribute(rootNode, NODE_MARGIN_PERCENT);
    EXPECT_EQ(marginPercentVal->value[0].f32, val01);
    nodeAPI->setAttribute(rootNode, NODE_MARGIN_PERCENT, &item4);
    auto marginPercentVal4 = nodeAPI->getAttribute(rootNode, NODE_MARGIN_PERCENT);
    EXPECT_EQ(marginPercentVal4->value[0].f32, val01);
    
    value[0].i32 = false;
    item.string = "test";
    item.size = 0;
    nodeAPI->setAttribute(rootNode, NODE_GEOMETRY_TRANSITION, &item);
    item.size = 1;
    nodeAPI->setAttribute(rootNode, NODE_GEOMETRY_TRANSITION, &item);
    auto geometryTransitionVal = nodeAPI->getAttribute(rootNode, NODE_GEOMETRY_TRANSITION);
    EXPECT_EQ(geometryTransitionVal->value[0].i32, 0);

    value[0].i32 = ARKUI_RENDER_FIT_CENTER;
    nodeAPI->setAttribute(rootNode, NODE_RENDER_FIT, &item);
    auto renderFitVal = nodeAPI->getAttribute(rootNode, NODE_RENDER_FIT);
    EXPECT_EQ(renderFitVal->value[0].i32, static_cast<int32_t>(ARKUI_RENDER_FIT_CENTER));

    value[0].u32 = color;
    nodeAPI->setAttribute(rootNode, NODE_OUTLINE_COLOR, &item);
    auto outlineColorVal = nodeAPI->getAttribute(rootNode, NODE_OUTLINE_COLOR);
    EXPECT_EQ(outlineColorVal->value[0].u32, color);
    value4[0].u32 = color;
    value4[1].u32 = color;
    value4[2].u32 = color;
    value4[3].u32 = color;
    nodeAPI->setAttribute(rootNode, NODE_OUTLINE_COLOR, &item4);
    auto outlineColorVal4 = nodeAPI->getAttribute(rootNode, NODE_OUTLINE_COLOR);
    EXPECT_EQ(outlineColorVal4->value[0].u32, color);

    value2[0].f32 = size;
    value2[1].f32 = size;
    nodeAPI->setAttribute(rootNode, NODE_SIZE, &item2);
    auto sizeVal = nodeAPI->getAttribute(rootNode, NODE_SIZE);
    EXPECT_EQ(sizeVal->value[0].f32, size);

    value[0].i32 = false;
    nodeAPI->setAttribute(rootNode, NODE_RENDER_GROUP, &item);
    auto renderGroupVal = nodeAPI->getAttribute(rootNode, NODE_RENDER_GROUP);
    EXPECT_EQ(renderGroupVal->value[0].i32, 0);

    value[0].u32 = color;
    nodeAPI->setAttribute(rootNode, NODE_COLOR_BLEND, &item);
    auto colorBlendVal = nodeAPI->getAttribute(rootNode, NODE_COLOR_BLEND);
    EXPECT_EQ(colorBlendVal->value[0].u32, color);
    
    value4[0].i32 = 0;
    value4[1].i32 = 0;
    value4[2].i32 = 100;
    value4[3].i32 = 100;
    nodeAPI->setAttribute(rootNode, NODE_LAYOUT_RECT, &item4);
    auto layoutRectVal = nodeAPI->getAttribute(rootNode, NODE_LAYOUT_RECT);
    EXPECT_EQ(layoutRectVal->value[0].i32, 0);

    value[0].i32 = 1;
    nodeAPI->setAttribute(rootNode, NODE_FOCUS_ON_TOUCH, &item);
    auto onTouchVal = nodeAPI->getAttribute(rootNode, NODE_FOCUS_ON_TOUCH);
    EXPECT_EQ(onTouchVal->value[0].i32, 1);

    value[0].f32 = val01;
    nodeAPI->setAttribute(rootNode, NODE_BORDER_WIDTH_PERCENT, &item);
    auto borderWidthPercentVal = nodeAPI->getAttribute(rootNode, NODE_BORDER_WIDTH_PERCENT);
    EXPECT_EQ(borderWidthPercentVal->value[0].f32, val01);
    value4[0].f32 = val01;
    value4[1].f32 = val01;
    value4[2].f32 = val01;
    value4[3].f32 = val01;
    nodeAPI->setAttribute(rootNode, NODE_BORDER_WIDTH_PERCENT, &item4);
    auto borderWidthPercentVal4 = nodeAPI->getAttribute(rootNode, NODE_BORDER_WIDTH_PERCENT);
    EXPECT_EQ(borderWidthPercentVal4->value[0].f32, val01);

    value[0].f32 = val01;
    nodeAPI->setAttribute(rootNode, NODE_BORDER_RADIUS_PERCENT, &item);
    auto borderRadiusPercentVal = nodeAPI->getAttribute(rootNode, NODE_BORDER_RADIUS_PERCENT);
    EXPECT_EQ(borderRadiusPercentVal->value[0].f32, val01);
    value4[0].f32 = val01;
    value4[1].f32 = val01;
    value4[2].f32 = val01;
    value4[3].f32 = val01;
    nodeAPI->setAttribute(rootNode, NODE_BORDER_RADIUS_PERCENT, &item4);
    auto borderRadiusPercentVal4 = nodeAPI->getAttribute(rootNode, NODE_BORDER_RADIUS_PERCENT);
    EXPECT_EQ(borderRadiusPercentVal4->value[0].f32, val01);

    auto accessibilityIdVal = nodeAPI->getAttribute(rootNode, NODE_ACCESSIBILITY_ID);
    EXPECT_NE(accessibilityIdVal, nullptr);

    value[0].u32 = ARKUI_ACCESSIBILITY_ACTION_CLICK;
    nodeAPI->setAttribute(rootNode, NODE_ACCESSIBILITY_ACTIONS, &item);
    auto accessibilityActionVal = nodeAPI->getAttribute(rootNode, NODE_ACCESSIBILITY_ACTIONS);
    EXPECT_NE(accessibilityActionVal, nullptr);
    

    value[0].u32 = ARKUI_NODE_STACK;
    nodeAPI->setAttribute(rootNode, NODE_ACCESSIBILITY_ROLE, &item);
    auto accessibilityRoleVal = nodeAPI->getAttribute(rootNode, NODE_ACCESSIBILITY_ROLE);
    EXPECT_NE(accessibilityRoleVal, nullptr);

    value2[0].u32 = ARKUI_SAFE_AREA_TYPE_SYSTEM;
    value2[1].u32 = ARKUI_SAFE_AREA_EDGE_TOP;
    nodeAPI->setAttribute(rootNode, NODE_EXPAND_SAFE_AREA, &item2);
    auto extendSafeAreaVal = nodeAPI->getAttribute(rootNode, NODE_EXPAND_SAFE_AREA);
    EXPECT_EQ(extendSafeAreaVal->value[0].u32, ARKUI_SAFE_AREA_TYPE_SYSTEM);

    value[0].i32 = ARKUI_ALIGNMENT_CENTER;
    nodeAPI->setAttribute(rootNode, NODE_STACK_ALIGN_CONTENT, &item);
    auto stackAlignVal = nodeAPI->getAttribute(rootNode, NODE_STACK_ALIGN_CONTENT);
    EXPECT_EQ(stackAlignVal->value[0].i32, static_cast<int32_t>(ARKUI_ALIGNMENT_CENTER));

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TRANSITION), nullptr);

    value[0].f32 = val05;
    nodeAPI->setAttribute(rootNode, NODE_VISIBLE_AREA_CHANGE_RATIO, &item);
    value[0].f32 = val01;
    nodeAPI->setAttribute(rootNode, NODE_VISIBLE_AREA_CHANGE_RATIO, &item);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_VISIBLE_AREA_CHANGE_RATIO), nullptr);
    
    auto labelCode = nodeAPI->setAttribute(rootNode, NODE_INSPECTOR_LABEL, nullptr);
    EXPECT_EQ(labelCode, ARKUI_ERROR_CODE_PARAM_INVALID);
    item.string = "test";
    labelCode = nodeAPI->setAttribute(rootNode, NODE_INSPECTOR_LABEL, &item);
    EXPECT_EQ(labelCode, ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_WIDTH), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_HEIGHT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BACKGROUND_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_PADDING), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_MARGIN), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_ID), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_ENABLED), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TRANSLATE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCALE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_ROTATE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BRIGHTNESS), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SATURATION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BLUR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_LINEAR_GRADIENT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_ALIGNMENT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_OPACITY), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BORDER_WIDTH), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BORDER_RADIUS), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BORDER_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BORDER_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_Z_INDEX), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_VISIBILITY), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_CLIP), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_CLIP_SHAPE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TRANSFORM), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_HIT_TEST_BEHAVIOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_POSITION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SHADOW), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_CUSTOM_SHADOW), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BACKGROUND_IMAGE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BACKGROUND_IMAGE_SIZE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BACKGROUND_IMAGE_SIZE_WITH_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BACKGROUND_BLUR_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TRANSFORM_CENTER), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_OPACITY_TRANSITION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_ROTATE_TRANSITION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCALE_TRANSITION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TRANSLATE_TRANSITION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_MOVE_TRANSITION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FOCUSABLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_DEFAULT_FOCUS), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_RESPONSE_REGION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_OVERLAY), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SWEEP_GRADIENT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_RADIAL_GRADIENT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_MASK), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BLEND_MODE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_DIRECTION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_CONSTRAINT_SIZE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_GRAY_SCALE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_INVERT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SEPIA), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_CONTRAST), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FOREGROUND_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_OFFSET), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_MARK_ANCHOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BACKGROUND_IMAGE_POSITION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_ACCESSIBILITY_GROUP), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_ACCESSIBILITY_TEXT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_ACCESSIBILITY_MODE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_ACCESSIBILITY_DESCRIPTION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FOCUS_STATUS), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_ASPECT_RATIO), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_LAYOUT_WEIGHT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_DISPLAY_PRIORITY), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_OUTLINE_WIDTH), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_WIDTH_PERCENT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_HEIGHT_PERCENT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_PADDING_PERCENT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_MARGIN_PERCENT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_GEOMETRY_TRANSITION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_RENDER_FIT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_OUTLINE_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SIZE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_RENDER_GROUP), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_COLOR_BLEND), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FOREGROUND_BLUR_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_LAYOUT_RECT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FOCUS_ON_TOUCH), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BORDER_WIDTH_PERCENT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BORDER_RADIUS_PERCENT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_ACCESSIBILITY_ID), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_ACCESSIBILITY_ACTIONS), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_ACCESSIBILITY_ROLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_ACCESSIBILITY_STATE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_ACCESSIBILITY_VALUE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_EXPAND_SAFE_AREA), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_VISIBLE_AREA_CHANGE_RATIO), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TRANSITION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_STACK_ALIGN_CONTENT), ARKUI_ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: NativeNodeTest006
 * @tc.desc: Test ConvertOriginEventType function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest006, TestSize.Level1)
{
    int32_t ret;
    int32_t nodeType = static_cast<int32_t>(ARKUI_NODE_TEXT_INPUT);
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_INPUT_ON_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXT_INPUT_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_INPUT_ON_SUBMIT, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXT_INPUT_SUBMIT));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_INPUT_ON_CUT, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXT_INPUT_CUT));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_INPUT_ON_PASTE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXT_INPUT_PASTE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_INPUT_ON_TEXT_SELECTION_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXT_INPUT_TEXT_SELECTION_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_INPUT_ON_EDIT_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXT_INPUT_EDIT_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_INPUT_ON_CONTENT_SIZE_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXT_INPUT_CONTENT_SIZE_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_INPUT_ON_INPUT_FILTER_ERROR, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXT_INPUT_INPUT_FILTER_ERROR));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_INPUT_ON_CONTENT_SCROLL, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXT_INPUT_CONTENT_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_INPUT_ON_WILL_INSERT, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXT_INPUT_WILL_INSERT));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_INPUT_ON_DID_INSERT, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXT_INPUT_DID_INSERT));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_INPUT_ON_WILL_DELETE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXT_INPUT_WILL_DELETE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_INPUT_ON_DID_DELETE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXT_INPUT_DID_DELETE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_INPUT_ON_CHANGE_WITH_PREVIEW_TEXT, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXT_INPUT_CHANGE_WITH_PREVIEW_TEXT));

    nodeType = static_cast<int32_t>(ARKUI_NODE_SCROLL);
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_SCROLL, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_SCROLL_FRAME_BEGIN, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_SCROLL_FRAME_BEGIN));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_WILL_SCROLL, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_SCROLL_WILL_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_DID_SCROLL, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_SCROLL_DID_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_SCROLL_START, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_SCROLL_START));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_SCROLL_STOP, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_SCROLL_STOP));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_SCROLL_EDGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_SCROLL_EDGE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_REACH_START, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_SCROLL_REACH_START));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_REACH_END, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_SCROLL_REACH_END));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_WILL_STOP_DRAGGING, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_SCROLL_WILL_STOP_DRAGGING));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_DID_ZOOM, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_SCROLL_DID_ZOOM));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_ZOOM_START, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_SCROLL_ZOOM_START));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_ZOOM_STOP, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_SCROLL_ZOOM_STOP));

    nodeType = static_cast<int32_t>(ARKUI_NODE_LIST);
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_SCROLL, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_LIST_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_SCROLL_FRAME_BEGIN, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_LIST_SCROLL_FRAME_BEGIN));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_SCROLL_START, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_LIST_SCROLL_START));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_SCROLL_STOP, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_LIST_SCROLL_STOP));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_REACH_START, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_LIST_REACH_START));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_REACH_END, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_LIST_REACH_END));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_LIST_ON_SCROLL_INDEX, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_LIST_SCROLL_INDEX));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_LIST_ON_DID_SCROLL, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_LIST_DID_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_LIST_ON_WILL_SCROLL, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_LIST_WILL_SCROLL));
    
    nodeType = static_cast<int32_t>(ARKUI_NODE_WATER_FLOW);
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_SCROLL_FRAME_BEGIN, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_WATER_FLOW_SCROLL_FRAME_BEGIN));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_SCROLL_START, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_WATER_FLOW_SCROLL_START));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_SCROLL_STOP, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_WATER_FLOW_SCROLL_STOP));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_ON_WILL_SCROLL, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_WATER_FLOW_WILL_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_REACH_START, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_WATER_FLOW_REACH_START));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_REACH_END, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_WATER_FLOW_REACH_END));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_WATER_FLOW_ON_DID_SCROLL, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_WATER_FLOW_DID_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_WATER_FLOW_ON_SCROLL_INDEX, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_WATER_FLOW_SCROLL_INDEX));

    nodeType = static_cast<int32_t>(ARKUI_NODE_STACK);
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_EVENT_ON_APPEAR, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_APPEAR));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_EVENT_ON_DISAPPEAR, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_DISAPPEAR));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_EVENT_ON_AREA_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_AREA_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_ON_FOCUS, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_FOCUS));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_ON_BLUR, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_BLUR));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TOUCH_EVENT, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TOUCH));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_ON_CLICK, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_CLICK));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_ON_TOUCH_INTERCEPT, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TOUCH_INTERCEPT));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_EVENT_ON_VISIBLE_AREA_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_VISIBLE_AREA_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_ON_HOVER, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_HOVER));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_ON_HOVER_MOVE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_HOVER_MOVE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_ON_MOUSE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_MOUSE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_EVENT_ON_ATTACH, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_ATTACH));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_EVENT_ON_DETACH, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_DETACH));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_ON_ACCESSIBILITY_ACTIONS, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_ACCESSIBILITY_ACTIONS));

    nodeType = static_cast<int32_t>(ARKUI_NODE_TEXT_AREA);
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_AREA_ON_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXTAREA_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_AREA_ON_INPUT_FILTER_ERROR, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXT_AREA_INPUT_FILTER_ERROR));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_AREA_ON_EDIT_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXTAREA_EDIT_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_AREA_ON_SUBMIT, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXTAREA_ON_SUBMIT));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_AREA_ON_CONTENT_SIZE_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXTAREA_CONTENT_SIZE_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_AREA_ON_PASTE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXTAREA_PASTE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_AREA_ON_TEXT_SELECTION_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXTAREA_TEXT_SELECTION_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_AREA_ON_CONTENT_SCROLL, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXT_AREA_CONTENT_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_AREA_ON_WILL_INSERT, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXT_AREA_WILL_INSERT));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_AREA_ON_DID_INSERT, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXT_AREA_DID_INSERT));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_AREA_ON_WILL_DELETE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXT_AREA_WILL_DELETE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_AREA_ON_DID_DELETE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXT_AREA_DID_DELETE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_AREA_ON_CHANGE_WITH_PREVIEW_TEXT, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXT_AREA_CHANGE_WITH_PREVIEW_TEXT));


    nodeType = static_cast<int32_t>(ARKUI_NODE_REFRESH);
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_REFRESH_STATE_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_REFRESH_STATE_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_REFRESH_ON_REFRESH, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_REFRESH_REFRESHING));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_REFRESH_ON_OFFSET_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_REFRESH_ON_OFFSET_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_ON_KEY_EVENT, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ArkUIEventSubKind::ON_KEY_EVENT));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_ON_KEY_PRE_IME, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ArkUIEventSubKind::ON_KEY_PREIME));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_ON_CLICK_EVENT, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ArkUIEventSubKind::ON_CLICK_EVENT));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_ON_HOVER_EVENT, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ArkUIEventSubKind::ON_HOVER_EVENT));

    nodeType = static_cast<int32_t>(ARKUI_NODE_TOGGLE);
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TOGGLE_ON_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TOGGLE_CHANGE));

    nodeType = static_cast<int32_t>(ARKUI_NODE_IMAGE);
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_IMAGE_ON_COMPLETE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_IMAGE_COMPLETE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_IMAGE_ON_ERROR, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_IMAGE_ERROR));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_IMAGE_ON_SVG_PLAY_FINISH, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_IMAGE_SVG_PLAY_FINISH));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_IMAGE_ON_DOWNLOAD_PROGRESS, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_IMAGE_DOWNLOAD_PROGRESS));

    nodeType = static_cast<int32_t>(ARKUI_NODE_DATE_PICKER);
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_DATE_PICKER_EVENT_ON_DATE_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_DATE_PICKER_DATE_CHANGE));

    nodeType = static_cast<int32_t>(ARKUI_NODE_TIME_PICKER);
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TIME_PICKER_EVENT_ON_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TIME_PICKER_CHANGE));

    nodeType = static_cast<int32_t>(ARKUI_NODE_TEXT_PICKER);
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_PICKER_EVENT_ON_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXT_PICKER_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_PICKER_EVENT_ON_SCROLL_STOP, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_TEXT_PICKER_SCROLL_STOP));

    nodeType = static_cast<int32_t>(ARKUI_NODE_CALENDAR_PICKER);
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_CALENDAR_PICKER_EVENT_ON_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_CALENDAR_PICKER_CHANGE));

    nodeType = static_cast<int32_t>(ARKUI_NODE_CHECKBOX);
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_CHECKBOX_EVENT_ON_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_CHECKBOX_CHANGE));

    nodeType = static_cast<int32_t>(ARKUI_NODE_SLIDER);
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SLIDER_EVENT_ON_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_SLIDER_CHANGE));

    nodeType = static_cast<int32_t>(ARKUI_NODE_SWIPER);
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SWIPER_EVENT_ON_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_SWIPER_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SWIPER_EVENT_ON_SELECTED, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_SWIPER_SELECTED));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SWIPER_EVENT_ON_ANIMATION_START, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_SWIPER_ANIMATION_START));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SWIPER_EVENT_ON_ANIMATION_END, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_SWIPER_ANIMATION_END));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SWIPER_EVENT_ON_GESTURE_SWIPE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_SWIPER_GESTURE_SWIPE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SWIPER_EVENT_ON_CONTENT_DID_SCROLL, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_SWIPER_DID_CONTENT_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SWIPER_EVENT_ON_UNSELECTED, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_SWIPER_UNSELECTED));

    nodeType = static_cast<int32_t>(ARKUI_NODE_TEXT);
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_ON_DETECT_RESULT_UPDATE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_DETECT_RESULT_UPDATE));

    nodeType = static_cast<int32_t>(ARKUI_NODE_RADIO);
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_RADIO_EVENT_ON_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_RADIO_CHANGE));

    nodeType = static_cast<int32_t>(ARKUI_NODE_IMAGE_ANIMATOR);
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_IMAGE_ANIMATOR_EVENT_ON_START, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_IMAGE_ANIMATOR_ON_START));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_IMAGE_ANIMATOR_EVENT_ON_CANCEL, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_IMAGE_ANIMATOR_ON_CANCEL));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_IMAGE_ANIMATOR_EVENT_ON_PAUSE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_IMAGE_ANIMATOR_ON_PAUSE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_IMAGE_ANIMATOR_EVENT_ON_REPEAT, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_IMAGE_ANIMATOR_ON_REPEAT));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_IMAGE_ANIMATOR_EVENT_ON_FINISH, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_IMAGE_ANIMATOR_ON_FINISH));

    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_ON_FOCUS_AXIS, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_FOCUS_AXIS));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_CHECKBOX_GROUP_EVENT_ON_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_CHECKBOX_GROUP_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_ON_AXIS, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_AXIS));

    nodeType = static_cast<int32_t>(ARKUI_NODE_GRID);
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_GRID_ON_SCROLL_BAR_UPDATE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_GRID_SCROLL_BAR_UPDATE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_SCROLL_FRAME_BEGIN, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_GRID_SCROLL_FRAME_BEGIN));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_GRID_ON_SCROLL_INDEX, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_GRID_SCROLL_TO_INDEX));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_SCROLL_START, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_GRID_START));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_SCROLL_EVENT_ON_SCROLL_STOP, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_GRID_STOP));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_GRID_ON_WILL_SCROLL, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_GRID_WILL_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_GRID_ON_DID_SCROLL, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_GRID_DID_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_GRID_ON_ITEM_DRAG_START, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_GRID_ITEM_DRAG_START));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_GRID_ON_ITEM_DRAG_ENTER, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_GRID_ITEM_DRAG_ENTER));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_GRID_ON_ITEM_DRAG_MOVE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_GRID_ITEM_DRAG_MOVE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_GRID_ON_ITEM_DRAG_LEAVE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_GRID_ITEM_DRAG_LEAVE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_GRID_ON_ITEM_DROP, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_GRID_ITEM_DROP));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_GRID_ITEM_ON_SELECT, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_GRID_ITEM_SELECT));
    
    nodeType = static_cast<int32_t>(ARKUI_NODE_PICKER);
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_PICKER_EVENT_ON_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_CONTAINER_PICKER_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_PICKER_EVENT_ON_SCROLL_STOP, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_CONTAINER_PICKER_SCROLL_STOP));

    nodeType = static_cast<int32_t>(ARKUI_NODE_TEXT_EDITOR);
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_TEXT_EDITOR_ON_SELECTION_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_RICH_EDITOR_ON_SELECTION_CHANGE));
}

/**
 * @tc.name: NativeNodeTest007
 * @tc.desc: Test ConvertToNodeEventType function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest007, TestSize.Level1)
{
    int32_t ret;
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXT_INPUT_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_INPUT_ON_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXT_INPUT_SUBMIT);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_INPUT_ON_SUBMIT));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXT_INPUT_CUT);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_INPUT_ON_CUT));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXT_INPUT_PASTE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_INPUT_ON_PASTE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXT_INPUT_TEXT_SELECTION_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_INPUT_ON_TEXT_SELECTION_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXT_INPUT_EDIT_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_INPUT_ON_EDIT_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXT_INPUT_CONTENT_SIZE_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_INPUT_ON_CONTENT_SIZE_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXT_INPUT_INPUT_FILTER_ERROR);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_INPUT_ON_INPUT_FILTER_ERROR));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXT_INPUT_CONTENT_SCROLL);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_INPUT_ON_CONTENT_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXT_INPUT_WILL_INSERT);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_INPUT_ON_WILL_INSERT));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXT_INPUT_DID_INSERT);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_INPUT_ON_DID_INSERT));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXT_INPUT_WILL_DELETE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_INPUT_ON_WILL_DELETE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXT_INPUT_DID_DELETE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_INPUT_ON_DID_DELETE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXT_INPUT_CHANGE_WITH_PREVIEW_TEXT);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_INPUT_ON_CHANGE_WITH_PREVIEW_TEXT));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_SCROLL);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_SCROLL_FRAME_BEGIN);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_SCROLL_FRAME_BEGIN));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_SCROLL_WILL_SCROLL);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_WILL_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_SCROLL_DID_SCROLL);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_DID_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_SCROLL_START);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_SCROLL_START));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_SCROLL_STOP);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_SCROLL_STOP));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_SCROLL_EDGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_SCROLL_EDGE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_SCROLL_REACH_START);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_REACH_START));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_SCROLL_REACH_END);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_REACH_END));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_SCROLL_WILL_STOP_DRAGGING);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_WILL_STOP_DRAGGING));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_SCROLL_DID_ZOOM);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_DID_ZOOM));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_SCROLL_ZOOM_START);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_ZOOM_START));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_SCROLL_ZOOM_STOP);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_ZOOM_STOP));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_LIST_SCROLL);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_LIST_SCROLL_FRAME_BEGIN);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_SCROLL_FRAME_BEGIN));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_LIST_SCROLL_START);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_SCROLL_START));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_LIST_SCROLL_STOP);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_SCROLL_STOP));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_LIST_REACH_START);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_REACH_START));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_LIST_REACH_END);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_REACH_END));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_LIST_SCROLL_INDEX);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_LIST_ON_SCROLL_INDEX));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_LIST_DID_SCROLL);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_LIST_ON_DID_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_LIST_WILL_SCROLL);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_LIST_ON_WILL_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_WATER_FLOW_SCROLL_FRAME_BEGIN);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_SCROLL_FRAME_BEGIN));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_WATER_FLOW_SCROLL_START);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_SCROLL_START));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_WATER_FLOW_SCROLL_STOP);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_SCROLL_STOP));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_WATER_FLOW_WILL_SCROLL);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_ON_WILL_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_WATER_FLOW_REACH_START);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_REACH_START));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_WATER_FLOW_REACH_END);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_REACH_END));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_WATER_FLOW_DID_SCROLL);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_WATER_FLOW_ON_DID_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_WATER_FLOW_SCROLL_INDEX);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_WATER_FLOW_ON_SCROLL_INDEX));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_APPEAR);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_EVENT_ON_APPEAR));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_DISAPPEAR);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_EVENT_ON_DISAPPEAR));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_AREA_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_EVENT_ON_AREA_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_FOCUS);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_ON_FOCUS));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_BLUR);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_ON_BLUR));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TOUCH);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TOUCH_EVENT));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_CLICK);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_ON_CLICK));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TOUCH_INTERCEPT);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_ON_TOUCH_INTERCEPT));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_VISIBLE_AREA_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_EVENT_ON_VISIBLE_AREA_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_HOVER);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_ON_HOVER));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_HOVER_MOVE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_ON_HOVER_MOVE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_MOUSE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_ON_MOUSE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_ATTACH);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_EVENT_ON_ATTACH));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_DETACH);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_EVENT_ON_DETACH));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_ACCESSIBILITY_ACTIONS);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_ON_ACCESSIBILITY_ACTIONS));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXTAREA_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_AREA_ON_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXT_AREA_INPUT_FILTER_ERROR);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_AREA_ON_INPUT_FILTER_ERROR));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXTAREA_EDIT_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_AREA_ON_EDIT_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXTAREA_ON_SUBMIT);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_AREA_ON_SUBMIT));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXTAREA_CONTENT_SIZE_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_AREA_ON_CONTENT_SIZE_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXTAREA_PASTE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_AREA_ON_PASTE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXTAREA_TEXT_SELECTION_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_AREA_ON_TEXT_SELECTION_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXT_AREA_CONTENT_SCROLL);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_AREA_ON_CONTENT_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXT_AREA_WILL_INSERT);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_AREA_ON_WILL_INSERT));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXT_AREA_DID_INSERT);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_AREA_ON_DID_INSERT));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXT_AREA_WILL_DELETE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_AREA_ON_WILL_DELETE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXT_AREA_DID_DELETE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_AREA_ON_DID_DELETE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXT_AREA_CHANGE_WITH_PREVIEW_TEXT);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_AREA_ON_CHANGE_WITH_PREVIEW_TEXT));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_REFRESH_STATE_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_REFRESH_STATE_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_REFRESH_REFRESHING);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_REFRESH_ON_REFRESH));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_REFRESH_ON_OFFSET_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_REFRESH_ON_OFFSET_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TOGGLE_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TOGGLE_ON_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_IMAGE_COMPLETE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_IMAGE_ON_COMPLETE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_IMAGE_ERROR);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_IMAGE_ON_ERROR));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_IMAGE_SVG_PLAY_FINISH);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_IMAGE_ON_SVG_PLAY_FINISH));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_IMAGE_DOWNLOAD_PROGRESS);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_IMAGE_ON_DOWNLOAD_PROGRESS));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_DATE_PICKER_DATE_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_DATE_PICKER_EVENT_ON_DATE_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TIME_PICKER_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TIME_PICKER_EVENT_ON_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXT_PICKER_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_PICKER_EVENT_ON_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_TEXT_PICKER_SCROLL_STOP);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_PICKER_EVENT_ON_SCROLL_STOP));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_CALENDAR_PICKER_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_CALENDAR_PICKER_EVENT_ON_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_CHECKBOX_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_CHECKBOX_EVENT_ON_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_SLIDER_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SLIDER_EVENT_ON_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_SWIPER_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SWIPER_EVENT_ON_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_SWIPER_ANIMATION_START);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SWIPER_EVENT_ON_ANIMATION_START));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_SWIPER_ANIMATION_END);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SWIPER_EVENT_ON_ANIMATION_END));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_SWIPER_GESTURE_SWIPE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SWIPER_EVENT_ON_GESTURE_SWIPE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_SWIPER_DID_CONTENT_SCROLL);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SWIPER_EVENT_ON_CONTENT_DID_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_DETECT_RESULT_UPDATE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_ON_DETECT_RESULT_UPDATE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_RADIO_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_RADIO_EVENT_ON_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_IMAGE_ANIMATOR_ON_START);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_IMAGE_ANIMATOR_EVENT_ON_START));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_IMAGE_ANIMATOR_ON_CANCEL);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_IMAGE_ANIMATOR_EVENT_ON_CANCEL));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_IMAGE_ANIMATOR_ON_PAUSE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_IMAGE_ANIMATOR_EVENT_ON_PAUSE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_IMAGE_ANIMATOR_ON_REPEAT);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_IMAGE_ANIMATOR_EVENT_ON_REPEAT));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_IMAGE_ANIMATOR_ON_FINISH);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_IMAGE_ANIMATOR_EVENT_ON_FINISH));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_GRID_SCROLL_FRAME_BEGIN);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_SCROLL_FRAME_BEGIN));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_GRID_SCROLL_TO_INDEX);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_GRID_ON_SCROLL_INDEX));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_GRID_START);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_SCROLL_START));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_GRID_STOP);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SCROLL_EVENT_ON_SCROLL_STOP));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_GRID_WILL_SCROLL);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_GRID_ON_WILL_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_GRID_DID_SCROLL);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_GRID_ON_DID_SCROLL));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_GRID_SCROLL_BAR_UPDATE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_GRID_ON_SCROLL_BAR_UPDATE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ArkUIEventSubKind::ON_KEY_EVENT);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_ON_KEY_EVENT));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ArkUIEventSubKind::ON_KEY_PREIME);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_ON_KEY_PRE_IME));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ArkUIEventSubKind::ON_KEY_DISPATCH);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_DISPATCH_KEY_EVENT));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ArkUIEventSubKind::ON_CLICK_EVENT);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_ON_CLICK_EVENT));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ArkUIEventSubKind::ON_HOVER_EVENT);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_ON_HOVER_EVENT));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ArkUIEventSubKind::ON_SWIPER_SELECTED);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SWIPER_EVENT_ON_SELECTED));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ArkUIEventSubKind::ON_SWIPER_UNSELECTED);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_SWIPER_EVENT_ON_UNSELECTED));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ArkUIEventSubKind::ON_FOCUS_AXIS);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_ON_FOCUS_AXIS));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ArkUIEventSubKind::ON_CHECKBOX_GROUP_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_CHECKBOX_GROUP_EVENT_ON_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ArkUIEventSubKind::ON_AXIS);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_ON_AXIS));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_GRID_ITEM_DRAG_START);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_GRID_ON_ITEM_DRAG_START));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_GRID_ITEM_DRAG_ENTER);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_GRID_ON_ITEM_DRAG_ENTER));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_GRID_ITEM_DRAG_MOVE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_GRID_ON_ITEM_DRAG_MOVE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_GRID_ITEM_DRAG_LEAVE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_GRID_ON_ITEM_DRAG_LEAVE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_GRID_ITEM_DROP);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_GRID_ON_ITEM_DROP));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_GRID_ITEM_SELECT);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_GRID_ITEM_ON_SELECT));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_CONTAINER_PICKER_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_PICKER_EVENT_ON_CHANGE));
    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_CONTAINER_PICKER_SCROLL_STOP);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_PICKER_EVENT_ON_SCROLL_STOP));

    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_RICH_EDITOR_ON_SELECTION_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_TEXT_EDITOR_ON_SELECTION_CHANGE));
}

/**
 * @tc.name: NativeNodeTest008
 * @tc.desc: Test textNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest008, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_TEXT, nullptr, true});
    uint32_t color = 0XFFFF0000;
    float size = 10.0f;
    ArkUI_NumberValue value[] = {{.u32 = color}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue shadow[] = {{.f32 = size}, {.i32 = ARKUI_SHADOW_TYPE_COLOR}, {.u32 = color}, {.f32 = size},
        {.f32 = size}};
    ArkUI_AttributeItem shadowItem = {shadow, sizeof(shadow) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue fontValue[] = {{.f32 = size}, {.i32 = ARKUI_FONT_WEIGHT_NORMAL},
        {.i32 = ARKUI_FONT_STYLE_NORMAL}};
    ArkUI_AttributeItem fontItem = {fontValue, sizeof(fontValue) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue decoration[] = {{.i32 = ARKUI_TEXT_DECORATION_TYPE_UNDERLINE}, {.u32 = color},
        {.i32 = ARKUI_TEXT_DECORATION_STYLE_SOLID}};
    ArkUI_AttributeItem decorationItem = {decoration, sizeof(decoration) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_FONT_COLOR, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_SELECTED_BACKGROUND_COLOR, &item);
    value[0].f32 = size;
    nodeAPI->setAttribute(rootNode, NODE_FONT_SIZE, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_BASELINE_OFFSET, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_MIN_FONT_SIZE, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_MAX_FONT_SIZE, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_FONT, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_LINE_HEIGHT, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_LETTER_SPACING, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INDENT, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_LINE_SPACING, &item);

    value[0].i32 = ARKUI_FONT_WEIGHT_W100;
    nodeAPI->setAttribute(rootNode, NODE_FONT_WEIGHT, &item);
    value[0].i32 = ARKUI_FONT_STYLE_NORMAL;
    nodeAPI->setAttribute(rootNode, NODE_FONT_STYLE, &item);
    value[0].i32 = ARKUI_TEXT_HEIGHT_ADAPTIVE_POLICY_MAX_LINES_FIRST;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_HEIGHT_ADAPTIVE_POLICY, &item);
    value[0].i32 = ARKUI_COPY_OPTIONS_NONE;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_COPY_OPTION, &item);
    value[0].i32 = ARKUI_TEXT_DECORATION_TYPE_NONE;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_DECORATION, &item);
    value[0].i32 = ARKUI_TEXT_CASE_NORMAL;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_CASE, &item);
    value[0].i32 = 1;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_MAX_LINES, &item);
    value[0].i32 = ARKUI_TEXT_ALIGNMENT_START;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_ALIGN, &item);
    value[0].i32 = ARKUI_TEXT_OVERFLOW_NONE;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_OVERFLOW, &item);
    value[0].i32 = ARKUI_WORD_BREAK_NORMAL;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_WORD_BREAK, &item);
    value[0].i32 = ARKUI_ELLIPSIS_MODE_START;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_ELLIPSIS_MODE, &item);
    value[0].i32 = ARKUI_TEXT_DATA_DETECTOR_TYPE_URL;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_ENABLE_DATA_DETECTOR_CONFIG, &item);

    value[0].i32 = false;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_ENABLE_DATA_DETECTOR, &item);

    item.string = "test";
    nodeAPI->setAttribute(rootNode, NODE_TEXT_FONT_FEATURE, &item);

    nodeAPI->setAttribute(rootNode, NODE_TEXT_TEXT_SHADOW, &shadowItem);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_FONT, &fontItem);
    fontItem.string = "test";
    nodeAPI->setAttribute(rootNode, NODE_TEXT_FONT, &fontItem);
    nodeAPI->setAttribute(rootNode, NODE_FONT_FAMILY, &fontItem);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_CONTENT, &fontItem);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_DECORATION, &decorationItem);
    value[0].i32 = true;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_HALF_LEADING, &item);
    decoration[2].i32 = -1;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_DECORATION, &decorationItem), ARKUI_ERROR_CODE_PARAM_INVALID);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_CONTENT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FONT_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FONT_SIZE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FONT_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FONT_WEIGHT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_LINE_HEIGHT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_DECORATION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_CASE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_LETTER_SPACING), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_MAX_LINES), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_ALIGN), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_OVERFLOW), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FONT_FAMILY), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_COPY_OPTION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_BASELINE_OFFSET), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_TEXT_SHADOW), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_MIN_FONT_SIZE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_MAX_FONT_SIZE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_FONT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_HEIGHT_ADAPTIVE_POLICY), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INDENT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_WORD_BREAK), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_ELLIPSIS_MODE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_LINE_SPACING), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_FONT_FEATURE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_ENABLE_DATA_DETECTOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_ENABLE_DATA_DETECTOR_CONFIG), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_SELECTED_BACKGROUND_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_CONTENT_WITH_STYLED_STRING), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_HALF_LEADING), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_CONTENT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FONT_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FONT_SIZE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FONT_STYLE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FONT_WEIGHT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_LINE_HEIGHT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_DECORATION), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_CASE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_LETTER_SPACING), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_MAX_LINES), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_ALIGN), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_OVERFLOW), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FONT_FAMILY), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_COPY_OPTION), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_BASELINE_OFFSET), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_TEXT_SHADOW), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_MIN_FONT_SIZE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_MAX_FONT_SIZE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_FONT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_HEIGHT_ADAPTIVE_POLICY), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INDENT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_WORD_BREAK), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_ELLIPSIS_MODE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_LINE_SPACING), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_FONT_FEATURE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_ENABLE_DATA_DETECTOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_ENABLE_DATA_DETECTOR_CONFIG), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_SELECTED_BACKGROUND_COLOR), nullptr);
    EXPECT_EQ(nodeAPI->getAttribute(rootNode, NODE_TEXT_CONTENT_WITH_STYLED_STRING), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_HALF_LEADING), nullptr);

    value[0].i32 = ARKUI_FONT_WEIGHT_W100;
    nodeAPI->setAttribute(rootNode, NODE_IMMUTABLE_FONT_WEIGHT, &item);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMMUTABLE_FONT_WEIGHT), nullptr);
    nodeAPI->resetAttribute(rootNode, NODE_IMMUTABLE_FONT_WEIGHT);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMMUTABLE_FONT_WEIGHT), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest009
 * @tc.desc: Test spanNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest009, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_SPAN);
    ASSERT_NE(rootNode, nullptr);
    uint32_t color = 0XFFFF0000;
    float size = 10.0f;
    ArkUI_NumberValue value[] = {{.u32 = color}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue shadow[] = {{.f32 = size}, {.i32 = ARKUI_SHADOW_TYPE_COLOR}, {.u32 = color}, {.f32 = size},
        {.f32 = size}};
    ArkUI_AttributeItem shadowItem = {shadow, sizeof(shadow) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue backgroundStyle[] = {{.u32 = color}, {.f32 = size}, {.f32 = size}, {.f32 = size},
        {.f32 = size}};
    ArkUI_AttributeItem backgroundStyleItem = {backgroundStyle, sizeof(backgroundStyle) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_FONT_COLOR, &item);
    value[0].f32 = size;
    nodeAPI->setAttribute(rootNode, NODE_FONT_SIZE, &item);
    nodeAPI->setAttribute(rootNode, NODE_SPAN_BASELINE_OFFSET, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_LINE_HEIGHT, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_LETTER_SPACING, &item);

    value[0].i32 = ARKUI_FONT_WEIGHT_W100;
    nodeAPI->setAttribute(rootNode, NODE_FONT_WEIGHT, &item);
    value[0].i32 = ARKUI_FONT_STYLE_NORMAL;
    nodeAPI->setAttribute(rootNode, NODE_FONT_STYLE, &item);
    value[0].i32 = ARKUI_TEXT_DECORATION_TYPE_NONE;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_DECORATION, &item);
    value[0].i32 = ARKUI_TEXT_CASE_NORMAL;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_CASE, &item);
    item.string = "test";
    nodeAPI->setAttribute(rootNode, NODE_FONT_FAMILY, &item);
    nodeAPI->setAttribute(rootNode, NODE_SPAN_CONTENT, &item);

    nodeAPI->setAttribute(rootNode, NODE_TEXT_TEXT_SHADOW, &shadowItem);
    nodeAPI->setAttribute(rootNode, NODE_SPAN_TEXT_BACKGROUND_STYLE, &backgroundStyleItem);
    backgroundStyle[2].f32 = -1.0f;
    nodeAPI->setAttribute(rootNode, NODE_SPAN_TEXT_BACKGROUND_STYLE, &backgroundStyleItem);
    backgroundStyleItem.size = 2;
    nodeAPI->setAttribute(rootNode, NODE_SPAN_TEXT_BACKGROUND_STYLE, &backgroundStyleItem);
    backgroundStyle[1].f32 = -1.0f;
    nodeAPI->setAttribute(rootNode, NODE_SPAN_TEXT_BACKGROUND_STYLE, &backgroundStyleItem);


    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SPAN_CONTENT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SPAN_TEXT_BACKGROUND_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SPAN_BASELINE_OFFSET), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FONT_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_DECORATION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FONT_SIZE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FONT_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FONT_WEIGHT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_LINE_HEIGHT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_CASE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_LETTER_SPACING), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FONT_FAMILY), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_TEXT_SHADOW), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WIDTH, nullptr), ARKUI_ERROR_CODE_ATTRIBUTE_OR_EVENT_NOT_SUPPORTED);
    EXPECT_EQ(nodeAPI->getAttribute(rootNode, NODE_WIDTH), nullptr);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_WIDTH), ARKUI_ERROR_CODE_ATTRIBUTE_OR_EVENT_NOT_SUPPORTED);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SPAN_CONTENT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SPAN_TEXT_BACKGROUND_STYLE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SPAN_BASELINE_OFFSET), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FONT_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_DECORATION), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FONT_SIZE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FONT_STYLE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FONT_WEIGHT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_LINE_HEIGHT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_CASE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_LETTER_SPACING), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FONT_FAMILY), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_TEXT_SHADOW), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest010
 * @tc.desc: Test imageSpanNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest010, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_IMAGE_SPAN, nullptr, true});
    ArkUI_NumberValue value[] = {{.i32 = ARKUI_IMAGE_SPAN_ALIGNMENT_BASELINE}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_IMAGE_SPAN_VERTICAL_ALIGNMENT, &item);
    item.string = "test";
    nodeAPI->setAttribute(rootNode, NODE_IMAGE_SPAN_SRC, &item);
    value[0].f32 = 10.0f;
    nodeAPI->setAttribute(rootNode, NODE_IMAGE_SPAN_BASELINE_OFFSET, &item);
    ArkUI_NumberValue value20[] = { { .f32 = 0.239f }, { .f32 = 0.0f }, { .f32 = 0.0f }, { .f32 = 0.0f },
        { .f32 = 0.0f }, { .f32 = 0.0f }, { .f32 = 1.0f }, { .f32 = 0.0f }, { .f32 = 0.0f }, { .f32 = 0.0f },
        { .f32 = 0.0f }, { .f32 = 0.0f }, { .f32 = 1.0f }, { .f32 = 0.0f }, { .f32 = 0.0f }, { .f32 = 0.0f },
        { .f32 = 0.0f }, { .f32 = 0.0f }, { .f32 = 1.0f }, { .f32 = 0.0f } };

    ArkUI_AttributeItem item20 = { value20, sizeof(value20) / sizeof(ArkUI_NumberValue) };
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_SPAN_COLOR_FILTER, &item20), ARKUI_ERROR_CODE_NO_ERROR);
    ArkUI_NumberValue svg[] = { { .i32 = 1 } };
    ArkUI_AttributeItem svg2 = { svg, sizeof(svg) / sizeof(ArkUI_NumberValue) };
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_SPAN_SUPPORT_SVG2, &svg2), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_SPAN_COLOR_FILTER), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_SPAN_SUPPORT_SVG2), nullptr);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_SPAN_COLOR_FILTER), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_SPAN_SUPPORT_SVG2), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_SPAN_SRC), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_SPAN_VERTICAL_ALIGNMENT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_SPAN_ALT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_SPAN_BASELINE_OFFSET), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_SPAN_SRC), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_SPAN_VERTICAL_ALIGNMENT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_SPAN_ALT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_SPAN_BASELINE_OFFSET), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest011
 * @tc.desc: Test imageNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest011, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_IMAGE, nullptr, true});
    
    float border = 10.0f;
    ArkUI_NumberValue value[] = {{.f32 = border}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue value20[] = {{.f32 = 1.0f}, {.f32 = 0.0f}, {.f32 = 0.0f}, {.f32 = 0.0f}, {.f32 = 0.0f},
        {.f32 = 0.0f}, {.f32 = 1.0f}, {.f32 = 0.0f}, {.f32 = 0.0f}, {.f32 = 0.0f},
        {.f32 = 0.0f}, {.f32 = 0.0f}, {.f32 = 1.0f}, {.f32 = 0.0f}, {.f32 = 0.0f},
        {.f32 = 0.0f}, {.f32 = 0.0f}, {.f32 = 0.0f}, {.f32 = 1.0f}, {.f32 = 0.0f}};
      
    ArkUI_AttributeItem item20 = {value20, sizeof(value20) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_BORDER_RADIUS, &item);
    nodeAPI->setAttribute(rootNode, NODE_BORDER_RADIUS_PERCENT, &item);
    value[0].i32 = ARKUI_OBJECT_FIT_CONTAIN;
    nodeAPI->setAttribute(rootNode, NODE_IMAGE_OBJECT_FIT, &item);
    value[0].i32 = ARKUI_IMAGE_INTERPOLATION_NONE;
    nodeAPI->setAttribute(rootNode, NODE_IMAGE_INTERPOLATION, &item);
    value[0].i32 = ARKUI_IMAGE_REPEAT_X;
    nodeAPI->setAttribute(rootNode, NODE_IMAGE_OBJECT_REPEAT, &item);
    value[0].i32 = ARKUI_IMAGE_RENDER_MODE_ORIGINAL;
    nodeAPI->setAttribute(rootNode, NODE_IMAGE_RENDER_MODE, &item);
    value[0].i32 = 1;
    nodeAPI->setAttribute(rootNode, NODE_IMAGE_FIT_ORIGINAL_SIZE, &item);

    value[0].i32 = true;
    nodeAPI->setAttribute(rootNode, NODE_IMAGE_AUTO_RESIZE, &item);
    nodeAPI->setAttribute(rootNode, NODE_IMAGE_RESIZABLE, &item);
    nodeAPI->setAttribute(rootNode, NODE_IMAGE_DRAGGABLE, &item);
    nodeAPI->setAttribute(rootNode, NODE_IMAGE_SYNC_LOAD, &item);

    value[0].u32 = 0xFFFF0000;
    nodeAPI->setAttribute(rootNode, NODE_IMAGE_FILL_COLOR, &item);

    item.string = "test";
    nodeAPI->setAttribute(rootNode, NODE_IMAGE_SRC, &item);
    nodeAPI->setAttribute(rootNode, NODE_IMAGE_ALT, &item);

    nodeAPI->setAttribute(rootNode, NODE_IMAGE_COLOR_FILTER, &item20);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_SRC), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_OBJECT_FIT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_INTERPOLATION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_OBJECT_REPEAT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_COLOR_FILTER), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_AUTO_RESIZE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_ALT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_DRAGGABLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_SYNC_LOAD), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_RENDER_MODE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_FIT_ORIGINAL_SIZE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_FILL_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_RESIZABLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BORDER_RADIUS), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BORDER_RADIUS_PERCENT), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_SRC), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_OBJECT_FIT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_INTERPOLATION), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_OBJECT_REPEAT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_COLOR_FILTER), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_AUTO_RESIZE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_ALT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_DRAGGABLE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_SYNC_LOAD), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_RENDER_MODE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_FILL_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_RESIZABLE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_FIT_ORIGINAL_SIZE), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest012
 * @tc.desc: Test toggleNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest012, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_TOGGLE);
    ASSERT_NE(rootNode, nullptr);
    uint32_t color = 0XFFFF0000;
    ArkUI_NumberValue value[] = {{.u32 = color}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_TOGGLE_SELECTED_COLOR, &item);
    nodeAPI->setAttribute(rootNode, NODE_TOGGLE_SWITCH_POINT_COLOR, &item);
    nodeAPI->setAttribute(rootNode, NODE_TOGGLE_VALUE, &item);
    nodeAPI->setAttribute(rootNode, NODE_TOGGLE_UNSELECTED_COLOR, &item);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TOGGLE_SELECTED_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TOGGLE_SWITCH_POINT_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TOGGLE_VALUE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TOGGLE_UNSELECTED_COLOR), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TOGGLE_SELECTED_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TOGGLE_SWITCH_POINT_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TOGGLE_VALUE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TOGGLE_UNSELECTED_COLOR), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest013
 * @tc.desc: Test loadingProgressNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest013, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_LOADING_PROGRESS, nullptr, true});
    ASSERT_NE(rootNode, nullptr);
    uint32_t color = 0XFFFF0000;
    ArkUI_NumberValue value[] = {{.u32 = color}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_LOADING_PROGRESS_COLOR, &item);
    value[0].i32 = true;
    nodeAPI->setAttribute(rootNode, NODE_LOADING_PROGRESS_ENABLE_LOADING, &item);
    value[0].i32 = -1;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LOADING_PROGRESS_ENABLE_LOADING, &item),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_LOADING_PROGRESS_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_LOADING_PROGRESS_ENABLE_LOADING), ARKUI_ERROR_CODE_NO_ERROR);
    
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_LOADING_PROGRESS_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_LOADING_PROGRESS_ENABLE_LOADING), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest014
 * @tc.desc: Test textinputNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest014, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_TEXT_INPUT, nullptr, true});
    uint32_t color = 0XFFFF0000;
    float padding = 10.0f;
    ArkUI_NumberValue value[] = {{.u32 = color}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue value4[] = {{.u32 = color}, {.u32 = color}, {.u32 = color}, {.u32 = color}};
    ArkUI_AttributeItem item4 = {value4, sizeof(value4) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue fontValue[] = {{.f32 = padding}, {.i32 = ARKUI_FONT_STYLE_NORMAL},
        {.i32 = ARKUI_FONT_WEIGHT_W100}};
    ArkUI_AttributeItem fontItem = {fontValue, sizeof(fontValue) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue cancelBtn[] = {{.i32 = ARKUI_CANCELBUTTON_STYLE_CONSTANT}, {.f32 = padding}, {.u32 = color}};
    ArkUI_AttributeItem cancelBtnItem = {cancelBtn, sizeof(cancelBtn) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue selection[] = {{.i32 = 0}, {.i32 = 1}};
    ArkUI_AttributeItem selectionItem = {selection, sizeof(selection) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_COLOR, &item);
    nodeAPI->setAttribute(rootNode, NODE_BORDER_COLOR, &item);
    nodeAPI->setAttribute(rootNode, NODE_FONT_COLOR, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_CARET_COLOR, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_PLACEHOLDER_COLOR, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_SELECTED_BACKGROUND_COLOR, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_UNDERLINE_COLOR, &item4);
    value[0].f32 = padding;
    nodeAPI->setAttribute(rootNode, NODE_PADDING, &item);
    nodeAPI->setAttribute(rootNode, NODE_MARGIN, &item);
    nodeAPI->setAttribute(rootNode, NODE_BORDER_WIDTH, &item);
    nodeAPI->setAttribute(rootNode, NODE_BORDER_RADIUS, &item);
    nodeAPI->setAttribute(rootNode, NODE_BORDER_WIDTH_PERCENT, &item);
    nodeAPI->setAttribute(rootNode, NODE_BORDER_RADIUS_PERCENT, &item);
    nodeAPI->setAttribute(rootNode, NODE_MARGIN_PERCENT, &item);
    nodeAPI->setAttribute(rootNode, NODE_FONT_SIZE, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_CARET_STYLE, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_MIN_FONT_SIZE, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_MAX_FONT_SIZE, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_LINE_HEIGHT, &item);
    value[0].i32 = ARKUI_BORDER_STYLE_SOLID;
    nodeAPI->setAttribute(rootNode, NODE_BORDER_STYLE, &item);
    value[0].i32 = ARKUI_FONT_WEIGHT_W100;
    nodeAPI->setAttribute(rootNode, NODE_FONT_WEIGHT, &item);
    value[0].i32 = ARKUI_FONT_STYLE_NORMAL;
    nodeAPI->setAttribute(rootNode, NODE_FONT_STYLE, &item);
    value[0].i32 = true;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_SHOW_UNDERLINE, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_MAX_LENGTH, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_ENABLE_KEYBOARD_ON_FOCUS, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_SHOW_PASSWORD_ICON, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_EDITING, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_SELECTION_MENU_HIDDEN, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_ENABLE_AUTO_FILL, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_SELECT_ALL, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_CARET_OFFSET, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_NUMBER_OF_LINES, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_BLUR_ON_SUBMIT, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_SHOW_KEYBOARD_ON_FOCUS, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_MAX_LINES, &item);
    value[0].i32 = false;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_EDITING, &item);
    value[0].i32 = ARKUI_ENTER_KEY_TYPE_GO;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_ENTER_KEY_TYPE, &item);
    value[0].i32 = ARKUI_TEXTINPUT_TYPE_NORMAL;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_TYPE, &item);
    value[0].i32 = ARKUI_TEXTINPUT_CONTENT_TYPE_USER_NAME;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_CONTENT_TYPE, &item);
    value[0].i32 = ARKUI_TEXTINPUT_CONTENT_TYPE_FORMAT_ADDRESS;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_CONTENT_TYPE, &item);
    value[0].i32 = ARKUI_TEXTINPUT_STYLE_DEFAULT;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_STYLE, &item);
    value[0].i32 = ARKUI_WORD_BREAK_NORMAL;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_WORD_BREAK, &item);
    value[0].i32 = ARKUI_TEXT_ALIGNMENT_START;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_ALIGN, &item);
    item.string = "test";
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_PLACEHOLDER, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_TEXT, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_PASSWORD_RULES, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_INPUT_FILTER, &item);
    nodeAPI->setAttribute(rootNode, NODE_FONT_FAMILY, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_FONT_FEATURE, &item);
    item.object = rootNode;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_CUSTOM_KEYBOARD, &item);

    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_PLACEHOLDER_FONT, &fontItem);
    cancelBtnItem.size = 1;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_CANCEL_BUTTON, &cancelBtnItem);
    cancelBtnItem.size = 2;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_CANCEL_BUTTON, &cancelBtnItem);
    cancelBtnItem.size = sizeof(cancelBtn) / sizeof(ArkUI_NumberValue);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_CANCEL_BUTTON, &cancelBtnItem);
    cancelBtnItem.string = "test";
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_CANCEL_BUTTON, &cancelBtnItem);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_TEXT_SELECTION, &selectionItem);
    selection[0].i32 = 2;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_TEXT_SELECTION, &selectionItem),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    value[0].f32 = 50;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_LETTER_SPACING, &item);
    value[0].i32 = false;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_ENABLE_PREVIEW_TEXT, &item);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_PLACEHOLDER), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_TEXT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_CARET_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_CARET_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_SHOW_UNDERLINE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_MAX_LENGTH), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_ENTER_KEY_TYPE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_PLACEHOLDER_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_PLACEHOLDER_FONT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_ENABLE_KEYBOARD_ON_FOCUS), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_TYPE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_SELECTED_BACKGROUND_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_SHOW_PASSWORD_ICON), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_CANCEL_BUTTON), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_TEXT_SELECTION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_UNDERLINE_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_ENABLE_AUTO_FILL), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_CONTENT_TYPE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_PASSWORD_RULES), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_SELECT_ALL), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_INPUT_FILTER), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_CARET_OFFSET), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_SELECTION_MENU_HIDDEN), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_BLUR_ON_SUBMIT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_CUSTOM_KEYBOARD), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_WORD_BREAK), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_SHOW_KEYBOARD_ON_FOCUS), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_NUMBER_OF_LINES), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BACKGROUND_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_PADDING), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_MARGIN), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BORDER_WIDTH), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BORDER_RADIUS), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BORDER_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BORDER_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FONT_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FONT_SIZE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FONT_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FONT_WEIGHT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FONT_FAMILY), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_MIN_FONT_SIZE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_MAX_FONT_SIZE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_LINE_HEIGHT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_MAX_LINES), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_ALIGN), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_FONT_FEATURE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_LETTER_SPACING), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_INPUT_ENABLE_PREVIEW_TEXT), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_PLACEHOLDER), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_TEXT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_CARET_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_CARET_STYLE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_SHOW_UNDERLINE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_MAX_LENGTH), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_ENTER_KEY_TYPE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_PLACEHOLDER_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_PLACEHOLDER_FONT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_ENABLE_KEYBOARD_ON_FOCUS), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_TYPE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_SELECTED_BACKGROUND_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_SHOW_PASSWORD_ICON), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_EDITING), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_CANCEL_BUTTON), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_TEXT_SELECTION), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_UNDERLINE_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_ENABLE_AUTO_FILL), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_CONTENT_TYPE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_PASSWORD_RULES), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_SELECT_ALL), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_INPUT_FILTER), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_STYLE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_CARET_OFFSET), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_CONTENT_RECT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_CONTENT_LINE_COUNT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_SELECTION_MENU_HIDDEN), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_BLUR_ON_SUBMIT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_CUSTOM_KEYBOARD), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_WORD_BREAK), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_SHOW_KEYBOARD_ON_FOCUS), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_NUMBER_OF_LINES), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_BACKGROUND_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_PADDING), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_MARGIN), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_BORDER_WIDTH), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_BORDER_RADIUS), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_BORDER_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_BORDER_STYLE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FONT_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FONT_SIZE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FONT_STYLE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FONT_WEIGHT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FONT_FAMILY), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_MIN_FONT_SIZE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_MAX_FONT_SIZE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_LINE_HEIGHT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_MAX_LINES), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_ALIGN), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_FONT_FEATURE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_LETTER_SPACING), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_INPUT_ENABLE_PREVIEW_TEXT), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest015
 * @tc.desc: Test textareaNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest015, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_TEXT_AREA, nullptr, true});
    uint32_t color = 0XFFFF0000;
    float padding = 10.0f;
    ArkUI_NumberValue value[] = {{.u32 = color}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue fontValue[] = {{.f32 = padding}, {.i32 = ARKUI_FONT_STYLE_NORMAL},
        {.i32 = ARKUI_FONT_WEIGHT_W100}};
    ArkUI_AttributeItem fontItem = {fontValue, sizeof(fontValue) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue showCounter[] = {{.i32 = true}, {.f32 = 50}, {.i32 = true}};
    ArkUI_AttributeItem showCounterItem = {fontValue, sizeof(showCounter) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_COLOR, &item);
    nodeAPI->setAttribute(rootNode, NODE_BORDER_COLOR, &item);
    nodeAPI->setAttribute(rootNode, NODE_FONT_COLOR, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_AREA_CARET_COLOR, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_AREA_PLACEHOLDER_COLOR, &item);
    value[0].f32 = padding;
    nodeAPI->setAttribute(rootNode, NODE_PADDING, &item);
    nodeAPI->setAttribute(rootNode, NODE_MARGIN, &item);
    nodeAPI->setAttribute(rootNode, NODE_BORDER_WIDTH, &item);
    nodeAPI->setAttribute(rootNode, NODE_BORDER_RADIUS, &item);
    nodeAPI->setAttribute(rootNode, NODE_BORDER_WIDTH_PERCENT, &item);
    nodeAPI->setAttribute(rootNode, NODE_BORDER_RADIUS_PERCENT, &item);
    nodeAPI->setAttribute(rootNode, NODE_MARGIN_PERCENT, &item);
    nodeAPI->setAttribute(rootNode, NODE_FONT_SIZE, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_MIN_FONT_SIZE, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_MAX_FONT_SIZE, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_LINE_HEIGHT, &item);
    value[0].i32 = ARKUI_BORDER_STYLE_SOLID;
    nodeAPI->setAttribute(rootNode, NODE_BORDER_STYLE, &item);
    value[0].i32 = ARKUI_FONT_WEIGHT_W100;
    nodeAPI->setAttribute(rootNode, NODE_FONT_WEIGHT, &item);
    value[0].i32 = ARKUI_FONT_STYLE_NORMAL;
    nodeAPI->setAttribute(rootNode, NODE_FONT_STYLE, &item);
    value[0].i32 = ARKUI_TEXTAREA_TYPE_NORMAL;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_AREA_TYPE, &item);
    value[0].i32 = ARKUI_TEXT_ALIGNMENT_START;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_ALIGN, &item);
    value[0].i32 = true;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_AREA_MAX_LENGTH, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_AREA_EDITING, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_AREA_SELECTION_MENU_HIDDEN, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_MAX_LINES, &item);
    value[0].i32 = false;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_AREA_EDITING, &item);

    item.string = "test";
    nodeAPI->setAttribute(rootNode, NODE_TEXT_AREA_PLACEHOLDER, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_AREA_TEXT, &item);
    nodeAPI->setAttribute(rootNode, NODE_FONT_FAMILY, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_FONT_FEATURE, &item);

    nodeAPI->setAttribute(rootNode, NODE_TEXT_AREA_PLACEHOLDER_FONT, &fontItem);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_AREA_SHOW_COUNTER, &showCounterItem);
    value[0].f32 = 50;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_AREA_LETTER_SPACING, &item);
    value[0].i32 = false;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_AREA_ENABLE_PREVIEW_TEXT, &item);
    item.object = rootNode;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_AREA_CUSTOM_KEYBOARD, &item);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_AREA_PLACEHOLDER), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_AREA_TEXT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_AREA_MAX_LENGTH), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_AREA_PLACEHOLDER_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_AREA_PLACEHOLDER_FONT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_AREA_CARET_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_AREA_TYPE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_AREA_SHOW_COUNTER), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_AREA_SELECTION_MENU_HIDDEN), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_AREA_BLUR_ON_SUBMIT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_AREA_INPUT_FILTER), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_AREA_SELECTED_BACKGROUND_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_AREA_ENTER_KEY_TYPE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_AREA_ENABLE_KEYBOARD_ON_FOCUS), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_AREA_CARET_OFFSET), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_AREA_TEXT_SELECTION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_AREA_ENABLE_AUTO_FILL), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_AREA_CONTENT_TYPE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_AREA_SHOW_KEYBOARD_ON_FOCUS), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_AREA_NUMBER_OF_LINES), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BACKGROUND_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_MARGIN), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BORDER_WIDTH), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BORDER_RADIUS), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BORDER_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BORDER_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FONT_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FONT_SIZE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FONT_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FONT_WEIGHT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FONT_FAMILY), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_MIN_FONT_SIZE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_MAX_FONT_SIZE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_LINE_HEIGHT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_MAX_LINES), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_ALIGN), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_FONT_FEATURE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_AREA_LETTER_SPACING), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_AREA_ENABLE_PREVIEW_TEXT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_AREA_CUSTOM_KEYBOARD), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_PLACEHOLDER), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_TEXT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_MAX_LENGTH), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_PLACEHOLDER_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_PLACEHOLDER_FONT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_CARET_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_EDITING), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_TYPE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_SHOW_COUNTER), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_SELECTION_MENU_HIDDEN), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_BLUR_ON_SUBMIT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_INPUT_FILTER), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_SELECTED_BACKGROUND_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_ENTER_KEY_TYPE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_ENABLE_KEYBOARD_ON_FOCUS), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_CARET_OFFSET), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_CONTENT_RECT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_CONTENT_LINE_COUNT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_TEXT_SELECTION), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_ENABLE_AUTO_FILL), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_CONTENT_TYPE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_SHOW_KEYBOARD_ON_FOCUS), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_NUMBER_OF_LINES), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_BACKGROUND_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_PADDING), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_MARGIN), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_BORDER_WIDTH), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_BORDER_RADIUS), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_BORDER_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_BORDER_STYLE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FONT_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FONT_SIZE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FONT_STYLE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FONT_WEIGHT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FONT_FAMILY), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_MIN_FONT_SIZE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_MAX_FONT_SIZE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_LINE_HEIGHT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_MAX_LINES), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_ALIGN), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_FONT_FEATURE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_LETTER_SPACING), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_ENABLE_PREVIEW_TEXT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_AREA_CUSTOM_KEYBOARD), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest016
 * @tc.desc: Test buttonNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest016, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_BUTTON, nullptr, true});
    ArkUI_NumberValue value[] = {{.f32 = 10.0f}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), "test", nullptr};
    nodeAPI->setAttribute(rootNode, NODE_BUTTON_LABEL, &item);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_BUTTON_LABEL), nullptr);
    nodeAPI->setAttribute(rootNode, NODE_FONT_SIZE, &item);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FONT_SIZE), nullptr);
    value[0].i32 = ARKUI_BUTTON_TYPE_NORMAL;
    nodeAPI->setAttribute(rootNode, NODE_BUTTON_TYPE, &item);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_BUTTON_TYPE), nullptr);
    value[0].i32 = ARKUI_FONT_WEIGHT_W100;
    nodeAPI->setAttribute(rootNode, NODE_FONT_WEIGHT, &item);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FONT_WEIGHT), nullptr);
    value[0].u32 = 0xFFFF0000;
    nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_COLOR, &item);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_BACKGROUND_COLOR), nullptr);
    nodeAPI->setAttribute(rootNode, NODE_FONT_COLOR, &item);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FONT_COLOR), nullptr);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BUTTON_LABEL), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BUTTON_TYPE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_BACKGROUND_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FONT_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FONT_SIZE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FONT_WEIGHT), ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest017
 * @tc.desc: Test progressNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest017, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_PROGRESS);
    ASSERT_NE(rootNode, nullptr);
    ArkUI_NumberValue value[] = {{.f32 = 10.0f}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_PROGRESS_VALUE, &item);
    nodeAPI->setAttribute(rootNode, NODE_PROGRESS_TOTAL, &item);
    nodeAPI->setAttribute(rootNode, NODE_PROGRESS_COLOR, &item);
    value[0].i32 = ARKUI_PROGRESS_TYPE_LINEAR;
    nodeAPI->setAttribute(rootNode, NODE_PROGRESS_TYPE, &item);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_PROGRESS_VALUE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_PROGRESS_TOTAL), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_PROGRESS_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_PROGRESS_TYPE), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_PROGRESS_VALUE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_PROGRESS_TOTAL), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_PROGRESS_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_PROGRESS_TYPE), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest018
 * @tc.desc: Test checkboxNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest018, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_CHECKBOX);
    ASSERT_NE(rootNode, nullptr);
    float size = 10.0f;
    uint32_t color = 0xFFFF0000;
    ArkUI_NumberValue value[] = {{.i32 = true}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue mark[] = {{.u32 = color}, {.f32 = size}, {.f32 = size}};
    ArkUI_AttributeItem markItem = {mark, sizeof(mark) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    nodeAPI->setAttribute(rootNode, NODE_CHECKBOX_SELECT, &item);
    value[0].u32 = color;
    nodeAPI->setAttribute(rootNode, NODE_CHECKBOX_SELECT_COLOR, &item);
    nodeAPI->setAttribute(rootNode, NODE_CHECKBOX_UNSELECT_COLOR, &item);
    nodeAPI->setAttribute(rootNode, NODE_CHECKBOX_MARK, &item);
    value[0].i32 = ArkUI_CHECKBOX_SHAPE_CIRCLE;
    nodeAPI->setAttribute(rootNode, NODE_CHECKBOX_SHAPE, &item);
    nodeAPI->setAttribute(rootNode, NODE_CHECKBOX_MARK, &markItem);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_CHECKBOX_SELECT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_CHECKBOX_SELECT_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_CHECKBOX_UNSELECT_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_CHECKBOX_MARK), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_CHECKBOX_SHAPE), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_CHECKBOX_SELECT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_CHECKBOX_SELECT_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_CHECKBOX_UNSELECT_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_CHECKBOX_MARK), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_CHECKBOX_SHAPE), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest019
 * @tc.desc: Test xcomponentNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest019, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_XCOMPONENT);
    ASSERT_NE(rootNode, nullptr);

    ArkUI_NumberValue value[] = {{.i32 = ARKUI_XCOMPONENT_TYPE_SURFACE}, {.f32 = 10.0f}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), "test"};
    nodeAPI->setAttribute(rootNode, NODE_XCOMPONENT_ID, &item);
    nodeAPI->setAttribute(rootNode, NODE_XCOMPONENT_TYPE, &item);
    value[0].i32 = ARKUI_XCOMPONENT_TYPE_TEXTURE;
    nodeAPI->setAttribute(rootNode, NODE_XCOMPONENT_TYPE, &item);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_XCOMPONENT_TYPE), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_XCOMPONENT_ID), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_XCOMPONENT_TYPE), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest020
 * @tc.desc: Test datePickerNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest020, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));

    auto rootNode = new ArkUI_Node({ARKUI_NODE_DATE_PICKER, nullptr, true});
    ArkUI_NumberValue value[] = {{.i32 = true}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_LUNAR, &item);
    item.string = "1970-1-1";
    nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_START, &item);
    nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_END, &item);
    nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_SELECTED, &item);
    item.string = "#ff182431;14;normal;Arial;normal";
    nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_DISAPPEAR_TEXT_STYLE, &item);
    nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_TEXT_STYLE, &item);
    nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_CAN_LOOP, &item);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_SELECTED_TEXT_STYLE, &item),
        ARKUI_ERROR_CODE_NO_ERROR);
    item.string = "#ff182431;14;normal;Arial;test";
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_SELECTED_TEXT_STYLE, &item),
        ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_DATE_PICKER_LUNAR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_DATE_PICKER_START), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_DATE_PICKER_END), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_DATE_PICKER_SELECTED), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_DATE_PICKER_DISAPPEAR_TEXT_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_DATE_PICKER_TEXT_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_DATE_PICKER_SELECTED_TEXT_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_DATE_PICKER_CAN_LOOP), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_DATE_PICKER_LUNAR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_DATE_PICKER_START), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_DATE_PICKER_END), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_DATE_PICKER_SELECTED), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_DATE_PICKER_DISAPPEAR_TEXT_STYLE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_DATE_PICKER_TEXT_STYLE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_DATE_PICKER_SELECTED_TEXT_STYLE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_DATE_PICKER_CAN_LOOP), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest021
 * @tc.desc: Test timePickerNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest021, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_TIME_PICKER, nullptr, true});
    ArkUI_NumberValue value[] = {{.i32 = true}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    item.string = "11-59";
    nodeAPI->setAttribute(rootNode, NODE_TIME_PICKER_SELECTED, &item);
    nodeAPI->setAttribute(rootNode, NODE_TIME_PICKER_USE_MILITARY_TIME, &item);
    item.string = "#ff182431;14;normal;Arial;normal";
    nodeAPI->setAttribute(rootNode, NODE_TIME_PICKER_DISAPPEAR_TEXT_STYLE, &item);
    nodeAPI->setAttribute(rootNode, NODE_TIME_PICKER_TEXT_STYLE, &item);
    nodeAPI->setAttribute(rootNode, NODE_TIME_PICKER_SELECTED_TEXT_STYLE, &item);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TIME_PICKER_SELECTED), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TIME_PICKER_USE_MILITARY_TIME), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TIME_PICKER_DISAPPEAR_TEXT_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TIME_PICKER_TEXT_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TIME_PICKER_SELECTED_TEXT_STYLE), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TIME_PICKER_SELECTED), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TIME_PICKER_USE_MILITARY_TIME), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TIME_PICKER_DISAPPEAR_TEXT_STYLE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TIME_PICKER_TEXT_STYLE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TIME_PICKER_SELECTED_TEXT_STYLE), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest022
 * @tc.desc: Test textPickerNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest022, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_TEXT_PICKER, nullptr, true});
    ArkUI_NumberValue value[] = {{.i32 = ARKUI_TEXTPICKER_RANGETYPE_SINGLE}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    item.string = "1;2;3";
    nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_OPTION_RANGE, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_OPTION_VALUE, &item);
    item.string = "#ff182431;14;normal;Arial;normal";
    nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_DISAPPEAR_TEXT_STYLE, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_TEXT_STYLE, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_SELECTED_TEXT_STYLE, &item);

    value[0].u32 = 0;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_OPTION_SELECTED, &item);
    value[0].i32 = 0;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_CAN_LOOP, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_SELECTED_INDEX, &item);

    value[0].f32 = 10.0f;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_DEFAULT_PICKER_ITEM_HEIGHT, &item);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_PICKER_OPTION_RANGE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_PICKER_OPTION_SELECTED), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_PICKER_OPTION_VALUE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_PICKER_DISAPPEAR_TEXT_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_PICKER_TEXT_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_PICKER_SELECTED_TEXT_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_PICKER_SELECTED_INDEX), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_PICKER_CAN_LOOP), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(
        rootNode, NODE_TEXT_PICKER_DEFAULT_PICKER_ITEM_HEIGHT), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_PICKER_OPTION_RANGE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_PICKER_OPTION_SELECTED), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_PICKER_OPTION_VALUE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_PICKER_DISAPPEAR_TEXT_STYLE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_PICKER_TEXT_STYLE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_PICKER_SELECTED_TEXT_STYLE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_PICKER_SELECTED_INDEX), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_PICKER_CAN_LOOP), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_PICKER_DEFAULT_PICKER_ITEM_HEIGHT), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest023
 * @tc.desc: Test calendarPickerNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest023, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_CALENDAR_PICKER, nullptr, true});
    float offset = 10.0f;
    ArkUI_NumberValue value[] = {{.f32 = offset}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    ArkUI_NumberValue value3[] = {{.u32 = 2024}, {.u32 = 1}, {.u32 = 1}};
    ArkUI_AttributeItem item3 = {value3, sizeof(value3) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    nodeAPI->setAttribute(rootNode, NODE_CALENDAR_PICKER_HINT_RADIUS, &item);
    nodeAPI->setAttribute(rootNode, NODE_CALENDAR_PICKER_SELECTED_DATE, &item3);

    value[0].i32 = ARKUI_CALENDAR_ALIGNMENT_START;
    nodeAPI->setAttribute(rootNode, NODE_CALENDAR_PICKER_EDGE_ALIGNMENT, &item);
    value3[0].i32 = ARKUI_CALENDAR_ALIGNMENT_START;
    value3[1].f32 = offset;
    value3[2].f32 = offset;
    nodeAPI->setAttribute(rootNode, NODE_CALENDAR_PICKER_EDGE_ALIGNMENT, &item3);
    value3[0].u32 = 0xFFFF0000;
    value3[1].f32 = offset;
    value3[2].i32 = ARKUI_FONT_WEIGHT_NORMAL;
    nodeAPI->setAttribute(rootNode, NODE_CALENDAR_PICKER_TEXT_STYLE, &item3);
    item3.size = -1;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CALENDAR_PICKER_TEXT_STYLE, &item3), ARKUI_ERROR_CODE_PARAM_INVALID);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_CALENDAR_PICKER_HINT_RADIUS), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_CALENDAR_PICKER_SELECTED_DATE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_CALENDAR_PICKER_EDGE_ALIGNMENT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_CALENDAR_PICKER_TEXT_STYLE), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_CALENDAR_PICKER_HINT_RADIUS), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_CALENDAR_PICKER_SELECTED_DATE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_CALENDAR_PICKER_EDGE_ALIGNMENT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_CALENDAR_PICKER_TEXT_STYLE), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest024
 * @tc.desc: Test sliderNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest024, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_SLIDER);
    ASSERT_NE(rootNode, nullptr);
    uint32_t color = 0xFFFF0000;
    float size = 10.0f;
    ArkUI_NumberValue value[] = {{.u32 = color}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    ArkUI_NumberValue blockStyle[] = {{.i32 = ARKUI_SLIDER_BLOCK_STYLE_IMAGE }, {.i32 = ARKUI_CLIP_TYPE_PATH},
        {.f32 = size}, {.f32 = size}, {.f32 = size}};
    ArkUI_AttributeItem blockStyleItem = {blockStyle, sizeof(blockStyle) / sizeof(ArkUI_NumberValue), "test", nullptr};
    nodeAPI->setAttribute(rootNode, NODE_SLIDER_BLOCK_COLOR, &item);
    nodeAPI->setAttribute(rootNode, NODE_SLIDER_TRACK_COLOR, &item);
    nodeAPI->setAttribute(rootNode, NODE_SLIDER_SELECTED_COLOR, &item);
    value[0].i32 = true;
    nodeAPI->setAttribute(rootNode, NODE_SLIDER_SHOW_STEPS, &item);
    nodeAPI->setAttribute(rootNode, NODE_SLIDER_REVERSE, &item);
    value[0].i32 = ARKUI_SLIDER_DIRECTION_VERTICAL;
    nodeAPI->setAttribute(rootNode, NODE_SLIDER_DIRECTION, &item);
    value[0].i32 = ARKUI_SLIDER_STYLE_OUT_SET;
    nodeAPI->setAttribute(rootNode, NODE_SLIDER_STYLE, &item);
    value[0].f32 = size;
    nodeAPI->setAttribute(rootNode, NODE_SLIDER_VALUE, &item);
    nodeAPI->setAttribute(rootNode, NODE_SLIDER_MIN_VALUE, &item);
    nodeAPI->setAttribute(rootNode, NODE_SLIDER_MAX_VALUE, &item);
    nodeAPI->setAttribute(rootNode, NODE_SLIDER_STEP, &item);
    nodeAPI->setAttribute(rootNode, NODE_SLIDER_TRACK_THICKNESS, &item);

    nodeAPI->setAttribute(rootNode, NODE_SLIDER_BLOCK_STYLE, &blockStyleItem);
    blockStyle[0].i32 = ARKUI_SLIDER_BLOCK_STYLE_SHAPE;
    nodeAPI->setAttribute(rootNode, NODE_SLIDER_BLOCK_STYLE, &blockStyleItem);
    blockStyle[1].i32 = ARKUI_CLIP_TYPE_RECTANGLE;
    nodeAPI->setAttribute(rootNode, NODE_SLIDER_BLOCK_STYLE, &blockStyleItem);
    blockStyle[0].i32 = ARKUI_SLIDER_BLOCK_STYLE_DEFAULT;
    nodeAPI->setAttribute(rootNode, NODE_SLIDER_BLOCK_STYLE, &blockStyleItem);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SLIDER_BLOCK_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SLIDER_TRACK_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SLIDER_SELECTED_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SLIDER_SHOW_STEPS), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SLIDER_BLOCK_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SLIDER_VALUE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SLIDER_MIN_VALUE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SLIDER_MAX_VALUE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SLIDER_STEP), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SLIDER_DIRECTION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SLIDER_REVERSE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SLIDER_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SLIDER_TRACK_THICKNESS), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SLIDER_BLOCK_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SLIDER_SHOW_STEPS), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SLIDER_BLOCK_STYLE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SLIDER_VALUE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SLIDER_MIN_VALUE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SLIDER_MAX_VALUE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SLIDER_STEP), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SLIDER_DIRECTION), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SLIDER_REVERSE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SLIDER_STYLE), nullptr);
    EXPECT_EQ(nodeAPI->getAttribute(rootNode, NODE_SLIDER_TRACK_THICKNESS), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest025
 * @tc.desc: Test radioNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest025, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_RADIO);
    ASSERT_NE(rootNode, nullptr);
    uint32_t color = 0xFFFF0000;
    ArkUI_NumberValue value[] = {{.i32 = true}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    ArkUI_NumberValue style[] = {{.u32 = color}, {.u32 = color}, {.u32 = color}};
    ArkUI_AttributeItem styleItem = {style, sizeof(style) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    nodeAPI->setAttribute(rootNode, NODE_RADIO_CHECKED, &item);
    item.string = "test";
    nodeAPI->setAttribute(rootNode, NODE_RADIO_VALUE, &item);
    nodeAPI->setAttribute(rootNode, NODE_RADIO_GROUP, &item);
    nodeAPI->setAttribute(rootNode, NODE_RADIO_STYLE, &styleItem);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_RADIO_CHECKED), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_RADIO_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_RADIO_VALUE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_RADIO_GROUP), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_RADIO_CHECKED), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_RADIO_STYLE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_RADIO_VALUE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_RADIO_GROUP), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest026
 * @tc.desc: Test scrollNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest026, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_SCROLL);
    ASSERT_NE(rootNode, nullptr);
    float distance = 10.0f;
    uint32_t color = 0xFFFF0000;
    ArkUI_NumberValue value[] = {{.f32 = distance}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue value2[] = {{.i32 = true}, {.i32 = true}};
    ArkUI_AttributeItem item2 = {value2, sizeof(value2) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue scrollsnap[] = {{.i32 = ARKUI_SCROLL_SNAP_ALIGN_NONE}, {.i32 = true}, {.i32 = true},
        {.f32 = distance}};
    ArkUI_AttributeItem scrollsnapItem = {scrollsnap, sizeof(scrollsnap) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue scrollnested[] = {{.i32 = ARKUI_SCROLL_NESTED_MODE_SELF_ONLY},
        {.i32 = ARKUI_SCROLL_NESTED_MODE_SELF_ONLY}};
    ArkUI_AttributeItem scrollnestedItem = {scrollnested, sizeof(scrollnested) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue scrolloffset[] = {{.f32 = distance}, {.f32 = distance}, { .i32 = 1000},
        {.i32 = ARKUI_CURVE_LINEAR}, {.i32 = true}};
    ArkUI_AttributeItem scrolloffsetItem = {scrolloffset, sizeof(scrolloffset) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_FRICTION, &item);
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_BAR_WIDTH, &item);

    value[0].u32 = color;
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_BAR_COLOR, &item);

    value[0].i32 = ARKUI_SCROLL_BAR_DISPLAY_MODE_AUTO;
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_BAR_DISPLAY_MODE, &item);
    value[0].i32 = ARKUI_SCROLL_DIRECTION_VERTICAL;
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_SCROLL_DIRECTION, &item);
    value[0].i32 = ARKUI_EDGE_EFFECT_NONE;
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_EDGE_EFFECT, &item);
    value[0].i32 = true;
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_ENABLE_SCROLL_INTERACTION, &item);
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_ENABLE_PAGING, &item);
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_PAGE, &item);
    value[0].i32 = ARKUI_SCROLL_EDGE_TOP;
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_EDGE, &item);

    nodeAPI->setAttribute(rootNode, NODE_SCROLL_SNAP, &scrollsnapItem);
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_NESTED_SCROLL, &scrollnestedItem);
    scrolloffsetItem.size = 2;
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_OFFSET, &scrolloffsetItem);
    scrolloffsetItem.size = sizeof(scrolloffset) / sizeof(ArkUI_NumberValue);
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_OFFSET, &scrolloffsetItem);
    scrolloffset[3].i32 = -1;
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_OFFSET, &scrolloffsetItem);

    nodeAPI->setAttribute(rootNode, NODE_SCROLL_PAGE, &item2);
    value2[1].i32 = -1;
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_PAGE, &item2);

    value2[0].f32 = distance;
    value2[1].f32 = distance;
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_BY, &item2);
    nodeAPI->setLengthMetricUnit(rootNode, ARKUI_LENGTH_METRIC_UNIT_PX);
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_BY, &item2);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_BAR_DISPLAY_MODE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_BAR_WIDTH), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_BAR_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_SCROLL_DIRECTION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_EDGE_EFFECT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_ENABLE_SCROLL_INTERACTION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_FRICTION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_SNAP), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_NESTED_SCROLL), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_OFFSET), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_EDGE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_ENABLE_PAGING), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_BAR_DISPLAY_MODE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_BAR_WIDTH), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_BAR_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_SCROLL_DIRECTION), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_EDGE_EFFECT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_ENABLE_SCROLL_INTERACTION), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_FRICTION), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_SNAP), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_NESTED_SCROLL), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_OFFSET), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_EDGE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_ENABLE_PAGING), nullptr);
    EXPECT_EQ(nodeAPI->getAttribute(rootNode, NODE_SCROLL_FLING_SPEED_LIMIT)->value->f32, 9000.0f);
    value[0].f32 = 100.0f;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_FLING_SPEED_LIMIT, &item), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->getAttribute(rootNode, NODE_SCROLL_FLING_SPEED_LIMIT)->value->f32, 100.0f);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_FLING_SPEED_LIMIT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->getAttribute(rootNode, NODE_SCROLL_FLING_SPEED_LIMIT)->value->f32, 9000.0f);

    EXPECT_EQ(nodeAPI->getAttribute(rootNode, NODE_SCROLL_CLIP_CONTENT)->value->i32,
                                    ArkUI_ContentClipMode::ARKUI_CONTENT_CLIP_MODE_BOUNDARY);

    ArkUI_NumberValue clipValue[] = {{.i32 = ArkUI_ContentClipMode::ARKUI_CONTENT_CLIP_MODE_SAFE_AREA}};
    ArkUI_AttributeItem clipItem = {clipValue, sizeof(clipValue) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_CLIP_CONTENT, &clipItem);
    EXPECT_EQ(nodeAPI->getAttribute(rootNode, NODE_SCROLL_CLIP_CONTENT)->value->i32,
                                    ArkUI_ContentClipMode::ARKUI_CONTENT_CLIP_MODE_SAFE_AREA);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_CLIP_CONTENT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->getAttribute(rootNode, NODE_SCROLL_CLIP_CONTENT)->value->i32,
                                    ArkUI_ContentClipMode::ARKUI_CONTENT_CLIP_MODE_BOUNDARY);

    value[0].i32 = ARKUI_SCROLL_DIRECTION_FREE;
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_SCROLL_DIRECTION, &item);
    EXPECT_EQ(nodeAPI->getAttribute(rootNode, NODE_SCROLL_SCROLL_DIRECTION)->value->i32,
                                    ARKUI_SCROLL_DIRECTION_FREE);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest027
 * @tc.desc: Test listNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest027, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_LIST, nullptr, true});
    auto childNode = new ArkUI_Node({ARKUI_NODE_LIST_ITEM, nullptr, true});
    auto groupNode = new ArkUI_Node({ARKUI_NODE_LIST_ITEM_GROUP, nullptr, true});

    float distance = 10.0f;
    uint32_t color = 0xFFFF0000;
    ArkUI_NumberValue value[] = {{.f32 = distance}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue value2[] = {{.f32 = distance}, {.f32 = distance}};
    ArkUI_AttributeItem item2 = {value2, sizeof(value2) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue scrollnested[] = {{.i32 = ARKUI_SCROLL_NESTED_MODE_SELF_ONLY},
        {.i32 = ARKUI_SCROLL_NESTED_MODE_SELF_ONLY}};
    ArkUI_AttributeItem scrollnestedItem = {scrollnested, sizeof(scrollnested) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue scrollToIndex[] = {{.i32 = 0}, {.i32 = 1}, {.i32 = ARKUI_SCROLL_ALIGNMENT_START}};
    ArkUI_AttributeItem scrollToIndexItem = {scrollToIndex, sizeof(scrollToIndex) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue divider[] = {{.u32 = color}, {.f32 = distance}, {.f32 = distance}, {.f32 = distance}};
    ArkUI_AttributeItem dividerItem = {divider, sizeof(divider) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_FRICTION, &item);
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_BAR_WIDTH, &item);
    value[0].u32 = color;
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_BAR_COLOR, &item);

    value[0].i32 = ARKUI_SCROLL_BAR_DISPLAY_MODE_AUTO;
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_BAR_DISPLAY_MODE, &item);
    value[0].i32 = ARKUI_EDGE_EFFECT_NONE;
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_EDGE_EFFECT, &item);
    value[0].i32 = true;
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_ENABLE_SCROLL_INTERACTION, &item);
    value[0].i32 = ARKUI_AXIS_VERTICAL;
    nodeAPI->setAttribute(rootNode, NODE_LIST_DIRECTION, &item);
    value[0].i32 = ARKUI_STICKY_STYLE_NONE;
    nodeAPI->setAttribute(rootNode, NODE_LIST_STICKY, &item);
    value[0].i32 = 1;
    nodeAPI->setAttribute(rootNode, NODE_LIST_SPACE, &item);
    nodeAPI->setAttribute(rootNode, NODE_LIST_CACHED_COUNT, &item);
    value[0].i32 = ARKUI_LIST_ITEM_ALIGNMENT_START;
    nodeAPI->setAttribute(rootNode, NODE_LIST_ALIGN_LIST_ITEM, &item);
    value[0].i32 = 0;
    nodeAPI->setAttribute(rootNode, NODE_LIST_SCROLL_TO_INDEX, &item);
    nodeAPI->setAttribute(rootNode, NODE_LIST_INITIAL_INDEX, &item);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_SYNC_LOAD, &item), ARKUI_ERROR_CODE_NO_ERROR);
    item.object = rootNode;
    nodeAPI->setAttribute(groupNode, NODE_LIST_ITEM_GROUP_SET_HEADER, &item);
    nodeAPI->setAttribute(groupNode, NODE_LIST_ITEM_GROUP_SET_FOOTER, &item);

    nodeAPI->setAttribute(rootNode, NODE_SCROLL_NESTED_SCROLL, &scrollnestedItem);

    nodeAPI->setAttribute(rootNode, NODE_LIST_SCROLL_TO_INDEX, &scrollToIndexItem);
    scrollToIndex[2].i32 = ARKUI_SCROLL_ALIGNMENT_NONE;
    nodeAPI->setAttribute(rootNode, NODE_LIST_SCROLL_TO_INDEX, &scrollToIndexItem);

    nodeAPI->setAttribute(rootNode, NODE_LIST_DIVIDER, &dividerItem);
    nodeAPI->setAttribute(groupNode, NODE_LIST_ITEM_GROUP_SET_DIVIDER, &dividerItem);

    nodeAPI->setAttribute(rootNode, NODE_SCROLL_BY, &item2);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_LIST_DIRECTION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_LIST_STICKY), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_LIST_SPACE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_LIST_NODE_ADAPTER), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_LIST_CACHED_COUNT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_LIST_ALIGN_LIST_ITEM), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_LIST_CHILDREN_MAIN_SIZE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_LIST_INITIAL_INDEX), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_LIST_DIVIDER), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_FRICTION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_BAR_DISPLAY_MODE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_BAR_WIDTH), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_BAR_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_EDGE_EFFECT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_ENABLE_SCROLL_INTERACTION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_NESTED_SCROLL), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_LIST_SYNC_LOAD), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_LIST_DIRECTION), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_LIST_STICKY), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_LIST_SPACE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_LIST_NODE_ADAPTER), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_LIST_CACHED_COUNT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_LIST_ALIGN_LIST_ITEM), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_LIST_INITIAL_INDEX), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_LIST_DIVIDER), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_FRICTION), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_BAR_DISPLAY_MODE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_BAR_WIDTH), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_BAR_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_EDGE_EFFECT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_ENABLE_SCROLL_INTERACTION), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_NESTED_SCROLL), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_LIST_SYNC_LOAD), nullptr);

    EXPECT_EQ(nodeAPI->resetAttribute(childNode, NODE_LIST_ITEM_SWIPE_ACTION), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_EQ(nodeAPI->resetAttribute(groupNode, NODE_LIST_ITEM_GROUP_SET_HEADER), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(groupNode, NODE_LIST_ITEM_GROUP_SET_FOOTER), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(groupNode, NODE_LIST_ITEM_GROUP_SET_DIVIDER), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(groupNode, NODE_LIST_ITEM_GROUP_CHILDREN_MAIN_SIZE), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(groupNode, NODE_LIST_ITEM_GROUP_SET_DIVIDER), nullptr);

    nodeAPI->disposeNode(rootNode);
    nodeAPI->disposeNode(childNode);
    nodeAPI->disposeNode(groupNode);
}

/**
 * @tc.name: NativeNodeTest028
 * @tc.desc: Test swiperNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest028, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_SWIPER, nullptr, true});
    ArkUI_NumberValue value[] = {{.i32 = ARKUI_CURVE_LINEAR}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    ArkUI_NumberValue value2[] = {{.i32 = 1}, {.i32 = 1}};
    ArkUI_AttributeItem item2 = {value2, sizeof(value2) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_CURVE, &item);
    value[0].i32 = ARKUI_CURVE_EASE;
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_CURVE, &item);
    value[0].i32 = ARKUI_CURVE_EASE_IN;
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_CURVE, &item);
    value[0].i32 = ARKUI_CURVE_EASE_OUT;
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_CURVE, &item);
    value[0].i32 = ARKUI_CURVE_EASE_IN_OUT;
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_CURVE, &item);
    value[0].i32 = ARKUI_CURVE_FAST_OUT_SLOW_IN;
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_CURVE, &item);
    value[0].i32 = ARKUI_CURVE_LINEAR_OUT_SLOW_IN;
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_CURVE, &item);
    value[0].i32 = ARKUI_CURVE_FAST_OUT_LINEAR_IN;
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_CURVE, &item);
    value[0].i32 = ARKUI_CURVE_EXTREME_DECELERATION;
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_CURVE, &item);
    value[0].i32 = ARKUI_CURVE_SHARP;
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_CURVE, &item);
    value[0].i32 = ARKUI_CURVE_RHYTHM;
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_CURVE, &item);
    value[0].i32 = ARKUI_CURVE_SMOOTH;
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_CURVE, &item);
    value[0].i32 = ARKUI_CURVE_FRICTION;
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_CURVE, &item);
    value[0].i32 = ARKUI_SWIPER_ARROW_HIDE;
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_SHOW_DISPLAY_ARROW, &item);
    value[0].i32 = ARKUI_SWIPER_ARROW_SHOW_ON_HOVER;
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_SHOW_DISPLAY_ARROW, &item);
    value[0].i32 = ARKUI_EDGE_EFFECT_SPRING;
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_EDGE_EFFECT_MODE, &item);
    value[0].i32 = ARKUI_SWIPER_NESTED_SRCOLL_SELF_ONLY;
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_NESTED_SCROLL, &item);
    value[0].i32 = true;
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_LOOP, &item);
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_AUTO_PLAY, &item);
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_SHOW_INDICATOR, &item);
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_VERTICAL, &item);
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_INDEX, &item);
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_DISPLAY_COUNT, &item);
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_DISABLE_SWIPE, &item);
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_CACHED_COUNT, &item);
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_SWIPE_TO_INDEX, &item);
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_INDICATOR_INTERACTIVE, &item);

    value[0].f32 = 10.0f;
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_INTERVAL, &item);
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_DURATION, &item);
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_ITEM_SPACE, &item);
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_PREV_MARGIN, &item);
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_NEXT_MARGIN, &item);

    nodeAPI->setAttribute(rootNode, NODE_SWIPER_SWIPE_TO_INDEX, &item2);
    value2[1].i32 = -1;
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_SWIPE_TO_INDEX, &item2);

    value2[0].f32 = 10.0f;
    value2[1].i32 = 1;
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_PREV_MARGIN, &item);
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_NEXT_MARGIN, &item);
    value2[1].i32 = -1;
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_PREV_MARGIN, &item);
    nodeAPI->setAttribute(rootNode, NODE_SWIPER_NEXT_MARGIN, &item);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SWIPER_LOOP), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SWIPER_AUTO_PLAY), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SWIPER_SHOW_INDICATOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SWIPER_INTERVAL), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SWIPER_VERTICAL), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SWIPER_DURATION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SWIPER_CURVE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SWIPER_ITEM_SPACE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SWIPER_INDEX), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SWIPER_DISPLAY_COUNT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SWIPER_DISABLE_SWIPE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SWIPER_SHOW_DISPLAY_ARROW), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SWIPER_EDGE_EFFECT_MODE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SWIPER_NODE_ADAPTER), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SWIPER_CACHED_COUNT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SWIPER_PREV_MARGIN), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SWIPER_NEXT_MARGIN), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SWIPER_INDICATOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SWIPER_NESTED_SCROLL), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SWIPER_INDICATOR_INTERACTIVE), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SWIPER_LOOP), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SWIPER_AUTO_PLAY), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SWIPER_SHOW_INDICATOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SWIPER_INTERVAL), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SWIPER_VERTICAL), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SWIPER_DURATION), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SWIPER_CURVE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SWIPER_ITEM_SPACE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SWIPER_INDEX), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SWIPER_DISPLAY_COUNT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SWIPER_DISABLE_SWIPE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SWIPER_SHOW_DISPLAY_ARROW), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SWIPER_EDGE_EFFECT_MODE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SWIPER_NODE_ADAPTER), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SWIPER_CACHED_COUNT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SWIPER_PREV_MARGIN), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SWIPER_NEXT_MARGIN), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SWIPER_INDICATOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SWIPER_NESTED_SCROLL), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SWIPER_INDICATOR_INTERACTIVE), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest029
 * @tc.desc: Test columnNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest029, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_COLUMN);
    ASSERT_NE(rootNode, nullptr);
    ArkUI_NumberValue value[] = {{.i32 = ARKUI_HORIZONTAL_ALIGNMENT_CENTER}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    nodeAPI->setAttribute(rootNode, NODE_COLUMN_ALIGN_ITEMS, &item);
    value[0].i32 = ARKUI_FLEX_ALIGNMENT_START;
    nodeAPI->setAttribute(rootNode, NODE_COLUMN_JUSTIFY_CONTENT, &item);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_COLUMN_ALIGN_ITEMS), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_COLUMN_JUSTIFY_CONTENT), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_COLUMN_ALIGN_ITEMS), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_COLUMN_JUSTIFY_CONTENT), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest030
 * @tc.desc: Test rowNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest030, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_ROW);
    ASSERT_NE(rootNode, nullptr);
    ArkUI_NumberValue value[] = {{.i32 = ARKUI_VERTICAL_ALIGNMENT_CENTER}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    nodeAPI->setAttribute(rootNode, NODE_ROW_ALIGN_ITEMS, &item);
    value[0].i32 = ARKUI_FLEX_ALIGNMENT_START;
    nodeAPI->setAttribute(rootNode, NODE_ROW_JUSTIFY_CONTENT, &item);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_ROW_ALIGN_ITEMS), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_ROW_JUSTIFY_CONTENT), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_ROW_ALIGN_ITEMS), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_ROW_JUSTIFY_CONTENT), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest031
 * @tc.desc: Test flexNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest031, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_FLEX);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);
    ASSERT_NE(childNode, nullptr);
    nodeAPI->addChild(rootNode, childNode);

    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    int32_t negativeEnum = -1;
    ArkUI_NumberValue valueEnum[] = {{.i32 = negativeEnum}};
    ArkUI_AttributeItem itemEnum = {valueEnum, 1, nullptr, nullptr};
    float negativeFloat = -1.0f;
    ArkUI_NumberValue valueFloat[] = {{.f32 = negativeFloat}};
    ArkUI_AttributeItem itemFloat = {valueFloat, sizeof(valueFloat) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue value[] = {{.i32 = ARKUI_ITEM_ALIGNMENT_AUTO}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(childNode, NODE_ALIGN_SELF, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(childNode, NODE_ALIGN_SELF, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(childNode, NODE_ALIGN_SELF, &item), ARKUI_ERROR_CODE_NO_ERROR);
    auto alignSelfVal = nodeAPI->getAttribute(childNode, NODE_ALIGN_SELF);
    EXPECT_EQ(alignSelfVal->value[0].i32, static_cast<int32_t>(ARKUI_ITEM_ALIGNMENT_AUTO));

    EXPECT_EQ(nodeAPI->setAttribute(childNode, NODE_FLEX_GROW, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(childNode, NODE_FLEX_GROW, &itemFloat), ARKUI_ERROR_CODE_PARAM_INVALID);
    float flexGrowInput = 2.0f;
    value[0].f32 = flexGrowInput;
    EXPECT_EQ(nodeAPI->setAttribute(childNode, NODE_FLEX_GROW, &item), ARKUI_ERROR_CODE_NO_ERROR);
    auto flexGrowVal = nodeAPI->getAttribute(childNode, NODE_FLEX_GROW);
    EXPECT_EQ(flexGrowVal->value[0].f32, flexGrowInput);

    EXPECT_EQ(nodeAPI->setAttribute(childNode, NODE_FLEX_SHRINK, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(childNode, NODE_FLEX_SHRINK, &itemFloat), ARKUI_ERROR_CODE_PARAM_INVALID);
    float flexShrinkInput = 0.0f;
    value[0].f32 = flexShrinkInput;
    EXPECT_EQ(nodeAPI->setAttribute(childNode, NODE_FLEX_SHRINK, &item), ARKUI_ERROR_CODE_NO_ERROR);
    auto flexShrinkVal = nodeAPI->getAttribute(childNode, NODE_FLEX_SHRINK);
    EXPECT_EQ(flexShrinkVal->value[0].f32, flexShrinkInput);

    EXPECT_EQ(nodeAPI->setAttribute(childNode, NODE_FLEX_BASIS, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(childNode, NODE_FLEX_BASIS, &itemFloat), ARKUI_ERROR_CODE_PARAM_INVALID);
    float flexBasisInput = 100.0f;
    value[0].f32 = flexBasisInput;
    EXPECT_EQ(nodeAPI->setAttribute(childNode, NODE_FLEX_BASIS, &item), ARKUI_ERROR_CODE_NO_ERROR);
    auto flexBasisVal = nodeAPI->getAttribute(childNode, NODE_FLEX_BASIS);
    EXPECT_EQ(flexBasisVal->value[0].f32, flexBasisInput);

    ArkUI_NumberValue flexOptVal[] = {{.i32 = ARKUI_FLEX_DIRECTION_ROW}, {.i32 = ARKUI_FLEX_WRAP_NO_WRAP},
        {.i32 = ARKUI_FLEX_ALIGNMENT_START}, {.i32 = ARKUI_ITEM_ALIGNMENT_START}, {.i32 = ARKUI_FLEX_ALIGNMENT_START}};
    ArkUI_AttributeItem flexOptItem = {flexOptVal, sizeof(flexOptVal) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FLEX_OPTION, &flexOptItem), ARKUI_ERROR_CODE_NO_ERROR);
    auto flexOptResult = nodeAPI->getAttribute(rootNode, NODE_FLEX_OPTION);
    EXPECT_EQ(flexOptResult->value[0].i32, static_cast<int32_t>(ARKUI_FLEX_DIRECTION_ROW));

    int32_t abnormalVal = 10;
    flexOptVal[4].i32 = abnormalVal;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FLEX_OPTION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FLEX_OPTION, &flexOptItem), ARKUI_ERROR_CODE_PARAM_INVALID);
    flexOptVal[3].i32 = abnormalVal;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FLEX_OPTION, &flexOptItem), ARKUI_ERROR_CODE_PARAM_INVALID);
    flexOptVal[2].i32 = abnormalVal;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FLEX_OPTION, &flexOptItem), ARKUI_ERROR_CODE_PARAM_INVALID);
    flexOptVal[1].i32 = abnormalVal;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FLEX_OPTION, &flexOptItem), ARKUI_ERROR_CODE_PARAM_INVALID);
    flexOptVal[0].i32 = abnormalVal;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FLEX_OPTION, &flexOptItem), ARKUI_ERROR_CODE_PARAM_INVALID);
    flexOptItem.size = -1;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FLEX_OPTION, &flexOptItem), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_EQ(nodeAPI->resetAttribute(childNode, NODE_ALIGN_SELF), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(childNode, NODE_FLEX_GROW), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(childNode, NODE_FLEX_SHRINK), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(childNode, NODE_FLEX_BASIS), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FLEX_OPTION), ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->disposeNode(childNode);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest032
 * @tc.desc: Test refreshNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest032, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_REFRESH, nullptr, true});
    ASSERT_NE(rootNode, nullptr);
    ArkUI_NumberValue value[] = {{.i32 = true}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    nodeAPI->setAttribute(rootNode, NODE_REFRESH_REFRESHING, &item);
    nodeAPI->setAttribute(rootNode, NODE_REFRESH_PULL_DOWN_RATIO, &item);
    value[0].f32 = 0.5f;
    nodeAPI->setAttribute(rootNode, NODE_REFRESH_PULL_DOWN_RATIO, &item);
    nodeAPI->setAttribute(rootNode, NODE_REFRESH_OFFSET, &item);
    item.object = rootNode;
    nodeAPI->setAttribute(rootNode, NODE_REFRESH_CONTENT, &item);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_REFRESH_CONTENT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_REFRESH_PULL_DOWN_RATIO), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_REFRESH_OFFSET), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_REFRESH_PULL_TO_REFRESH), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_REFRESH_REFRESHING), nullptr);
    EXPECT_EQ(nodeAPI->getAttribute(rootNode, NODE_REFRESH_CONTENT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_REFRESH_PULL_DOWN_RATIO), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_REFRESH_OFFSET), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_REFRESH_PULL_TO_REFRESH), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest033
 * @tc.desc: Test waterflowNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest033, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_WATER_FLOW);
    ASSERT_NE(rootNode, nullptr);
    float distance = 10.0f;
    uint32_t color = 0xFFFF0000;
    ArkUI_NumberValue value[] = {{.f32 = distance}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue value2[] = {{.f32 = distance}, {.f32 = distance}};
    ArkUI_AttributeItem item2 = {value2, sizeof(value2) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue scrollnested[] = {{.i32 = ARKUI_SCROLL_NESTED_MODE_SELF_ONLY},
        {.i32 = ARKUI_SCROLL_NESTED_MODE_SELF_ONLY}};
    ArkUI_AttributeItem scrollnestedItem = {scrollnested, sizeof(scrollnested) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue constraintSize[] = {{.f32 = distance}, {.f32 = distance}, {.f32 = distance}, {.f32 = distance}};
    ArkUI_AttributeItem constraintSizeItem = {constraintSize, sizeof(constraintSize) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue indexValue[] = {{.i32 = 0}, {.i32 = 0}, {.i32 = ARKUI_SCROLL_ALIGNMENT_START}};
    ArkUI_AttributeItem indexItem = {indexValue, sizeof(indexValue) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_FRICTION, &item);
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_BAR_WIDTH, &item);
    nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_COLUMN_GAP, &item);
    nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_ROW_GAP, &item);
    value[0].u32 = color;
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_BAR_COLOR, &item);

    value[0].i32 = ARKUI_SCROLL_BAR_DISPLAY_MODE_AUTO;
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_BAR_DISPLAY_MODE, &item);
    value[0].i32 = ARKUI_EDGE_EFFECT_NONE;
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_EDGE_EFFECT, &item);
    value[0].i32 = ARKUI_FLEX_DIRECTION_ROW;
    nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_LAYOUT_DIRECTION, &item);
    value[0].i32 = true;
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_ENABLE_SCROLL_INTERACTION, &item);
    nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_CACHED_COUNT, &item);
    nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_SCROLL_TO_INDEX, &item);
    
    // test default value of syncLoad
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_WATER_FLOW_SYNC_LOAD), nullptr);
    auto result = nodeAPI->getAttribute(rootNode, NODE_WATER_FLOW_SYNC_LOAD);
    EXPECT_EQ(result->value[0].i32, 1);

    // set and reset syncLoad
    value[0].i32 = 0;
    nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_SYNC_LOAD, &item);
    result = nodeAPI->getAttribute(rootNode, NODE_WATER_FLOW_SYNC_LOAD);
    EXPECT_EQ(result->value[0].i32, 0);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_WATER_FLOW_SYNC_LOAD), ARKUI_ERROR_CODE_NO_ERROR);
    result = nodeAPI->getAttribute(rootNode, NODE_WATER_FLOW_SYNC_LOAD);
    EXPECT_EQ(result->value[0].i32, 1);

    // set invalid value to syncLoad
    value[0].i32 = -1;
    nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_SYNC_LOAD, &item);
    result = nodeAPI->getAttribute(rootNode, NODE_WATER_FLOW_SYNC_LOAD);
    EXPECT_EQ(result->value[0].i32, 1);

    item.string = "test";
    nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_COLUMN_TEMPLATE, &item);
    nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_ROW_TEMPLATE, &item);

    item.object = rootNode;
    nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_FOOTER, &item);

    nodeAPI->setAttribute(rootNode, NODE_SCROLL_NESTED_SCROLL, &scrollnestedItem);
    nodeAPI->setAttribute(rootNode, NODE_SCROLL_BY, &item2);
    nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_ITEM_CONSTRAINT_SIZE, &constraintSizeItem);
    nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_SCROLL_TO_INDEX, &indexItem);
    indexValue[2].i32 = ARKUI_SCROLL_ALIGNMENT_NONE;
    nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_SCROLL_TO_INDEX, &indexItem);
    indexValue[2].i32 = -1;
    indexValue[1].i32 = -1;
    nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_SCROLL_TO_INDEX, &indexItem);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_WATER_FLOW_LAYOUT_DIRECTION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_WATER_FLOW_COLUMN_TEMPLATE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_WATER_FLOW_ROW_TEMPLATE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_WATER_FLOW_COLUMN_GAP), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_WATER_FLOW_ROW_GAP), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_WATER_FLOW_SECTION_OPTION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_WATER_FLOW_NODE_ADAPTER), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_WATER_FLOW_CACHED_COUNT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_WATER_FLOW_FOOTER), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_WATER_FLOW_ITEM_CONSTRAINT_SIZE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_FRICTION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_BAR_DISPLAY_MODE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_BAR_WIDTH), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_BAR_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_EDGE_EFFECT), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_ENABLE_SCROLL_INTERACTION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SCROLL_NESTED_SCROLL), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_WATER_FLOW_LAYOUT_DIRECTION), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_WATER_FLOW_COLUMN_TEMPLATE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_WATER_FLOW_ROW_TEMPLATE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_WATER_FLOW_COLUMN_GAP), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_WATER_FLOW_ROW_GAP), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_WATER_FLOW_NODE_ADAPTER), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_WATER_FLOW_CACHED_COUNT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_WATER_FLOW_ITEM_CONSTRAINT_SIZE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_FRICTION), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_BAR_DISPLAY_MODE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_BAR_WIDTH), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_BAR_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_EDGE_EFFECT), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_ENABLE_SCROLL_INTERACTION), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SCROLL_NESTED_SCROLL), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_WATER_FLOW_SECTION_OPTION), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest034
 * @tc.desc: Test gridNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest034, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_GRID);
    ASSERT_NE(rootNode, nullptr);
    ArkUI_NumberValue value[] = {{.f32 = 1.0f}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), "test"};
    nodeAPI->setAttribute(rootNode, NODE_GRID_COLUMN_TEMPLATE, &item);
    nodeAPI->setAttribute(rootNode, NODE_GRID_ROW_TEMPLATE, &item);
    nodeAPI->setAttribute(rootNode, NODE_GRID_COLUMN_GAP, &item);
    nodeAPI->setAttribute(rootNode, NODE_GRID_ROW_GAP, &item);
    value[0].i32 = 1;
    nodeAPI->setAttribute(rootNode, NODE_GRID_CACHED_COUNT, &item);

    // test default value of syncLoad
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_GRID_SYNC_LOAD), nullptr);
    auto result = nodeAPI->getAttribute(rootNode, NODE_GRID_SYNC_LOAD);
    EXPECT_EQ(result->value[0].i32, 1);

    // set and reset syncLoad
    value[0].i32 = 0;
    nodeAPI->setAttribute(rootNode, NODE_GRID_SYNC_LOAD, &item);
    result = nodeAPI->getAttribute(rootNode, NODE_GRID_SYNC_LOAD);
    EXPECT_EQ(result->value[0].i32, 0);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_GRID_SYNC_LOAD), ARKUI_ERROR_CODE_NO_ERROR);
    result = nodeAPI->getAttribute(rootNode, NODE_GRID_SYNC_LOAD);
    EXPECT_EQ(result->value[0].i32, 1);

    // set invalid value to syncLoad
    value[0].i32 = -1;
    nodeAPI->setAttribute(rootNode, NODE_GRID_SYNC_LOAD, &item);
    result = nodeAPI->getAttribute(rootNode, NODE_GRID_SYNC_LOAD);
    EXPECT_EQ(result->value[0].i32, 1);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_GRID_COLUMN_TEMPLATE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_GRID_ROW_TEMPLATE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_GRID_COLUMN_GAP), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_GRID_ROW_GAP), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_GRID_NODE_ADAPTER), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_GRID_CACHED_COUNT), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_GRID_COLUMN_TEMPLATE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_GRID_ROW_TEMPLATE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_GRID_COLUMN_GAP), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_GRID_ROW_GAP), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_GRID_NODE_ADAPTER), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_GRID_CACHED_COUNT), nullptr);
    
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest035
 * @tc.desc: Test relativeContainerNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest035, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_RELATIVE_CONTAINER, nullptr, true});
    ASSERT_NE(rootNode, nullptr);

    auto alignRules = OH_ArkUI_AlignmentRuleOption_Create();
    float baisVal = 10.0f;
    ArkUI_AttributeItem alignRulesItem = {.size = 0, .object = alignRules};
    nodeAPI->setAttribute(rootNode, NODE_ALIGN_RULES, &alignRulesItem);
    OH_ArkUI_AlignmentRuleOption_SetStart(nullptr, nullptr, ARKUI_HORIZONTAL_ALIGNMENT_START);
    OH_ArkUI_AlignmentRuleOption_SetStart(alignRules, nullptr, ARKUI_HORIZONTAL_ALIGNMENT_START);
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetStartId(alignRules), nullptr);
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetStartAlignment(alignRules), static_cast<ArkUI_HorizontalAlignment>(-1));
    OH_ArkUI_AlignmentRuleOption_SetStart(alignRules, "__container__", ARKUI_HORIZONTAL_ALIGNMENT_START);
    OH_ArkUI_AlignmentRuleOption_SetTop(nullptr, nullptr, ARKUI_VERTICAL_ALIGNMENT_TOP);
    OH_ArkUI_AlignmentRuleOption_SetTop(alignRules, nullptr, ARKUI_VERTICAL_ALIGNMENT_TOP);
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetTopId(alignRules), nullptr);
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetTopAlignment(alignRules), static_cast<ArkUI_VerticalAlignment>(-1));
    OH_ArkUI_AlignmentRuleOption_SetTop(alignRules, "__container__", ARKUI_VERTICAL_ALIGNMENT_TOP);
    OH_ArkUI_AlignmentRuleOption_SetEnd(nullptr, nullptr, ARKUI_HORIZONTAL_ALIGNMENT_END);
    OH_ArkUI_AlignmentRuleOption_SetEnd(alignRules, nullptr, ARKUI_HORIZONTAL_ALIGNMENT_END);
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetEndId(alignRules), nullptr);
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetEndAlignment(alignRules), static_cast<ArkUI_HorizontalAlignment>(-1));
    OH_ArkUI_AlignmentRuleOption_SetEnd(alignRules, "__container__", ARKUI_HORIZONTAL_ALIGNMENT_END);
    OH_ArkUI_AlignmentRuleOption_SetBottom(nullptr, nullptr, ARKUI_VERTICAL_ALIGNMENT_BOTTOM);
    OH_ArkUI_AlignmentRuleOption_SetBottom(alignRules, nullptr, ARKUI_VERTICAL_ALIGNMENT_BOTTOM);
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetBottomId(alignRules), nullptr);
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetBottomAlignment(alignRules), static_cast<ArkUI_VerticalAlignment>(-1));
    OH_ArkUI_AlignmentRuleOption_SetBottom(alignRules, "__container__", ARKUI_VERTICAL_ALIGNMENT_BOTTOM);
    OH_ArkUI_AlignmentRuleOption_SetCenterHorizontal(nullptr, nullptr, ARKUI_HORIZONTAL_ALIGNMENT_CENTER);
    OH_ArkUI_AlignmentRuleOption_SetCenterHorizontal(alignRules, nullptr, ARKUI_HORIZONTAL_ALIGNMENT_CENTER);
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetCenterIdHorizontal(alignRules), nullptr);
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetCenterAlignmentHorizontal(alignRules),
        static_cast<ArkUI_HorizontalAlignment>(-1));
    OH_ArkUI_AlignmentRuleOption_SetCenterHorizontal(alignRules, "__container__", ARKUI_HORIZONTAL_ALIGNMENT_CENTER);
    OH_ArkUI_AlignmentRuleOption_SetCenterVertical(nullptr, nullptr, ARKUI_VERTICAL_ALIGNMENT_CENTER);
    OH_ArkUI_AlignmentRuleOption_SetCenterVertical(alignRules, nullptr, ARKUI_VERTICAL_ALIGNMENT_CENTER);
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetCenterIdVertical(alignRules), nullptr);
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetCenterAlignmentVertical(alignRules),
        static_cast<ArkUI_VerticalAlignment>(-1));
    OH_ArkUI_AlignmentRuleOption_SetCenterVertical(alignRules, "__container__", ARKUI_VERTICAL_ALIGNMENT_CENTER);
    OH_ArkUI_AlignmentRuleOption_SetBiasHorizontal(nullptr, baisVal);
    OH_ArkUI_AlignmentRuleOption_SetBiasHorizontal(alignRules, baisVal);
    OH_ArkUI_AlignmentRuleOption_SetBiasVertical(nullptr, baisVal);
    OH_ArkUI_AlignmentRuleOption_SetBiasVertical(alignRules, baisVal);
    alignRulesItem.object = alignRules;
    nodeAPI->setAttribute(rootNode, NODE_ALIGN_RULES, &alignRulesItem);
    auto alignRulesGetVal = nodeAPI->getAttribute(rootNode, NODE_ALIGN_RULES);
    ASSERT_NE(alignRulesGetVal, nullptr);
    OH_ArkUI_AlignmentRuleOption_GetStartId(alignRules);
    OH_ArkUI_AlignmentRuleOption_GetStartAlignment(alignRules);
    OH_ArkUI_AlignmentRuleOption_GetEndId(alignRules);
    OH_ArkUI_AlignmentRuleOption_GetEndAlignment(alignRules);
    OH_ArkUI_AlignmentRuleOption_GetCenterIdHorizontal(alignRules);
    OH_ArkUI_AlignmentRuleOption_GetCenterAlignmentHorizontal(alignRules);
    OH_ArkUI_AlignmentRuleOption_GetTopId(alignRules);
    OH_ArkUI_AlignmentRuleOption_GetTopAlignment(alignRules);
    OH_ArkUI_AlignmentRuleOption_GetBottomId(alignRules);
    OH_ArkUI_AlignmentRuleOption_GetBottomAlignment(alignRules);
    OH_ArkUI_AlignmentRuleOption_GetCenterIdVertical(alignRules);
    OH_ArkUI_AlignmentRuleOption_GetCenterAlignmentVertical(alignRules);
    OH_ArkUI_AlignmentRuleOption_GetBiasHorizontal(alignRules);
    OH_ArkUI_AlignmentRuleOption_GetBiasVertical(alignRules);

    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetStartId(nullptr), nullptr);
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetStartAlignment(nullptr), static_cast<ArkUI_HorizontalAlignment>(-1));
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetEndId(nullptr), nullptr);
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetEndAlignment(nullptr), static_cast<ArkUI_HorizontalAlignment>(-1));
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetCenterIdHorizontal(nullptr), nullptr);
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetCenterAlignmentHorizontal(nullptr),
        static_cast<ArkUI_HorizontalAlignment>(-1));
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetTopId(nullptr), nullptr);
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetTopAlignment(nullptr), static_cast<ArkUI_VerticalAlignment>(-1));
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetBottomId(nullptr), nullptr);
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetBottomAlignment(nullptr), static_cast<ArkUI_VerticalAlignment>(-1));
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetCenterIdVertical(nullptr), nullptr);
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetCenterAlignmentVertical(nullptr),
        static_cast<ArkUI_VerticalAlignment>(-1));
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetBiasHorizontal(nullptr), -1.0f);
    EXPECT_EQ(OH_ArkUI_AlignmentRuleOption_GetBiasVertical(nullptr), -1.0f);
    

    ArkUI_NumberValue chainModeVal[] = {{.i32 = ARKUI_AXIS_HORIZONTAL},
        {.i32 = ARKUI_RELATIVE_LAYOUT_CHAIN_STYLE_PACKED}};
    ArkUI_AttributeItem chainModeItem = {chainModeVal, sizeof(chainModeVal) / sizeof(ArkUI_NumberValue)};
    auto chainModRet = nodeAPI->setAttribute(rootNode, NODE_RELATIVE_LAYOUT_CHAIN_MODE, &chainModeItem);
    EXPECT_EQ(chainModRet, ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->setAttribute(
        rootNode, NODE_RELATIVE_LAYOUT_CHAIN_MODE, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    auto chainModResult = nodeAPI->getAttribute(rootNode, NODE_RELATIVE_LAYOUT_CHAIN_MODE);
    EXPECT_NE(chainModResult, nullptr);

    int32_t guideLineOptSize = 1;
    float positionStart = 50.0f;
    float positionEnd = 60.0f;
    auto guidelineOption = OH_ArkUI_GuidelineOption_Create(guideLineOptSize);
    OH_ArkUI_GuidelineOption_SetId(nullptr, nullptr, 0);
    OH_ArkUI_GuidelineOption_SetId(guidelineOption, nullptr, -1);
    OH_ArkUI_GuidelineOption_SetId(guidelineOption, nullptr, 2);
    OH_ArkUI_GuidelineOption_SetId(guidelineOption, "__container__", 0);
    OH_ArkUI_GuidelineOption_SetDirection(nullptr, ARKUI_AXIS_VERTICAL, 0);
    OH_ArkUI_GuidelineOption_SetDirection(guidelineOption, ARKUI_AXIS_VERTICAL, -1);
    OH_ArkUI_GuidelineOption_SetDirection(guidelineOption, ARKUI_AXIS_VERTICAL, 2);
    OH_ArkUI_GuidelineOption_SetDirection(guidelineOption, ARKUI_AXIS_VERTICAL, 0);
    OH_ArkUI_GuidelineOption_SetPositionStart(nullptr, positionStart, 0);
    OH_ArkUI_GuidelineOption_SetPositionStart(guidelineOption, positionStart, -1);
    OH_ArkUI_GuidelineOption_SetPositionStart(guidelineOption, positionStart, 2);
    OH_ArkUI_GuidelineOption_SetPositionStart(guidelineOption, positionStart, 0);
    OH_ArkUI_GuidelineOption_SetPositionEnd(nullptr, positionEnd, 0);
    OH_ArkUI_GuidelineOption_SetPositionEnd(guidelineOption, positionEnd, -1);
    OH_ArkUI_GuidelineOption_SetPositionEnd(guidelineOption, positionEnd, 2);
    OH_ArkUI_GuidelineOption_SetPositionEnd(guidelineOption, positionEnd, 0);
    ArkUI_AttributeItem guidelineOptItem = {.object = guidelineOption};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_RELATIVE_CONTAINER_GUIDE_LINE, &guidelineOptItem),
        ARKUI_ERROR_CODE_NO_ERROR);
    auto guidelineOptResult = nodeAPI->getAttribute(rootNode, NODE_RELATIVE_CONTAINER_GUIDE_LINE);
    ASSERT_NE(guidelineOptResult, nullptr);
    OH_ArkUI_GuidelineOption_GetId(guidelineOption, 0);
    OH_ArkUI_GuidelineOption_GetDirection(guidelineOption, 0);
    OH_ArkUI_GuidelineOption_GetPositionStart(guidelineOption, 0);
    OH_ArkUI_GuidelineOption_GetPositionEnd(guidelineOption, 0);
    EXPECT_EQ(OH_ArkUI_GuidelineOption_GetId(nullptr, 0), nullptr);
    EXPECT_EQ(OH_ArkUI_GuidelineOption_GetId(guidelineOption, -1), nullptr);
    EXPECT_EQ(OH_ArkUI_GuidelineOption_GetId(guidelineOption, 2), nullptr);
    EXPECT_EQ(OH_ArkUI_GuidelineOption_GetDirection(nullptr, 0), static_cast<ArkUI_Axis>(-1));
    EXPECT_EQ(OH_ArkUI_GuidelineOption_GetDirection(guidelineOption, -1), static_cast<ArkUI_Axis>(-1));
    EXPECT_EQ(OH_ArkUI_GuidelineOption_GetDirection(guidelineOption, 2), static_cast<ArkUI_Axis>(-1));
    EXPECT_EQ(OH_ArkUI_GuidelineOption_GetPositionStart(nullptr, 0), 0.0f);
    EXPECT_EQ(OH_ArkUI_GuidelineOption_GetPositionStart(guidelineOption, -1), 0.0f);
    EXPECT_EQ(OH_ArkUI_GuidelineOption_GetPositionStart(guidelineOption, 2), 0.0f);
    EXPECT_EQ(OH_ArkUI_GuidelineOption_GetPositionEnd(nullptr, 0), 0.0f);
    EXPECT_EQ(OH_ArkUI_GuidelineOption_GetPositionEnd(guidelineOption, -1), 0.0f);
    EXPECT_EQ(OH_ArkUI_GuidelineOption_GetPositionEnd(guidelineOption, 2), 0.0f);
    
    auto abnormalBarrierOption = OH_ArkUI_BarrierOption_Create(-1);
    auto barrierOption = OH_ArkUI_BarrierOption_Create(guideLineOptSize);
    OH_ArkUI_BarrierOption_SetId(nullptr, nullptr, 0);
    OH_ArkUI_BarrierOption_SetId(barrierOption, nullptr, -1);
    OH_ArkUI_BarrierOption_SetId(barrierOption, nullptr, 2);
    OH_ArkUI_BarrierOption_SetId(barrierOption, "__container__", 0);
    OH_ArkUI_BarrierOption_SetDirection(nullptr, ARKUI_BARRIER_DIRECTION_TOP, 0);
    OH_ArkUI_BarrierOption_SetDirection(barrierOption, ARKUI_BARRIER_DIRECTION_TOP, -1);
    OH_ArkUI_BarrierOption_SetDirection(barrierOption, ARKUI_BARRIER_DIRECTION_TOP, 2);
    OH_ArkUI_BarrierOption_SetDirection(barrierOption, ARKUI_BARRIER_DIRECTION_TOP, 0);
    OH_ArkUI_BarrierOption_SetReferencedId(nullptr, nullptr, 0);
    OH_ArkUI_BarrierOption_SetReferencedId(barrierOption, nullptr, -1);
    OH_ArkUI_BarrierOption_SetReferencedId(barrierOption, nullptr, 2);
    OH_ArkUI_BarrierOption_SetReferencedId(barrierOption, "__container__", 0);
    ArkUI_AttributeItem barrierOptItem = {.object = barrierOption};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_RELATIVE_CONTAINER_BARRIER, &barrierOptItem),
        ARKUI_ERROR_CODE_NO_ERROR);
    auto barrierOptResult = nodeAPI->getAttribute(rootNode, NODE_RELATIVE_CONTAINER_BARRIER);
    ASSERT_NE(barrierOptResult, nullptr);
    OH_ArkUI_BarrierOption_GetId(barrierOption, 0);
    OH_ArkUI_BarrierOption_GetDirection(barrierOption, 0);
    OH_ArkUI_BarrierOption_GetReferencedId(barrierOption, 0, 0);
    OH_ArkUI_BarrierOption_GetReferencedIdSize(barrierOption, 0);
    EXPECT_EQ(OH_ArkUI_BarrierOption_GetId(nullptr, 0), nullptr);
    EXPECT_EQ(OH_ArkUI_BarrierOption_GetId(barrierOption, -1), nullptr);
    EXPECT_EQ(OH_ArkUI_BarrierOption_GetId(barrierOption, 2), nullptr);
    EXPECT_EQ(OH_ArkUI_BarrierOption_GetDirection(nullptr, 0), ARKUI_BARRIER_DIRECTION_TOP);
    EXPECT_EQ(OH_ArkUI_BarrierOption_GetDirection(barrierOption, -1), ARKUI_BARRIER_DIRECTION_TOP);
    EXPECT_EQ(OH_ArkUI_BarrierOption_GetDirection(barrierOption, 2), ARKUI_BARRIER_DIRECTION_TOP);
    EXPECT_EQ(OH_ArkUI_BarrierOption_GetReferencedId(nullptr, 0, 0), nullptr);
    EXPECT_EQ(OH_ArkUI_BarrierOption_GetReferencedId(barrierOption, -1, 0), nullptr);
    EXPECT_EQ(OH_ArkUI_BarrierOption_GetReferencedId(barrierOption, 2, 0), nullptr);
    EXPECT_EQ(OH_ArkUI_BarrierOption_GetReferencedId(barrierOption, 0, -1), nullptr);
    EXPECT_EQ(OH_ArkUI_BarrierOption_GetReferencedId(barrierOption, 0, 2), nullptr);
    EXPECT_EQ(OH_ArkUI_BarrierOption_GetReferencedIdSize(nullptr, 0), 0);
    EXPECT_EQ(OH_ArkUI_BarrierOption_GetReferencedIdSize(barrierOption, -1), 0);
    EXPECT_EQ(OH_ArkUI_BarrierOption_GetReferencedIdSize(barrierOption, 2), 0);

    OH_ArkUI_AlignmentRuleOption_Dispose(alignRules);
    OH_ArkUI_GuidelineOption_Dispose(guidelineOption);
    OH_ArkUI_BarrierOption_Dispose(barrierOption);
    OH_ArkUI_BarrierOption_Dispose(abnormalBarrierOption);
    
    OH_ArkUI_AlignmentRuleOption_Dispose(nullptr);
    OH_ArkUI_GuidelineOption_Dispose(nullptr);
    OH_ArkUI_BarrierOption_Dispose(nullptr);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_ALIGN_RULES), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_RELATIVE_LAYOUT_CHAIN_MODE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_RELATIVE_CONTAINER_GUIDE_LINE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_RELATIVE_CONTAINER_BARRIER), ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest036
 * @tc.desc: Test imageAnimatorNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest036, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_IMAGE_ANIMATOR, nullptr, true});
    ASSERT_NE(rootNode, nullptr);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_ANIMATOR_IMAGES), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_ANIMATOR_STATE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_ANIMATOR_DURATION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_ANIMATOR_REVERSE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_ANIMATOR_FIXED_SIZE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_ANIMATOR_FILL_MODE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_ANIMATOR_ITERATION), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_ANIMATOR_IMAGES), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_ANIMATOR_STATE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_ANIMATOR_DURATION), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_ANIMATOR_REVERSE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_ANIMATOR_FIXED_SIZE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_ANIMATOR_FILL_MODE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_ANIMATOR_ITERATION), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest037
 * @tc.desc: Test abnormalInputForCommon function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest037, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_STACK, nullptr, true});
    float negativeFloat = -1.0f;
    int32_t negativeEnum = -1;
    uint32_t color = 0XFFFF0000;
    float val0 = 0.0f;
    float val1 = 1.0f;
    float val10 = 10.0f;
    ArkUI_NumberValue value[] = {{.f32 = negativeFloat}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue value4[] = {{.f32 = negativeFloat}, {.f32 = negativeFloat}, {.f32 = negativeFloat},
        {.f32 = negativeFloat}};
    ArkUI_AttributeItem item4 = {value4, sizeof(value4) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue valueEnum[] = {{.i32 = negativeEnum}};
    ArkUI_AttributeItem itemEnum = {valueEnum, 1, "test", nullptr};
    ArkUI_NumberValue valueEnum4[] = {{.i32 = negativeEnum}, {.i32 = negativeEnum}, {.i32 = negativeEnum},
        {.i32 = negativeEnum}};
    ArkUI_AttributeItem itemEnum4 = {valueEnum4, sizeof(valueEnum4) / sizeof(ArkUI_NumberValue), nullptr, nullptr};

    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WIDTH, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WIDTH, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_HEIGHT, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_HEIGHT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WIDTH_PERCENT, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WIDTH_PERCENT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_HEIGHT_PERCENT, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_HEIGHT_PERCENT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_COLOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_IMAGE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_IMAGE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_PADDING, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_PADDING_PERCENT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ID, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ENABLED, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ENABLED, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_MARGIN, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_MARGIN, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_MARGIN_PERCENT, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_MARGIN_PERCENT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FONT_COLOR, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FONT_SIZE, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TRANSLATE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCALE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ROTATE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BRIGHTNESS, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BRIGHTNESS, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SATURATION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SATURATION, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BLUR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LINEAR_GRADIENT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LINEAR_GRADIENT, &item4), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ALIGNMENT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ALIGNMENT, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_OPACITY, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_OPACITY, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BORDER_WIDTH, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BORDER_WIDTH, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BORDER_WIDTH, &item4), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BORDER_WIDTH_PERCENT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BORDER_WIDTH_PERCENT, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BORDER_WIDTH_PERCENT, &item4), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BORDER_RADIUS, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BORDER_RADIUS, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BORDER_RADIUS, &item4), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BORDER_RADIUS_PERCENT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BORDER_RADIUS_PERCENT, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BORDER_RADIUS_PERCENT, &item4), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BORDER_COLOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BORDER_STYLE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BORDER_STYLE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BORDER_STYLE, &itemEnum4), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_Z_INDEX, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_VISIBILITY, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_VISIBILITY, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CLIP, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CLIP, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TRANSFORM, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_HIT_TEST_BEHAVIOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_HIT_TEST_BEHAVIOR, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_POSITION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SHADOW, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SHADOW, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CUSTOM_SHADOW, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CUSTOM_SHADOW, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FOCUSABLE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FOCUSABLE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ACCESSIBILITY_GROUP, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ACCESSIBILITY_GROUP, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ACCESSIBILITY_TEXT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ACCESSIBILITY_MODE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ACCESSIBILITY_MODE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ACCESSIBILITY_DESCRIPTION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ACCESSIBILITY_ACTIONS, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ACCESSIBILITY_ROLE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DEFAULT_FOCUS, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DEFAULT_FOCUS, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_RESPONSE_REGION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_OVERLAY, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_OVERLAY, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_IMAGE_POSITION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWEEP_GRADIENT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWEEP_GRADIENT, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_RADIAL_GRADIENT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_RADIAL_GRADIENT, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_MASK, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    ArkUI_NumberValue mask[] = {{.u32 = color}, {.u32 = color}, {.f32 = val10}, {.i32 = ARKUI_MASK_TYPE_RECTANGLE},
        {.f32 = negativeFloat}, {.f32 = negativeFloat}, {.f32 = negativeFloat}, {.f32 = negativeFloat}};
    ArkUI_AttributeItem maskItem = {mask, sizeof(mask) / sizeof(ArkUI_NumberValue)};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_MASK, &maskItem), ARKUI_ERROR_CODE_PARAM_INVALID);
    maskItem.size = 5;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_MASK, &maskItem), ARKUI_ERROR_CODE_PARAM_INVALID);
    mask[3].i32 = ARKUI_MASK_TYPE_PATH;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_MASK, &maskItem), ARKUI_ERROR_CODE_PARAM_INVALID);
    mask[0].i32 = ARKUI_MASK_TYPE_PROGRESS;
    mask[1].f32 = negativeFloat;
    mask[3].u32 = color;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_MASK, &maskItem), ARKUI_ERROR_CODE_PARAM_INVALID);
    mask[1].f32 = val10;
    mask[2].f32 = negativeFloat;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_MASK, &maskItem), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BLEND_MODE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BLEND_MODE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);

    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DIRECTION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DIRECTION, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CONSTRAINT_SIZE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CONSTRAINT_SIZE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CONSTRAINT_SIZE, &item4), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_GRAY_SCALE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_GRAY_SCALE, &item4), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_INVERT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_INVERT, &item4), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SEPIA, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SEPIA, &item4), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CONTRAST, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CONTRAST, &item4), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FOREGROUND_COLOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_OFFSET, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_MARK_ANCHOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ALIGN_RULES, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FOCUS_STATUS, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FOCUS_STATUS, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ASPECT_RATIO, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ASPECT_RATIO, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LAYOUT_WEIGHT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DISPLAY_PRIORITY, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_OUTLINE_WIDTH, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_GEOMETRY_TRANSITION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_RENDER_FIT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_RENDER_FIT, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_OUTLINE_COLOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SIZE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SIZE, &item4), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_RENDER_GROUP, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_RENDER_GROUP, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_COLOR_BLEND, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_IMAGE_SIZE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_IMAGE_SIZE, &item4), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_IMAGE_SIZE_WITH_STYLE, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_IMAGE_SIZE_WITH_STYLE, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    ArkUI_NumberValue backgroundBlurVal[] = {{.i32 = ARKUI_BLUR_STYLE_THIN}, {.i32 = ARKUI_COLOR_MODE_SYSTEM},
        {.i32 = ARKUI_ADAPTIVE_COLOR_DEFAULT}, {.f32 = 0}, {.f32 = 0}, {.f32 = negativeFloat}};
    ArkUI_AttributeItem backgroundBlurItem = {backgroundBlurVal, sizeof(backgroundBlurVal) / sizeof(ArkUI_NumberValue)};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_BLUR_STYLE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FOREGROUND_BLUR_STYLE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_BLUR_STYLE, &backgroundBlurItem),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FOREGROUND_BLUR_STYLE, &backgroundBlurItem),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    backgroundBlurVal[4].f32 = negativeFloat;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_BLUR_STYLE, &backgroundBlurItem),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    backgroundBlurVal[3].f32 = negativeFloat;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_BLUR_STYLE, &backgroundBlurItem),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    backgroundBlurVal[2].i32 = negativeEnum;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_BLUR_STYLE, &backgroundBlurItem),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    backgroundBlurVal[1].i32 = negativeEnum;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_BLUR_STYLE, &backgroundBlurItem),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    backgroundBlurVal[0].i32 = negativeEnum;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_BLUR_STYLE, &backgroundBlurItem),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TRANSFORM_CENTER, &item4), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_OPACITY_TRANSITION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ROTATE_TRANSITION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCALE_TRANSITION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TRANSLATE_TRANSITION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_MOVE_TRANSITION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LAYOUT_RECT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LAYOUT_RECT, &itemEnum4), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FOCUS_ON_TOUCH, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FOCUS_ON_TOUCH, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ACCESSIBILITY_STATE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ACCESSIBILITY_VALUE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_EXPAND_SAFE_AREA, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_VISIBLE_AREA_CHANGE_RATIO, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_VISIBLE_AREA_CHANGE_RATIO, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TRANSITION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);

    ArkUI_NumberValue opacityTransition[] = {{.f32 = val0}, {.i32 = 1000}, {.i32 = ARKUI_CURVE_LINEAR}, {.i32 = 1000},
        {.i32 = 1}, {.i32 = ARKUI_ANIMATION_PLAY_MODE_NORMAL}, {.f32 = val1}};
    ArkUI_AttributeItem opacityTransitionItem =
        {opacityTransition, sizeof(opacityTransition) / sizeof(ArkUI_NumberValue)};
    opacityTransition[6].f32 = negativeFloat;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_OPACITY_TRANSITION, &opacityTransitionItem),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    opacityTransition[5].i32 = negativeEnum;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_OPACITY_TRANSITION, &opacityTransitionItem),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    opacityTransition[5].i32 = static_cast<int32_t>(ARKUI_ANIMATION_PLAY_MODE_ALTERNATE_REVERSE) + 1;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_OPACITY_TRANSITION, &opacityTransitionItem),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    opacityTransition[2].i32 = negativeEnum;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_OPACITY_TRANSITION, &opacityTransitionItem),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    opacityTransition[2].i32 = static_cast<int32_t>(ARKUI_CURVE_FRICTION) + 1;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_OPACITY_TRANSITION, &opacityTransitionItem),
        ARKUI_ERROR_CODE_PARAM_INVALID);

    valueEnum4[0].i32 = 0;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BLEND_MODE, &itemEnum4), ARKUI_ERROR_CODE_PARAM_INVALID);
    valueEnum4[2].i32 = 0;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LAYOUT_RECT, &itemEnum4), ARKUI_ERROR_CODE_PARAM_INVALID);
    valueEnum4[0].u32 = 0;
    valueEnum4[1].u32 = 0;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_EXPAND_SAFE_AREA, &itemEnum4), ARKUI_ERROR_CODE_NO_ERROR);
    valueEnum4[1].u32 = 20;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_EXPAND_SAFE_AREA, &itemEnum4), ARKUI_ERROR_CODE_PARAM_INVALID);
    valueEnum4[0].u32 = 20;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_EXPAND_SAFE_AREA, &itemEnum4), ARKUI_ERROR_CODE_PARAM_INVALID);
    valueEnum[0].u32 = -1;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ACCESSIBILITY_ROLE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    item0.size = -1;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TRANSFORM_CENTER, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BORDER_WIDTH, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BORDER_RADIUS, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BORDER_WIDTH_PERCENT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BORDER_RADIUS_PERCENT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BORDER_COLOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BORDER_STYLE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CUSTOM_SHADOW, &item0), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_OUTLINE_COLOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_EXPAND_SAFE_AREA, &item0), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_PLACEHOLDER_FONT, &item0), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_AREA_PLACEHOLDER_FONT, &item0), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_AREA_SHOW_COUNTER, &item0), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ALIGN_RULES, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    
    value[0].f32 = 2.0f;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_OPACITY, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FONT_SIZE, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_VISIBLE_AREA_CHANGE_RATIO, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    valueEnum[0].i32 = static_cast<int32_t>(MAX_NODE_SCOPE_NUM);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BORDER_STYLE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_VISIBILITY, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CLIP, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_HIT_TEST_BEHAVIOR, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SHADOW, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DIRECTION, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ALIGN_SELF, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_RENDER_FIT, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FONT_WEIGHT, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FONT_STYLE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_MAX_LENGTH, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_ENTER_KEY_TYPE, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_TYPE, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_AREA_TYPE, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_ENABLE_KEYBOARD_ON_FOCUS, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_SHOW_PASSWORD_ICON, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_EDITING, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_AREA_EDITING, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_CANCEL_BUTTON, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_STACK_ALIGN_CONTENT, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_CURVE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_EDGE_EFFECT_MODE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_DECORATION, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_CASE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_ALIGN, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_OVERFLOW, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_SPAN_VERTICAL_ALIGNMENT, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_OBJECT_FIT, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_INTERPOLATION, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_OBJECT_REPEAT, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_RENDER_MODE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_FIT_ORIGINAL_SIZE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CALENDAR_PICKER_EDGE_ALIGNMENT, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    valueEnum4[0].i32 = static_cast<int32_t>(MAX_NODE_SCOPE_NUM);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BORDER_STYLE, &itemEnum4), ARKUI_ERROR_CODE_PARAM_INVALID);
    valueEnum[0].u32 = static_cast<int32_t>(MAX_NODE_SCOPE_NUM);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ACCESSIBILITY_ACTIONS, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_CARET_COLOR, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_INPUT_PLACEHOLDER_COLOR, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    valueEnum[0].i32 = true;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FOCUS_STATUS, &itemEnum), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FONT_STYLE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_COPY_OPTION, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_FOCUS_STATUS), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_OUTLINE_WIDTH), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest038
 * @tc.desc: Test abnormalInputForText function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest038, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_TEXT, nullptr, true});
    float negativeFloat = -1.0f;
    int32_t negativeInt = -1;
    ArkUI_NumberValue value[] = {{.f32 = negativeFloat}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue value4[] = {{.f32 = negativeFloat}, {.f32 = negativeFloat}, {.f32 = negativeFloat},
        {.f32 = negativeFloat}};
    ArkUI_AttributeItem item4 = {value4, sizeof(value4) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    ArkUI_NumberValue valueEnum[] = {{.i32 = negativeInt}};
    ArkUI_AttributeItem itemEnum = {valueEnum, sizeof(valueEnum) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_CONTENT, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FONT_COLOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FONT_SIZE, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FONT_STYLE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FONT_WEIGHT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FONT_WEIGHT, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_LINE_HEIGHT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_DECORATION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_DECORATION, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_CASE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_CASE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_LETTER_SPACING, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_MAX_LINES, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_ALIGN, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_ALIGN, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_OVERFLOW, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_OVERFLOW, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_FONT_FAMILY, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_COPY_OPTION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_BASELINE_OFFSET, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_TEXT_SHADOW, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_MIN_FONT_SIZE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_MAX_FONT_SIZE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_FONT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    value4[1].i32 = negativeInt;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_FONT, &item4), ARKUI_ERROR_CODE_PARAM_INVALID);
    value4[1].i32 = 0;
    value4[2].i32 = negativeInt;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_FONT, &item4), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_HEIGHT_ADAPTIVE_POLICY, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_HEIGHT_ADAPTIVE_POLICY, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_INDENT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_WORD_BREAK, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_ELLIPSIS_MODE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_LINE_SPACING, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_LINE_SPACING, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_FONT_FEATURE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_ENABLE_DATA_DETECTOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_SELECTED_BACKGROUND_COLOR, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_CONTENT_WITH_STYLED_STRING, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_CONTENT_WITH_STYLED_STRING, nullptr),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest039
 * @tc.desc: Test abnormalInputForTextField function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest039, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto textinput = new ArkUI_Node({ARKUI_NODE_TEXT_INPUT, nullptr, true});
    auto textarea = new ArkUI_Node({ARKUI_NODE_TEXT_AREA, nullptr, true});
    float negativeFloat = -1.0f;
    int32_t negativeInt = -1;
    ArkUI_NumberValue value[] = {{.f32 = negativeFloat}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue value4[] = {{.f32 = 0.0f}, {.i32 = negativeInt}, {.i32 = negativeInt},
        {.i32 = negativeInt}};
    ArkUI_AttributeItem item4 = {value4, sizeof(value4) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    ArkUI_NumberValue valueEnum[] = {{.i32 = negativeInt}};
    ArkUI_AttributeItem itemEnum = {valueEnum, sizeof(valueEnum) / sizeof(ArkUI_NumberValue), nullptr, nullptr};

    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_CARET_COLOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_CARET_STYLE, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_SHOW_UNDERLINE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_SHOW_UNDERLINE, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_MAX_LENGTH, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_MAX_LENGTH, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_ENTER_KEY_TYPE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_ENTER_KEY_TYPE, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_PLACEHOLDER_COLOR, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(
        textinput, NODE_TEXT_INPUT_PLACEHOLDER_FONT, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(
        textinput, NODE_TEXT_INPUT_PLACEHOLDER_FONT, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_ENABLE_KEYBOARD_ON_FOCUS, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_ENABLE_KEYBOARD_ON_FOCUS, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_TYPE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_TYPE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_SELECTED_BACKGROUND_COLOR, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_SHOW_PASSWORD_ICON, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_SHOW_PASSWORD_ICON, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_EDITING, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_EDITING, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_CANCEL_BUTTON, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_CANCEL_BUTTON, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_TEXT_SELECTION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_UNDERLINE_COLOR, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_ENABLE_AUTO_FILL, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_CONTENT_TYPE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_SELECT_ALL, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_STYLE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_CARET_OFFSET, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_SELECTION_MENU_HIDDEN, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_SELECTION_MENU_HIDDEN, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_BLUR_ON_SUBMIT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_CUSTOM_KEYBOARD, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_WORD_BREAK, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_SHOW_KEYBOARD_ON_FOCUS, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_NUMBER_OF_LINES, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);

    EXPECT_EQ(nodeAPI->setAttribute(
        textarea, NODE_TEXT_AREA_PLACEHOLDER_FONT, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(
        textarea, NODE_TEXT_AREA_PLACEHOLDER_FONT, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(
        textarea, NODE_TEXT_AREA_PLACEHOLDER_FONT, &item4), ARKUI_ERROR_CODE_PARAM_INVALID);
    value4[1].i32 = ARKUI_FONT_STYLE_ITALIC;
    EXPECT_EQ(nodeAPI->setAttribute(
        textarea, NODE_TEXT_AREA_PLACEHOLDER_FONT, &item4), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(
        textinput, NODE_TEXT_INPUT_PLACEHOLDER_FONT, &item4), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textarea, NODE_TEXT_AREA_EDITING, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textarea, NODE_TEXT_AREA_TYPE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textarea, NODE_TEXT_AREA_SHOW_COUNTER, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    value4[0].i32 = negativeInt;
    EXPECT_EQ(nodeAPI->setAttribute(textarea, NODE_TEXT_AREA_SHOW_COUNTER, &item4), ARKUI_ERROR_CODE_PARAM_INVALID);
    value4[0].i32 = 0;
    value4[1].f32 = negativeFloat;
    EXPECT_EQ(nodeAPI->setAttribute(textarea, NODE_TEXT_AREA_SHOW_COUNTER, &item4), ARKUI_ERROR_CODE_PARAM_INVALID);
    value4[1].f32 = 1.0f;
    value4[2].i32 = negativeInt;
    EXPECT_EQ(nodeAPI->setAttribute(textarea, NODE_TEXT_AREA_SHOW_COUNTER, &item4), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(textarea, NODE_TEXT_AREA_CUSTOM_KEYBOARD, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(
        textarea, NODE_TEXT_AREA_SELECTION_MENU_HIDDEN, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(
        textarea, NODE_TEXT_AREA_SELECTION_MENU_HIDDEN, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    ArkUI_NumberValue scrollBar[] = {{.i32 = ArkUI_BarState::ARKUI_BAR_STATE_OFF}};
    ArkUI_AttributeItem scrollBarItem = {scrollBar, sizeof(scrollBar) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(
        textarea, NODE_TEXT_AREA_BAR_STATE, &scrollBarItem), ARKUI_ERROR_CODE_NO_ERROR);
    scrollBarItem = {scrollBar, 0, nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(
        textarea, NODE_TEXT_AREA_BAR_STATE, &scrollBarItem), ARKUI_ERROR_CODE_PARAM_INVALID);
    ArkUI_NumberValue textAreaBar[] = { { .i32 = 3 } };
    ArkUI_AttributeItem textAreaBarItem = { textAreaBar, sizeof(textAreaBar) / sizeof(ArkUI_NumberValue), nullptr,
        nullptr };
    EXPECT_EQ(nodeAPI->setAttribute(
        textarea, NODE_TEXT_AREA_BAR_STATE, &textAreaBarItem), ARKUI_ERROR_CODE_PARAM_INVALID);
    textAreaBar[0].i32 = negativeInt;
    textAreaBarItem = { textAreaBar, sizeof(textAreaBar) / sizeof(ArkUI_NumberValue), nullptr, nullptr };
    EXPECT_EQ(nodeAPI->setAttribute(
        textarea, NODE_TEXT_AREA_BAR_STATE, &textAreaBarItem), ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(textinput);
    nodeAPI->disposeNode(textarea);
}

/**
 * @tc.name: NativeNodeTest040
 * @tc.desc: Test abnormalInputForWaterflow function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest040, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_WATER_FLOW);
    float negativeFloat = -1.0f;
    ArkUI_NumberValue value[] = {{.f32 = negativeFloat}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_COLUMN_GAP, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_ROW_GAP, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest041
 * @tc.desc: Test abnormalInputForGrid function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest041, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_GRID);
    float negativeFloat = -1.0f;
    ArkUI_NumberValue value[] = {{.f32 = negativeFloat}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_GRID_COLUMN_GAP, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_GRID_ROW_GAP, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest042
 * @tc.desc: Test abnormalInputForSpan function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest042, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_SPAN);
    float negativeFloat = -1.0f;
    ArkUI_NumberValue value[] = {{.f32 = negativeFloat}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue value4[] = {{.f32 = negativeFloat}, {.f32 = negativeFloat}, {.f32 = negativeFloat},
        {.f32 = negativeFloat}};
    ArkUI_AttributeItem item4 = {value4, sizeof(value4) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SPAN_CONTENT, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SPAN_TEXT_BACKGROUND_STYLE, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SPAN_TEXT_BACKGROUND_STYLE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SPAN_TEXT_BACKGROUND_STYLE, &item4), ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest043
 * @tc.desc: Test abnormalInputForImageSpan function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest043, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_IMAGE_SPAN, nullptr, true});
    int32_t negativeInt = -1;
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue valueEnum[] = {{.i32 = negativeInt}};
    ArkUI_AttributeItem itemEnum = {valueEnum, sizeof(valueEnum) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_SPAN_SRC, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_SPAN_VERTICAL_ALIGNMENT, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_SPAN_VERTICAL_ALIGNMENT, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_SPAN_ALT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest044
 * @tc.desc: Test abnormalInputForImage function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest044, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_IMAGE, nullptr, true});
    int32_t negativeInt = -1;
    int32_t illegalFitValue = 20; // 20 means ObjectFitEnum illegal value
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue valueEnum[] = {{.i32 = negativeInt}};
    ArkUI_AttributeItem itemEnum = {valueEnum, sizeof(valueEnum) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    ArkUI_NumberValue illegalValue[] = {{.i32 = illegalFitValue}};
    ArkUI_AttributeItem illegalItemEnum = {illegalValue,
        sizeof(illegalValue) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_SRC, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_OBJECT_FIT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_OBJECT_FIT, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_OBJECT_FIT, &illegalItemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_INTERPOLATION, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_INTERPOLATION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_OBJECT_REPEAT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_OBJECT_REPEAT, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_COLOR_FILTER, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_AUTO_RESIZE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_ALT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_DRAGGABLE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_RENDER_MODE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_RENDER_MODE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_FIT_ORIGINAL_SIZE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_FIT_ORIGINAL_SIZE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_FILL_COLOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_RESIZABLE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest045
 * @tc.desc: Test abnormalInputForToggle function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest045, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_TOGGLE);
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TOGGLE_SELECTED_COLOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TOGGLE_SWITCH_POINT_COLOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TOGGLE_VALUE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TOGGLE_UNSELECTED_COLOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest046
 * @tc.desc: Test abnormalInputForLoadingProgress function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest046, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_LOADING_PROGRESS);
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LOADING_PROGRESS_COLOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LOADING_PROGRESS_ENABLE_LOADING, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest047
 * @tc.desc: Test abnormalInputForButton function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest047, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_BUTTON, nullptr, true});
    int32_t negativeInt = -1;
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue valueEnum[] = {{.i32 = negativeInt}};
    ArkUI_AttributeItem itemEnum = {valueEnum, sizeof(valueEnum) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BUTTON_LABEL, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BUTTON_LABEL, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BUTTON_TYPE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_BUTTON_TYPE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest048
 * @tc.desc: Test abnormalInputForProgress function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest048, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_PROGRESS);
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue value[] = {{.f32 = -1.0f}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_PROGRESS_VALUE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_PROGRESS_VALUE, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_PROGRESS_TOTAL, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_PROGRESS_TOTAL, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_PROGRESS_COLOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_PROGRESS_TYPE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    value[0].i32 = -1;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_PROGRESS_TYPE, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest049
 * @tc.desc: Test abnormalInputForCheckbox function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest049, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_CHECKBOX);
    uint32_t color = 0xFFFF0000;
    float negativeFloat = -1.0f;
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue value[] = {{.i32 = -1}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    ArkUI_NumberValue mark[] = {{.u32 = color}, {.f32 = negativeFloat}, {.f32 = negativeFloat}};
    ArkUI_AttributeItem markItem = {mark, sizeof(mark) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CHECKBOX_SELECT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CHECKBOX_SELECT, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CHECKBOX_SELECT_COLOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CHECKBOX_UNSELECT_COLOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CHECKBOX_MARK, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CHECKBOX_MARK, &markItem), ARKUI_ERROR_CODE_PARAM_INVALID);
    mark[1].f32 = 0.0f;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CHECKBOX_MARK, &markItem), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CHECKBOX_SHAPE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CHECKBOX_SHAPE, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest050
 * @tc.desc: Test abnormalInputForXComponent function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest050, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_XCOMPONENT);
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue value[] = {{.i32 = -1}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_XCOMPONENT_ID, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_XCOMPONENT_ID, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_XCOMPONENT_TYPE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_XCOMPONENT_TYPE, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_XCOMPONENT_SURFACE_SIZE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest051
 * @tc.desc: Test abnormalInputForDatePicker function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest051, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    float negativeFloat = -1.0f;
    int32_t negativeInt = -1;
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue value[] = {{.f32 = negativeFloat}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), "test", nullptr};
    ArkUI_NumberValue valueEnum[] = {{.i32 = negativeInt}};
    ArkUI_AttributeItem itemEnum = {valueEnum, sizeof(valueEnum) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_LUNAR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_LUNAR, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_START, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_START, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_END, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_END, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_SELECTED, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_SELECTED, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_DISAPPEAR_TEXT_STYLE, &item),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_DISAPPEAR_TEXT_STYLE, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_TEXT_STYLE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_TEXT_STYLE, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_SELECTED_TEXT_STYLE, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_SELECTED_TEXT_STYLE, &item),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    item.string = "test;10;normal;test;italic";
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_SELECTED_TEXT_STYLE, &item),
        ARKUI_ERROR_CODE_NO_ERROR);
    item.string = "#ff182431;test;normal;test;italic";
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_SELECTED_TEXT_STYLE, &item),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_TEXT_STYLE, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_DATE_PICKER_DISAPPEAR_TEXT_STYLE, &item),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest052
 * @tc.desc: Test abnormalInputForTimePicker function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest052, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    float negativeFloat = -1.0f;
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue value[] = {{.f32 = negativeFloat}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), "test", nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TIME_PICKER_SELECTED, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TIME_PICKER_SELECTED, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TIME_PICKER_USE_MILITARY_TIME, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TIME_PICKER_DISAPPEAR_TEXT_STYLE, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TIME_PICKER_DISAPPEAR_TEXT_STYLE, &item),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TIME_PICKER_TEXT_STYLE, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TIME_PICKER_TEXT_STYLE, &item),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TIME_PICKER_SELECTED_TEXT_STYLE, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TIME_PICKER_SELECTED_TEXT_STYLE, &item),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    item.string = "#ff182431;test;normal;test;italic";
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TIME_PICKER_SELECTED_TEXT_STYLE, &item),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TIME_PICKER_TEXT_STYLE, &item),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TIME_PICKER_DISAPPEAR_TEXT_STYLE, &item),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    item.string = "50-60";
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TIME_PICKER_SELECTED, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    item.string = "10-60";
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TIME_PICKER_SELECTED, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest053
 * @tc.desc: Test abnormalInputForTextPicker function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest053, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue value[] = {{.i32 = ARKUI_TEXTPICKER_RANGETYPE_SINGLE}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_OPTION_RANGE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_OPTION_RANGE, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_OPTION_SELECTED, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_OPTION_VALUE, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_DISAPPEAR_TEXT_STYLE, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_TEXT_STYLE, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_SELECTED_TEXT_STYLE, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_SELECTED_INDEX, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_CAN_LOOP, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_DEFAULT_PICKER_ITEM_HEIGHT, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    item.string = "test";
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_DISAPPEAR_TEXT_STYLE, &item),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_TEXT_STYLE, &item),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_SELECTED_TEXT_STYLE, &item),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    item.string = "#ff182431;test;normal;test;italic";
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_DISAPPEAR_TEXT_STYLE, &item),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_TEXT_STYLE, &item),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_PICKER_SELECTED_TEXT_STYLE, &item),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest054
 * @tc.desc: Test abnormalInputForCalendarPicker function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest054, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_CALENDAR_PICKER);
    float negativeFloat = -1.0f;
    int32_t negativeInt = -1;
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue value[] = {{.f32 = negativeFloat}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    ArkUI_NumberValue value3[] = {{.u32 = 2024}, {.u32 = 13}, {.u32 = 1}};
    ArkUI_AttributeItem item3 = {value3, sizeof(value3) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CALENDAR_PICKER_HINT_RADIUS, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CALENDAR_PICKER_HINT_RADIUS, &item),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CALENDAR_PICKER_SELECTED_DATE, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CALENDAR_PICKER_SELECTED_DATE, &item3),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    value3[1].u32 = 12;
    value3[2].u32 = 40;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CALENDAR_PICKER_SELECTED_DATE, &item3),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CALENDAR_PICKER_EDGE_ALIGNMENT, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    value[0].i32 = negativeInt;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CALENDAR_PICKER_EDGE_ALIGNMENT, &item),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CALENDAR_PICKER_TEXT_STYLE, &item0),
        ARKUI_ERROR_CODE_NO_ERROR);
    value3[1].f32 = negativeFloat;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CALENDAR_PICKER_TEXT_STYLE, &item3),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    value3[1].f32 = 1.0f;
    value3[2].i32 = negativeInt;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_CALENDAR_PICKER_TEXT_STYLE, &item3),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest055
 * @tc.desc: Test abnormalInputForSlider function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest055, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_SLIDER);
    float negativeFloat = -1.0f;
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue value[] = {{.i32 = ARKUI_SLIDER_BLOCK_STYLE_IMAGE }, {.i32 = ARKUI_CLIP_TYPE_PATH},
        {.f32 = negativeFloat}, {.f32 = negativeFloat}, {.f32 = negativeFloat}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_BLOCK_COLOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_TRACK_COLOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_SELECTED_COLOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_SHOW_STEPS, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_VALUE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_MIN_VALUE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_MAX_VALUE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_STEP, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_DIRECTION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_REVERSE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_STYLE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_TRACK_THICKNESS, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_BLOCK_STYLE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_BLOCK_STYLE, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    value[0].i32 = ARKUI_SLIDER_BLOCK_STYLE_SHAPE;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_BLOCK_STYLE, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    value[1].i32 = ARKUI_CLIP_TYPE_RECTANGLE;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_BLOCK_STYLE, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    value[0].i32 = -1;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_SHOW_STEPS, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_DIRECTION, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_REVERSE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_STYLE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    value[0].f32 = -1.0f;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_STEP, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_TRACK_THICKNESS, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest056
 * @tc.desc: Test abnormalInputForRadio function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest056, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_RADIO);
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue value[] = {{.i32 = -1 }};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_RADIO_CHECKED, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_RADIO_CHECKED, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_RADIO_STYLE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_RADIO_VALUE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_RADIO_GROUP, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    item0.size = -1;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_RADIO_STYLE, &item0), ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest057
 * @tc.desc: Test abnormalInputForStack function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest057, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_STACK_ALIGN_CONTENT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest058
 * @tc.desc: Test abnormalInputForScroll function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest058, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_SCROLL);
    float negativeFloat = -1.0f;
    int32_t negativeInt = -1;
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue value[] = {{.i32 = negativeInt }, {.i32 = negativeInt},
        {.i32 = negativeInt}, {.f32 = negativeFloat}, {.f32 = negativeFloat}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_BAR_DISPLAY_MODE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_BAR_WIDTH, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_BAR_COLOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_SCROLL_DIRECTION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_SCROLL_DIRECTION, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_EDGE_EFFECT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_EDGE_EFFECT, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_ENABLE_SCROLL_INTERACTION, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_ENABLE_SCROLL_INTERACTION, &item),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_FRICTION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_SNAP, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_SNAP, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    value[0].i32 = ARKUI_SCROLL_SNAP_ALIGN_NONE;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_SNAP, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    value[1].i32 = true;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_SNAP, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    value[2].i32 = true;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_SNAP, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_NESTED_SCROLL, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    value[0].i32 = negativeInt;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_NESTED_SCROLL, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    value[0].i32 = ARKUI_SCROLL_NESTED_MODE_SELF_ONLY;
    value[1].i32 = negativeInt;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_NESTED_SCROLL, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_EDGE_EFFECT, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_OFFSET, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_EDGE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_ENABLE_PAGING, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    value[0].i32 = negativeInt;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_ENABLE_PAGING, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_PAGE, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_PAGE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_BY, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    value[0].f32 = negativeFloat;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SCROLL_FRICTION, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest059
 * @tc.desc: Test abnormalInputForList function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest059, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_LIST, nullptr, true});
    auto childNode = new ArkUI_Node({ARKUI_NODE_LIST_ITEM, nullptr, true});
    auto childNodeNew = new ArkUI_Node({ARKUI_NODE_LIST_ITEM, nullptr, true});
    auto groupNode = new ArkUI_Node({ARKUI_NODE_LIST_ITEM_GROUP, nullptr, true});

    nodeAPI->insertChildAt(rootNode, groupNode, 0);
    nodeAPI->insertChildAfter(groupNode, childNodeNew, nullptr);
    nodeAPI->insertChildBefore(groupNode, childNode, childNodeNew);
    float negativeFloat = -1.0f;
    int32_t negativeInt = -1;
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue value[] = {{.i32 = negativeInt }, {.i32 = negativeInt},
        {.i32 = negativeInt}, {.f32 = negativeFloat}, {.f32 = negativeFloat}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    ArkUI_NumberValue valueEnum[] = {{.i32 = negativeInt}};
    ArkUI_AttributeItem itemEnum = {valueEnum, 1, nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_DIRECTION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_DIRECTION, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_STICKY, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_STICKY, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_SPACE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    value[0].f32 = negativeFloat;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_SPACE, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_NODE_ADAPTER, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_NODE_ADAPTER, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_CACHED_COUNT, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_CACHED_COUNT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_CACHED_COUNT, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_SCROLL_TO_INDEX, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_ALIGN_LIST_ITEM, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_ALIGN_LIST_ITEM, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_ALIGN_LIST_ITEM, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_CHILDREN_MAIN_SIZE, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_CHILDREN_MAIN_SIZE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_INITIAL_INDEX, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_INITIAL_INDEX, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_INITIAL_INDEX, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_DIVIDER, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    value[1].f32 = negativeFloat;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_DIVIDER, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(groupNode, NODE_LIST_ITEM_GROUP_SET_DIVIDER, &item),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    value[1].f32 = 0.0f;
    value[2].f32 = negativeFloat;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_DIVIDER, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(groupNode, NODE_LIST_ITEM_GROUP_SET_DIVIDER, &item),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    value[2].f32 = 0.0f;
    value[3].f32 = negativeFloat;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_LIST_DIVIDER, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(groupNode, NODE_LIST_ITEM_GROUP_SET_DIVIDER, &item),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(childNode, NODE_LIST_ITEM_SWIPE_ACTION, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(childNode, NODE_LIST_ITEM_SWIPE_ACTION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(groupNode, NODE_LIST_ITEM_GROUP_SET_HEADER, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(groupNode, NODE_LIST_ITEM_GROUP_SET_FOOTER, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(groupNode, NODE_LIST_ITEM_GROUP_SET_DIVIDER, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(groupNode, NODE_LIST_ITEM_GROUP_CHILDREN_MAIN_SIZE, nullptr),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(groupNode, NODE_LIST_ITEM_GROUP_CHILDREN_MAIN_SIZE, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->removeChild(groupNode, childNode);
    nodeAPI->disposeNode(rootNode);
    nodeAPI->disposeNode(groupNode);
    nodeAPI->disposeNode(childNode);
}

/**
 * @tc.name: NativeNodeTest060
 * @tc.desc: Test abnormalInputForSwiper function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest060, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_SWIPER, nullptr, true});
    float negativeFloat = -1.0f;
    int32_t negativeInt = -1;
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue valueEnum[] = {{.i32 = negativeInt}};
    ArkUI_AttributeItem itemEnum = {valueEnum, 1, nullptr, nullptr};
    ArkUI_NumberValue valueFloat[] = {{.f32 = negativeFloat}};
    ArkUI_AttributeItem itemFloat = {valueFloat, 1, nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_LOOP, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_LOOP, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_AUTO_PLAY, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_AUTO_PLAY, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_SHOW_INDICATOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_SHOW_INDICATOR, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_INTERVAL, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_INTERVAL, &itemFloat), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_VERTICAL, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_VERTICAL, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_DURATION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_DURATION, &itemFloat), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_CURVE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_CURVE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_ITEM_SPACE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_ITEM_SPACE, &itemFloat), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_INDEX, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_INDEX, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_DISPLAY_COUNT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_DISABLE_SWIPE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_DISABLE_SWIPE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_SHOW_DISPLAY_ARROW, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_SHOW_DISPLAY_ARROW, &itemFloat),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_EDGE_EFFECT_MODE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_EDGE_EFFECT_MODE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_NODE_ADAPTER, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_NODE_ADAPTER, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_CACHED_COUNT, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_CACHED_COUNT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_CACHED_COUNT, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_PREV_MARGIN, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_PREV_MARGIN, &itemFloat), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_NEXT_MARGIN, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_NEXT_MARGIN, &itemFloat), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_INDICATOR, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_INDICATOR, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_INDICATOR_INTERACTIVE, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_NESTED_SCROLL, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_NESTED_SCROLL, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_SWIPE_TO_INDEX, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    valueEnum[0].i32 = ARKUI_SWIPER_INDICATOR_TYPE_DOT;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SWIPER_INDICATOR, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest061
 * @tc.desc: Test abnormalInputForColumn function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest061, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_COLUMN);
    int32_t negativeInt = -1;
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue valueEnum[] = {{.i32 = negativeInt}};
    ArkUI_AttributeItem itemEnum = {valueEnum, 1, nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_COLUMN_ALIGN_ITEMS, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_COLUMN_ALIGN_ITEMS, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_COLUMN_JUSTIFY_CONTENT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_COLUMN_JUSTIFY_CONTENT, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest062
 * @tc.desc: Test abnormalInputForRow function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest062, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_ROW);
    ASSERT_NE(rootNode, nullptr);
    int32_t negativeInt = -1;
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue valueEnum[] = {{.i32 = negativeInt}};
    ArkUI_AttributeItem itemEnum = {valueEnum, 1, nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ROW_ALIGN_ITEMS, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ROW_ALIGN_ITEMS, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ROW_JUSTIFY_CONTENT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_ROW_JUSTIFY_CONTENT, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest063
 * @tc.desc: Test abnormalInputForRefresh function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest063, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_REFRESH);
    ASSERT_NE(rootNode, nullptr);
    float negativeFloat = -1.0f;
    int32_t negativeInt = -1;
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue valueEnum[] = {{.i32 = negativeInt}};
    ArkUI_AttributeItem itemEnum = {valueEnum, 1, nullptr, nullptr};
    ArkUI_NumberValue valueFloat[] = {{.f32 = negativeFloat}};
    ArkUI_AttributeItem itemFloat = {valueFloat, 1, nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_REFRESH_REFRESHING, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_REFRESH_REFRESHING, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_REFRESH_CONTENT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_REFRESH_PULL_DOWN_RATIO, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_REFRESH_PULL_DOWN_RATIO, &itemFloat),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_REFRESH_OFFSET, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_REFRESH_OFFSET, &itemFloat), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_REFRESH_PULL_TO_REFRESH, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_REFRESH_PULL_TO_REFRESH, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    valueFloat[0].f32 = 2.0f;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_REFRESH_PULL_DOWN_RATIO, &itemFloat),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest064
 * @tc.desc: Test abnormalInputForWaterflow function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest064, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_WATER_FLOW);
    ASSERT_NE(rootNode, nullptr);
    float negativeFloat = -1.0f;
    int32_t negativeInt = -1;
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue valueEnum[] = {{.i32 = negativeInt}};
    ArkUI_AttributeItem itemEnum = {valueEnum, 1, nullptr, nullptr};
    ArkUI_NumberValue valueFloat[] = {{.f32 = negativeFloat}, {.f32 = negativeFloat}, {.f32 = negativeFloat},
        {.f32 = negativeFloat}};
    ArkUI_AttributeItem itemFloat = {valueFloat, sizeof(valueFloat) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_LAYOUT_DIRECTION, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_LAYOUT_DIRECTION, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_COLUMN_TEMPLATE, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_ROW_TEMPLATE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_COLUMN_GAP, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_COLUMN_GAP, &itemFloat), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_ROW_GAP, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_ROW_GAP, &itemFloat), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_SECTION_OPTION, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_SECTION_OPTION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_SECTION_OPTION, &itemFloat),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_NODE_ADAPTER, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_NODE_ADAPTER, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_CACHED_COUNT, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_CACHED_COUNT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_CACHED_COUNT, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_FOOTER, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_SCROLL_TO_INDEX, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_ITEM_CONSTRAINT_SIZE, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_ITEM_CONSTRAINT_SIZE, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_ITEM_CONSTRAINT_SIZE, &itemFloat),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_LAYOUT_MODE, &itemFloat),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_LAYOUT_MODE, &item0),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_LAYOUT_MODE, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_LAYOUT_MODE, nullptr),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    ArkUI_NumberValue layoutModeV[] = {{.i32 = ArkUI_WaterFlowLayoutMode::ARKUI_WATER_FLOW_LAYOUT_MODE_SLIDING_WINDOW}};
    ArkUI_AttributeItem layoutModeAttr = {layoutModeV, 1, nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_WATER_FLOW_LAYOUT_MODE, &layoutModeAttr), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->getAttribute(rootNode, NODE_WATER_FLOW_LAYOUT_MODE)->value->i32,
        ArkUI_WaterFlowLayoutMode::ARKUI_WATER_FLOW_LAYOUT_MODE_SLIDING_WINDOW);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest065
 * @tc.desc: Test abnormalInputForGrid function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest065, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_GRID);
    ASSERT_NE(rootNode, nullptr);
    float negativeFloat = -1.0f;
    int32_t negativeInt = -1;
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue valueEnum[] = {{.i32 = negativeInt}};
    ArkUI_AttributeItem itemEnum = {valueEnum, 1, nullptr, nullptr};
    ArkUI_NumberValue valueFloat[] = {{.f32 = negativeFloat}, {.f32 = negativeFloat}, {.f32 = negativeFloat},
        {.f32 = negativeFloat}};
    ArkUI_AttributeItem itemFloat = {valueFloat, sizeof(valueFloat) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_GRID_COLUMN_TEMPLATE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_GRID_ROW_TEMPLATE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_GRID_COLUMN_GAP, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_GRID_COLUMN_GAP, &itemFloat), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_GRID_ROW_GAP, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_GRID_ROW_GAP, &itemFloat), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_GRID_NODE_ADAPTER, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_GRID_NODE_ADAPTER, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_GRID_CACHED_COUNT, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_GRID_CACHED_COUNT, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_GRID_CACHED_COUNT, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest066
 * @tc.desc: Test abnormalInputForImageAnimator function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest066, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_IMAGE_ANIMATOR);
    ASSERT_NE(rootNode, nullptr);
    int32_t negativeInt = -1;
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue valueEnum[] = {{.i32 = negativeInt}};
    ArkUI_AttributeItem itemEnum = {valueEnum, 1, nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_ANIMATOR_IMAGES, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_ANIMATOR_IMAGES, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_ANIMATOR_STATE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_ANIMATOR_STATE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_ANIMATOR_DURATION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_ANIMATOR_REVERSE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_ANIMATOR_REVERSE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_ANIMATOR_FIXED_SIZE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_ANIMATOR_FIXED_SIZE, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_ANIMATOR_FILL_MODE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_ANIMATOR_FILL_MODE, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_ANIMATOR_ITERATION, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    valueEnum[0].i32 = 4;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_ANIMATOR_STATE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_ANIMATOR_REVERSE, &itemEnum), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_ANIMATOR_FIXED_SIZE, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_ANIMATOR_FILL_MODE, &itemEnum),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest067
 * @tc.desc: Test attributeAbnormal function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest067, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    int32_t abnormalType = static_cast<int32_t>(ARKUI_NODE_EMBEDDED_COMPONENT) + 1;
    EXPECT_EQ(nodeAPI->createNode(static_cast<ArkUI_NodeType>(abnormalType)), nullptr);
    nodeAPI->disposeNode(nullptr);
    EXPECT_EQ(nodeAPI->addChild(nullptr, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->removeChild(nullptr, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->insertChildAfter(nullptr, nullptr, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->insertChildBefore(nullptr, nullptr, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->insertChildAt(nullptr, nullptr, 0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(nullptr, NODE_WIDTH, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->resetAttribute(nullptr, NODE_WIDTH), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->getAttribute(nullptr, NODE_WIDTH), nullptr);
    auto abnormalNode = new ArkUI_Node({-1, nullptr, true});
    EXPECT_EQ(nodeAPI->addChild(abnormalNode, abnormalNode), ARKUI_ERROR_CODE_NOT_SUPPROTED_FOR_ARKTS_NODE);
    EXPECT_EQ(nodeAPI->removeChild(abnormalNode, abnormalNode), ARKUI_ERROR_CODE_NOT_SUPPROTED_FOR_ARKTS_NODE);
    EXPECT_EQ(nodeAPI->insertChildAfter(abnormalNode, abnormalNode, nullptr),
        ARKUI_ERROR_CODE_NOT_SUPPROTED_FOR_ARKTS_NODE);
    EXPECT_EQ(nodeAPI->insertChildBefore(abnormalNode, abnormalNode, nullptr),
        ARKUI_ERROR_CODE_NOT_SUPPROTED_FOR_ARKTS_NODE);
    EXPECT_EQ(nodeAPI->insertChildAt(abnormalNode, abnormalNode, 0), ARKUI_ERROR_CODE_NOT_SUPPROTED_FOR_ARKTS_NODE);
    EXPECT_EQ(nodeAPI->setAttribute(abnormalNode, NODE_WIDTH, nullptr), ARKUI_ERROR_CODE_NOT_SUPPROTED_FOR_ARKTS_NODE);
    EXPECT_EQ(nodeAPI->resetAttribute(abnormalNode, NODE_WIDTH), ARKUI_ERROR_CODE_NOT_SUPPROTED_FOR_ARKTS_NODE);
    int32_t abnormalAttribute = 999 * MAX_NODE_SCOPE_NUM;
    auto node = nodeAPI->createNode(ARKUI_NODE_STACK);
    EXPECT_EQ(nodeAPI->setAttribute(node, static_cast<ArkUI_NodeAttributeType>(abnormalAttribute), nullptr),
        ARKUI_ERROR_CODE_ATTRIBUTE_OR_EVENT_NOT_SUPPORTED);
    EXPECT_EQ(nodeAPI->resetAttribute(node, static_cast<ArkUI_NodeAttributeType>(abnormalAttribute)),
        ARKUI_ERROR_CODE_ATTRIBUTE_OR_EVENT_NOT_SUPPORTED);
    EXPECT_EQ(nodeAPI->getAttribute(node, static_cast<ArkUI_NodeAttributeType>(abnormalAttribute)), nullptr);
    for (int32_t i = 0; i <= static_cast<int32_t>(ARKUI_NODE_IMAGE_ANIMATOR); i++) {
        abnormalAttribute = (i + 1) * MAX_NODE_SCOPE_NUM - 1;
        EXPECT_EQ(nodeAPI->setAttribute(node, static_cast<ArkUI_NodeAttributeType>(abnormalAttribute), nullptr),
            ARKUI_ERROR_CODE_ATTRIBUTE_OR_EVENT_NOT_SUPPORTED);
        EXPECT_EQ(nodeAPI->resetAttribute(node, static_cast<ArkUI_NodeAttributeType>(abnormalAttribute)),
            ARKUI_ERROR_CODE_NO_ERROR);
        if (i == ARKUI_NODE_DATE_PICKER || i == ARKUI_NODE_TEXT_PICKER || i == ARKUI_NODE_TIME_PICKER ||
            i == ARKUI_NODE_LOADING_PROGRESS) {
            EXPECT_NE(nodeAPI->getAttribute(node, static_cast<ArkUI_NodeAttributeType>(abnormalAttribute)), nullptr);
        } else {
            EXPECT_EQ(nodeAPI->getAttribute(node, static_cast<ArkUI_NodeAttributeType>(abnormalAttribute)), nullptr);
        }
    }
    for (int32_t j = static_cast<int32_t>(ARKUI_NODE_STACK); j < static_cast<int32_t>(ARKUI_NODE_GRID_ITEM); j++) {
        abnormalAttribute = (j + 1) * MAX_NODE_SCOPE_NUM - 1;
        if (j == ARKUI_NODE_FLOW_ITEM) {
            EXPECT_EQ(nodeAPI->setAttribute(node, static_cast<ArkUI_NodeAttributeType>(abnormalAttribute), nullptr),
                ARKUI_ERROR_CODE_PARAM_INVALID);
            EXPECT_EQ(nodeAPI->resetAttribute(node, static_cast<ArkUI_NodeAttributeType>(abnormalAttribute)),
                ARKUI_ERROR_CODE_PARAM_INVALID);
            EXPECT_EQ(nodeAPI->getAttribute(node, static_cast<ArkUI_NodeAttributeType>(abnormalAttribute)), nullptr);
        } else {
            EXPECT_EQ(nodeAPI->setAttribute(node, static_cast<ArkUI_NodeAttributeType>(abnormalAttribute), nullptr),
                ARKUI_ERROR_CODE_ATTRIBUTE_OR_EVENT_NOT_SUPPORTED);
            EXPECT_EQ(nodeAPI->resetAttribute(node, static_cast<ArkUI_NodeAttributeType>(abnormalAttribute)),
                ARKUI_ERROR_CODE_NO_ERROR);
            if (j == ARKUI_NODE_LIST) {
                EXPECT_NE(nodeAPI->getAttribute(
                    node, static_cast<ArkUI_NodeAttributeType>(abnormalAttribute)), nullptr);
            } else {
                EXPECT_EQ(nodeAPI->getAttribute(
                    node, static_cast<ArkUI_NodeAttributeType>(abnormalAttribute)), nullptr);
            }
        }
    }
    delete abnormalNode;
    abnormalNode = nullptr;
    nodeAPI->disposeNode(node);
}

/**
 * @tc.name: NativeNodeTest068
 * @tc.desc: Test eventAbnormal function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest068, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto node = nodeAPI->createNode(ARKUI_NODE_STACK);
    EXPECT_EQ(nodeAPI->registerNodeEvent(nullptr, NODE_TOUCH_EVENT, 0, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->registerNodeEvent(
        node, static_cast<ArkUI_NodeEventType>(-1), 0, nullptr), ARKUI_ERROR_CODE_ATTRIBUTE_OR_EVENT_NOT_SUPPORTED);
    nodeAPI->unregisterNodeEvent(nullptr, NODE_TOUCH_EVENT);
    nodeAPI->unregisterNodeEvent(node, NODE_TOUCH_EVENT);
    nodeAPI->disposeNode(node);
}

/**
 * @tc.name: NativeNodeTest069
 * @tc.desc: Test lengthMetricUnit function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest069, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto node = nodeAPI->createNode(ARKUI_NODE_STACK);
    EXPECT_EQ(nodeAPI->setLengthMetricUnit(nullptr, ARKUI_LENGTH_METRIC_UNIT_PX), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setLengthMetricUnit(node, static_cast<ArkUI_LengthMetricUnit>(-2)),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setLengthMetricUnit(node, ARKUI_LENGTH_METRIC_UNIT_PX), ARKUI_ERROR_CODE_NO_ERROR);
    ArkUI_NumberValue value[] = {{.f32 = 10.0f}, {.f32 = 10.0f}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(node, NODE_WIDTH, &item);
    nodeAPI->setLengthMetricUnit(node, ARKUI_LENGTH_METRIC_UNIT_FP);
    EXPECT_EQ(nodeAPI->setAttribute(node, NODE_SCROLL_BY, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(node);
}

/**
 * @tc.name: NativeNodeTest070
 * @tc.desc: Test convertEvent function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest070, TestSize.Level1)
{
    ArkUINodeEvent origin;
    ArkUI_NodeEvent event;
    ArkUI_CompatibleNodeEvent compatibleEvent;
    const std::string str = "test";
    origin.kind = ArkUIEventCategory::COMPONENT_ASYNC_EVENT;
    origin.componentAsyncEvent.subKind = ArkUIEventSubKind::ON_VISIBLE_AREA_CHANGE;
    origin.componentAsyncEvent.data[0].i32 = 0;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEvent(&origin, &event), true);
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEvent(&origin, &compatibleEvent), true);
    origin.kind = ArkUIEventCategory::TEXT_INPUT;
    origin.textInputEvent.subKind = ArkUIEventSubKind::ON_TEXT_INPUT_CHANGE;
    origin.textInputEvent.nativeStringPtr = reinterpret_cast<intptr_t>(str.c_str());
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEvent(&origin, &event), true);
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEvent(&origin, &compatibleEvent), true);
    origin.kind = ArkUIEventCategory::TOUCH_EVENT;
    origin.touchEvent.subKind = ArkUIEventSubKind::ON_TOUCH;
    origin.touchEvent.sourceType = 2;
    origin.touchEvent.action = 0;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEvent(&origin, &event), true);
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEvent(&origin, &compatibleEvent), true);
    origin.touchEvent.sourceType = 0;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEvent(&origin, &compatibleEvent), true);
    origin.touchEvent.action = 1;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEvent(&origin, &compatibleEvent), true);
    origin.touchEvent.action = 2;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEvent(&origin, &compatibleEvent), true);
    origin.touchEvent.action = 3;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEvent(&origin, &compatibleEvent), true);
    origin.touchEvent.action = 4;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEvent(&origin, &compatibleEvent), true);
    
    origin.kind = ArkUIEventCategory::MOUSE_INPUT_EVENT;
    origin.mouseEvent.subKind = ArkUIEventSubKind::ON_MOUSE;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEvent(&origin, &event), true);
    origin.kind = ArkUIEventCategory::MIXED_EVENT;
    origin.mouseEvent.subKind = ArkUIEventSubKind::ON_TEXT_AREA_WILL_INSERT;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEvent(&origin, &event), true);
    origin.kind = ArkUIEventCategory::INVALID;
    origin.mouseEvent.subKind = ArkUIEventSubKind::ON_TEXT_AREA_WILL_INSERT;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEvent(&origin, &event), false);
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEvent(&origin, &compatibleEvent), false);

    origin.kind = ArkUIEventCategory::DRAG_EVENT;
    origin.dragEvent.subKind = ArkUIEventSubKind::ON_DRAG_START;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEvent(&origin, &event), true);
    origin.kind = ArkUIEventCategory::KEY_INPUT_EVENT;
    origin.dragEvent.subKind = ArkUIEventSubKind::ON_KEY_PREIME;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEvent(&origin, &event), true);
    origin.kind = ArkUIEventCategory::FOCUS_AXIS_EVENT;
    origin.dragEvent.subKind = ArkUIEventSubKind::ON_FOCUS_AXIS;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEvent(&origin, &event), true);
    origin.kind = ArkUIEventCategory::TEXT_INPUT_CHANGE;
    origin.dragEvent.subKind = ArkUIEventSubKind::ON_TEXT_INPUT_CHANGE;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEvent(&origin, &event), true);
    origin.kind = ArkUIEventCategory::AXIS_EVENT;
    origin.dragEvent.subKind = ArkUIEventSubKind::ON_AXIS;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEvent(&origin, &event), true);
    origin.kind = ArkUIEventCategory::CLICK_EVENT;
    origin.dragEvent.subKind = ArkUIEventSubKind::ON_CLICK_EVENT;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEvent(&origin, &event), true);
    origin.kind = ArkUIEventCategory::HOVER_EVENT;
    origin.dragEvent.subKind = ArkUIEventSubKind::ON_HOVER_EVENT;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEvent(&origin, &event), true);
}

/**
 * @tc.name: NativeNodeTest071
 * @tc.desc: Test ConvertToCTouch function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest071, TestSize.Level1)
{
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertToCTouchActionType(0), 1);
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertToCTouchActionType(1), 3);
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertToCTouchActionType(2), 2);
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertToCTouchActionType(3), 0);
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertToCTouchActionType(-1), -1);

    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertToCInputEventToolType(1), 1);
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertToCInputEventToolType(2), 2);
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertToCInputEventToolType(7), 3);
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertToCInputEventToolType(9), 4);
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertToCInputEventToolType(0), 0);

    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertToCMouseActionType(1), 1);
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertToCMouseActionType(2), 2);
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertToCMouseActionType(3), 3);
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertToCMouseActionType(13), 13);
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertToCMouseActionType(0), 0);

    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertToCMouseEventButtonType(1), 1);
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertToCMouseEventButtonType(2), 2);
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertToCMouseEventButtonType(4), 3);
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertToCMouseEventButtonType(8), 4);
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertToCMouseEventButtonType(16), 5);
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertToCMouseEventButtonType(-1), 0);
}

/**
 * @tc.name: NativeNodeTest072
 * @tc.desc: Test convertEventResult function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest072, TestSize.Level1)
{
    ArkUINodeEvent event;
    ArkUI_CompatibleNodeEvent origin;
    origin.kind = ArkUI_NodeEventType::NODE_TOUCH_EVENT;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEventResult(&origin, &event), true);
    origin.kind = ArkUI_NodeEventType::NODE_ON_TOUCH_INTERCEPT;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEventResult(&origin, &event), true);
    origin.kind = ArkUI_NodeEventType::NODE_TEXT_INPUT_ON_CHANGE;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEventResult(&origin, &event), true);
    origin.kind = ArkUI_NodeEventType::NODE_TEXT_INPUT_ON_CUT;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEventResult(&origin, &event), true);
    origin.kind = ArkUI_NodeEventType::NODE_TEXT_INPUT_ON_PASTE;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEventResult(&origin, &event), true);
    origin.kind = ArkUI_NodeEventType::NODE_TEXT_AREA_ON_CHANGE;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEventResult(&origin, &event), true);
    origin.kind = ArkUI_NodeEventType::NODE_TEXT_AREA_ON_PASTE;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEventResult(&origin, &event), true);
    origin.kind = ArkUI_NodeEventType::NODE_EVENT_ON_APPEAR;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEventResult(&origin, &event), true);
    origin.kind = ArkUI_NodeEventType::NODE_TEXT_INPUT_ON_CHANGE_WITH_PREVIEW_TEXT;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEventResult(&origin, &event), true);
    origin.kind = ArkUI_NodeEventType::NODE_TEXT_AREA_ON_CHANGE_WITH_PREVIEW_TEXT;
    EXPECT_EQ(OHOS::Ace::NodeModel::ConvertEventResult(&origin, &event), true);
}

/**
 * @tc.name: NativeNodeTest073
 * @tc.desc: Test OH_ArkUI_NodeEvent_GetInputEvent function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest073, TestSize.Level1)
{
    ArkUI_NodeEvent event = { 1, 0 };
    event.origin = nullptr;
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetInputEvent(nullptr), nullptr);
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetInputEvent(nullptr), nullptr);
    event.category = 0;
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetInputEvent(&event), nullptr);
}

/**
 * @tc.name: NativeNodeTest074
 * @tc.desc: Test OH_ArkUI_NodeEvent_GetNodeComponentEvent function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest074, TestSize.Level1)
{
    ArkUI_NodeEvent event = { 0, 0 };
    event.origin = nullptr;
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetNodeComponentEvent(nullptr), nullptr);
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetNodeComponentEvent(&event), nullptr);
    event.category = 1;
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetNodeComponentEvent(&event), nullptr);
    ArkUINodeEvent origin = { 0, 0, 0};
    origin.componentAsyncEvent.subKind = ArkUIEventSubKind::ON_VISIBLE_AREA_CHANGE;
    origin.componentAsyncEvent.data[0].i32 = 0;
    event.origin = &origin;
    EXPECT_NE(OH_ArkUI_NodeEvent_GetNodeComponentEvent(&event), nullptr);
}

/**
 * @tc.name: NativeNodeTest075
 * @tc.desc: Test OH_ArkUI_NodeEvent_GetStringAsyncEvent function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest075, TestSize.Level1)
{
    ArkUI_NodeEvent event = { 0, 0 };
    event.origin = nullptr;
    const std::string str = "test";
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetStringAsyncEvent(nullptr), nullptr);
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetStringAsyncEvent(&event), nullptr);
    event.category = 2;
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetStringAsyncEvent(&event), nullptr);
    ArkUINodeEvent origin = { 0, 0, 0};
    origin.textInputEvent.subKind = ArkUIEventSubKind::ON_TEXT_INPUT_CHANGE;
    origin.textInputEvent.nativeStringPtr = reinterpret_cast<intptr_t>(str.c_str());
    event.origin = &origin;
    EXPECT_NE(OH_ArkUI_NodeEvent_GetStringAsyncEvent(&event), nullptr);
}

/**
 * @tc.name: NativeNodeTest076
 * @tc.desc: Test OH_ArkUI_NodeEvent_GetUserData function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest076, TestSize.Level1)
{
    ArkUI_NodeEvent event = { 0, 0 };
    event.userData = nullptr;
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetUserData(nullptr), nullptr);
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetUserData(&event), nullptr);
}

/**
 * @tc.name: NativeNodeTest077
 * @tc.desc: Test OH_ArkUI_NodeEvent_GetNumberValue function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest077, TestSize.Level1)
{
    ArkUI_NodeEvent event = { 0, 0 };
    event.origin = nullptr;
    int32_t index = 0;
    ArkUI_NumberValue value[] = {{.f32 = 10.0f}};
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetNumberValue(nullptr, index, value), 106108);
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetNumberValue(&event, index, value), 106108);
    event.category = 3;
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetNumberValue(&event, index, value), 106108);
    ArkUINodeEvent mixEvent;
    mixEvent.kind = ArkUIEventCategory::MIXED_EVENT;
    mixEvent.extraParam = reinterpret_cast<intptr_t>(nullptr);
    mixEvent.mixedEvent.subKind = ArkUIEventSubKind::ON_TEXT_AREA_WILL_INSERT;
    mixEvent.mixedEvent.numberData[0].f32 = 0.0f;
    mixEvent.mixedEvent.numberDataLength = 1;
    event.origin = &mixEvent;
    index = 2;
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetNumberValue(&event, index, value), 106107);
    index = -1;
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetNumberValue(&event, index, value), 106107);
    index = 0;
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetNumberValue(&event, index, value), ARKUI_ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: NativeNodeTest078
 * @tc.desc: Test OH_ArkUI_NodeEvent_GetStringValue function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest078, TestSize.Level1)
{
    ArkUI_NodeEvent event = { 0, 0 };
    event.origin = nullptr;
    int32_t index = 0;
    int32_t size = 0;
    char* value[size];
    const std::string str1 = "";
    const std::string str2 = "test";
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetStringValue(nullptr, index, value, &size), 106108);
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetStringValue(&event, index, value, &size), 106108);
    event.category = 3;
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetStringValue(&event, index, value, &size), 106108);
    ArkUINodeEvent mixEvent;
    mixEvent.kind = ArkUIEventCategory::MIXED_EVENT;
    mixEvent.extraParam = reinterpret_cast<intptr_t>(nullptr);
    mixEvent.mixedEvent.subKind = ArkUIEventSubKind::ON_TEXT_AREA_WILL_INSERT;
    mixEvent.mixedEvent.stringPtrData[0] = reinterpret_cast<intptr_t>(str1.c_str());
    mixEvent.mixedEvent.stringPtrDataLength = 1;
    event.origin = &mixEvent;
    index = 2;
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetStringValue(&event, index, value, &size), 106107);
    index = 0;
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetStringValue(&event, index, value, &size), 106108);
    mixEvent.mixedEvent.stringPtrData[0] = reinterpret_cast<intptr_t>(str2.c_str());
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetStringValue(&event, index, value, &size), 106108);
}

/**
 * @tc.name: NativeNodeTest079
 * @tc.desc: Test OH_ArkUI_NodeEvent_SetReturnNumberValue function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest079, TestSize.Level1)
{
    ArkUI_NodeEvent event = { 0, 0 };
    event.origin = nullptr;
    int32_t size = 1;
    ArkUI_NumberValue value[] = {{.i32 = 10}};
    EXPECT_EQ(OH_ArkUI_NodeEvent_SetReturnNumberValue(nullptr, value, size), 106108);
    EXPECT_EQ(OH_ArkUI_NodeEvent_SetReturnNumberValue(&event, value, size), 106108);
    event.category = 3;
    EXPECT_EQ(OH_ArkUI_NodeEvent_SetReturnNumberValue(&event, value, size), 106108);
    ArkUINodeEvent mixEvent;
    mixEvent.kind = ArkUIEventCategory::MIXED_EVENT;
    mixEvent.extraParam = reinterpret_cast<intptr_t>(nullptr);
    mixEvent.mixedEvent.subKind = ArkUIEventSubKind::ON_TEXT_AREA_WILL_INSERT;
    event.origin = &mixEvent;
    EXPECT_EQ(OH_ArkUI_NodeEvent_SetReturnNumberValue(&event, value, size), ARKUI_ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: NativeNodeTest080
 * @tc.desc: Test customSpanNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest080, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_CUSTOM_SPAN, nullptr, true});

    EXPECT_EQ(nodeAPI->registerNodeCustomEvent(
        rootNode, ARKUI_NODE_CUSTOM_EVENT_ON_MEASURE, 0, nullptr), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->registerNodeCustomEvent(
        rootNode, ARKUI_NODE_CUSTOM_EVENT_ON_DRAW, 1, nullptr), ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->unregisterNodeCustomEvent(rootNode, ARKUI_NODE_CUSTOM_EVENT_ON_MEASURE);
    nodeAPI->unregisterNodeCustomEvent(rootNode, ARKUI_NODE_CUSTOM_EVENT_ON_DRAW);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest081
 * @tc.desc: Test native style string.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest081, TestSize.Level1)
{
    OH_Drawing_TypographyStyle* style = OH_Drawing_CreateTypographyStyle();
    ArkUI_StyledString* styleString = OH_ArkUI_StyledString_Create(style, nullptr);
    OH_Drawing_TextStyle* textStyle = OH_Drawing_CreateTextStyle();
    OH_ArkUI_StyledString_PushTextStyle(styleString, textStyle);
    OH_Drawing_PlaceholderSpan* placeholder = new OH_Drawing_PlaceholderSpan();
    OH_ArkUI_StyledString_AddPlaceholder(styleString, placeholder);

    OH_Drawing_DestroyTextStyle(textStyle);
    delete placeholder;
    OH_ArkUI_StyledString_PushTextStyle(styleString, textStyle);
    OH_ArkUI_StyledString_AddPlaceholder(styleString, placeholder);
    EXPECT_NE(styleString, nullptr);
    EXPECT_NE(textStyle, nullptr);
    EXPECT_NE(placeholder, nullptr);
    OH_ArkUI_StyledString_AddText(styleString, "test");
    EXPECT_EQ(styleString->items.back()->content, "test");
    OH_ArkUI_StyledString_PopTextStyle(styleString);
    OH_ArkUI_StyledString_Destroy(styleString);
}

/**
 * @tc.name: NativeNodeTest082
 * @tc.desc: Test OH_ArkUI_NodeEvent_GetTextChangeEvent function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest082, TestSize.Level1)
{
    ArkUI_NodeEvent event = { 0, 0 };
    event.origin = nullptr;
    const std::string str = "test";
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetTextChangeEvent(nullptr), nullptr);
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetTextChangeEvent(&event), nullptr);
    event.category = 2;
    EXPECT_EQ(OH_ArkUI_NodeEvent_GetTextChangeEvent(&event), nullptr);
    ArkUINodeEvent origin = { 0, 0, 0};
    origin.textChangeEvent.subKind = ArkUIEventSubKind::ON_TEXT_AREA_CHANGE_WITH_PREVIEW_TEXT;
    origin.textChangeEvent.nativeStringPtr = const_cast<char*>(str.c_str());
    origin.textChangeEvent.extendStringPtr = const_cast<char*>(str.c_str());
    origin.textChangeEvent.numArgs = 0;
    event.origin = &origin;
    EXPECT_NE(OH_ArkUI_NodeEvent_GetTextChangeEvent(&event), nullptr);
}

/**
 * @tc.name: BackdropBlurTest
 * @tc.desc: Test customNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, BackdropBlurTest, TestSize.Level1)
{
    /**
     * @tc.steps: step1. create nodeAPI、rootNode、childNode.
     */
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);

    /**
     * @tc.steps: step2. init value.
     */
    float val0 = 0.0f;
    ArkUI_NumberValue value[] = {{.f32 = val0}, {.f32 = val0}, {.f32 = val0}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};

    ArkUI_NumberValue value1[] = {{.f32 = val0}};
    ArkUI_AttributeItem item1 = {value1, sizeof(value1) / sizeof(ArkUI_NumberValue)};

    ArkUI_NumberValue value2[] = {{.f32 = val0}, {.f32 = val0}, {.f32 = val0}, {.f32 = val0}};
    ArkUI_AttributeItem item2 = {value2, sizeof(value2) / sizeof(ArkUI_NumberValue)};
    /**
     * @tc.steps: step3. test NODE_BACKDROP_BLUR ,when one values are in the legal range.
     */
    value1[0].f32 = 20;
    auto backdropBlurResult = nodeAPI->setAttribute(rootNode, NODE_BACKDROP_BLUR, &item1);
    EXPECT_EQ(backdropBlurResult, 0);
    auto backdropBlurVal = nodeAPI->getAttribute(rootNode, NODE_BACKDROP_BLUR);
    EXPECT_EQ(backdropBlurVal->value[0].f32, 20);

    /**
     * @tc.steps: step4. test NODE_BACKDROP_BLUR ,when three values are in the legal range.
     */
    value[0].f32 = 20;
    value[1].f32 = 30;
    value[2].f32 = 50;
    
    backdropBlurResult = nodeAPI->setAttribute(rootNode, NODE_BACKDROP_BLUR, &item);
    EXPECT_EQ(backdropBlurResult, 0);
    backdropBlurVal = nodeAPI->getAttribute(rootNode, NODE_BACKDROP_BLUR);
    EXPECT_EQ(backdropBlurVal->value[0].f32, 20);
    EXPECT_EQ(backdropBlurVal->value[1].f32, 30);
    EXPECT_EQ(backdropBlurVal->value[2].f32, 50);

    /**
     * @tc.steps: step5. test NODE_BACKDROP_BLUR ,when the first value is not in the legal range.
     */
    value[0].f32 = -20;
    value[1].f32 = 30;
    value[2].f32 = 50;

    backdropBlurResult = nodeAPI->setAttribute(rootNode, NODE_BACKDROP_BLUR, &item);
    EXPECT_EQ(backdropBlurResult, 401);

    /**
     * @tc.steps: step6. test NODE_BACKDROP_BLUR ,when the second value is not in the legal range.
     */
    value[0].f32 = 20;
    value[1].f32 = 128;
    value[2].f32 = 127;

    backdropBlurResult = nodeAPI->setAttribute(rootNode, NODE_BACKDROP_BLUR, &item);
    EXPECT_EQ(backdropBlurResult, 401);

    /**
     * @tc.steps: step7. test NODE_BACKDROP_BLUR ,when the third value is not in the legal range.
     */
    value[0].f32 = 20;
    value[1].f32 = 127;
    value[2].f32 = 128;

    backdropBlurResult = nodeAPI->setAttribute(rootNode, NODE_BACKDROP_BLUR, &item);
    EXPECT_EQ(backdropBlurResult, 401);

    /**
     * @tc.steps: step8. test NODE_BACKDROP_BLUR ,when four parameters are passed in.
     */
    value2[0].f32 = 20;
    value2[1].f32 = 127;
    value2[2].f32 = 127;
    value2[3].f32 = 127;

    backdropBlurResult = nodeAPI->setAttribute(rootNode, NODE_BACKDROP_BLUR, &item2);
    EXPECT_EQ(backdropBlurResult, 401);
}

/**
 * @tc.name: NativeNodeProgressTest001
 * @tc.desc: Test progressNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeProgressTest001, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_PROGRESS);
    ASSERT_NE(rootNode, nullptr);
    ArkUI_NumberValue value[] = {{.f32 = 10.0f}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_PROGRESS_VALUE, &item);
    value[0].i32 = 100.0f;
    nodeAPI->setAttribute(rootNode, NODE_PROGRESS_TOTAL, &item);
    value[0].i32 = ARKUI_PROGRESS_TYPE_LINEAR;
    nodeAPI->setAttribute(rootNode, NODE_PROGRESS_TYPE, &item);

    auto linearStyleOption = OH_ArkUI_ProgressLinearStyleOption_Create();
    ArkUI_AttributeItem linearStyleItem = {.size = 0, .object = linearStyleOption};
    OH_ArkUI_ProgressLinearStyleOption_SetSmoothEffectEnabled(linearStyleOption, false);
    OH_ArkUI_ProgressLinearStyleOption_SetScanEffectEnabled(linearStyleOption, true);
    OH_ArkUI_ProgressLinearStyleOption_SetStrokeWidth(linearStyleOption, 50.0f);
    OH_ArkUI_ProgressLinearStyleOption_SetStrokeRadius(linearStyleOption, 20.0f);
    nodeAPI->setAttribute(rootNode, NODE_PROGRESS_LINEAR_STYLE, &linearStyleItem);

    EXPECT_EQ(OH_ArkUI_ProgressLinearStyleOption_GetSmoothEffectEnabled(linearStyleOption), false);
    EXPECT_EQ(OH_ArkUI_ProgressLinearStyleOption_GetScanEffectEnabled(linearStyleOption), true);
    EXPECT_EQ(OH_ArkUI_ProgressLinearStyleOption_GetStrokeWidth(linearStyleOption), 50.0f);
    EXPECT_EQ(OH_ArkUI_ProgressLinearStyleOption_GetStrokeRadius(linearStyleOption), 20.0f);

    nodeAPI->resetAttribute(rootNode, NODE_PROGRESS_LINEAR_STYLE);
    EXPECT_EQ(OH_ArkUI_ProgressLinearStyleOption_GetSmoothEffectEnabled(linearStyleOption), false);
    EXPECT_EQ(OH_ArkUI_ProgressLinearStyleOption_GetScanEffectEnabled(linearStyleOption), true);
    EXPECT_EQ(OH_ArkUI_ProgressLinearStyleOption_GetStrokeWidth(linearStyleOption), 50.0f);
    EXPECT_EQ(OH_ArkUI_ProgressLinearStyleOption_GetStrokeRadius(linearStyleOption), 20.0f);
    OH_ArkUI_ProgressLinearStyleOption_Destroy(linearStyleOption);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeProgressTest002
 * @tc.desc: Test progressNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeProgressTest002, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_PROGRESS);
    ASSERT_NE(rootNode, nullptr);
    ArkUI_NumberValue value[] = {{.f32 = 10.0f}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_PROGRESS_VALUE, &item);
    value[0].i32 = 100.0f;
    nodeAPI->setAttribute(rootNode, NODE_PROGRESS_TOTAL, &item);
    value[0].i32 = ARKUI_PROGRESS_TYPE_LINEAR;
    nodeAPI->setAttribute(rootNode, NODE_PROGRESS_TYPE, &item);

    ArkUI_ProgressLinearStyleOption* linearStyleOption = nullptr;
    // set attribute value
    OH_ArkUI_ProgressLinearStyleOption_SetSmoothEffectEnabled(linearStyleOption, false);
    OH_ArkUI_ProgressLinearStyleOption_SetScanEffectEnabled(linearStyleOption, true);
    OH_ArkUI_ProgressLinearStyleOption_SetStrokeWidth(linearStyleOption, 50.0f);
    OH_ArkUI_ProgressLinearStyleOption_SetStrokeRadius(linearStyleOption, 20.0f);

    // get attribute default value
    EXPECT_EQ(OH_ArkUI_ProgressLinearStyleOption_GetSmoothEffectEnabled(linearStyleOption), true);
    EXPECT_EQ(OH_ArkUI_ProgressLinearStyleOption_GetScanEffectEnabled(linearStyleOption), false);
    EXPECT_EQ(OH_ArkUI_ProgressLinearStyleOption_GetStrokeWidth(linearStyleOption), -1.0f);
    EXPECT_EQ(OH_ArkUI_ProgressLinearStyleOption_GetStrokeRadius(linearStyleOption), -1.0f);
    OH_ArkUI_ProgressLinearStyleOption_Destroy(linearStyleOption);

    // reset attribute value
    nodeAPI->resetAttribute(rootNode, NODE_PROGRESS_LINEAR_STYLE);
    auto linearStyleItem = nodeAPI->getAttribute(rootNode, NODE_PROGRESS_LINEAR_STYLE);
    linearStyleOption = reinterpret_cast<ArkUI_ProgressLinearStyleOption*>(linearStyleItem->object);
    EXPECT_EQ(OH_ArkUI_ProgressLinearStyleOption_GetSmoothEffectEnabled(linearStyleOption), true);
    EXPECT_EQ(OH_ArkUI_ProgressLinearStyleOption_GetScanEffectEnabled(linearStyleOption), false);
    EXPECT_EQ(OH_ArkUI_ProgressLinearStyleOption_GetStrokeWidth(linearStyleOption), 4.0f);
    EXPECT_EQ(OH_ArkUI_ProgressLinearStyleOption_GetStrokeRadius(linearStyleOption), 2.0f);
    nodeAPI->setAttribute(rootNode, NODE_PROGRESS_LINEAR_STYLE, nullptr);

    value[0].i32 = ARKUI_PROGRESS_TYPE_RING;
    nodeAPI->setAttribute(rootNode, NODE_PROGRESS_TYPE, &item);
    nodeAPI->setAttribute(rootNode, NODE_PROGRESS_LINEAR_STYLE, linearStyleItem);
    nodeAPI->resetAttribute(rootNode, NODE_PROGRESS_LINEAR_STYLE);
    EXPECT_EQ(nodeAPI->getAttribute(rootNode, NODE_PROGRESS_LINEAR_STYLE), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeIssueTest001
 * @tc.desc: Test customSpanNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeIssueTest001, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto node = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto ret = OHOS::Ace::NodeModel::AddNodeEventReceiver(node, [](ArkUI_NodeEvent* event) {
        auto node = OH_ArkUI_NodeEvent_GetNodeHandle(event);
        OHOS::Ace::NodeModel::DisposeNode(node);
    });
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    ArkUI_NodeEvent event = { 0, 0 };
    event.node = node;
    OHOS::Ace::NodeModel::HandleNodeEvent(&event);
}

/**
 * @tc.name: NativeNodeTest084
 * @tc.desc: Test swiperNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest084, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_SWIPER);
    ArkUI_NumberValue value[] = { { .i32 = 1 }, { .i32 = 1 } };
    ArkUI_AttributeItem item = { value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr };

    value[0].i32 = true;
    value[1].i32 = false;
    auto ret = nodeAPI->setAttribute(rootNode, NODE_SWIPER_AUTO_PLAY, &item);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    auto resultTtem = nodeAPI->getAttribute(rootNode, NODE_SWIPER_AUTO_PLAY);
    EXPECT_TRUE(resultTtem->value[0].i32);
    EXPECT_FALSE(resultTtem->value[1].i32);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SWIPER_AUTO_PLAY), ARKUI_ERROR_CODE_NO_ERROR);
    resultTtem = nodeAPI->getAttribute(rootNode, NODE_SWIPER_AUTO_PLAY);
    EXPECT_FALSE(resultTtem->value[0].i32);
    EXPECT_TRUE(resultTtem->value[1].i32);
    nodeAPI->disposeNode(rootNode);
}

void LayoutCallback(void* userData)
{
}

/**
 * @tc.name: NativeNodeTest085
 * @tc.desc: Test OH_ArkUI_RegisterLayoutCallbackOnNodeHandle function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest085, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto node = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto ret = OH_ArkUI_RegisterLayoutCallbackOnNodeHandle(node, nullptr, LayoutCallback);
    EXPECT_EQ(ret, ERROR_CODE_NO_ERROR);
    ret = OH_ArkUI_RegisterLayoutCallbackOnNodeHandle(nullptr, nullptr, LayoutCallback);
    EXPECT_EQ(ret, ERROR_CODE_PARAM_INVALID);
    ret = OH_ArkUI_RegisterLayoutCallbackOnNodeHandle(node, nullptr, nullptr);
    EXPECT_EQ(ret, ERROR_CODE_NO_ERROR);

}

/**
 * @tc.name: NativeNodeTest086
 * @tc.desc: Test OH_ArkUI_RegisterDrawCallbackOnNodeHandle function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest086, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto node = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto ret = OH_ArkUI_RegisterDrawCallbackOnNodeHandle(node, nullptr, LayoutCallback);
    EXPECT_EQ(ret, ERROR_CODE_NO_ERROR);
    ret = OH_ArkUI_RegisterDrawCallbackOnNodeHandle(nullptr, nullptr, LayoutCallback);
    EXPECT_EQ(ret, ERROR_CODE_PARAM_INVALID);
    ret = OH_ArkUI_RegisterDrawCallbackOnNodeHandle(node, nullptr, nullptr);
    EXPECT_EQ(ret, ERROR_CODE_NO_ERROR);

}

/**
 * @tc.name: NativeNodeTest087
 * @tc.desc: Test OH_ArkUI_UnregisterLayoutCallbackOnNodeHandle function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest087, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto node = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto ret = OH_ArkUI_UnregisterLayoutCallbackOnNodeHandle(node);
    EXPECT_EQ(ret, ERROR_CODE_NO_ERROR);
    ret = OH_ArkUI_UnregisterLayoutCallbackOnNodeHandle(nullptr);
    EXPECT_EQ(ret, ERROR_CODE_PARAM_INVALID);
}

/**
 * @tc.name: NativeNodeTest088
 * @tc.desc: Test OH_ArkUI_UnregisterDrawCallbackOnNodeHandle function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest088, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto node = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto ret = OH_ArkUI_UnregisterDrawCallbackOnNodeHandle(node);
    EXPECT_EQ(ret, ERROR_CODE_NO_ERROR);
    ret = OH_ArkUI_UnregisterDrawCallbackOnNodeHandle(nullptr);
    EXPECT_EQ(ret, ERROR_CODE_PARAM_INVALID);
}

/**
 * @tc.name: NativeNodeTest089
 * @tc.desc: Test xcomponentNode of TEXTURE type function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest089, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_XCOMPONENT_TEXTURE);
    ASSERT_NE(rootNode, nullptr);

    ArkUI_NumberValue value[] = {{.i32 = ARKUI_XCOMPONENT_TYPE_TEXTURE}, {.f32 = 10.0f}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), "test"};
    nodeAPI->setAttribute(rootNode, NODE_XCOMPONENT_ID, &item);
    nodeAPI->setAttribute(rootNode, NODE_XCOMPONENT_TYPE, &item);

    uint32_t val100 = 100;
    value[0].u32 = val100;
    value[1].u32 = val100;
    nodeAPI->setAttribute(rootNode, NODE_XCOMPONENT_SURFACE_SIZE, &item);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_XCOMPONENT_TYPE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_XCOMPONENT_SURFACE_SIZE), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_XCOMPONENT_ID), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_XCOMPONENT_TYPE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_XCOMPONENT_SURFACE_SIZE), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest090
 * @tc.desc: Test abnormalInput For XComponent of TEXTURE type function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest090, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_XCOMPONENT_TEXTURE);
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = {value0, 0, nullptr, nullptr};
    ArkUI_NumberValue value[] = {{.i32 = -1}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_XCOMPONENT_ID, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_XCOMPONENT_ID, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_XCOMPONENT_TYPE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_XCOMPONENT_TYPE, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_XCOMPONENT_SURFACE_SIZE, &item0), ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest091
 * @tc.desc: Test scrollToIndex and scrollToItemInGroup function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest091, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto list = nodeAPI->createNode(ARKUI_NODE_LIST);
    auto listItem = nodeAPI->createNode(ARKUI_NODE_LIST_ITEM);
    auto listItemGroup = nodeAPI->createNode(ARKUI_NODE_LIST_ITEM_GROUP);
    nodeAPI->addChild(listItemGroup, listItem);
    nodeAPI->addChild(list, listItemGroup);
    ASSERT_NE(list, nullptr);
    ArkUI_NumberValue value[] = { 0, 0, 0, 1 };
    ArkUI_AttributeItem item = { value, 4 };
    value[0].i32 = 0;
    value[1].i32 = 0;
    value[2].i32 = 0;
    value[3].i32 = 1;
    EXPECT_EQ(nodeAPI->setAttribute(list, NODE_LIST_SCROLL_TO_INDEX, &item), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->setAttribute(list, NODE_LIST_SCROLL_TO_INDEX_IN_GROUP, &item), ARKUI_ERROR_CODE_NO_ERROR);
    value[0].i32 = 2;
    value[1].i32 = 2;
    ArkUI_AttributeItem item0 = { value, 2 };
    EXPECT_EQ(nodeAPI->setAttribute(list, NODE_LIST_SCROLL_TO_INDEX_IN_GROUP, &item0), ARKUI_ERROR_CODE_NO_ERROR);
    value[0].i32 = 3;
    value[1].i32 = 3;
    value[2].i32 = -1;
    value[3].i32 = -1;
    EXPECT_EQ(nodeAPI->setAttribute(list, NODE_LIST_SCROLL_TO_INDEX_IN_GROUP, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(listItem);
    nodeAPI->disposeNode(listItemGroup);
    nodeAPI->disposeNode(list);
}

/**
 * @tc.name: NativeNodeTest092
 * @tc.desc: Test setLanes function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest092, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto list = nodeAPI->createNode(ARKUI_NODE_LIST);
    ASSERT_NE(list, nullptr);
    ArkUI_NumberValue value[] = { 2, 3, 4, 5 };
    ArkUI_AttributeItem item = { value, 4 };
    EXPECT_EQ(nodeAPI->setAttribute(list, NODE_LIST_LANES, &item), ARKUI_ERROR_CODE_NO_ERROR);
    auto ret = nodeAPI->getAttribute(list, NODE_LIST_LANES);
    EXPECT_EQ(ret->value[0].u32, 1);
    EXPECT_EQ(ret->value[1].f32, 3);
    EXPECT_EQ(ret->value[2].f32, 4);
    EXPECT_EQ(ret->value[3].f32, 5);
    value[0].u32 = 2;
    value[1].f32 = -1;
    value[2].f32 = -1;
    value[3].f32 = 3;
    EXPECT_EQ(nodeAPI->setAttribute(list, NODE_LIST_LANES, &item), ARKUI_ERROR_CODE_NO_ERROR);
    ret = nodeAPI->getAttribute(list, NODE_LIST_LANES);
    EXPECT_EQ(ret->value[0].u32, 2);
    EXPECT_EQ(ret->value[1].f32, 0);
    EXPECT_EQ(ret->value[2].f32, 0);
    EXPECT_EQ(ret->value[3].f32, 3);
    EXPECT_EQ(nodeAPI->resetAttribute(list, NODE_LIST_LANES), ARKUI_ERROR_CODE_NO_ERROR);
    ret = nodeAPI->getAttribute(list, NODE_LIST_LANES);
    EXPECT_EQ(ret->value[0].u32, 1);
    EXPECT_EQ(ret->value[1].f32, 0);
    EXPECT_EQ(ret->value[2].f32, 0);
    EXPECT_EQ(ret->value[3].f32, 0);
    value[0].u32 = -1;
    value[1].f32 = -1;
    value[2].f32 = -1;
    value[3].f32 = -1;
    EXPECT_EQ(nodeAPI->setAttribute(list, NODE_LIST_LANES, &item), ARKUI_ERROR_CODE_NO_ERROR);
    ret = nodeAPI->getAttribute(list, NODE_LIST_LANES);
    EXPECT_EQ(ret->value[0].u32, 1);
    EXPECT_EQ(ret->value[1].f32, 0);
    EXPECT_EQ(ret->value[2].f32, 0);
    EXPECT_EQ(ret->value[3].f32, 0);
    nodeAPI->disposeNode(list);
}

/**
 * @tc.name: NativeNodeTest093
 * @tc.desc: Test listScrollSnapAlign function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest093, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto list = nodeAPI->createNode(ARKUI_NODE_LIST);
    ASSERT_NE(list, nullptr);
    ArkUI_NumberValue value[] = { 1 };
    ArkUI_AttributeItem item = { value, 1 };
    value[0].i32 = 1;
    EXPECT_EQ(nodeAPI->setAttribute(list, NODE_LIST_SCROLL_SNAP_ALIGN, &item), ARKUI_ERROR_CODE_NO_ERROR);
    auto ret = nodeAPI->getAttribute(list, NODE_LIST_SCROLL_SNAP_ALIGN);
    EXPECT_EQ(ret->value[0].i32, 1);
    EXPECT_EQ(nodeAPI->resetAttribute(list, NODE_LIST_SCROLL_SNAP_ALIGN), ARKUI_ERROR_CODE_NO_ERROR);
    ret = nodeAPI->getAttribute(list, NODE_LIST_SCROLL_SNAP_ALIGN);
    EXPECT_EQ(ret->value[0].i32, 0);
    value[0].i32 = -1;
    nodeAPI->setAttribute(list, NODE_LIST_SCROLL_SNAP_ALIGN, &item);
    ret = nodeAPI->getAttribute(list, NODE_LIST_SCROLL_SNAP_ALIGN);
    EXPECT_EQ(ret->value[0].i32, 0);
    nodeAPI->disposeNode(list);
}

/**
 * @tc.name: NativeNodeTest094
 * @tc.desc: Test scrollContentStartOffset and scrollContentEndOffset function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest094, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto list = nodeAPI->createNode(ARKUI_NODE_LIST);
    ASSERT_NE(list, nullptr);
    ArkUI_NumberValue value[] = { 1 };
    ArkUI_AttributeItem item = { value, 1 };
    value[0].f32 = 1;
    EXPECT_EQ(nodeAPI->setAttribute(list, NODE_SCROLL_CONTENT_START_OFFSET, &item), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->setAttribute(list, NODE_SCROLL_CONTENT_END_OFFSET, &item), ARKUI_ERROR_CODE_NO_ERROR);
    auto ret = nodeAPI->getAttribute(list, NODE_SCROLL_CONTENT_START_OFFSET);
    EXPECT_EQ(ret->value[0].f32, 1);
    ret = nodeAPI->getAttribute(list, NODE_SCROLL_CONTENT_END_OFFSET);
    EXPECT_EQ(ret->value[0].f32, 1);
    EXPECT_EQ(nodeAPI->resetAttribute(list, NODE_SCROLL_CONTENT_START_OFFSET), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(list, NODE_SCROLL_CONTENT_END_OFFSET), ARKUI_ERROR_CODE_NO_ERROR);
    ret = nodeAPI->getAttribute(list, NODE_SCROLL_CONTENT_START_OFFSET);
    EXPECT_EQ(ret->value[0].f32, 0);
    ret = nodeAPI->getAttribute(list, NODE_SCROLL_CONTENT_END_OFFSET);
    EXPECT_EQ(ret->value[0].f32, 0);
    nodeAPI->disposeNode(list);
}

/**
 * @tc.name: NativeNodeTest095
 * @tc.desc: Test listMaintainVisibleContentPosition function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest095, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto list = nodeAPI->createNode(ARKUI_NODE_LIST);
    ASSERT_NE(list, nullptr);
    ArkUI_NumberValue value[] = { 1 };
    ArkUI_AttributeItem item = { value, 1 };
    value[0].i32 = 1;
    auto ret = nodeAPI->setAttribute(list, NODE_LIST_MAINTAIN_VISIBLE_CONTENT_POSITION, &item);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    auto ret1 = nodeAPI->getAttribute(list, NODE_LIST_MAINTAIN_VISIBLE_CONTENT_POSITION);
    EXPECT_EQ(ret1->value[0].i32, 1);
    EXPECT_EQ(nodeAPI->resetAttribute(list, NODE_LIST_MAINTAIN_VISIBLE_CONTENT_POSITION), ARKUI_ERROR_CODE_NO_ERROR);
    ret1 = nodeAPI->getAttribute(list, NODE_LIST_MAINTAIN_VISIBLE_CONTENT_POSITION);
    EXPECT_EQ(ret1->value[0].i32, 0);
    nodeAPI->disposeNode(list);
}

/**
 * @tc.name: NativeNodeTest096
 * @tc.desc: Test onScrollVisibleContentChange function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest096, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto listNode = nodeAPI->createNode(ARKUI_NODE_LIST);
    auto ret = nodeAPI->registerNodeEvent(listNode, NODE_LIST_ON_SCROLL_VISIBLE_CONTENT_CHANGE, 1, nullptr);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->unregisterNodeEvent(listNode, NODE_LIST_ON_SCROLL_VISIBLE_CONTENT_CHANGE);
    nodeAPI->disposeNode(listNode);

    int32_t nodeType = static_cast<int32_t>(ARKUI_NODE_LIST);
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_LIST_ON_SCROLL_VISIBLE_CONTENT_CHANGE, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_LIST_SCROLL_VISIBLE_CONTENT_CHANGE));

    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_LIST_SCROLL_VISIBLE_CONTENT_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_LIST_ON_SCROLL_VISIBLE_CONTENT_CHANGE));
}

/**
 * @tc.name: NativeNodeTest097
 * @tc.desc: Test cachedCount function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest097, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto list = nodeAPI->createNode(ARKUI_NODE_LIST);
    ASSERT_NE(list, nullptr);
    ArkUI_NumberValue value[] = { 1, 1 };
    ArkUI_AttributeItem item = { value, 2 };
    value[0].i32 = 1;
    value[1].i32 = 1;
    EXPECT_EQ(nodeAPI->setAttribute(list, NODE_LIST_CACHED_COUNT, &item), ARKUI_ERROR_CODE_NO_ERROR);
    auto ret = nodeAPI->getAttribute(list, NODE_LIST_CACHED_COUNT);
    EXPECT_EQ(ret->value[1].i32, 1);
    EXPECT_EQ(nodeAPI->resetAttribute(list, NODE_LIST_CACHED_COUNT), ARKUI_ERROR_CODE_NO_ERROR);
    ret = nodeAPI->getAttribute(list, NODE_LIST_CACHED_COUNT);
    EXPECT_EQ(ret->value[1].i32, 0);
    value[1].i32 = -1;
    EXPECT_EQ(nodeAPI->setAttribute(list, NODE_LIST_CACHED_COUNT, &item), ARKUI_ERROR_CODE_NO_ERROR);
    ret = nodeAPI->getAttribute(list, NODE_LIST_CACHED_COUNT);
    EXPECT_EQ(ret->value[1].i32, 0);
    nodeAPI->disposeNode(list);
}

/**
 * @tc.name: NativeNodeTest098
 * @tc.desc: Test setHeader and setFooter function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest098, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto listItemGroup = nodeAPI->createNode(ARKUI_NODE_LIST_ITEM_GROUP);
    ASSERT_NE(listItemGroup, nullptr);
    EXPECT_EQ(nodeAPI->resetAttribute(listItemGroup, NODE_LIST_ITEM_GROUP_SET_HEADER), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(listItemGroup, NODE_LIST_ITEM_GROUP_SET_FOOTER), ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->disposeNode(listItemGroup);
}

/**
 * @tc.name: NativeNodeTest099
 * @tc.desc: Test LazyForEach function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest099, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto listItemGroup = nodeAPI->createNode(ARKUI_NODE_LIST_ITEM_GROUP);
    ASSERT_NE(listItemGroup, nullptr);
    ArkUI_NumberValue value0[] = {};
    ArkUI_AttributeItem item0 = { value0, 0, nullptr, nullptr };
    auto ret = nodeAPI->setAttribute(listItemGroup, NODE_LIST_ITEM_GROUP_NODE_ADAPTER, &item0);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->resetAttribute(listItemGroup, NODE_LIST_ITEM_GROUP_NODE_ADAPTER), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_NE(nodeAPI->getAttribute(listItemGroup, NODE_LIST_ITEM_GROUP_NODE_ADAPTER), nullptr);
    nodeAPI->disposeNode(listItemGroup);
}

/**
 * @tc.name: ListItemGroupTest001
 * @tc.desc: Test ListItemGroup set header and adapter.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, ListItemGroupTest001, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto listItemGroup = nodeAPI->createNode(ARKUI_NODE_LIST_ITEM_GROUP);
    auto header = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(listItemGroup, nullptr);
    ArkUI_AttributeItem item0 = { nullptr, 0, nullptr, header };
    auto ret = nodeAPI->setAttribute(listItemGroup, NODE_LIST_ITEM_GROUP_SET_HEADER, &item0);
    auto* fullImpl = OHOS::Ace::NodeModel::GetFullImpl();
    auto* nodeAdapter = fullImpl->getNodeAdapterAPI()->create();
    auto adapter = reinterpret_cast<ArkUI_NodeAdapterHandle>(nodeAdapter);
    item0.object = adapter;
    ret = nodeAPI->setAttribute(listItemGroup, NODE_LIST_ITEM_GROUP_NODE_ADAPTER, &item0);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);

    fullImpl->getNodeAdapterAPI()->dispose(nodeAdapter);
    nodeAPI->disposeNode(listItemGroup);
}

/**
 * @tc.name: NativeNodeTest097
 * @tc.desc: Test SetOnVisibleAreaApproximateChange function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest100, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto option = OH_ArkUI_VisibleAreaEventOptions_Create();
    float* ratiosArray = new float[2];
    ratiosArray[0] = 0.0f;
    ratiosArray[1] = 1.0f;
    OH_ArkUI_VisibleAreaEventOptions_SetRatios(option, ratiosArray, 2);
    ArkUI_AttributeItem attributeItem = { .object = option };
    nodeAPI->setAttribute(rootNode, NODE_VISIBLE_AREA_APPROXIMATE_CHANGE_RATIO, &attributeItem);
    auto ret = nodeAPI->registerNodeEvent(rootNode, NODE_VISIBLE_AREA_APPROXIMATE_CHANGE_EVENT, 1, nullptr);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->unregisterNodeEvent(rootNode, NODE_VISIBLE_AREA_APPROXIMATE_CHANGE_EVENT);
    nodeAPI->disposeNode(rootNode);

    int32_t nodeType = static_cast<int32_t>(ARKUI_NODE_BUTTON);
    ret = OHOS::Ace::NodeModel::ConvertOriginEventType(NODE_VISIBLE_AREA_APPROXIMATE_CHANGE_EVENT, nodeType);
    EXPECT_EQ(ret, static_cast<int32_t>(ON_VISIBLE_AREA_APPROXIMATE_CHANGE));

    ret = OHOS::Ace::NodeModel::ConvertToNodeEventType(ON_VISIBLE_AREA_APPROXIMATE_CHANGE);
    EXPECT_EQ(ret, static_cast<int32_t>(NODE_VISIBLE_AREA_APPROXIMATE_CHANGE_EVENT));
    OH_ArkUI_VisibleAreaEventOptions_Dispose(option);
    OH_ArkUI_VisibleAreaEventOptions_Dispose(nullptr);
}

/**
 * @tc.name: NativeNodeTest098
 * @tc.desc: Test NODE_VISIBLE_AREA_APPROXIMATE_CHANGE_RATIO.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest101, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);

    auto option = OH_ArkUI_VisibleAreaEventOptions_Create();
    float* ratiosArray = new float[2];
    ratiosArray[0] = 0.0f;
    ratiosArray[1] = 1.0f;
    OH_ArkUI_VisibleAreaEventOptions_SetRatios(option, ratiosArray, 2);
    OH_ArkUI_VisibleAreaEventOptions_SetExpectedUpdateInterval(option, 1000);
    ArkUI_AttributeItem attributeItem = { .object = option };
    nodeAPI->setAttribute(rootNode, NODE_VISIBLE_AREA_APPROXIMATE_CHANGE_RATIO, &attributeItem);

    float* getRatiosArray = new float[3];
    int size = 3;
    OH_ArkUI_VisibleAreaEventOptions_GetRatios(option, getRatiosArray, &size);

    EXPECT_EQ(getRatiosArray[0], 0.0f);
    EXPECT_EQ(getRatiosArray[1], 1.0f);

    EXPECT_EQ(OH_ArkUI_VisibleAreaEventOptions_GetExpectedUpdateInterval(option), 1000);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest102
 * @tc.desc: Test NODE_SWIPER_CACHED_COUNT function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest102, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto swiper = nodeAPI->createNode(ARKUI_NODE_SWIPER);
    ASSERT_NE(swiper, nullptr);
    ArkUI_NumberValue value[] = { 1, 1 };
    ArkUI_AttributeItem item = { value, 2 };
    value[0].i32 = 1;
    value[1].i32 = 1;
    EXPECT_EQ(nodeAPI->setAttribute(swiper, NODE_SWIPER_CACHED_COUNT, &item), ARKUI_ERROR_CODE_NO_ERROR);
    auto ret = nodeAPI->getAttribute(swiper, NODE_SWIPER_CACHED_COUNT);
    EXPECT_EQ(ret->value[1].i32, 1);
    EXPECT_EQ(nodeAPI->resetAttribute(swiper, NODE_SWIPER_CACHED_COUNT), ARKUI_ERROR_CODE_NO_ERROR);
    ret = nodeAPI->getAttribute(swiper, NODE_SWIPER_CACHED_COUNT);
    EXPECT_EQ(ret->value[1].i32, 0);
    value[1].i32 = -1;
    EXPECT_EQ(nodeAPI->setAttribute(swiper, NODE_SWIPER_CACHED_COUNT, &item), ARKUI_ERROR_CODE_NO_ERROR);
    ret = nodeAPI->getAttribute(swiper, NODE_SWIPER_CACHED_COUNT);
    EXPECT_EQ(ret->value[1].i32, 0);
    nodeAPI->disposeNode(swiper);
}

/**
 * @tc.name: NativeNodeTest103
 * @tc.desc: Test NODE_SWIPER_AUTO_FILL function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest103, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto swiper = nodeAPI->createNode(ARKUI_NODE_SWIPER);
    ASSERT_NE(swiper, nullptr);
    ArkUI_NumberValue value[] = { 1, 1 };
    ArkUI_AttributeItem item = { value, 2 };
    value[0].f32 = 1;
    value[1].i32 = 1;
    EXPECT_EQ(nodeAPI->setAttribute(swiper, NODE_SWIPER_AUTO_FILL, &item), ARKUI_ERROR_CODE_NO_ERROR);
    auto ret = nodeAPI->getAttribute(swiper, NODE_SWIPER_AUTO_FILL);
    EXPECT_EQ(ret->value[0].f32, 1);
    EXPECT_EQ(ret->value[1].i32, 1);
    EXPECT_EQ(nodeAPI->resetAttribute(swiper, NODE_SWIPER_AUTO_FILL), ARKUI_ERROR_CODE_NO_ERROR);
    ret = nodeAPI->getAttribute(swiper, NODE_SWIPER_AUTO_FILL);
    EXPECT_EQ(ret->value[0].f32, 0);
    EXPECT_EQ(ret->value[1].i32, 0);
    value[0].f32 = -1;
    value[1].i32 = -1;
    EXPECT_EQ(nodeAPI->setAttribute(swiper, NODE_SWIPER_AUTO_FILL, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    ret = nodeAPI->getAttribute(swiper, NODE_SWIPER_AUTO_FILL);
    EXPECT_EQ(ret->value[0].f32, 0);
    EXPECT_EQ(ret->value[1].i32, 0);
    nodeAPI->disposeNode(swiper);
}

/**
 * @tc.name: NativeNodeTest104
 * @tc.desc: Test NODE_SWIPER_DISPLAY_COUNT function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest104, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto swiper = nodeAPI->createNode(ARKUI_NODE_SWIPER);
    ASSERT_NE(swiper, nullptr);
    ArkUI_NumberValue value[] = { { .i32 = 1 }, { .i32 = 1 } };
    ArkUI_AttributeItem item = { .value = value, .string = nullptr, .size = 2 };
    value[0].i32 = 1;
    value[1].i32 = 1;
    EXPECT_EQ(nodeAPI->setAttribute(swiper, NODE_SWIPER_DISPLAY_COUNT, &item), ARKUI_ERROR_CODE_NO_ERROR);
    auto ret = nodeAPI->getAttribute(swiper, NODE_SWIPER_DISPLAY_COUNT);
    EXPECT_EQ(ret->value[0].i32, 1);
    EXPECT_EQ(ret->value[1].i32, 1);
    EXPECT_NE(ret->string, "auto");
    item.string = "auto";
    EXPECT_EQ(nodeAPI->setAttribute(swiper, NODE_SWIPER_DISPLAY_COUNT, &item), ARKUI_ERROR_CODE_NO_ERROR);
    ret = nodeAPI->getAttribute(swiper, NODE_SWIPER_DISPLAY_COUNT);
    std::string str = "auto";
    EXPECT_EQ(ret->value[0].i32, 1);
    EXPECT_EQ(ret->string, str);
    EXPECT_EQ(nodeAPI->resetAttribute(swiper, NODE_SWIPER_DISPLAY_COUNT), ARKUI_ERROR_CODE_NO_ERROR);
    ret = nodeAPI->getAttribute(swiper, NODE_SWIPER_DISPLAY_COUNT);
    EXPECT_EQ(ret->value[0].i32, 1);
    EXPECT_EQ(ret->value[1].i32, 0);
    value[0].i32 = -1;
    value[1].i32 = -1;
    nodeAPI->setAttribute(swiper, NODE_SWIPER_DISPLAY_COUNT, &item);
    ret = nodeAPI->getAttribute(swiper, NODE_SWIPER_DISPLAY_COUNT);
    EXPECT_EQ(ret->value[0].i32, 1);
    EXPECT_EQ(ret->value[1].i32, 0);
    nodeAPI->disposeNode(swiper);
}

/**
 * @tc.name: NativeNodeTest105
 * @tc.desc: Test NODE_SWIPER_SHOW_DISPLAY_ARROW function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest105, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ArkUI_NodeHandle swiper = nodeAPI->createNode(ARKUI_NODE_SWIPER);
    const int size = 14;
    const char* arr[size] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"};
    
    for (int j = 0; j < size; j++) {
        ArkUI_NodeHandle textNode = nodeAPI->createNode(ARKUI_NODE_TEXT);
        ArkUI_AttributeItem content = { .string = arr[j] };
        nodeAPI->setAttribute(textNode, NODE_TEXT_CONTENT, &content);
        
        ArkUI_NumberValue value[] = {0};
        ArkUI_AttributeItem item = {value, 1};
        value[0].f32 = 400;
        nodeAPI->setAttribute(textNode, NODE_WIDTH, &item);
        value[0].f32 = 160;
        nodeAPI->setAttribute(textNode, NODE_HEIGHT, &item);
        value[0].u32 = 0xFFAFEEEE;
        nodeAPI->setAttribute(textNode, NODE_BACKGROUND_COLOR, &item);
        value[0].i32 = 0;
        nodeAPI->setAttribute(textNode, NODE_TEXT_ALIGN, &item);
        value[0].f32 = 30;
        nodeAPI->setAttribute(textNode, NODE_FONT_SIZE, &item);
        
        ArkUI_AttributeItem textId = {.string = "SwiperAutoPlayText"};
        nodeAPI->setAttribute(textNode, NODE_ID, &textId);
        nodeAPI->addChild(swiper, textNode);
    }
    ArkUI_SwiperArrowStyle* arrowStyle = OH_ArkUI_SwiperArrowStyle_Create();
    OH_ArkUI_SwiperArrowStyle_SetShowBackground(arrowStyle, 1);
    OH_ArkUI_SwiperArrowStyle_SetShowSidebarMiddle(arrowStyle, 0);
    OH_ArkUI_SwiperArrowStyle_SetBackgroundSize(arrowStyle, 25);
    OH_ArkUI_SwiperArrowStyle_SetBackgroundColor(arrowStyle, 0xFF182431);
    OH_ArkUI_SwiperArrowStyle_SetArrowSize(arrowStyle, 25);
    OH_ArkUI_SwiperArrowStyle_SetArrowColor(arrowStyle, 0xFF182431);
    
    ArkUI_NumberValue valueTemp[1];
    ArkUI_AttributeItem itemTemp = {.value=valueTemp, .size=1, .object = arrowStyle};
    valueTemp[0].i32 = 2;
    nodeAPI->setAttribute(swiper, NODE_SWIPER_SHOW_DISPLAY_ARROW, &itemTemp);
    auto itemTempReturn = nodeAPI->getAttribute(swiper, NODE_SWIPER_SHOW_DISPLAY_ARROW);
    auto returnObject = static_cast<ArkUI_SwiperArrowStyle*>(itemTempReturn->object);
    ASSERT_NE(returnObject, nullptr);
    EXPECT_EQ(OH_ArkUI_SwiperArrowStyle_GetShowBackground(arrowStyle), 1);
    EXPECT_EQ(OH_ArkUI_SwiperArrowStyle_GetShowSidebarMiddle(arrowStyle), 0);
    EXPECT_EQ(OH_ArkUI_SwiperArrowStyle_GetBackgroundSize(arrowStyle), 25);
    EXPECT_EQ(OH_ArkUI_SwiperArrowStyle_GetBackgroundColor(arrowStyle), 0xFF182431);
    EXPECT_EQ(OH_ArkUI_SwiperArrowStyle_GetArrowSize(arrowStyle), 18.75);
    EXPECT_EQ(OH_ArkUI_SwiperArrowStyle_GetArrowColor(arrowStyle), 0xFF182431);
    OH_ArkUI_SwiperArrowStyle_Destroy(arrowStyle);
    nodeAPI->disposeNode(swiper);
}

/**
 * @tc.name: NativeNodeTest106
 * @tc.desc: Test NODE_BACKGROUND_IMAGE_RESIZABLE_WITH_SLICE function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest106, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);
    int32_t ret1 = nodeAPI->addChild(rootNode, childNode);
    EXPECT_EQ(ret1, ARKUI_ERROR_CODE_NO_ERROR);
    float size = 100.0f;
    float left = 6.0f;
    float top = 7.0f;
    float right  = 8.0f;
    float bottom = 9.0f;
    ArkUI_NumberValue value[] = {{.f32 = size}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};

    ArkUI_NumberValue value2[] = {{.f32 = left}, {.f32 = top}, {.f32 = right}, {.f32 = bottom}};
    ArkUI_AttributeItem item2 = {value2, sizeof(value2) / sizeof(ArkUI_NumberValue)};
    
    nodeAPI->setAttribute(rootNode, NODE_WIDTH, &item);
    auto widthVal = nodeAPI->getAttribute(rootNode, NODE_WIDTH);
    EXPECT_EQ(widthVal->value[0].f32, size);

    nodeAPI->setAttribute(rootNode, NODE_HEIGHT, &item);
    auto heightVal = nodeAPI->getAttribute(rootNode, NODE_HEIGHT);
    EXPECT_EQ(heightVal->value[0].f32, size);

    nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_IMAGE_RESIZABLE_WITH_SLICE, &item2);
    auto sliceVal = nodeAPI->getAttribute(rootNode, NODE_BACKGROUND_IMAGE_RESIZABLE_WITH_SLICE);
    EXPECT_EQ(sliceVal->value[0].f32, left);
    EXPECT_EQ(sliceVal->value[1].f32, top);
    EXPECT_EQ(sliceVal->value[2].f32, right);
    EXPECT_EQ(sliceVal->value[3].f32, bottom);
}

/**
 * @tc.name: NativeNodeTest107
 * @tc.desc: Test OH_ArkUI_LayoutConstraint_Create.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest107, TestSize.Level1)
{
    ArkUI_LayoutConstraint* layoutConstraint = OH_ArkUI_LayoutConstraint_Create();
    EXPECT_TRUE(layoutConstraint);
    OH_ArkUI_LayoutConstraint_Dispose(layoutConstraint);
}

/**
 * @tc.name: NativeNodeTest108
 * @tc.desc: Test OH_ArkUI_LayoutConstraint_Copy.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest108, TestSize.Level1)
{
    ArkUI_LayoutConstraint* layoutConstraint = OH_ArkUI_LayoutConstraint_Create();
    ArkUI_LayoutConstraint* layoutConstraintCopy = OH_ArkUI_LayoutConstraint_Copy(layoutConstraint);
    EXPECT_TRUE(layoutConstraintCopy);
    OH_ArkUI_LayoutConstraint_Dispose(layoutConstraint);
    OH_ArkUI_LayoutConstraint_Dispose(layoutConstraintCopy);
}

/**
 * @tc.name: NativeNodeTest109
 * @tc.desc: Test OH_ArkUI_NodeCustomEvent_GetLayoutConstraintInMeasure.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest109, TestSize.Level1)
{
    auto event = new ArkUICustomNodeEvent();
    event->data[0] = 1;
    event->data[1] = 2;
    event->data[2] = 2;
    event->data[3] = 2;
    event->data[4] = 2;
    event->data[5] = 2;
    auto nodeEvent = new ArkUI_NodeCustomEvent();
    nodeEvent->event = event;
    auto layoutConstraint = OH_ArkUI_NodeCustomEvent_GetLayoutConstraintInMeasure(nodeEvent);
    EXPECT_TRUE(layoutConstraint);
    delete event;
    OH_ArkUI_LayoutConstraint_Dispose(layoutConstraint);
}

/**
 * @tc.name: NativeNodeTest110
 * @tc.desc: Test OH_ArkUI_NodeCustomEvent_GetLayoutConstraintInLayout.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest110, TestSize.Level1)
{
    auto event = new ArkUICustomNodeEvent();
    event->data[0] = 1;
    event->data[1] = 2;
    auto nodeEvent = new ArkUI_NodeCustomEvent();

    nodeEvent->event = event;
    auto intOffset = OH_ArkUI_NodeCustomEvent_GetPositionInLayout(nodeEvent);
    EXPECT_EQ(intOffset.x, 1);
    EXPECT_EQ(intOffset.y, 2);
    delete event;
    delete nodeEvent;
}

/**
 * @tc.name: NativeNodeTest111
 * @tc.desc: Test OH_ArkUI_NodeCustomEvent_GetDrawContextInDraw.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest111, TestSize.Level1)
{
    ArkUICustomNodeEvent* event = new ArkUICustomNodeEvent();
    event->data[2] = 1;
    event->data[3] = 2;
    ArkUI_NodeCustomEvent* nodeEvent = new ArkUI_NodeCustomEvent();
    nodeEvent->event = event;

    auto drawContext = OH_ArkUI_NodeCustomEvent_GetDrawContextInDraw(nodeEvent);
    EXPECT_EQ(drawContext->width, 1);
    EXPECT_EQ(drawContext->height, 2);
    delete event;
}

/**
 * @tc.name: NativeNodeTest112
 * @tc.desc: Test OH_ArkUI_NodeCustomEvent_GetEventTargetId.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest112, TestSize.Level1)
{
    ArkUI_NodeCustomEvent* event = new ArkUI_NodeCustomEvent;
    event->targetId = 1;
    auto targetId = OH_ArkUI_NodeCustomEvent_GetEventTargetId(event);
    EXPECT_EQ(targetId, 1);
    delete event;
}

/**
 * @tc.name: NativeNodeTest113
 * @tc.desc: Test OH_ArkUI_NodeCustomEvent_GetUserData.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest113, TestSize.Level1)
{
    ArkUI_NodeCustomEvent* event = new ArkUI_NodeCustomEvent;
    event->userData = nullptr;
    auto userData = OH_ArkUI_NodeCustomEvent_GetUserData(event);
    EXPECT_EQ(userData, nullptr);
    delete event;
}

/**
 * @tc.name: NativeNodeTest114
 * @tc.desc: Test OH_ArkUI_NodeCustomEvent_GetNodeHandle.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest114, TestSize.Level1)
{
    ArkUI_NodeCustomEvent* event = new ArkUI_NodeCustomEvent;
    event->node = nullptr;
    auto node = OH_ArkUI_NodeCustomEvent_GetNodeHandle(event);
    EXPECT_EQ(node, nullptr);
    delete event;
}

/**
 * @tc.name: NativeNodeTest115
 * @tc.desc: Test OH_ArkUI_NodeCustomEvent_GetEventType.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest115, TestSize.Level1)
{
    ArkUICustomNodeEvent* event = new ArkUICustomNodeEvent;
    event->kind = 1;
    ArkUI_NodeCustomEvent* nodeEvent = new ArkUI_NodeCustomEvent;
    nodeEvent->event = event;
    auto eventType = OH_ArkUI_NodeCustomEvent_GetEventType(nodeEvent);
    EXPECT_EQ(eventType, ArkUI_NodeCustomEventType::ARKUI_NODE_CUSTOM_EVENT_ON_MEASURE);
    delete event;
    delete nodeEvent;
}

/**
 * @tc.name: NativeNodeTest116
 * @tc.desc: Test OH_ArkUI_NodeCustomEvent_GetCustomSpanMeasureInfo.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest116, TestSize.Level1)
{
    ArkUICustomNodeEvent* event = new ArkUICustomNodeEvent;
    event->numberData[0].f32 = 1.0f;
    ArkUI_NodeCustomEvent* nodeEvent = new ArkUI_NodeCustomEvent;
    auto ret = OH_ArkUI_NodeCustomEvent_GetCustomSpanMeasureInfo(nullptr, nullptr);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);
    ret = OH_ArkUI_NodeCustomEvent_GetCustomSpanMeasureInfo(nodeEvent, nullptr);

    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);

    nodeEvent->event = event;
    ret = OH_ArkUI_NodeCustomEvent_GetCustomSpanMeasureInfo(nodeEvent, nullptr);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);
    ArkUI_CustomSpanMeasureInfo* info = new ArkUI_CustomSpanMeasureInfo;
    ret = OH_ArkUI_NodeCustomEvent_GetCustomSpanMeasureInfo(nodeEvent, info);
    EXPECT_EQ(info->fontSize, 1.0f);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    delete event;
    delete nodeEvent;
    delete info;
}

/**
 * @tc.name: NativeNodeTest117
 * @tc.desc: Test OH_ArkUI_NodeCustomEvent_SetCustomSpanMetrics.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest117, TestSize.Level1)
{
    ArkUICustomNodeEvent* event = new ArkUICustomNodeEvent;
    ArkUI_NodeCustomEvent* nodeEvent = new ArkUI_NodeCustomEvent;
    auto ret = OH_ArkUI_NodeCustomEvent_SetCustomSpanMetrics(nullptr, nullptr);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);

    ret = OH_ArkUI_NodeCustomEvent_SetCustomSpanMetrics(nodeEvent, nullptr);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);

    nodeEvent->event = event;
    ret = OH_ArkUI_NodeCustomEvent_SetCustomSpanMetrics(nodeEvent, nullptr);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);
    ArkUI_CustomSpanMetrics* metrics = new ArkUI_CustomSpanMetrics;
    metrics->width = 1.0f;
    metrics->height = 2.0f;
    ret = OH_ArkUI_NodeCustomEvent_SetCustomSpanMetrics(nodeEvent, metrics);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    delete event;
    delete nodeEvent;
    delete metrics;
}

/**
 * @tc.name: NativeNodeTest118
 * @tc.desc: Test OH_ArkUI_NodeCustomEvent_GetCustomSpanDrawInfo.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest118, TestSize.Level1)
{
    ArkUICustomNodeEvent* event = new ArkUICustomNodeEvent;
    event->numberData[0].f32 = 1.0f;
    ArkUI_NodeCustomEvent* nodeEvent = new ArkUI_NodeCustomEvent;
    auto ret = OH_ArkUI_NodeCustomEvent_GetCustomSpanDrawInfo(nullptr, nullptr);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);
    ret = OH_ArkUI_NodeCustomEvent_GetCustomSpanDrawInfo(nodeEvent, nullptr);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeEvent->event = event;
    ArkUI_CustomSpanDrawInfo* info = new ArkUI_CustomSpanDrawInfo;
    ret = OH_ArkUI_NodeCustomEvent_GetCustomSpanDrawInfo(nodeEvent, info);
    EXPECT_EQ(info->optionsX, 1.0f);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    delete event;
    delete nodeEvent;
    delete info;
}

/**
 * @tc.name: NativeNodeTest119
 * @tc.desc: Test OH_ArkUI_CustomSpanMeasureInfo_Dispose.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest119, TestSize.Level1)
{
    ArkUI_CustomSpanMeasureInfo* info = new ArkUI_CustomSpanMeasureInfo;
    EXPECT_TRUE(info);
    OH_ArkUI_CustomSpanMeasureInfo_Dispose(info);
    OH_ArkUI_CustomSpanMeasureInfo_Dispose(nullptr);
}

/**
 * @tc.name: NativeNodeTest120
 * @tc.desc: Test OH_ArkUI_CustomSpanMeasureInfo_GetFontSize.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest120, TestSize.Level1)
{
    ArkUI_CustomSpanMeasureInfo* info = new ArkUI_CustomSpanMeasureInfo;
    info->fontSize = 1.0f;
    auto fontSize = OH_ArkUI_CustomSpanMeasureInfo_GetFontSize(info);
    EXPECT_EQ(fontSize, 1.0f);
    fontSize = OH_ArkUI_CustomSpanMeasureInfo_GetFontSize(nullptr);
    EXPECT_EQ(fontSize, 0.0f);
    OH_ArkUI_CustomSpanMeasureInfo_Dispose(info);
}

/**
 * @tc.name: NativeNodeTest121
 * @tc.desc: Test OH_ArkUI_CustomSpanMetrics_Dispose.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest121, TestSize.Level1)
{
    ArkUI_CustomSpanMetrics* metrics = new ArkUI_CustomSpanMetrics;
    EXPECT_NE(metrics, nullptr);
    OH_ArkUI_CustomSpanMetrics_Dispose(metrics);
    OH_ArkUI_CustomSpanMetrics_Dispose(nullptr);
}

/**
 * @tc.name: NativeNodeTest122
 * @tc.desc: Test OH_ArkUI_CustomSpanMetrics_SetWidth and OH_ArkUI_CustomSpanMetrics_SetHeight.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest122, TestSize.Level1)
{
    ArkUI_CustomSpanMetrics* metrics = new ArkUI_CustomSpanMetrics;
    auto ret1 = OH_ArkUI_CustomSpanMetrics_SetWidth(metrics, 1.0f);
    auto ret2 = OH_ArkUI_CustomSpanMetrics_SetHeight(metrics, 2.0f);
    EXPECT_EQ(metrics->width, 1.0f);
    EXPECT_EQ(metrics->height, 2.0f);
    EXPECT_EQ(ret1, ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(ret2, ARKUI_ERROR_CODE_NO_ERROR);
    ret1 = OH_ArkUI_CustomSpanMetrics_SetWidth(nullptr, 1.0f);
    ret2 = OH_ArkUI_CustomSpanMetrics_SetHeight(nullptr, 1.0f);
    EXPECT_EQ(ret1, ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(ret2, ARKUI_ERROR_CODE_PARAM_INVALID);
    OH_ArkUI_CustomSpanMetrics_Dispose(metrics);
}

/**
 * @tc.name: NativeNodeTest123
 * @tc.desc: Test OH_ArkUI_CustomSpanDrawInfo_GetXXX Function
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest123, TestSize.Level1)
{
    auto info = OH_ArkUI_CustomSpanDrawInfo_Create();
    EXPECT_TRUE(info);
    info->optionsX = 1.0f;
    info->optionsLineTop = 2.0f;
    info->optionsLineBottom = 3.0f;
    info->optionsBaseLine = 4.0f;
    auto optionsX = OH_ArkUI_CustomSpanDrawInfo_GetXOffset(nullptr);
    auto optionsLineTop = OH_ArkUI_CustomSpanDrawInfo_GetLineTop(nullptr);
    auto optionsLineBottom = OH_ArkUI_CustomSpanDrawInfo_GetLineBottom(nullptr);
    auto optionsBaseLine = OH_ArkUI_CustomSpanDrawInfo_GetBaseline(nullptr);
    EXPECT_EQ(optionsX, 0.0f);
    EXPECT_EQ(optionsLineTop, 0.0f);
    EXPECT_EQ(optionsLineBottom, 0.0f);
    EXPECT_EQ(optionsBaseLine, 0.0f);
    optionsX = OH_ArkUI_CustomSpanDrawInfo_GetXOffset(info);
    optionsLineTop = OH_ArkUI_CustomSpanDrawInfo_GetLineTop(info);
    optionsLineBottom = OH_ArkUI_CustomSpanDrawInfo_GetLineBottom(info);
    optionsBaseLine = OH_ArkUI_CustomSpanDrawInfo_GetBaseline(info);
    EXPECT_EQ(optionsX, 1.0f);
    EXPECT_EQ(optionsLineTop, 2.0f);
    EXPECT_EQ(optionsLineBottom, 3.0f);
    EXPECT_EQ(optionsBaseLine, 4.0f);
    OH_ArkUI_CustomSpanDrawInfo_Dispose(info);
}

/**
 * @tc.name: NativeNodeTest124
 * @tc.desc: Test OH_ArkUI_DrawContext_GetSize Function
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest124, TestSize.Level1)
{
    auto intSize = OH_ArkUI_DrawContext_GetSize(nullptr);
    EXPECT_EQ(intSize.height, 0);
    EXPECT_EQ(intSize.width, 0);
    auto drawContext = new ArkUI_DrawContext;
    drawContext->width = 1.0f;
    drawContext->height = 2.0f;
    intSize = OH_ArkUI_DrawContext_GetSize(drawContext);
    EXPECT_EQ(intSize.width, 1.0f);
    EXPECT_EQ(intSize.height, 2.0f);
    delete drawContext;
}

/**
 * @tc.name: NativeNodeTest125
 * @tc.desc: Test OH_ArkUI_SwiperIndicator_Create.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest125, TestSize.Level1)
{
    auto indicator = OH_ArkUI_SwiperIndicator_Create(ARKUI_SWIPER_INDICATOR_TYPE_DIGIT);
    EXPECT_FALSE(indicator);
    indicator = OH_ArkUI_SwiperIndicator_Create(ARKUI_SWIPER_INDICATOR_TYPE_DOT);
    EXPECT_TRUE(indicator);
    auto ret = OH_ArkUI_SwiperIndicator_SetMaxDisplayCount(indicator, 7);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    ret = OH_ArkUI_SwiperIndicator_SetMaxDisplayCount(indicator, 1);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);
    ret = OH_ArkUI_SwiperIndicator_SetMaxDisplayCount(indicator, 10);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);
    OH_ArkUI_SwiperIndicator_Dispose(indicator);
}

/**
 * @tc.name: NativeNodeTest126
 * @tc.desc: Test ArkUI_SwiperArrowStyle.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest126, TestSize.Level1)
{
    auto arrowStyle = OH_ArkUI_SwiperArrowStyle_Create();
    OH_ArkUI_SwiperArrowStyle_SetShowBackground(arrowStyle, 1);
    EXPECT_EQ(OH_ArkUI_SwiperArrowStyle_GetShowBackground(arrowStyle), 1);
    OH_ArkUI_SwiperArrowStyle_SetShowBackground(arrowStyle, 0);
    EXPECT_EQ(OH_ArkUI_SwiperArrowStyle_GetShowBackground(arrowStyle), 0);
    OH_ArkUI_SwiperArrowStyle_SetShowBackground(arrowStyle, 3);

    OH_ArkUI_SwiperArrowStyle_SetShowSidebarMiddle(arrowStyle, 1);
    EXPECT_EQ(OH_ArkUI_SwiperArrowStyle_GetShowSidebarMiddle(arrowStyle), 1);
    OH_ArkUI_SwiperArrowStyle_SetShowSidebarMiddle(arrowStyle, 0);
    EXPECT_EQ(OH_ArkUI_SwiperArrowStyle_GetShowSidebarMiddle(arrowStyle), 0);

    OH_ArkUI_SwiperArrowStyle_SetBackgroundSize(arrowStyle, 25.0f);
    EXPECT_EQ(OH_ArkUI_SwiperArrowStyle_GetBackgroundSize(arrowStyle), 25.0f);
    OH_ArkUI_SwiperArrowStyle_SetBackgroundColor(arrowStyle, 0xFF182431);
    EXPECT_EQ(OH_ArkUI_SwiperArrowStyle_GetBackgroundColor(arrowStyle), 0xFF182431);
    OH_ArkUI_SwiperArrowStyle_SetArrowSize(arrowStyle, 25.0f);
    EXPECT_EQ(OH_ArkUI_SwiperArrowStyle_GetArrowSize(arrowStyle), 25.0f);
    OH_ArkUI_SwiperArrowStyle_Destroy(arrowStyle);
}

/**
 * @tc.name: NativeNodeTest127
 * @tc.desc: Test OH_ArkUI_CustomSpanMeasureInfo_Create.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest127, TestSize.Level1)
{
    auto info = OH_ArkUI_CustomSpanMeasureInfo_Create();
    EXPECT_NE(info, nullptr);
}

/**
 * @tc.name: NativeNodeTest128
 * @tc.desc: Test OH_ArkUI_CustomSpanMetrics_Create.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest128, TestSize.Level1)
{
    auto metrics = OH_ArkUI_CustomSpanMetrics_Create();
    EXPECT_NE(metrics, nullptr);
}

/**
 * @tc.name: NativeNodeTest129
 * @tc.desc: Test OH_ArkUI_LayoutConstraint_Get.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest129, TestSize.Level1)
{
    auto maxWidth = OH_ArkUI_LayoutConstraint_GetMaxWidth(nullptr);
    EXPECT_EQ(maxWidth, -1);
    auto minWidth = OH_ArkUI_LayoutConstraint_GetMinWidth(nullptr);
    EXPECT_EQ(minWidth, -1);
    auto maxHeight = OH_ArkUI_LayoutConstraint_GetMaxHeight(nullptr);
    EXPECT_EQ(maxHeight, -1);
    auto minHeight = OH_ArkUI_LayoutConstraint_GetMinHeight(nullptr);
    EXPECT_EQ(minHeight, -1);
    auto percentReferWidth = OH_ArkUI_LayoutConstraint_GetPercentReferenceWidth(nullptr);
    EXPECT_EQ(percentReferWidth, -1);
    auto percentReferHeight = OH_ArkUI_LayoutConstraint_GetPercentReferenceHeight(nullptr);
    EXPECT_EQ(percentReferHeight, -1);

    auto constraint = new ArkUI_LayoutConstraint;
    constraint->maxWidth = 1;
    constraint->minWidth = 1;
    constraint->maxHeight = 1;
    constraint->minHeight = 1;
    constraint->percentReferWidth = 1;
    constraint->percentReferHeight = 1;
    maxWidth = OH_ArkUI_LayoutConstraint_GetMaxWidth(constraint);
    EXPECT_EQ(maxWidth, 1);
    minWidth = OH_ArkUI_LayoutConstraint_GetMaxWidth(constraint);
    EXPECT_EQ(minWidth, 1);
    maxHeight = OH_ArkUI_LayoutConstraint_GetMaxWidth(constraint);
    EXPECT_EQ(maxHeight, 1);
    minHeight = OH_ArkUI_LayoutConstraint_GetMaxWidth(constraint);
    EXPECT_EQ(minHeight, 1);
    percentReferWidth = OH_ArkUI_LayoutConstraint_GetMaxWidth(constraint);
    EXPECT_EQ(percentReferWidth, 1);
    percentReferHeight = OH_ArkUI_LayoutConstraint_GetMaxWidth(constraint);
    EXPECT_EQ(percentReferHeight, 1);

    delete constraint;
}

/**
 * @tc.name: NativeNodeTest130
 * @tc.desc: Test OH_ArkUI_LayoutConstraint_Set.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest130, TestSize.Level1)
{
    int32_t value = 2;
    auto constraint = new ArkUI_LayoutConstraint;

    OH_ArkUI_LayoutConstraint_SetMinWidth(nullptr, value);
    OH_ArkUI_LayoutConstraint_SetMinWidth(constraint, value);
    EXPECT_EQ(constraint->minWidth, value);
    OH_ArkUI_LayoutConstraint_SetMaxWidth(nullptr, value);
    OH_ArkUI_LayoutConstraint_SetMaxWidth(constraint, value);
    EXPECT_EQ(constraint->maxWidth, value);
    OH_ArkUI_LayoutConstraint_SetMaxHeight(nullptr, value);
    OH_ArkUI_LayoutConstraint_SetMaxHeight(constraint, value);
    EXPECT_EQ(constraint->maxHeight, value);
    OH_ArkUI_LayoutConstraint_SetMinHeight(nullptr, value);
    OH_ArkUI_LayoutConstraint_SetMinHeight(constraint, value);
    EXPECT_EQ(constraint->minHeight, value);
    OH_ArkUI_LayoutConstraint_SetPercentReferenceWidth(nullptr, value);
    OH_ArkUI_LayoutConstraint_SetPercentReferenceWidth(constraint, value);
    EXPECT_EQ(constraint->percentReferWidth, value);
    OH_ArkUI_LayoutConstraint_SetPercentReferenceHeight(nullptr, value);
    OH_ArkUI_LayoutConstraint_SetPercentReferenceHeight(constraint, value);
    EXPECT_EQ(constraint->percentReferHeight, value);

    delete constraint;
}

/**
 * @tc.name: NativeNodeTest131
 * @tc.desc: Test OH_ArkUI_SwiperIndicator_GetWithNullptr.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest131, TestSize.Level1)
{
    float value = 1.0f;
    value = OH_ArkUI_SwiperIndicator_GetStartPosition(nullptr);
    EXPECT_EQ(value, 0.0f);
    value = OH_ArkUI_SwiperIndicator_GetTopPosition(nullptr);
    EXPECT_EQ(value, 0.0f);
    value = OH_ArkUI_SwiperIndicator_GetEndPosition(nullptr);
    EXPECT_EQ(value, 0.0f);
    value = OH_ArkUI_SwiperIndicator_GetBottomPosition(nullptr);
    EXPECT_EQ(value, 0.0f);
    value = OH_ArkUI_SwiperIndicator_GetItemWidth(nullptr);
    EXPECT_EQ(value, 0.0f);
    value = OH_ArkUI_SwiperIndicator_GetItemHeight(nullptr);
    EXPECT_EQ(value, 0.0f);
    value = OH_ArkUI_SwiperIndicator_GetSelectedItemWidth(nullptr);
    EXPECT_EQ(value, 0.0f);
    value = OH_ArkUI_SwiperIndicator_GetSelectedItemHeight(nullptr);
    EXPECT_EQ(value, 0.0f);
    int32_t value1 = 1;
    value1 = OH_ArkUI_SwiperIndicator_GetMask(nullptr);
    EXPECT_EQ(value1, 0);
    uint32_t value2 = 1;
    value2 = OH_ArkUI_SwiperIndicator_GetColor(nullptr);
    EXPECT_EQ(value2, 0);
    value2 = OH_ArkUI_SwiperIndicator_GetSelectedColor(nullptr);
    EXPECT_EQ(value2, 0);
    value1 = OH_ArkUI_SwiperIndicator_GetMaxDisplayCount(nullptr);
    EXPECT_EQ(value1, 0);
    value = OH_ArkUI_SwiperIndicator_GetIgnoreSizeOfBottom(nullptr);
    EXPECT_EQ(value, 0.0f);
    value = OH_ArkUI_SwiperIndicator_GetSpace(nullptr);
    EXPECT_EQ(value, 8.0f);
}

/**
 * @tc.name: NativeNodeTest132
 * @tc.desc: Test OH_ArkUI_SwiperIndicator.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest132, TestSize.Level1)
{
    auto indicator = OH_ArkUI_SwiperIndicator_Create(ARKUI_SWIPER_INDICATOR_TYPE_DOT);
    float setValueF = 1.0f;
    int32_t setValueI = 1;
    uint32_t setValueUi = 1;
    OH_ArkUI_SwiperIndicator_SetStartPosition(indicator, setValueF);
    float value = OH_ArkUI_SwiperIndicator_GetStartPosition(indicator);
    EXPECT_EQ(value, setValueF);
    OH_ArkUI_SwiperIndicator_SetTopPosition(indicator, setValueF);
    value = OH_ArkUI_SwiperIndicator_GetTopPosition(indicator);
    EXPECT_EQ(value, setValueF);
    OH_ArkUI_SwiperIndicator_SetEndPosition(indicator, setValueF);
    value = OH_ArkUI_SwiperIndicator_GetEndPosition(indicator);
    EXPECT_EQ(value, setValueF);
    OH_ArkUI_SwiperIndicator_SetBottomPosition(indicator, setValueF);
    value = OH_ArkUI_SwiperIndicator_GetBottomPosition(indicator);
    EXPECT_EQ(value, setValueF);
    OH_ArkUI_SwiperIndicator_SetItemWidth(indicator, setValueF);
    value = OH_ArkUI_SwiperIndicator_GetItemWidth(indicator);
    EXPECT_EQ(value, setValueF);
    OH_ArkUI_SwiperIndicator_SetItemHeight(indicator, setValueF);
    value = OH_ArkUI_SwiperIndicator_GetItemHeight(indicator);
    EXPECT_EQ(value, setValueF);
    OH_ArkUI_SwiperIndicator_SetSelectedItemWidth(indicator, setValueF);
    value = OH_ArkUI_SwiperIndicator_GetSelectedItemWidth(indicator);
    EXPECT_EQ(value, setValueF);
    OH_ArkUI_SwiperIndicator_SetSelectedItemHeight(indicator, setValueF);
    value = OH_ArkUI_SwiperIndicator_GetSelectedItemHeight(indicator);
    EXPECT_EQ(value, setValueF);
    OH_ArkUI_SwiperIndicator_SetMask(indicator, setValueI);
    int32_t value1 = OH_ArkUI_SwiperIndicator_GetMask(indicator);
    EXPECT_EQ(value1, setValueI);
    OH_ArkUI_SwiperIndicator_SetColor(indicator, setValueUi);
    uint32_t value2 = OH_ArkUI_SwiperIndicator_GetColor(indicator);
    EXPECT_EQ(value2, setValueUi);
    OH_ArkUI_SwiperIndicator_SetSelectedColor(indicator, setValueUi);
    value2 = OH_ArkUI_SwiperIndicator_GetSelectedColor(indicator);
    EXPECT_EQ(value2, setValueUi);
    OH_ArkUI_SwiperIndicator_SetMaxDisplayCount(indicator, setValueI);
    value1 = OH_ArkUI_SwiperIndicator_GetMaxDisplayCount(indicator);
    EXPECT_EQ(value1, 0);
    OH_ArkUI_SwiperIndicator_SetIgnoreSizeOfBottom(indicator, setValueI);
    value1 = OH_ArkUI_SwiperIndicator_GetIgnoreSizeOfBottom(indicator);
    EXPECT_EQ(value1, setValueI);
    OH_ArkUI_SwiperIndicator_SetSpace(indicator, setValueF);
    value = OH_ArkUI_SwiperIndicator_GetSpace(indicator);
    EXPECT_EQ(value, setValueF);
    OH_ArkUI_SwiperIndicator_Dispose(indicator);
}

/**
 * @tc.name: NativeNodeTest133
 * @tc.desc: Test OH_ArkUI_SwiperDigitIndicator.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest133, TestSize.Level1)
{
    auto indicator = OH_ArkUI_SwiperDigitIndicator_Create();
    EXPECT_TRUE(indicator);
    OH_ArkUI_SwiperDigitIndicator_Destroy(indicator);
}

/**
 * @tc.name: NativeNodeTest134
 * @tc.desc: Test NODE_VISIBLE_AREA_APPROXIMATE_CHANGE_RATIO.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest134, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);

    auto option = OH_ArkUI_VisibleAreaEventOptions_Create();
    float* ratiosArray = new float[2];
    ratiosArray[0] = -0.2f;
    ratiosArray[1] = 1.0f;
    OH_ArkUI_VisibleAreaEventOptions_SetRatios(option, ratiosArray, 2);
    OH_ArkUI_VisibleAreaEventOptions_SetExpectedUpdateInterval(option, 1000);
    ArkUI_AttributeItem attributeItem = { .object = option };
    nodeAPI->setAttribute(rootNode, NODE_VISIBLE_AREA_APPROXIMATE_CHANGE_RATIO, &attributeItem);

    float* getRatiosArray = new float[4];
    int size = 4;
    OH_ArkUI_VisibleAreaEventOptions_GetRatios(option, getRatiosArray, &size);

    EXPECT_EQ(getRatiosArray[0], 0.0f);
    EXPECT_EQ(getRatiosArray[1], 1.0f);

    EXPECT_EQ(OH_ArkUI_VisibleAreaEventOptions_GetExpectedUpdateInterval(option), 1000);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest135
 * @tc.desc: Test NODE_VISIBLE_AREA_APPROXIMATE_CHANGE_RATIO.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest135, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);

    auto option = OH_ArkUI_VisibleAreaEventOptions_Create();
    float* ratiosArray = new float[2];
    ratiosArray[0] = -0.2f;
    ratiosArray[1] = 3.0f;
    OH_ArkUI_VisibleAreaEventOptions_SetRatios(option, ratiosArray, 2);
    OH_ArkUI_VisibleAreaEventOptions_SetExpectedUpdateInterval(option, 1000);
    ArkUI_AttributeItem attributeItem = { .object = option };
    nodeAPI->setAttribute(rootNode, NODE_VISIBLE_AREA_APPROXIMATE_CHANGE_RATIO, &attributeItem);

    float* getRatiosArray = new float[2];
    int size = 2;
    OH_ArkUI_VisibleAreaEventOptions_GetRatios(option, getRatiosArray, &size);

    EXPECT_EQ(getRatiosArray[0], 0.0f);
    EXPECT_EQ(getRatiosArray[1], 1.0f);

    EXPECT_EQ(OH_ArkUI_VisibleAreaEventOptions_GetExpectedUpdateInterval(option), 1000);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest136
 * @tc.desc: Test NODE_VISIBLE_AREA_APPROXIMATE_CHANGE_RATIO.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest136, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);

    auto option = OH_ArkUI_VisibleAreaEventOptions_Create();
    float* ratiosArray = new float[2];
    ratiosArray[0] = 0.2f;
    ratiosArray[1] = 1.2f;
    OH_ArkUI_VisibleAreaEventOptions_SetRatios(option, ratiosArray, 2);
    OH_ArkUI_VisibleAreaEventOptions_SetExpectedUpdateInterval(option, 1000);
    ArkUI_AttributeItem attributeItem = { .object = option };
    nodeAPI->setAttribute(rootNode, NODE_VISIBLE_AREA_APPROXIMATE_CHANGE_RATIO, &attributeItem);

    float* getRatiosArray = new float[2];
    int size = 2;
    OH_ArkUI_VisibleAreaEventOptions_GetRatios(option, getRatiosArray, &size);

    EXPECT_EQ(getRatiosArray[0], 0.2f);
    EXPECT_EQ(getRatiosArray[1], 1.0f);

    EXPECT_EQ(OH_ArkUI_VisibleAreaEventOptions_GetExpectedUpdateInterval(option), 1000);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest137
 * @tc.desc: Test NODE_VISIBLE_AREA_APPROXIMATE_CHANGE_RATIO.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest137, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);

    auto option = OH_ArkUI_VisibleAreaEventOptions_Create();
    float* ratiosArray = new float[2];
    ratiosArray[0] = 1.2f;
    ratiosArray[1] = 1.2f;
    OH_ArkUI_VisibleAreaEventOptions_SetRatios(option, ratiosArray, 2);
    OH_ArkUI_VisibleAreaEventOptions_SetExpectedUpdateInterval(option, 1000);
    ArkUI_AttributeItem attributeItem = { .object = option };
    nodeAPI->setAttribute(rootNode, NODE_VISIBLE_AREA_APPROXIMATE_CHANGE_RATIO, &attributeItem);

    float* getRatiosArray = new float[2];
    int size = 2;
    OH_ArkUI_VisibleAreaEventOptions_GetRatios(option, getRatiosArray, &size);

    EXPECT_EQ(getRatiosArray[0], 1.0f);
    EXPECT_EQ(getRatiosArray[1], 1.0f);

    EXPECT_EQ(OH_ArkUI_VisibleAreaEventOptions_GetExpectedUpdateInterval(option), 1000);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest138
 * @tc.desc: Test NODE_VISIBLE_AREA_APPROXIMATE_CHANGE_RATIO.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest138, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);

    auto option = OH_ArkUI_VisibleAreaEventOptions_Create();
    float* ratiosArray = new float[2];
    ratiosArray[0] = 0.2f;
    ratiosArray[1] = 1.0f;
    OH_ArkUI_VisibleAreaEventOptions_SetRatios(option, ratiosArray, 2);
    OH_ArkUI_VisibleAreaEventOptions_SetExpectedUpdateInterval(option, -100);
    ArkUI_AttributeItem attributeItem = { .object = option };
    nodeAPI->setAttribute(rootNode, NODE_VISIBLE_AREA_APPROXIMATE_CHANGE_RATIO, &attributeItem);

    float* getRatiosArray = new float[2];
    int size = 2;
    OH_ArkUI_VisibleAreaEventOptions_GetRatios(option, getRatiosArray, &size);

    EXPECT_EQ(getRatiosArray[0], 0.2f);
    EXPECT_EQ(getRatiosArray[1], 1.0f);

    EXPECT_EQ(OH_ArkUI_VisibleAreaEventOptions_GetExpectedUpdateInterval(option), 1000);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest139
 * @tc.desc: Test NODE_VISIBLE_AREA_APPROXIMATE_CHANGE_RATIO.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest139, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);

    auto option = OH_ArkUI_VisibleAreaEventOptions_Create();
    float* ratiosArray = new float[2];
    ratiosArray[0] = 0.2f;
    ratiosArray[1] = 1.0f;
    OH_ArkUI_VisibleAreaEventOptions_SetRatios(option, ratiosArray, 2);
    OH_ArkUI_VisibleAreaEventOptions_SetExpectedUpdateInterval(option, 1200);
    ArkUI_AttributeItem attributeItem = { .object = option };
    nodeAPI->setAttribute(rootNode, NODE_VISIBLE_AREA_APPROXIMATE_CHANGE_RATIO, &attributeItem);

    float* getRatiosArray = new float[2];
    int size = 2;
    OH_ArkUI_VisibleAreaEventOptions_GetRatios(option, getRatiosArray, &size);

    EXPECT_EQ(getRatiosArray[0], 0.2f);
    EXPECT_EQ(getRatiosArray[1], 1.0f);

    EXPECT_EQ(OH_ArkUI_VisibleAreaEventOptions_GetExpectedUpdateInterval(option), 1200);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest140
 * @tc.desc: Test NODE_VISIBLE_AREA_APPROXIMATE_CHANGE_RATIO.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest140, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);

    auto option = OH_ArkUI_VisibleAreaEventOptions_Create();
    float* ratiosArray = new float[2];
    ratiosArray[0] = 0.2f;
    ratiosArray[1] = 1.0f;
    OH_ArkUI_VisibleAreaEventOptions_SetRatios(option, ratiosArray, 2);
    OH_ArkUI_VisibleAreaEventOptions_SetExpectedUpdateInterval(option, 200);
    ArkUI_AttributeItem attributeItem = { .object = option };
    nodeAPI->setAttribute(rootNode, NODE_VISIBLE_AREA_APPROXIMATE_CHANGE_RATIO, &attributeItem);

    float* getRatiosArray = new float[2];
    int size = 2;
    OH_ArkUI_VisibleAreaEventOptions_GetRatios(option, getRatiosArray, &size);

    EXPECT_EQ(getRatiosArray[0], 0.2f);
    EXPECT_EQ(getRatiosArray[1], 1.0f);

    EXPECT_EQ(OH_ArkUI_VisibleAreaEventOptions_GetExpectedUpdateInterval(option), 200);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest141
 * @tc.desc: Test embeddedComponent function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest141, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_EMBEDDED_COMPONENT);
    ASSERT_NE(rootNode, nullptr);
    ArkUI_AttributeItem item0 = {nullptr, 0, nullptr, nullptr};
    nodeAPI->setAttribute(rootNode, NODE_EMBEDDED_COMPONENT_WANT, &item0);
    nodeAPI->setAttribute(rootNode, NODE_EMBEDDED_COMPONENT_OPTION, &item0);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_BackgroundImageResizable_001
 * @tc.desc: Test NODE_BACKGROUND_IMAGE_RESIZABLE_WITH_SLICE function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_BackgroundImageResizable_001, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);
    int32_t ret1 = nodeAPI->addChild(rootNode, childNode);
    EXPECT_EQ(ret1, ARKUI_ERROR_CODE_NO_ERROR);
    float size = 100.0f;
    float left = -1.0f;
    float top = 0.0f;
    float right  = 8.0f;
    float bottom = 9.0f;
    ArkUI_NumberValue value[] = {{.f32 = size}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};

    ArkUI_NumberValue value2[] = {{.f32 = left}, {.f32 = top}, {.f32 = right}, {.f32 = bottom}};
    ArkUI_AttributeItem item2 = {value2, sizeof(value2) / sizeof(ArkUI_NumberValue)};

    nodeAPI->setAttribute(rootNode, NODE_WIDTH, &item);
    auto widthVal = nodeAPI->getAttribute(rootNode, NODE_WIDTH);
    EXPECT_EQ(widthVal->value[0].f32, size);

    nodeAPI->setAttribute(rootNode, NODE_HEIGHT, &item);
    auto heightVal = nodeAPI->getAttribute(rootNode, NODE_HEIGHT);
    EXPECT_EQ(heightVal->value[0].f32, size);

    nodeAPI->setAttribute(rootNode, NODE_BACKGROUND_IMAGE_RESIZABLE_WITH_SLICE, &item2);
    auto sliceVal = nodeAPI->getAttribute(rootNode, NODE_BACKGROUND_IMAGE_RESIZABLE_WITH_SLICE);
    EXPECT_EQ(sliceVal->value[0].f32, 0.0f);
    EXPECT_EQ(sliceVal->value[1].f32, top);
    EXPECT_EQ(sliceVal->value[2].f32, right);
    EXPECT_EQ(sliceVal->value[3].f32, bottom);
    EXPECT_EQ(sliceVal->size, 4);
}

/**
 * @tc.name: NativeNodeTest142
 * @tc.desc: Test ArkUI_SupportedUIStates.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest142, TestSize.Level1)
{
    ArkUI_NodeHandle styleButton = nullptr;
    int32_t settingUIStatus = 1;
    EXPECT_EQ(OH_ArkUI_AddSupportedUIStates(
        styleButton, settingUIStatus, nullptr, false, nullptr), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(OH_ArkUI_RemoveSupportedUIStates(styleButton, settingUIStatus), ARKUI_ERROR_CODE_PARAM_INVALID);
}

/**
 * @tc.name: NativeNodeTest143
 * @tc.desc: Test optimizeTrailingSpace function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest143, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_TEXT, nullptr, true});
    ArkUI_NumberValue value[] = {{.i32 = true}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};

    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_OPTIMIZE_TRAILING_SPACE, &item), ARKUI_ERROR_CODE_NO_ERROR);
    value[0].i32 = false;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_OPTIMIZE_TRAILING_SPACE, &item), ARKUI_ERROR_CODE_NO_ERROR);

    item.size = -1;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_OPTIMIZE_TRAILING_SPACE, &item),
    ARKUI_ERROR_CODE_PARAM_INVALID);
    item.size = 1;
    value[0].i32 = 2;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_TEXT_OPTIMIZE_TRAILING_SPACE, &item),
    ARKUI_ERROR_CODE_PARAM_INVALID);
    value[0].i32 = true;

    nodeAPI->resetAttribute(rootNode, NODE_TEXT_OPTIMIZE_TRAILING_SPACE);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_OPTIMIZE_TRAILING_SPACE), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest144
 * @tc.desc: Test ScrollBarMargin function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest144, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto list = nodeAPI->createNode(ARKUI_NODE_LIST);
    ASSERT_NE(list, nullptr);
    ArkUI_NumberValue value1[] = { { .f32 = 10.0f }, { .f32 = 50.0f } };
    ArkUI_AttributeItem item = { value1, sizeof(value1) / sizeof(ArkUI_NumberValue) };
    EXPECT_EQ(nodeAPI->setAttribute(list, NODE_SCROLL_BAR_MARGIN, &item), ARKUI_ERROR_CODE_NO_ERROR);

    auto ret = nodeAPI->getAttribute(list, NODE_SCROLL_BAR_MARGIN);
    EXPECT_EQ(ret->value[0].f32, 10.0);
    EXPECT_EQ(ret->value[1].f32, 50.0);

    ArkUI_NumberValue value2[] = { { .f32 = -1.0f }, { .f32 = -1.0f } };
    item = { value2, sizeof(value2) / sizeof(ArkUI_NumberValue) };
    EXPECT_EQ(nodeAPI->setAttribute(list, NODE_SCROLL_BAR_MARGIN, &item), ARKUI_ERROR_CODE_NO_ERROR);

    ret = nodeAPI->getAttribute(list, NODE_SCROLL_BAR_MARGIN);
    EXPECT_EQ(ret->value[0].f32, 0.0);
    EXPECT_EQ(ret->value[1].f32, 0.0);

    ArkUI_NumberValue value3[] = { { .f32 = 0.5f }, { .f32 = 0.5f } };
    item = { value3, sizeof(value3) / sizeof(ArkUI_NumberValue) };
    EXPECT_EQ(nodeAPI->setAttribute(list, NODE_SCROLL_BAR_MARGIN, &item), ARKUI_ERROR_CODE_NO_ERROR);

    ret = nodeAPI->getAttribute(list, NODE_SCROLL_BAR_MARGIN);
    EXPECT_EQ(ret->value[0].f32, 0.5);
    EXPECT_EQ(ret->value[1].f32, 0.5);

    ArkUI_NumberValue value4[] = {};
    item = { value4, 0, nullptr, nullptr };
    EXPECT_EQ(nodeAPI->setAttribute(list, NODE_SCROLL_BAR_MARGIN, &item), ARKUI_ERROR_CODE_NO_ERROR);

    ret = nodeAPI->getAttribute(list, NODE_SCROLL_BAR_MARGIN);
    EXPECT_EQ(ret->value[0].f32, 0.0);
    EXPECT_EQ(ret->value[1].f32, 0.0);

    EXPECT_EQ(nodeAPI->resetAttribute(list, NODE_SCROLL_BAR_MARGIN), ARKUI_ERROR_CODE_NO_ERROR);

    ret = nodeAPI->getAttribute(list, NODE_SCROLL_BAR_MARGIN);
    EXPECT_EQ(ret->value[0].f32, 0.0);
    EXPECT_EQ(ret->value[1].f32, 0.0);

    nodeAPI->disposeNode(list);
}

/**
 * @tc.name: NativeNodeTest145
 * @tc.desc: Test imageNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest145, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_IMAGE, nullptr, true});
    ArkUI_NumberValue value[] = {{.i32 = ARKUI_ORIENTATION_DOWN}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_ORIENTATION, &item), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_ORIENTATION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_ORIENTATION), nullptr);

    value[0].i32 = ARKUI_DYNAMIC_RANGE_MODE_CONSTRAINT;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_DYNAMIC_RANGE_MODE, &item), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_DYNAMIC_RANGE_MODE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_DYNAMIC_RANGE_MODE), nullptr);

    value[0].i32 = ARKUI_COPY_OPTIONS_LOCAL_DEVICE;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_COPY_OPTION, &item), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_COPY_OPTION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_COPY_OPTION), nullptr);

    value[0].i32 = true;
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_MATCH_TEXT_DIRECTION, &item), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_MATCH_TEXT_DIRECTION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_MATCH_TEXT_DIRECTION), nullptr);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_ENABLE_ANALYZER, &item), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_ENABLE_ANALYZER), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_ENABLE_ANALYZER), nullptr);
    value[0].f32 = 0.8; // 0.8 means brightness of the picture
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_HDR_BRIGHTNESS, &item), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_HDR_BRIGHTNESS), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_HDR_BRIGHTNESS), nullptr);

    ArkUI_NumberValue value2[] = {{.i32 = 200}, {.i32 = 300}}; // 200 300 means source size width height
    ArkUI_AttributeItem item1 = {value2, sizeof(value2) / sizeof(ArkUI_NumberValue)};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_SOURCE_SIZE, &item1), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_SOURCE_SIZE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_SOURCE_SIZE), nullptr);

    ArkUI_NumberValue value16[] = {{.f32 = 1.0f}, {.f32 = 0.0f}, {.f32 = 0.0f}, {.f32 = 0.0f}, {.f32 = 0.0f},
        {.f32 = 0.0f}, {.f32 = 1.0f}, {.f32 = 0.0f}, {.f32 = 0.0f}, {.f32 = 0.0f}, {.f32 = 0.0f},
        {.f32 = 0.0f}, {.f32 = 1.0f}, {.f32 = 0.0f}, {.f32 = 0.0f}, {.f32 = 0.0f} };
    ArkUI_AttributeItem item2 = {value16, sizeof(value16) / sizeof(ArkUI_NumberValue)};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_IMAGE_MATRIX, &item2), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_IMAGE_MATRIX), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_IMAGE_MATRIX), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest146
 * @tc.desc: Test imageNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest146, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_IMAGE, nullptr, true});
    ArkUI_NumberValue value1[] = {{.i32 = -200}, {.i32 = 300}}; // 200 300 means source size width height
    ArkUI_AttributeItem item1 = {value1, sizeof(value1) / sizeof(ArkUI_NumberValue)};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_SOURCE_SIZE, &item1), ERROR_CODE_PARAM_INVALID);
    ArkUI_NumberValue value2[] = {};
    ArkUI_AttributeItem item2 = {value2, sizeof(value2) / sizeof(ArkUI_NumberValue)};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_MATCH_TEXT_DIRECTION, &item2), ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_IMAGE_MATRIX, &item2), ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_HDR_BRIGHTNESS, &item2), ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_COPY_OPTION, &item2), ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_ENABLE_ANALYZER, &item2), ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_DYNAMIC_RANGE_MODE, &item2), ERROR_CODE_PARAM_INVALID);
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_ORIENTATION, &item2), ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_SetForceDarkConfig_001
 * @tc.desc: Test OH_ArkUI_SetForceDarkConfig
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_SetForceDarkConfig_001, TestSize.Level1)
{
    ArkUI_ContextHandle uiContext = new ArkUI_Context({ .id = 0 });
    EXPECT_EQ(OH_ArkUI_SetForceDarkConfig(nullptr, true, ARKUI_NODE_LIST, nullptr), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(OH_ArkUI_SetForceDarkConfig(uiContext, true, ARKUI_NODE_LIST, nullptr), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(OH_ArkUI_SetForceDarkConfig(nullptr, true, ARKUI_NODE_LIST, [](uint32_t color) { return color; }),
        ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(OH_ArkUI_SetForceDarkConfig(uiContext, true, ARKUI_NODE_LIST, [](uint32_t color) { return color; }),
        ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(OH_ArkUI_SetForceDarkConfig(nullptr, true, ARKUI_NODE_UNDEFINED, nullptr), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(OH_ArkUI_SetForceDarkConfig(uiContext, true, ARKUI_NODE_UNDEFINED, nullptr), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(OH_ArkUI_SetForceDarkConfig(nullptr, true, ARKUI_NODE_UNDEFINED, [](uint32_t color) { return color; }),
        ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(OH_ArkUI_SetForceDarkConfig(uiContext, true, ARKUI_NODE_UNDEFINED, [](uint32_t color) { return color; }),
        ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_EQ(OH_ArkUI_SetForceDarkConfig(nullptr, false, ARKUI_NODE_LIST, nullptr), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(OH_ArkUI_SetForceDarkConfig(uiContext, false, ARKUI_NODE_LIST, nullptr), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(OH_ArkUI_SetForceDarkConfig(nullptr, false, ARKUI_NODE_UNDEFINED, nullptr), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(OH_ArkUI_SetForceDarkConfig(uiContext, false, ARKUI_NODE_UNDEFINED, nullptr), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(OH_ArkUI_SetForceDarkConfig(nullptr, false, ARKUI_NODE_LIST, [](uint32_t color) { return color; }),
        ARKUI_ERROR_CODE_FORCE_DARK_CONFIG_INVALID);
    EXPECT_EQ(OH_ArkUI_SetForceDarkConfig(uiContext, false, ARKUI_NODE_LIST, [](uint32_t color) { return color; }),
        ARKUI_ERROR_CODE_FORCE_DARK_CONFIG_INVALID);
    EXPECT_EQ(OH_ArkUI_SetForceDarkConfig(uiContext, false, ARKUI_NODE_UNDEFINED, [](uint32_t color) { return color; }),
        ARKUI_ERROR_CODE_FORCE_DARK_CONFIG_INVALID);
}

/**
 * @tc.name: NativeNodeTest_GetNodeHandleByUniqueId_001
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetNodeHandleByUniqueId and OH_ArkUI_NodeUtils_GetNodeUniqueId.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_GetNodeHandleByUniqueId_001, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ArkUI_NodeHandle column = nodeAPI->createNode(ARKUI_NODE_COLUMN);
    ArkUI_NumberValue value[] = { 480 };
    ArkUI_AttributeItem item = { value, 1 };
    nodeAPI->setAttribute(column, NODE_WIDTH, &item);
    value[0].f32 = 720;
    nodeAPI->setAttribute(column, NODE_HEIGHT, &item);
    int32_t uniqueId = 1;
    EXPECT_EQ(OH_ArkUI_NodeUtils_GetNodeUniqueId(column, &uniqueId), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(OH_ArkUI_NodeUtils_GetNodeHandleByUniqueId(uniqueId, &column), ARKUI_ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: NativeNodeTest_GetNodeHandleByUniqueId_002
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetNodeHandleByUniqueId and OH_ArkUI_NodeUtils_GetNodeUniqueId.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_GetNodeHandleByUniqueId_002, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ArkUI_NodeHandle column = nodeAPI->createNode(ARKUI_NODE_COLUMN);
    ArkUI_NumberValue value[] = { 480 };
    ArkUI_AttributeItem item = { value, 1 };
    nodeAPI->setAttribute(column, NODE_WIDTH, &item);
    value[0].f32 = 720;
    nodeAPI->setAttribute(column, NODE_HEIGHT, &item);
    auto columnId = 0;
    auto* currentNode = reinterpret_cast<NG::UINode*>(column->uiNodeHandle);
    currentNode->SetUndefinedNodeId();
    OH_ArkUI_NodeUtils_GetNodeUniqueId(column, &columnId);
    EXPECT_EQ(columnId, -1);
}

/**
 * @tc.name: NativeNodeTest_GetNodeHandleByUniqueId_003
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetNodeHandleByUniqueId and OH_ArkUI_NodeUtils_GetNodeUniqueId.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_GetNodeHandleByUniqueId_003, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ArkUI_NodeHandle button = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    ArkUI_NumberValue value[] = { 480 };
    ArkUI_AttributeItem item = { value, 1 };
    nodeAPI->setAttribute(button, NODE_WIDTH, &item);
    value[0].f32 = 320;
    nodeAPI->setAttribute(button, NODE_HEIGHT, &item);
    nodeAPI->disposeNode(button);
    button = nullptr;
    auto buttonId = 0;
    OH_ArkUI_NodeUtils_GetNodeUniqueId(button, &buttonId);
    EXPECT_EQ(buttonId, -1);
}

/**
 * @tc.name: NativeThreadSafeNodeTest001
 * @tc.desc: Test IsValidArkUINode
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeThreadSafeNodeTest001, TestSize.Level1)
{
    EXPECT_EQ(NodeModel::IsValidArkUINode(nullptr), false);

    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto notThreadSafeNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    EXPECT_EQ(NodeModel::IsValidArkUINode(notThreadSafeNode), true);
    nodeAPI->disposeNode(notThreadSafeNode);
    EXPECT_EQ(NodeModel::IsValidArkUINode(notThreadSafeNode), false);

    auto nodeAPI2 = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_MULTI_THREAD_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto threadSafeNode = nodeAPI2->createNode(ARKUI_NODE_STACK);
    EXPECT_EQ(NodeModel::IsValidArkUINode(threadSafeNode), true);
    nodeAPI2->disposeNode(threadSafeNode);
    EXPECT_EQ(NodeModel::IsValidArkUINode(threadSafeNode), false);
}

/**
 * @tc.name: NativeThreadSafeNodeTest002
 * @tc.desc: Test GetNativeNodeEventType
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeThreadSafeNodeTest002, TestSize.Level1)
{
    ArkUINodeEvent event;
    event.extraParam = reinterpret_cast<ArkUI_Int64>(nullptr);
    EXPECT_EQ(NodeModel::GetNativeNodeEventType(&event, false), -1);

    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto notThreadSafeNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ArkUINodeEvent event1;
    event1.extraParam = reinterpret_cast<ArkUI_Int64>(notThreadSafeNode);
    EXPECT_EQ(NodeModel::GetNativeNodeEventType(&event1, false), -1);
    nodeAPI->disposeNode(notThreadSafeNode);

    auto nodeAPI2 = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_MULTI_THREAD_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto threadSafeNode = nodeAPI2->createNode(ARKUI_NODE_STACK);
    ArkUINodeEvent event2;
    event2.extraParam = reinterpret_cast<ArkUI_Int64>(threadSafeNode);
    EXPECT_EQ(NodeModel::GetNativeNodeEventType(&event2, false), -1);
    nodeAPI2->disposeNode(threadSafeNode);
}

/**
 * @tc.name: NativeThreadSafeNodeTest003
 * @tc.desc: Test clearChildren
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeThreadSafeNodeTest003, TestSize.Level1)
{
    /**
     * @tc.steps: step1. create not thread safe native node
     */
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));\
    ASSERT_NE(nodeAPI, nullptr);
    auto notThreadSafeNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto notThreadSafeChildNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(notThreadSafeNode, nullptr);
    ASSERT_NE(notThreadSafeChildNode, nullptr);
    /**
     * @tc.steps: step2. add not thread safe child
     */
    nodeAPI->addChild(notThreadSafeNode, notThreadSafeChildNode);
    EXPECT_EQ(nodeAPI->getTotalChildCount(notThreadSafeNode), 1);
    /**
     * @tc.steps: step3. not thread safe native node remove all children
     */
    nodeAPI->removeAllChildren(notThreadSafeNode);
    ASSERT_NE(notThreadSafeChildNode->uiNodeHandle, nullptr);
    auto* childNode = reinterpret_cast<NG::UINode*>(notThreadSafeChildNode->uiNodeHandle);
    ASSERT_NE(childNode, nullptr);
    EXPECT_EQ(childNode->isRemoving_, true);
    EXPECT_EQ(nodeAPI->getTotalChildCount(notThreadSafeNode), 0);
    nodeAPI->disposeNode(notThreadSafeNode);
    nodeAPI->disposeNode(notThreadSafeChildNode);

    /**
     * @tc.steps: step4. create thread safe native node
     */
    auto nodeAPI2 = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_MULTI_THREAD_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI2, nullptr);
    auto threadSafeNode = nodeAPI2->createNode(ARKUI_NODE_STACK);
    auto threadSafeChildNode = nodeAPI2->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(threadSafeNode, nullptr);
    ASSERT_NE(threadSafeChildNode, nullptr);
    /**
     * @tc.steps: step5. add thread safe child
     */
    nodeAPI2->addChild(threadSafeNode, threadSafeChildNode);
    EXPECT_EQ(nodeAPI2->getTotalChildCount(threadSafeNode), 1);
    /**
     * @tc.steps: step6. thread safe native node remove all children
     */
    nodeAPI2->removeAllChildren(threadSafeNode);
    ASSERT_NE(threadSafeChildNode->uiNodeHandle, nullptr);
    auto* freeChildUINode = reinterpret_cast<NG::UINode*>(threadSafeChildNode->uiNodeHandle);
    ASSERT_NE(freeChildUINode, nullptr);
    EXPECT_EQ(freeChildUINode->isRemoving_, false);
    EXPECT_EQ(nodeAPI2->getTotalChildCount(threadSafeNode), 0);
    nodeAPI2->disposeNode(threadSafeNode);
    nodeAPI2->disposeNode(threadSafeChildNode);
}

/**
 * @tc.name: NativeThreadSafeNodeTest004
 * @tc.desc: Test removeChild
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeThreadSafeNodeTest004, TestSize.Level1)
{
    /**
     * @tc.steps: step1. create not thread safe native node
     */
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));\
    ASSERT_NE(nodeAPI, nullptr);
    auto notThreadSafeNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto notThreadSafeChildNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(notThreadSafeNode, nullptr);
    ASSERT_NE(notThreadSafeChildNode, nullptr);
    /**
     * @tc.steps: step2. add not thread safe child
     */
    nodeAPI->addChild(notThreadSafeNode, notThreadSafeChildNode);
    EXPECT_EQ(nodeAPI->getTotalChildCount(notThreadSafeNode), 1);
    /**
     * @tc.steps: step3. remove not thread safe child
     */
    nodeAPI->removeChild(notThreadSafeNode, notThreadSafeChildNode);
    ASSERT_NE(notThreadSafeChildNode->uiNodeHandle, nullptr);
    auto* childNode = reinterpret_cast<NG::UINode*>(notThreadSafeChildNode->uiNodeHandle);
    ASSERT_NE(childNode, nullptr);
    EXPECT_EQ(childNode->isRemoving_, true);
    EXPECT_EQ(nodeAPI->getTotalChildCount(notThreadSafeNode), 0);
    nodeAPI->disposeNode(notThreadSafeNode);
    nodeAPI->disposeNode(notThreadSafeChildNode);

    /**
     * @tc.steps: step4. create thread safe native node
     */
    auto nodeAPI2 = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_MULTI_THREAD_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI2, nullptr);
    auto threadSafeNode = nodeAPI2->createNode(ARKUI_NODE_STACK);
    auto threadSafeChildNode = nodeAPI2->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(threadSafeNode, nullptr);
    ASSERT_NE(threadSafeChildNode, nullptr);
    /**
     * @tc.steps: step5. add thread safe child
     */
    nodeAPI->addChild(threadSafeNode, threadSafeChildNode);
    EXPECT_EQ(nodeAPI2->getTotalChildCount(threadSafeNode), 1);
    /**
     * @tc.steps: step6. remove thread safe child
     */
    nodeAPI2->removeChild(threadSafeNode, threadSafeChildNode);
    ASSERT_NE(threadSafeChildNode->uiNodeHandle, nullptr);
    auto* freeChildUINode = reinterpret_cast<NG::UINode*>(threadSafeChildNode->uiNodeHandle);
    ASSERT_NE(freeChildUINode, nullptr);
    EXPECT_EQ(freeChildUINode->isRemoving_, false);
    EXPECT_EQ(nodeAPI2->getTotalChildCount(threadSafeNode), 0);
    nodeAPI2->disposeNode(threadSafeNode);
    nodeAPI2->disposeNode(threadSafeChildNode);
}

/**
 * @tc.name: NativeNodeTest147
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetLayoutPositionInGlobalDisplay function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest147, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto node = nodeAPI->createNode(ARKUI_NODE_STACK);
    ArkUI_IntOffset offset = {0, 0};
    auto ret = OH_ArkUI_NodeUtils_GetLayoutPositionInGlobalDisplay(node, &offset);
    EXPECT_EQ(ret, ERROR_CODE_NO_ERROR);
    ret = OH_ArkUI_NodeUtils_GetLayoutPositionInGlobalDisplay(nullptr, &offset);
    EXPECT_EQ(ret, ERROR_CODE_PARAM_INVALID);
}

/**
 * @tc.name: NativeNodeTest148
 * @tc.desc: Test imageNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest148, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_SLIDER);
    uint32_t colors[] = {0xFFFEBB62, 0xffFFA0A4, 0xffFF0000};
    float stops[] = {0.0, 0.5, 1};
    ArkUI_ColorStop linerGrand[] = {{colors, stops, 3}};
    ArkUI_AttributeItem item = {nullptr, 0, nullptr, linerGrand};
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_BLOCK_LINEAR_GRADIENT_COLOR, &item),
        ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SLIDER_BLOCK_LINEAR_GRADIENT_COLOR), nullptr);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SLIDER_BLOCK_LINEAR_GRADIENT_COLOR),
        ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_TRACK_LINEAR_GRADIENT_COLOR, &item),
        ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SLIDER_TRACK_LINEAR_GRADIENT_COLOR), nullptr);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SLIDER_TRACK_LINEAR_GRADIENT_COLOR),
        ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_SLIDER_SELECTED_LINEAR_GRADIENT_COLOR, &item),
        ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_SLIDER_SELECTED_LINEAR_GRADIENT_COLOR), nullptr);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_SLIDER_SELECTED_LINEAR_GRADIENT_COLOR),
        ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest149
 * @tc.desc: Test imageNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest149, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ ARKUI_NODE_IMAGE, nullptr, true });

    ArkUI_NumberValue value[] = { { .i32 = true } };
    ArkUI_AttributeItem item = { value, sizeof(value) / sizeof(ArkUI_NumberValue) };
    EXPECT_EQ(nodeAPI->setAttribute(rootNode, NODE_IMAGE_SUPPORT_SVG2, &item), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_IMAGE_SUPPORT_SVG2), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_IMAGE_SUPPORT_SVG2), nullptr);

    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTestTextEditor1
 * @tc.desc: Test TextEditor function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTestTextEditor1, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_TEXT_EDITOR, nullptr, true});
    uint32_t color = 0XFFFF0000;
    ArkUI_NumberValue value[] = {{.u32 = color}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    value[0].i32 = ARKUI_ENTER_KEY_TYPE_SEARCH;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_ENTER_KEY_TYPE, &item);
    value[0].i32 = 2;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_BAR_STATE, &item);
    value[0].u32 = color;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_CARET_COLOR, &item);
    nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_SCROLL_BAR_COLOR, &item);
    value[0].i32 = true;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_ENABLE_DATA_DETECTOR, &item);
    value[0].i32 = true;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_ENABLE_PREVIEW_TEXT, &item);

    /**
     * test reset node
     */
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_EDITOR_ENTER_KEY_TYPE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_EDITOR_BAR_STATE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_EDITOR_CARET_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_EDITOR_SCROLL_BAR_COLOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_EDITOR_ENABLE_DATA_DETECTOR), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_EDITOR_ENABLE_PREVIEW_TEXT), ARKUI_ERROR_CODE_NO_ERROR);

    /**
     * test get node
     */
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_EDITOR_ENTER_KEY_TYPE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_EDITOR_BAR_STATE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_EDITOR_CARET_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_EDITOR_SCROLL_BAR_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_EDITOR_ENABLE_DATA_DETECTOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_EDITOR_ENABLE_PREVIEW_TEXT), nullptr);

    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTestTextEditor2
 * @tc.desc: Test TextEditor function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTestTextEditor2, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_TEXT_EDITOR, nullptr, true});
    uint32_t color = 0XFFFF0000;
    ArkUI_NumberValue value[] = {{.u32 = color}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    value[0].i32 = false;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_ENABLE_SELECTED_DATA_DETECTOR, &item);
    value[0].u32 = 0xFFFF0000;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_SELECTED_BACKGROUND_COLOR, &item);
    value[0].i32 = true;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_ENABLE_KEYBOARD_ON_FOCUS, &item);
    value[0].i32 = 500;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_MAX_LENGTH, &item);
    value[0].i32 = 10;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_MAX_LINES, &item);
    value[0].i32 = true;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_ENABLE_HAPTIC_FEEDBACK, &item);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_EDITOR_ENABLE_SELECTED_DATA_DETECTOR),
        ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_EDITOR_SELECTED_BACKGROUND_COLOR),
        ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_EDITOR_ENABLE_KEYBOARD_ON_FOCUS),ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_EDITOR_MAX_LENGTH), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_EDITOR_MAX_LINES), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_EDITOR_ENABLE_HAPTIC_FEEDBACK), ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_EDITOR_ENABLE_SELECTED_DATA_DETECTOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_EDITOR_SELECTED_BACKGROUND_COLOR), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_EDITOR_ENABLE_KEYBOARD_ON_FOCUS), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_EDITOR_MAX_LENGTH), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_EDITOR_MAX_LINES), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_EDITOR_ENABLE_HAPTIC_FEEDBACK), nullptr);

    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTestTextEditor3
 * @tc.desc: Test TextEditor function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTestTextEditor3, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_TEXT_EDITOR, nullptr, true});
    uint32_t color = 0XFFFF0000;
    ArkUI_NumberValue value[] = {{.u32 = color}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    value[0].i32 = ArkUI_CopyOptions::ARKUI_COPY_OPTIONS_LOCAL_DEVICE;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_COPY_OPTIONS, &item);
    value[0].i32 = ArkUI_KeyboardAppearance::ARKUI_KEYBOARD_APPEARANCE_NONE_IMMERSIVE;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_KEYBOARD_APPEARANCE, &item);
    value[0].i32 = true;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_STOP_BACK_PRESS, &item);
    value[0].i32 = false;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_ENABLE_AUTO_SPACING, &item);
    value[0].i32 = true;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_INCLUDE_FONT_PADDING, &item);
    value[0].i32 = true;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_FALLBACK_LINE_SPACING, &item);
    value[0].i32 = false;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_COMPRESS_LEADING_PUNCTUATION, &item);
    value[0].i32 = false;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_SINGLE_LINE, &item);
    value[0].i32 = true;
    nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_ORPHAN_CHAR_OPTIMIZATION, &item);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_EDITOR_KEYBOARD_APPEARANCE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_EDITOR_STOP_BACK_PRESS), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_EDITOR_ENABLE_AUTO_SPACING), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_EDITOR_FALLBACK_LINE_SPACING), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_EDITOR_COMPRESS_LEADING_PUNCTUATION), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_EDITOR_SINGLE_LINE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TEXT_EDITOR_ORPHAN_CHAR_OPTIMIZATION),
        ARKUI_ERROR_CODE_NO_ERROR);

    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_EDITOR_KEYBOARD_APPEARANCE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_EDITOR_STOP_BACK_PRESS), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_EDITOR_ENABLE_AUTO_SPACING), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_EDITOR_FALLBACK_LINE_SPACING), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_EDITOR_COMPRESS_LEADING_PUNCTUATION), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_EDITOR_SINGLE_LINE), nullptr);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TEXT_EDITOR_ORPHAN_CHAR_OPTIMIZATION), nullptr);

    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTestTextEditorPunctuationOverflow
 * @tc.desc: Test NODE_TEXT_EDITOR_PUNCTUATION_OVERFLOW attribute set, reset and get functions.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTestTextEditorPunctuationOverflow, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create TextEditor node and get nodeAPI.
     * @tc.expect: node and nodeAPI are not nullptr.
     */
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto rootNode = new ArkUI_Node({ARKUI_NODE_TEXT_EDITOR, nullptr, true});
    ASSERT_NE(rootNode, nullptr);
    /**
     * @tc.steps: step2. Set NODE_TEXT_EDITOR_PUNCTUATION_OVERFLOW attribute with value true.
     * @tc.expect: setAttribute returns ARKUI_ERROR_CODE_NO_ERROR.
     */
    ArkUI_NumberValue value[] = {{.i32 = true}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    auto result = nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_PUNCTUATION_OVERFLOW, &item);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
    /**
     * @tc.steps: step3. Get NODE_TEXT_EDITOR_PUNCTUATION_OVERFLOW attribute.
     * @tc.expect: getAttribute returns valid value and value[0].i32 equals true.
     */
    auto attrValue = nodeAPI->getAttribute(rootNode, NODE_TEXT_EDITOR_PUNCTUATION_OVERFLOW);
    EXPECT_NE(attrValue, nullptr);
    /**
     * @tc.steps: step4. Set NODE_TEXT_EDITOR_PUNCTUATION_OVERFLOW attribute with value false.
     * @tc.expect: setAttribute returns ARKUI_ERROR_CODE_NO_ERROR.
     */
    value[0].i32 = false;
    result = nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_PUNCTUATION_OVERFLOW, &item);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
    /**
     * @tc.steps: step5. Get NODE_TEXT_EDITOR_PUNCTUATION_OVERFLOW attribute.
     * @tc.expect: getAttribute returns valid value and value[0].i32 equals false.
     */
    attrValue = nodeAPI->getAttribute(rootNode, NODE_TEXT_EDITOR_PUNCTUATION_OVERFLOW);
    EXPECT_NE(attrValue, nullptr);
    EXPECT_EQ(attrValue->value[0].i32, false);
    /**
     * @tc.steps: step6. Reset NODE_TEXT_EDITOR_PUNCTUATION_OVERFLOW attribute.
     * @tc.expect: resetAttribute returns ARKUI_ERROR_CODE_NO_ERROR.
     */
    result = nodeAPI->resetAttribute(rootNode, NODE_TEXT_EDITOR_PUNCTUATION_OVERFLOW);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
    /**
     * @tc.steps: step7. Get NODE_TEXT_EDITOR_PUNCTUATION_OVERFLOW attribute after reset.
     * @tc.expect: getAttribute returns valid value (default value should be false).
     */
    attrValue = nodeAPI->getAttribute(rootNode, NODE_TEXT_EDITOR_PUNCTUATION_OVERFLOW);
    EXPECT_NE(attrValue, nullptr);
    /**
     * @tc.steps: step8. Test invalid parameter (item size != 1).
     * @tc.expect: setAttribute returns ARKUI_ERROR_CODE_PARAM_INVALID.
     */
    ArkUI_NumberValue invalidValue[] = {{.i32 = true}, {.i32 = false}};
    ArkUI_AttributeItem invalidItem = {invalidValue, sizeof(invalidValue) / sizeof(ArkUI_NumberValue)};
    result = nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_PUNCTUATION_OVERFLOW, &invalidItem);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
    /**
     * @tc.steps: step9. Test invalid parameter (value out of range [0, 1]).
     * @tc.expect: setAttribute returns ARKUI_ERROR_CODE_PARAM_INVALID.
     */
    value[0].i32 = 2; // Invalid value, should be 0 or 1
    result = nodeAPI->setAttribute(rootNode, NODE_TEXT_EDITOR_PUNCTUATION_OVERFLOW, &item);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
    /**
     * @tc.steps: step10. Dispose the node.
     * @tc.expect: node is disposed successfully.
     */
    nodeAPI->disposeNode(rootNode);
    /**
     * @tc.steps: step11. Test with non-TextEditor node type.
     * @tc.expect: setAttribute should handle gracefully (may return error or ignore).
     */
    auto nonTextEditorNode = new ArkUI_Node({ARKUI_NODE_STACK, nullptr, true});
    nodeAPI->setAttribute(nonTextEditorNode, NODE_TEXT_EDITOR_PUNCTUATION_OVERFLOW, &item);
    nodeAPI->disposeNode(nonTextEditorNode);
    /**
     * @tc.steps: step12. Test GetPunctuationOverflow with non-TextEditor node.
     * @tc.expect: getAttribute returns nullptr.
     */
    auto nonTextEditorNode2 = new ArkUI_Node({ARKUI_NODE_STACK, nullptr, true});
    attrValue = nodeAPI->getAttribute(nonTextEditorNode2, NODE_TEXT_EDITOR_PUNCTUATION_OVERFLOW);
    EXPECT_EQ(attrValue, nullptr);
    nodeAPI->disposeNode(nonTextEditorNode2);
}

/**
 * @tc.name: NativeNodeTest150
 * @tc.desc: Test Undefined function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest150, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto node = nodeAPI->createNode(ARKUI_NODE_UNDEFINED);
    ASSERT_EQ(node, nullptr);
    nodeAPI->disposeNode(node);
}

/**
 * @tc.name: NativeNodeTest_OutlineColor001
 * @tc.desc: Test customNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_OutlineColor001, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);
    int32_t ret1 = nodeAPI->addChild(rootNode, childNode);
    EXPECT_EQ(ret1, ARKUI_ERROR_CODE_NO_ERROR);
    uint32_t color0 = 0xFFFF0000;
    uint32_t color1 = 0xFFFF00FF;
    uint32_t color2 = 0xFFFFFF00;
    uint32_t color3 = 0xFF00FFFF;

    ArkUI_NumberValue value[] = {{.u32 = color0}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    ArkUI_NumberValue value4[] = {{.u32 = color0}, {.u32 = color1}, {.u32 = color2}, {.u32 = color3}};
    ArkUI_AttributeItem item4 = {value4, sizeof(value4) / sizeof(ArkUI_NumberValue)};

    nodeAPI->setAttribute(rootNode, NODE_OUTLINE_COLOR, &item);
    auto outlineColorVal = nodeAPI->getAttribute(rootNode, NODE_OUTLINE_COLOR);
    EXPECT_EQ(outlineColorVal->value[0].u32, color0);

    nodeAPI->setAttribute(rootNode, NODE_OUTLINE_COLOR, &item4);
    auto outlineColorVal4 = nodeAPI->getAttribute(rootNode, NODE_OUTLINE_COLOR);
    EXPECT_EQ(outlineColorVal4->value[0].u32, color0);
    EXPECT_EQ(outlineColorVal4->value[1].u32, color1);
    EXPECT_EQ(outlineColorVal4->value[2].u32, color2);
    EXPECT_EQ(outlineColorVal4->value[3].u32, color3);
}

/**
 * @tc.name: NativeNodeScrollZoomTest001
 * @tc.desc: Test Scroll zoom attribute.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeScrollZoomTest001, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto scroll = nodeAPI->createNode(ARKUI_NODE_SCROLL);
    ASSERT_NE(scroll, nullptr);
    ArkUI_AttributeItem item0 = { nullptr, 0 };
    ArkUI_NumberValue value1[] = { { .f32 = 2.0f } };
    ArkUI_AttributeItem item1 = { value1, sizeof(value1) / sizeof(ArkUI_NumberValue) };
    EXPECT_EQ(nodeAPI->setAttribute(scroll, NODE_SCROLL_MAX_ZOOM_SCALE, &item1), ARKUI_ERROR_CODE_NO_ERROR);
    auto ret = nodeAPI->getAttribute(scroll, NODE_SCROLL_MAX_ZOOM_SCALE);
    EXPECT_EQ(ret->value[0].f32, 2.0f);
    EXPECT_EQ(nodeAPI->resetAttribute(scroll, NODE_SCROLL_MAX_ZOOM_SCALE), ARKUI_ERROR_CODE_NO_ERROR);
    ret = nodeAPI->getAttribute(scroll, NODE_SCROLL_MAX_ZOOM_SCALE);
    EXPECT_EQ(ret->value[0].f32, 1.0f);
    EXPECT_EQ(nodeAPI->setAttribute(scroll, NODE_SCROLL_MAX_ZOOM_SCALE, &item0), ERROR_CODE_PARAM_INVALID);

    ArkUI_NumberValue value2[] = { { .f32 = 0.5f } };
    ArkUI_AttributeItem item2 = { value2, sizeof(value2) / sizeof(ArkUI_NumberValue) };
    EXPECT_EQ(nodeAPI->setAttribute(scroll, NODE_SCROLL_MIN_ZOOM_SCALE, &item2), ARKUI_ERROR_CODE_NO_ERROR);
    ret = nodeAPI->getAttribute(scroll, NODE_SCROLL_MIN_ZOOM_SCALE);
    EXPECT_EQ(ret->value[0].f32, 0.5f);
    EXPECT_EQ(nodeAPI->resetAttribute(scroll, NODE_SCROLL_MIN_ZOOM_SCALE), ARKUI_ERROR_CODE_NO_ERROR);
    ret = nodeAPI->getAttribute(scroll, NODE_SCROLL_MIN_ZOOM_SCALE);
    EXPECT_EQ(ret->value[0].f32, 1.0f);
    EXPECT_EQ(nodeAPI->setAttribute(scroll, NODE_SCROLL_MIN_ZOOM_SCALE, &item0), ERROR_CODE_PARAM_INVALID);

    ArkUI_NumberValue value3[] = { { .f32 = 1.5f } };
    ArkUI_AttributeItem item3 = { value3, sizeof(value3) / sizeof(ArkUI_NumberValue) };
    EXPECT_EQ(nodeAPI->setAttribute(scroll, NODE_SCROLL_ZOOM_SCALE, &item3), ARKUI_ERROR_CODE_NO_ERROR);
    ret = nodeAPI->getAttribute(scroll, NODE_SCROLL_ZOOM_SCALE);
    EXPECT_EQ(ret->value[0].f32, 1.5f);
    EXPECT_EQ(nodeAPI->resetAttribute(scroll, NODE_SCROLL_ZOOM_SCALE), ARKUI_ERROR_CODE_NO_ERROR);
    ret = nodeAPI->getAttribute(scroll, NODE_SCROLL_ZOOM_SCALE);
    EXPECT_EQ(ret->value[0].f32, 1.0f);
    EXPECT_EQ(nodeAPI->setAttribute(scroll, NODE_SCROLL_ZOOM_SCALE, &item0), ERROR_CODE_PARAM_INVALID);

    nodeAPI->disposeNode(scroll);
}

/**
 * @tc.name: NativeNodeScrollZoomTest002
 * @tc.desc: Test Test Scroll zoom event.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeScrollZoomTest002, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto scroll = nodeAPI->createNode(ARKUI_NODE_SCROLL);

    auto ret = nodeAPI->registerNodeEvent(scroll, NODE_SCROLL_EVENT_ON_DID_ZOOM, 1, nullptr);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->unregisterNodeEvent(scroll, NODE_SCROLL_EVENT_ON_DID_ZOOM);

    ret = nodeAPI->registerNodeEvent(scroll, NODE_SCROLL_EVENT_ON_ZOOM_START, 1, nullptr);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->unregisterNodeEvent(scroll, NODE_SCROLL_EVENT_ON_ZOOM_START);

    ret = nodeAPI->registerNodeEvent(scroll, NODE_SCROLL_EVENT_ON_ZOOM_STOP, 1, nullptr);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->unregisterNodeEvent(scroll, NODE_SCROLL_EVENT_ON_ZOOM_STOP);
    nodeAPI->disposeNode(scroll);
}

/**
 * @tc.name: NativeNodeScrollOnWillStopDraggingTest001
 * @tc.desc: Test Scroll onWillStopDragging event.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeScrollOnWillStopDraggingTest001, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto scroll = nodeAPI->createNode(ARKUI_NODE_SCROLL);

    auto ret = nodeAPI->registerNodeEvent(scroll, NODE_SCROLL_EVENT_ON_WILL_STOP_DRAGGING, 1, nullptr);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->unregisterNodeEvent(scroll, NODE_SCROLL_EVENT_ON_WILL_STOP_DRAGGING);
    nodeAPI->disposeNode(scroll);
}

/**
 * @tc.name: NativeNodeScrollOnWillStopDraggingTest002
 * @tc.desc: Test Grid onWillStopDragging event.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeScrollOnWillStopDraggingTest002, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto grid = nodeAPI->createNode(ARKUI_NODE_GRID);

    auto ret = nodeAPI->registerNodeEvent(grid, NODE_SCROLL_EVENT_ON_WILL_STOP_DRAGGING, 1, nullptr);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->unregisterNodeEvent(grid, NODE_SCROLL_EVENT_ON_WILL_STOP_DRAGGING);
    nodeAPI->disposeNode(grid);
}

/**
 * @tc.name: NativeNodeScrollOnWillStopDraggingTest003
 * @tc.desc: Test List onWillStopDragging event.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeScrollOnWillStopDraggingTest003, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto list = nodeAPI->createNode(ARKUI_NODE_LIST);

    auto ret = nodeAPI->registerNodeEvent(list, NODE_SCROLL_EVENT_ON_WILL_STOP_DRAGGING, 1, nullptr);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->unregisterNodeEvent(list, NODE_SCROLL_EVENT_ON_WILL_STOP_DRAGGING);
    nodeAPI->disposeNode(list);
}

/**
 * @tc.name: NativeNodeScrollOnWillStopDraggingTest004
 * @tc.desc: Test Waterflow onWillStopDragging event.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeScrollOnWillStopDraggingTest004, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto scroll = nodeAPI->createNode(ARKUI_NODE_WATER_FLOW);

    auto ret = nodeAPI->registerNodeEvent(scroll, NODE_SCROLL_EVENT_ON_WILL_STOP_DRAGGING, 1, nullptr);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->unregisterNodeEvent(scroll, NODE_SCROLL_EVENT_ON_WILL_STOP_DRAGGING);
    nodeAPI->disposeNode(scroll);
}

/**
 * @tc.name: NativeNodeScrollableEdgeEffectTest001
 * @tc.desc: Test Scrollable EdgeEffect.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeScrollableEdgeEffectTest001, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto scroll = nodeAPI->createNode(ARKUI_NODE_SCROLL);
    auto list = nodeAPI->createNode(ARKUI_NODE_LIST);
    auto waterFlow = nodeAPI->createNode(ARKUI_NODE_WATER_FLOW);
    ArkUI_NodeHandle nodes[3] = { scroll, list, waterFlow };

    ArkUI_NumberValue value[] = {
        {.i32 = ARKUI_EDGE_EFFECT_SPRING},
        {.i32 = 1},
        {.i32 = ARKUI_EFFECT_EDGE_START}
    };
    ArkUI_AttributeItem item = {value, 3};
    for (int32_t i = 0; i < 3; i++) {
        auto ret = nodeAPI->setAttribute(nodes[i], NODE_SCROLL_EDGE_EFFECT, &item);
        EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
        auto effectParam = nodeAPI->getAttribute(nodes[i], NODE_SCROLL_EDGE_EFFECT);
        EXPECT_EQ(effectParam->value[0].i32, ARKUI_EDGE_EFFECT_SPRING);
        EXPECT_EQ(effectParam->value[1].i32, 1);
        EXPECT_EQ(effectParam->value[2].i32, ARKUI_EFFECT_EDGE_START);
    }
    nodeAPI->disposeNode(scroll);
    nodeAPI->disposeNode(list);
    nodeAPI->disposeNode(waterFlow);
}

/**
 * @tc.name: NativeNodeListItemFillPolicyTest001
 * @tc.desc: Test List ItemFillPolicy.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeListItemFillPolicyTest001, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto list = nodeAPI->createNode(ARKUI_NODE_LIST);
    float val100 = 100.0f;
    int32_t enumValue[] = { ARKUI_ITEMFILLPOLICY_NONE, ARKUI_ITEMFILLPOLICY_DEFAULT, ARKUI_ITEMFILLPOLICY_SM1MD2LG3,
        ARKUI_ITEMFILLPOLICY_SM2MD3LG5 };
    for (int32_t i = 0; i < 4; i++) {
        ArkUI_NumberValue value[] = { { .i32 = enumValue[i] }, { .f32 = val100 } };
        ArkUI_AttributeItem item = { value, 2 };
        auto ret = nodeAPI->setAttribute(list, NODE_LIST_LANES_ITEMFILLPOLICY, &item);
        EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
        auto itemFillPolicyParam = nodeAPI->getAttribute(list, NODE_LIST_LANES_ITEMFILLPOLICY);
        EXPECT_EQ(itemFillPolicyParam->value[0].i32, enumValue[i]);
        if (i > 0) {
            EXPECT_EQ(itemFillPolicyParam->value[1].f32, val100);
        }
    }
    nodeAPI->disposeNode(list);
}

/**
 * @tc.name: NativeNodeGridItemFillPolicyTest001
 * @tc.desc: Test Grid ItemFillPolicy.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeGridItemFillPolicyTest001, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto grid = nodeAPI->createNode(ARKUI_NODE_GRID);
    int32_t enumValue[] = { ARKUI_ITEMFILLPOLICY_NONE, ARKUI_ITEMFILLPOLICY_DEFAULT, ARKUI_ITEMFILLPOLICY_SM1MD2LG3,
        ARKUI_ITEMFILLPOLICY_SM2MD3LG5 };
    for (int32_t i = 0; i < 4; i++) {
        ArkUI_NumberValue value[] = { { .i32 = enumValue[i] }};
        ArkUI_AttributeItem item = { value, 1 };
        auto ret = nodeAPI->setAttribute(grid, NODE_GRID_COLUMN_TEMPLATE_ITEMFILLPOLICY, &item);
        EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
        auto itemFillPolicyParam = nodeAPI->getAttribute(grid, NODE_GRID_COLUMN_TEMPLATE_ITEMFILLPOLICY);
        EXPECT_EQ(itemFillPolicyParam->value[0].i32, enumValue[i]);
    }
    nodeAPI->disposeNode(grid);
}

/**
 * @tc.name: NativeNodeWaterFlowItemFillPolicyTest001
 * @tc.desc: Test WaterFlow ItemFillPolicy.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeWaterFlowItemFillPolicyTest001, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto waterFlow = nodeAPI->createNode(ARKUI_NODE_WATER_FLOW);
    int32_t enumValue[] = { ARKUI_ITEMFILLPOLICY_NONE, ARKUI_ITEMFILLPOLICY_DEFAULT, ARKUI_ITEMFILLPOLICY_SM1MD2LG3,
        ARKUI_ITEMFILLPOLICY_SM2MD3LG5 };
    for (int32_t i = 0; i < 4; i++) {
        ArkUI_NumberValue value[] = { { .i32 = enumValue[i] }};
        ArkUI_AttributeItem item = { value, 1 };
        auto ret = nodeAPI->setAttribute(waterFlow, NODE_WATER_FLOW_COLUMN_TEMPLATE_ITEMFILLPOLICY, &item);
        EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
        auto itemFillPolicyParam = nodeAPI->getAttribute(waterFlow, NODE_WATER_FLOW_COLUMN_TEMPLATE_ITEMFILLPOLICY);
        EXPECT_EQ(itemFillPolicyParam->value[0].i32, enumValue[i]);
    }
    nodeAPI->disposeNode(waterFlow);
}

/**
 * @tc.name: NativeNodeRegisterCommonEventTest001
 * @tc.desc: Test Common event.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeRegisterCommonEventTest001, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto stack = nodeAPI->createNode(ARKUI_NODE_STACK);
    EXPECT_NE(stack, nullptr);
    auto callback = [](ArkUI_NodeEvent *event) {};

    auto ret = OH_ArkUI_NativeModule_RegisterCommonEvent(stack, NODE_ON_CLICK_EVENT, nullptr, callback);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    ret = OH_ArkUI_NativeModule_RegisterCommonEvent(nullptr, NODE_ON_CLICK_EVENT, nullptr, callback);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);
    ret = OH_ArkUI_NativeModule_UnregisterCommonEvent(stack, NODE_ON_CLICK_EVENT);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: NativeNodeRegisterCommonEventTest002
 * @tc.desc: Test Common event.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeRegisterCommonEventTest002, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto stack = nodeAPI->createNode(ARKUI_NODE_STACK);
    EXPECT_NE(stack, nullptr);
    auto callback = [](ArkUI_NodeEvent *event) {};

    auto ret = OH_ArkUI_NativeModule_RegisterCommonEvent(stack, NODE_TOUCH_EVENT, nullptr, callback);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    ret = OH_ArkUI_NativeModule_RegisterCommonEvent(nullptr, NODE_TOUCH_EVENT, nullptr, callback);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);
    ret = OH_ArkUI_NativeModule_UnregisterCommonEvent(stack, NODE_TOUCH_EVENT);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: NativeNodeRegisterCommonEventTest003
 * @tc.desc: Test Common event.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeRegisterCommonEventTest003, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto stack = nodeAPI->createNode(ARKUI_NODE_STACK);
    EXPECT_NE(stack, nullptr);
    auto callback = [](ArkUI_NodeEvent *event) {};

    auto ret = OH_ArkUI_NativeModule_RegisterCommonEvent(stack, NODE_EVENT_ON_APPEAR, nullptr, callback);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    ret = OH_ArkUI_NativeModule_RegisterCommonEvent(nullptr, NODE_EVENT_ON_APPEAR, nullptr, callback);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);
    ret = OH_ArkUI_NativeModule_UnregisterCommonEvent(stack, NODE_EVENT_ON_APPEAR);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: NativeNodeRegisterCommonEventTest004
 * @tc.desc: Test Common event.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeRegisterCommonEventTest004, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto stack = nodeAPI->createNode(ARKUI_NODE_STACK);
    EXPECT_NE(stack, nullptr);
    auto callback = [](ArkUI_NodeEvent *event) {};

    auto ret = OH_ArkUI_NativeModule_RegisterCommonEvent(stack, NODE_EVENT_ON_DISAPPEAR, nullptr, callback);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    ret = OH_ArkUI_NativeModule_RegisterCommonEvent(nullptr, NODE_EVENT_ON_DISAPPEAR, nullptr, callback);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);
    ret = OH_ArkUI_NativeModule_UnregisterCommonEvent(stack, NODE_EVENT_ON_DISAPPEAR);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: NativeNodeRegisterCommonEventTest005
 * @tc.desc: Test Common event.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeRegisterCommonEventTest005, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto stack = nodeAPI->createNode(ARKUI_NODE_STACK);
    EXPECT_NE(stack, nullptr);
    auto callback = [](ArkUI_NodeEvent *event) {};

    auto ret = OH_ArkUI_NativeModule_RegisterCommonEvent(stack, NODE_ON_KEY_EVENT, nullptr, callback);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    ret = OH_ArkUI_NativeModule_RegisterCommonEvent(nullptr, NODE_ON_KEY_EVENT, nullptr, callback);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);
    ret = OH_ArkUI_NativeModule_UnregisterCommonEvent(stack, NODE_ON_KEY_EVENT);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: NativeNodeRegisterCommonEventTest006
 * @tc.desc: Test Common event.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeRegisterCommonEventTest006, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto stack = nodeAPI->createNode(ARKUI_NODE_STACK);
    EXPECT_NE(stack, nullptr);
    auto callback = [](ArkUI_NodeEvent *event) {};

    auto ret = OH_ArkUI_NativeModule_RegisterCommonEvent(stack, NODE_ON_FOCUS, nullptr, callback);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    ret = OH_ArkUI_NativeModule_RegisterCommonEvent(nullptr, NODE_ON_FOCUS, nullptr, callback);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);
    ret = OH_ArkUI_NativeModule_UnregisterCommonEvent(stack, NODE_ON_FOCUS);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: NativeNodeRegisterCommonEventTest007
 * @tc.desc: Test Common event.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeRegisterCommonEventTest007, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto stack = nodeAPI->createNode(ARKUI_NODE_STACK);
    EXPECT_NE(stack, nullptr);
    auto callback = [](ArkUI_NodeEvent *event) {};

    auto ret = OH_ArkUI_NativeModule_RegisterCommonEvent(stack, NODE_ON_BLUR, nullptr, callback);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    ret = OH_ArkUI_NativeModule_RegisterCommonEvent(nullptr, NODE_ON_BLUR, nullptr, callback);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);
    ret = OH_ArkUI_NativeModule_UnregisterCommonEvent(stack, NODE_ON_BLUR);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: NativeNodeRegisterCommonEventTest008
 * @tc.desc: Test Common event.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeRegisterCommonEventTest008, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto stack = nodeAPI->createNode(ARKUI_NODE_STACK);
    EXPECT_NE(stack, nullptr);
    auto callback = [](ArkUI_NodeEvent *event) {};

    auto ret = OH_ArkUI_NativeModule_RegisterCommonEvent(stack, NODE_ON_HOVER, nullptr, callback);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    ret = OH_ArkUI_NativeModule_RegisterCommonEvent(nullptr, NODE_ON_HOVER, nullptr, callback);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);
    ret = OH_ArkUI_NativeModule_UnregisterCommonEvent(stack, NODE_ON_HOVER);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: NativeNodeRegisterCommonEventTest009
 * @tc.desc: Test Common event.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeRegisterCommonEventTest009, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto stack = nodeAPI->createNode(ARKUI_NODE_STACK);
    EXPECT_NE(stack, nullptr);
    auto callback = [](ArkUI_NodeEvent *event) {};

    auto ret = OH_ArkUI_NativeModule_RegisterCommonEvent(stack, NODE_ON_MOUSE, nullptr, callback);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    ret = OH_ArkUI_NativeModule_RegisterCommonEvent(nullptr, NODE_ON_MOUSE, nullptr, callback);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);
    ret = OH_ArkUI_NativeModule_UnregisterCommonEvent(stack, NODE_ON_MOUSE);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: NativeNodeRegisterCommonEventTest010
 * @tc.desc: Test Common event.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeRegisterCommonEventTest010, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto stack = nodeAPI->createNode(ARKUI_NODE_STACK);
    EXPECT_NE(stack, nullptr);
    auto callback = [](ArkUI_NodeEvent *event) {};

    auto ret = OH_ArkUI_NativeModule_RegisterCommonEvent(stack, NODE_ON_SIZE_CHANGE, nullptr, callback);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
    ret = OH_ArkUI_NativeModule_RegisterCommonEvent(nullptr, NODE_ON_SIZE_CHANGE, nullptr, callback);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);
    ret = OH_ArkUI_NativeModule_UnregisterCommonEvent(stack, NODE_ON_SIZE_CHANGE);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: NativeNodeRegisterCommonEventTest011
 * @tc.desc: Test Common event.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeRegisterCommonEventTest011, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto stack = nodeAPI->createNode(ARKUI_NODE_STACK);
    EXPECT_NE(stack, nullptr);
    auto callback = [](ArkUI_NodeEvent *event) {};

    auto ret = OH_ArkUI_NativeModule_RegisterCommonEvent(stack, NODE_ON_CLICK, nullptr, callback);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NODE_UNSUPPORTED_EVENT_TYPE);
    ret = OH_ArkUI_NativeModule_UnregisterCommonEvent(stack, NODE_ON_CLICK);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NODE_UNSUPPORTED_EVENT_TYPE);
}

/**
 * @tc.name: NativeNodeRegisterCommonEventTest012
 * @tc.desc: Test Common event with nullptr callback.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeRegisterCommonEventTest012, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto stack = nodeAPI->createNode(ARKUI_NODE_STACK);
    EXPECT_NE(stack, nullptr);

    auto ret = OH_ArkUI_NativeModule_RegisterCommonEvent(stack, NODE_ON_CLICK_EVENT, nullptr, nullptr);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(stack);
}

/**
 * @tc.name: NativeNodeRegisterCommonEventTest013
 * @tc.desc: Test UnregisterCommonEvent when common event map does not exist.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeRegisterCommonEventTest013, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto stack = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(stack, nullptr);

    auto ret = OH_ArkUI_NativeModule_UnregisterCommonEvent(stack, NODE_ON_CLICK_EVENT);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);

    nodeAPI->disposeNode(stack);
}

/**
 * @tc.name: NativeNodeOverlayTest001
 * @tc.desc: Test Overlay attribute.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeOverlayTest001, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto overlayNode = nodeAPI->createNode(ARKUI_NODE_STACK);

    ArkUI_NumberValue value4[] = {{.i32 = ARKUI_ALIGNMENT_TOP_START}, {.f32 = 0.0f},
        {.f32 = 0.0f}, {.i32 = ARKUI_DIRECTION_LTR}};
    ArkUI_AttributeItem item4 = {value4, sizeof(value4) / sizeof(ArkUI_NumberValue)};

    item4.string = "";
    item4.object = overlayNode;
    item4.size = 4;
    nodeAPI->setAttribute(rootNode, NODE_OVERLAY, &item4);
    auto overlayVal = nodeAPI->getAttribute(rootNode, NODE_OVERLAY);
    EXPECT_EQ(overlayVal->value[0].i32, static_cast<int32_t>(ARKUI_ALIGNMENT_TOP_START));
    EXPECT_EQ(overlayVal->value[3].i32, static_cast<int32_t>(ARKUI_DIRECTION_LTR));
    EXPECT_EQ(overlayVal->object, overlayNode);

    value4[3].i32 = ARKUI_DIRECTION_RTL;
    nodeAPI->setAttribute(rootNode, NODE_OVERLAY, &item4);
    overlayVal = nodeAPI->getAttribute(rootNode, NODE_OVERLAY);
    EXPECT_EQ(overlayVal->value[3].i32, static_cast<int32_t>(ARKUI_DIRECTION_RTL));

    value4[3].i32 = ARKUI_DIRECTION_AUTO;
    nodeAPI->setAttribute(rootNode, NODE_OVERLAY, &item4);
    overlayVal = nodeAPI->getAttribute(rootNode, NODE_OVERLAY);
    EXPECT_EQ(overlayVal->value[3].i32, static_cast<int32_t>(ARKUI_DIRECTION_AUTO));

    value4[3].i32 = 2;
    nodeAPI->setAttribute(rootNode, NODE_OVERLAY, &item4);
    overlayVal = nodeAPI->getAttribute(rootNode, NODE_OVERLAY);
    EXPECT_EQ(overlayVal->value[3].i32, static_cast<int32_t>(ARKUI_DIRECTION_LTR));
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_OVERLAY), ARKUI_ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: NativeNodeOverlayTest002
 * @tc.desc: Test Overlay attribute.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeOverlayTest002, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto overlayNode = nodeAPI->createNode(ARKUI_NODE_STACK);

    ArkUI_NumberValue value4[] = {{.i32 = ARKUI_ALIGNMENT_TOP_START}, {.f32 = 0.0f},
        {.f32 = 0.0f}, {.i32 = ARKUI_DIRECTION_LTR}};
    ArkUI_AttributeItem item4 = {value4, sizeof(value4) / sizeof(ArkUI_NumberValue)};

    item4.string = "test";
    item4.object = overlayNode;
    item4.size = 0;
    nodeAPI->setAttribute(rootNode, NODE_OVERLAY, &item4);
    item4.size = 4;
    nodeAPI->setAttribute(rootNode, NODE_OVERLAY, &item4);
    auto overlayVal = nodeAPI->getAttribute(rootNode, NODE_OVERLAY);
    EXPECT_EQ(overlayVal->value[0].i32, static_cast<int32_t>(ARKUI_ALIGNMENT_TOP_START));

    value4[0].i32 = ARKUI_ALIGNMENT_TOP;
    nodeAPI->setAttribute(rootNode, NODE_OVERLAY, &item4);
    overlayVal = nodeAPI->getAttribute(rootNode, NODE_OVERLAY);
    EXPECT_EQ(overlayVal->value[0].i32, static_cast<int32_t>(ARKUI_ALIGNMENT_TOP));

    value4[0].i32 = ARKUI_ALIGNMENT_TOP_END;
    nodeAPI->setAttribute(rootNode, NODE_OVERLAY, &item4);
    overlayVal = nodeAPI->getAttribute(rootNode, NODE_OVERLAY);
    EXPECT_EQ(overlayVal->value[0].i32, static_cast<int32_t>(ARKUI_ALIGNMENT_TOP_END));

    value4[0].i32 = ARKUI_ALIGNMENT_START;
    nodeAPI->setAttribute(rootNode, NODE_OVERLAY, &item4);
    overlayVal = nodeAPI->getAttribute(rootNode, NODE_OVERLAY);
    EXPECT_EQ(overlayVal->value[0].i32, static_cast<int32_t>(ARKUI_ALIGNMENT_START));

    value4[0].i32 = ARKUI_ALIGNMENT_CENTER;
    nodeAPI->setAttribute(rootNode, NODE_OVERLAY, &item4);
    overlayVal = nodeAPI->getAttribute(rootNode, NODE_OVERLAY);
    EXPECT_EQ(overlayVal->value[0].i32, static_cast<int32_t>(ARKUI_ALIGNMENT_CENTER));

    value4[0].i32 = ARKUI_ALIGNMENT_END;
    nodeAPI->setAttribute(rootNode, NODE_OVERLAY, &item4);
    overlayVal = nodeAPI->getAttribute(rootNode, NODE_OVERLAY);
    EXPECT_EQ(overlayVal->value[0].i32, static_cast<int32_t>(ARKUI_ALIGNMENT_END));

    value4[0].i32 = ARKUI_ALIGNMENT_BOTTOM_START;
    nodeAPI->setAttribute(rootNode, NODE_OVERLAY, &item4);
    overlayVal = nodeAPI->getAttribute(rootNode, NODE_OVERLAY);
    EXPECT_EQ(overlayVal->value[0].i32, static_cast<int32_t>(ARKUI_ALIGNMENT_BOTTOM_START));

    value4[0].i32 = ARKUI_ALIGNMENT_BOTTOM;
    nodeAPI->setAttribute(rootNode, NODE_OVERLAY, &item4);
    overlayVal = nodeAPI->getAttribute(rootNode, NODE_OVERLAY);
    EXPECT_EQ(overlayVal->value[0].i32, static_cast<int32_t>(ARKUI_ALIGNMENT_BOTTOM));

    value4[0].i32 = ARKUI_ALIGNMENT_BOTTOM_END;
    nodeAPI->setAttribute(rootNode, NODE_OVERLAY, &item4);
    overlayVal = nodeAPI->getAttribute(rootNode, NODE_OVERLAY);
    EXPECT_EQ(overlayVal->value[0].i32, static_cast<int32_t>(ARKUI_ALIGNMENT_BOTTOM_END));
}

/**
 * @tc.name: NativeNodeSetClipShapeTest001
 * @tc.desc: Test SetClipShape.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeSetClipShapeTest001, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);
    int32_t ret1 = nodeAPI->addChild(rootNode, childNode);
    EXPECT_EQ(ret1, ARKUI_ERROR_CODE_NO_ERROR);
    float left = 10.0f;
    float right = 100.0f;
    float top = 10.0f;
    float bottom = 110.0f;
    float width = 90.0f;
    float height = 100.0f;

    ArkUI_NumberValue value[] = {{.i32 = ARKUI_CLIP_TYPE_RECTANGLE}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    ArkUIRenderNodeClipOption object;
    object.type = ArkUIRenderShape::RECT_SHAPE;
    object.rect.left = left;
    object.rect.right = right;
    object.rect.top = top;
    object.rect.bottom = bottom;
    item.object = &object;

    nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item);
    auto clipRectShapeVal = nodeAPI->getAttribute(rootNode, NODE_CLIP_SHAPE);
    EXPECT_EQ(clipRectShapeVal->value[0].i32, ARKUI_CLIP_TYPE_RECTANGLE);
    EXPECT_EQ(clipRectShapeVal->value[1].f32, width);
    EXPECT_EQ(clipRectShapeVal->value[2].f32, height);
    EXPECT_EQ(clipRectShapeVal->value[9].f32, left);
    EXPECT_EQ(clipRectShapeVal->value[10].f32, top);

    value[0].i32 = ARKUI_CLIP_TYPE_CIRCLE;
    nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item);
    clipRectShapeVal = nodeAPI->getAttribute(rootNode, NODE_CLIP_SHAPE);
    EXPECT_EQ(clipRectShapeVal->value[0].i32, ARKUI_CLIP_TYPE_RECTANGLE);
}

/**
 * @tc.name: NativeNodeSetClipShapeTest002
 * @tc.desc: Test SetClipShape.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeSetClipShapeTest002, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);
    int32_t ret1 = nodeAPI->addChild(rootNode, childNode);
    EXPECT_EQ(ret1, ARKUI_ERROR_CODE_NO_ERROR);
    float centerX = 120.0f;
    float centerY = 120.0f;
    float radius = 90.0f;
    
    ArkUI_NumberValue value[] = {{.i32 = ARKUI_CLIP_TYPE_CIRCLE}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    ArkUIRenderNodeClipOption object;
    object.type = ArkUIRenderShape::CIRCLE_SHAPE;
    object.circle.centerX = centerX;
    object.circle.centerY = centerY;
    object.circle.radius = radius;
    item.object = &object;
    nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item);
    auto clipRectShapeVal = nodeAPI->getAttribute(rootNode, NODE_CLIP_SHAPE);
    EXPECT_EQ(clipRectShapeVal->value[0].i32, ARKUI_CLIP_TYPE_CIRCLE);
    EXPECT_EQ(clipRectShapeVal->value[1].f32, 2*radius);
    EXPECT_EQ(clipRectShapeVal->value[2].f32, 2*radius);

    value[0].i32 = ARKUI_CLIP_TYPE_RECTANGLE;
    nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item);
    clipRectShapeVal = nodeAPI->getAttribute(rootNode, NODE_CLIP_SHAPE);
    EXPECT_EQ(clipRectShapeVal->value[0].i32, ARKUI_CLIP_TYPE_CIRCLE);

    object.type = ArkUIRenderShape::OVAL_SHAPE;
    nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item);
    clipRectShapeVal = nodeAPI->getAttribute(rootNode, NODE_CLIP_SHAPE);
    EXPECT_EQ(clipRectShapeVal->value[0].i32, ARKUI_CLIP_TYPE_CIRCLE);
}

/**
 * @tc.name: NativeNodeSetClipShapeTest003
 * @tc.desc: Test SetClipShape.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeSetClipShapeTest003, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);
    int32_t ret1 = nodeAPI->addChild(rootNode, childNode);
    EXPECT_EQ(ret1, ARKUI_ERROR_CODE_NO_ERROR);
    float left = 10.0f;
    float right = 100.0f;
    float top = 10.0f;
    float bottom = 110.0f;
    float rectRound = 20.0f;
    float width = 90.0f;
    float height = 100.0f;

    ArkUI_NumberValue value[] = {{.i32 = ARKUI_CLIP_TYPE_RECTANGLE}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    ArkUIRenderNodeClipOption object;
    object.type = ArkUIRenderShape::ROUND_RECT_SHAPE;
    object.roundRect.left = left;
    object.roundRect.right = right;
    object.roundRect.top = top;
    object.roundRect.bottom = bottom;
    object.roundRect.topLeftX = rectRound;
    object.roundRect.topLeftY = rectRound;
    object.roundRect.topRightX = rectRound;
    object.roundRect.topRightY = rectRound;
    object.roundRect.bottomLeftX = rectRound;
    object.roundRect.bottomLeftY = rectRound;
    object.roundRect.bottomRightX = rectRound;
    object.roundRect.bottomRightY = rectRound;
    item.object = &object;
    nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item);
    auto clipRectShapeVal = nodeAPI->getAttribute(rootNode, NODE_CLIP_SHAPE);
    EXPECT_EQ(clipRectShapeVal->value[0].i32, ARKUI_CLIP_TYPE_RECTANGLE);
    EXPECT_EQ(clipRectShapeVal->value[1].f32, width);
    EXPECT_EQ(clipRectShapeVal->value[2].f32, height);
    EXPECT_EQ(clipRectShapeVal->value[3].f32, rectRound);
    EXPECT_EQ(clipRectShapeVal->value[4].f32, rectRound);
    EXPECT_EQ(clipRectShapeVal->value[5].f32, rectRound);
    EXPECT_EQ(clipRectShapeVal->value[6].f32, rectRound);
    EXPECT_EQ(clipRectShapeVal->value[7].f32, rectRound);
    EXPECT_EQ(clipRectShapeVal->value[8].f32, rectRound);
    EXPECT_EQ(clipRectShapeVal->value[9].f32, left);
    EXPECT_EQ(clipRectShapeVal->value[10].f32, top);

    value[0].i32 = ARKUI_CLIP_TYPE_CIRCLE;
    nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item);
    clipRectShapeVal = nodeAPI->getAttribute(rootNode, NODE_CLIP_SHAPE);
    EXPECT_EQ(clipRectShapeVal->value[0].i32, ARKUI_CLIP_TYPE_RECTANGLE);
}

/**
 * @tc.name: NativeNodeSetClipShapeTest004
 * @tc.desc: Test SetClipShape.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeSetClipShapeTest004, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);
    int32_t ret1 = nodeAPI->addChild(rootNode, childNode);
    EXPECT_EQ(ret1, ARKUI_ERROR_CODE_NO_ERROR);
    float left = 10.0f;
    float right = 100.0f;
    float top = 10.0f;
    float bottom = 110.0f;
    float width = 90.0f;
    float height = 100.0f;

    ArkUI_NumberValue value[] = {{.i32 = ARKUI_CLIP_TYPE_ELLIPSE}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    ArkUIRenderNodeClipOption object;
    object.type = ArkUIRenderShape::OVAL_SHAPE;
    object.oval.left = left;
    object.oval.right = right;
    object.oval.top = top;
    object.oval.bottom = bottom;
    item.object = &object;

    nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item);
    auto clipRectShapeVal = nodeAPI->getAttribute(rootNode, NODE_CLIP_SHAPE);
    EXPECT_EQ(clipRectShapeVal->value[0].i32, ARKUI_CLIP_TYPE_ELLIPSE);
    EXPECT_EQ(clipRectShapeVal->value[1].f32, width);
    EXPECT_EQ(clipRectShapeVal->value[2].f32, height);
    EXPECT_EQ(clipRectShapeVal->value[3].f32, left);
    EXPECT_EQ(clipRectShapeVal->value[4].f32, top);

    value[0].i32 = ARKUI_CLIP_TYPE_CIRCLE;
    auto result = nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item);
    EXPECT_EQ(result, ERROR_CODE_PARAM_INVALID);
    clipRectShapeVal = nodeAPI->getAttribute(rootNode, NODE_CLIP_SHAPE);
    EXPECT_EQ(clipRectShapeVal->value[0].i32, ARKUI_CLIP_TYPE_ELLIPSE);
}

/**
 * @tc.name: NativeNodeSetClipShapeTest005
 * @tc.desc: Test SetClipShape.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeSetClipShapeTest005, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);
    int32_t ret1 = nodeAPI->addChild(rootNode, childNode);
    EXPECT_EQ(ret1, ARKUI_ERROR_CODE_NO_ERROR);

    ArkUI_NumberValue value[] = { { .i32 = 4 }, { .f32 = 10.0f }, { .f32 = 10.0f } };
    ArkUI_AttributeItem item = {value, 0};
    ArkUIRenderNodeClipOption object;
    auto result = nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item);
    EXPECT_EQ(result, ERROR_CODE_PARAM_INVALID);
    item.size = 1;
    result = nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item);
    EXPECT_EQ(result, ERROR_CODE_PARAM_INVALID);
    value[0].i32 = 1;
    result = nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item);
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_NO_ERROR);
    item.size = 2;
    item.object = &object;
    result = nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item);
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_NO_ERROR);

    ArkUI_NumberValue value2[] = { { .i32 = 1 }};
    ArkUI_AttributeItem item2 = {value2, 1};
    auto result2 = nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item2);
    EXPECT_EQ(result2, ERROR_CODE_NO_ERROR);

    ArkUI_NumberValue value3[] = { { .i32 = 1 }, { .f32 = -10.0f }};
    ArkUI_AttributeItem item3 = {value3, 2};
    auto result3 = nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item3);
    EXPECT_EQ(result3, ERROR_CODE_PARAM_INVALID);
}

/**
 * @tc.name: NativeNodeSetClipShapeTest006
 * @tc.desc: Test SetClipShape.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeSetClipShapeTest006, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);
    int32_t ret1 = nodeAPI->addChild(rootNode, childNode);
    EXPECT_EQ(ret1, ARKUI_ERROR_CODE_NO_ERROR);

    ArkUI_NumberValue value[] = { { .i32 = ARKUI_CLIP_TYPE_PATH } };
    ArkUI_AttributeItem item = { value, sizeof(value) / sizeof(ArkUI_NumberValue) };
    ArkUIRenderNodeClipOption object;
    object.type = ArkUIRenderShape::COMMANDS;
    object.commands = "M100 0 L200 240 L0 240 Z";
    item.object = &object;
    nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item);
    auto clipRectShapeVal = nodeAPI->getAttribute(rootNode, NODE_CLIP_SHAPE);
    EXPECT_EQ(clipRectShapeVal->value[0].i32, ARKUI_CLIP_TYPE_PATH);
    EXPECT_NE(clipRectShapeVal->string, nullptr);
    value[0].i32 = ARKUI_CLIP_TYPE_CIRCLE;
    auto result = nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item);
    EXPECT_EQ(result, ERROR_CODE_PARAM_INVALID);
    clipRectShapeVal = nodeAPI->getAttribute(rootNode, NODE_CLIP_SHAPE);
    EXPECT_EQ(clipRectShapeVal->value[0].i32, ARKUI_CLIP_TYPE_PATH);
    object.type = static_cast<ArkUIRenderShape>(-1);
    result = nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item);
    EXPECT_EQ(result, ERROR_CODE_PARAM_INVALID);
}

/**
 * @tc.name: NativeNodeSetClipShapeTest007
 * @tc.desc: Test SetClipShape.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeSetClipShapeTest007, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);
    int32_t ret1 = nodeAPI->addChild(rootNode, childNode);
    EXPECT_EQ(ret1, ARKUI_ERROR_CODE_NO_ERROR);
    const char* pathCommands = "M100 0 L200 240 L0 240 Z";
    ArkUI_NumberValue value[] = { { .i32 = ARKUI_CLIP_TYPE_PATH }, { .f32 = -1.0f }, { .f32 = -1.0f } };
    ArkUI_AttributeItem item = { value, sizeof(value) / sizeof(ArkUI_NumberValue) };
    auto result = nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item);
    EXPECT_EQ(result, ERROR_CODE_PARAM_INVALID);

    item.string = pathCommands;
    result = nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item);
    EXPECT_EQ(result, ERROR_CODE_PARAM_INVALID);
    ArkUI_NumberValue value2[] = { { .i32 = ARKUI_CLIP_TYPE_PATH }, { .f32 = 1.0f }, { .f32 = -1.0f } };
    ArkUI_AttributeItem item2 = { value2, sizeof(value2) / sizeof(ArkUI_NumberValue), pathCommands };
    result = nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item2);
    EXPECT_EQ(result, ERROR_CODE_PARAM_INVALID);
    ArkUI_NumberValue value3[] = { { .i32 = ARKUI_CLIP_TYPE_PATH }, { .f32 = 1.0f }, { .f32 = 1.0f } };
    ArkUI_AttributeItem item3 = { value3, sizeof(value3) / sizeof(ArkUI_NumberValue), pathCommands };
    result = nodeAPI->setAttribute(rootNode, NODE_CLIP_SHAPE, &item3);
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: BorderColorInvertTest001
 * @tc.desc: Test NODE_BORDER_COLOR function in invert color.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, BorderColorInvertTest001, TestSize.Level1)
{
    bool store = g_isConfigChangePerform;
    /**
     * @tc.steps: step1. Turn on the dark and light switch and initialize.
     */
    g_isConfigChangePerform = true;
    EXPECT_TRUE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));

    /**
     * @tc.steps: step2. Create node
     */
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_COLUMN);

    /**
     * @tc.steps: step3. Initialize the color value of the border.
     */
    uint32_t topColor = 0xFF254FF7;
    uint32_t rightColor = 0xFFF1F3F5;
    uint32_t bottomColor = 0xFF0A59F7;
    uint32_t leftColor = 0xff007dff;

    /**
     * @tc.steps: step4. Test "NODE_BORDER_COLOR", when only a single color is set.
     */
    ArkUI_NumberValue singleValue[] = {{.u32 = leftColor}};
    ArkUI_AttributeItem singleItem = {singleValue, sizeof(singleValue) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_BORDER_COLOR, &singleItem);
    auto singleBorderColor = nodeAPI->getAttribute(rootNode, NODE_BORDER_COLOR);
    /**
     * @tc.expected: singleBorderColor should not be nullptr.
     */
    ASSERT_NE(singleBorderColor, nullptr);
    EXPECT_EQ(singleBorderColor->value[0].u32, leftColor);

    /**
     * @tc.steps: step5. Test "NODE_BORDER_COLOR", when the four sides are set to different colors.
     */
    ArkUI_NumberValue multiValue[] = {{.u32 = topColor}, {.u32 = rightColor}, {.u32 = bottomColor}, {.u32 = leftColor}};
    ArkUI_AttributeItem multiItem = {multiValue, sizeof(multiValue) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_BORDER_COLOR, &multiItem);
    auto multiBorderColorVal = nodeAPI->getAttribute(rootNode, NODE_BORDER_COLOR);
    EXPECT_EQ(multiBorderColorVal->value[0].u32, topColor);
    EXPECT_EQ(multiBorderColorVal->value[1].u32, rightColor);
    EXPECT_EQ(multiBorderColorVal->value[2].u32, bottomColor);
    EXPECT_EQ(multiBorderColorVal->value[3].u32, leftColor);
    nodeAPI->disposeNode(rootNode);
    g_isConfigChangePerform = store;
}

/**
 * @tc.name: OutlineColorTest001
 * @tc.desc: Test NODE_OUTLINE_COLOR function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OutlineColorTest001, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Turn on the dark and light switch and initialize.
     */
    g_isConfigChangePerform = true;
    EXPECT_TRUE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));

    /**
     * @tc.steps: step2. Create node
     */
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_COLUMN);

    /**
     * @tc.steps: step3. Initialize the color value of the outerline.
     */
    uint32_t leftColor = 0xff007dff;
    uint32_t rightColor = 0xFFF1F3F5;
    uint32_t topColor = 0xFF254FF7;
    uint32_t bottomColor = 0xFF0A59F7;

    /**
     * @tc.steps: step4. Test "NODE_OUTLINE_COLOR", when only a single color is set.
     */
    ArkUI_NumberValue singleValue[] = {{.u32 = leftColor}};
    ArkUI_AttributeItem singleItem = {singleValue, sizeof(singleValue) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_OUTLINE_COLOR, &singleItem);
    auto singleOutlineColor = nodeAPI->getAttribute(rootNode, NODE_OUTLINE_COLOR);
    ASSERT_NE(singleOutlineColor, nullptr);
    EXPECT_EQ(singleOutlineColor->value[0].u32, leftColor);

    /**
     * @tc.steps: step5. Test "NODE_OUTLINE_COLOR", when the four sides are set to different colors.
     */
    ArkUI_NumberValue multiValue[] = {{.u32 = leftColor}, {.u32 = rightColor}, {.u32 = topColor}, {.u32 = bottomColor}};
    ArkUI_AttributeItem multiItem = {multiValue, sizeof(multiValue) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(rootNode, NODE_OUTLINE_COLOR, &multiItem);
    auto multiOutlineColorVal = nodeAPI->getAttribute(rootNode, NODE_OUTLINE_COLOR);
    EXPECT_EQ(multiOutlineColorVal->value[0].u32, leftColor);
    EXPECT_EQ(multiOutlineColorVal->value[1].u32, rightColor);
    EXPECT_EQ(multiOutlineColorVal->value[2].u32, topColor);
    EXPECT_EQ(multiOutlineColorVal->value[3].u32, bottomColor);
    nodeAPI->disposeNode(rootNode);
    g_isConfigChangePerform = false;
    EXPECT_FALSE(SystemProperties::ConfigChangePerform());
}

/**
 * @tc.name: CustomShadowTest001
 * @tc.desc: Test NODE_CUSTOM_SHADOW function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, CustomShadowTest001, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Turn off the dark and light switch and initialize.
     */
    g_isConfigChangePerform = false;
    EXPECT_FALSE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));

    /**
     * @tc.steps: step2. Create node
     */
    auto columnNode = nodeAPI->createNode(ARKUI_NODE_COLUMN);

    /**
     * @tc.steps: step3. Initialize the value of the custom shadow.
     */
    float radius = 18.0f;
    int32_t enableStrategy = 0;
    float offset = 0.0f;
    uint32_t shadowColor = 0x0c182431;
    uint32_t isFilled = 0;
    ArkUI_NumberValue customShadowValue[] = {{.f32 = radius}, {.i32 = enableStrategy}, {.f32 = offset}, {.f32 = offset},
        {.i32 = ARKUI_SHADOW_TYPE_COLOR}, {.u32 = shadowColor}, {.u32 = isFilled}};
    ArkUI_AttributeItem customShadowItem = {customShadowValue, sizeof(customShadowValue) / sizeof(ArkUI_NumberValue)};

    /**
     * @tc.steps: step4. Test setAttribute: NODE_CUSTOM_SHADOW.
     */
    auto setResult = nodeAPI->setAttribute(columnNode, NODE_CUSTOM_SHADOW, &customShadowItem);
    EXPECT_EQ(setResult, ERROR_CODE_NO_ERROR);

    /**
     * @tc.steps: step5. Test getAttribute: NODE_CUSTOM_SHADOW.
     */
    auto customShadow = nodeAPI->getAttribute(columnNode, NODE_CUSTOM_SHADOW);
    ASSERT_NE(customShadow, nullptr);
    EXPECT_EQ(customShadow->value[0].f32, radius);
    EXPECT_EQ(customShadow->value[1].i32, enableStrategy);
    EXPECT_EQ(customShadow->value[2].f32, offset);
    EXPECT_EQ(customShadow->value[3].f32, offset);
    EXPECT_EQ(customShadow->value[4].i32, ARKUI_SHADOW_TYPE_COLOR);
    EXPECT_EQ(customShadow->value[5].u32, shadowColor);
    EXPECT_EQ(customShadow->value[6].u32, isFilled);
    nodeAPI->disposeNode(columnNode);
}

/**
 * @tc.name: ColorBlendTest001
 * @tc.desc: Test NODE_COLOR_BLEND function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, ColorBlendTest001, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Turn off the dark and light switch and initialize.
     */
    g_isConfigChangePerform = false;
    EXPECT_FALSE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));

    /**
     * @tc.steps: step2. Create node
     */
    auto columnNode = nodeAPI->createNode(ARKUI_NODE_COLUMN);

    /**
     * @tc.steps: step3. Initialize the value of the color blend, and test "NODE_COLOR_BLEND".
     */
    uint32_t color = 0x5d6d3c;
    ArkUI_NumberValue value[] = {{.u32 = color}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(columnNode, NODE_COLOR_BLEND, &item);
    auto colorBlend = nodeAPI->getAttribute(columnNode, NODE_COLOR_BLEND);
    ASSERT_NE(colorBlend, nullptr);
    EXPECT_EQ(colorBlend->value[0].u32, color);
    nodeAPI->disposeNode(columnNode);
}

/**
 * @tc.name: SweepGradientTest001
 * @tc.desc: Test NODE_SWEEP_GRADIENT function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, SweepGradientTest001, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Turn on the dark and light switch and initialize.
     */
    g_isConfigChangePerform = true;
    EXPECT_TRUE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));

    /**
     * @tc.steps: step2. Create node
     */
    auto scrollNode = nodeAPI->createNode(ARKUI_NODE_SCROLL);

    /**
     * @tc.steps: step3. Initialize the value of the sweep gradient, and test "NODE_SWEEP_GRADIENT".
     */
    float offsetX = 0.0f;
    float offsetY = 0.0f;
    float start = 0;
    float end = 360;
    float angle = 60;
    int32_t isRepeatedColoring = 0;
    ArkUI_NumberValue sweepGradient[] = {{.f32 = offsetX}, {.f32 = offsetY}, {.f32 = start},
        {.f32 = end}, {.f32 = angle}, {.i32 = isRepeatedColoring}};
    uint32_t color = 0xFFFF0000;
    uint32_t colors[] = {color, color};
    float stopOne = 0.1f;
    float stopTwo = 0.5f;
    float stops[] = {stopOne, stopTwo};
    ArkUI_ColorStop colorStop[] = {{colors, stops, 2}};

    ArkUI_AttributeItem sweepGradientItem = {sweepGradient,
        sizeof(sweepGradient) / sizeof(ArkUI_NumberValue), nullptr, colorStop};
    nodeAPI->setAttribute(scrollNode, NODE_SWEEP_GRADIENT, &sweepGradientItem);

    auto sweepGradientVal = nodeAPI->getAttribute(scrollNode, NODE_SWEEP_GRADIENT);
    ASSERT_NE(sweepGradientVal, nullptr);
    EXPECT_EQ(sweepGradientVal->value[0].f32, offsetX);
    EXPECT_EQ(sweepGradientVal->value[1].f32, offsetY);
    EXPECT_EQ(sweepGradientVal->value[2].f32, start);
    EXPECT_EQ(sweepGradientVal->value[3].f32, end);
    EXPECT_EQ(sweepGradientVal->value[4].f32, angle);
    EXPECT_EQ(sweepGradientVal->value[5].i32, isRepeatedColoring);

    nodeAPI->disposeNode(scrollNode);
    g_isConfigChangePerform = false;
    EXPECT_FALSE(SystemProperties::ConfigChangePerform());
}

/**
 * @tc.name: SweepGradientTest002
 * @tc.desc: Test NODE_SWEEP_GRADIENT function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, SweepGradientTest002, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Turn off the dark and light switch and initialize.
     */
    g_isConfigChangePerform = false;
    EXPECT_FALSE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));

    /**
     * @tc.steps: step2. Create node
     */
    auto swiperNode = nodeAPI->createNode(ARKUI_NODE_SWIPER);

    /**
     * @tc.steps: step3. Initialize the value of the sweep gradient, and test "NODE_SWEEP_GRADIENT".
     */
    float offsetX = 1.1f;
    float offsetY = 0.0f;
    float start = 0;
    float end = 175;
    float angle = 45;
    int32_t isRepeatedColoring = 1;
    ArkUI_NumberValue sweepGradient[] = {{.f32 = offsetX}, {.f32 = offsetY}, {.f32 = start},
        {.f32 = end}, {.f32 = angle}, {.i32 = isRepeatedColoring}};
    uint32_t color = 0xFF182431;
    uint32_t colors[] = {color, color};
    float stopOne = 3.2f;
    float stopTwo = 4.8f;
    float stops[] = {stopOne, stopTwo};
    ArkUI_ColorStop colorStop[] = {{colors, stops, 2}};

    ArkUI_AttributeItem sweepGradientItem = {sweepGradient,
        sizeof(sweepGradient) / sizeof(ArkUI_NumberValue), nullptr, colorStop};
    nodeAPI->setAttribute(swiperNode, NODE_SWEEP_GRADIENT, &sweepGradientItem);

    auto sweepGradientValue = nodeAPI->getAttribute(swiperNode, NODE_SWEEP_GRADIENT);
    ASSERT_NE(sweepGradientValue, nullptr);
    EXPECT_EQ(sweepGradientValue->value[0].f32, offsetX);
    EXPECT_EQ(sweepGradientValue->value[1].f32, offsetY);
    EXPECT_EQ(sweepGradientValue->value[2].f32, start);
    EXPECT_EQ(sweepGradientValue->value[3].f32, end);
    EXPECT_EQ(sweepGradientValue->value[4].f32, angle);
    EXPECT_EQ(sweepGradientValue->value[5].i32, isRepeatedColoring);

    nodeAPI->disposeNode(swiperNode);
}

/**
 * @tc.name: RadialGradientTest001
 * @tc.desc: Test NODE_RADIAL_GRADIENT function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, RadialGradientTest001, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Turn on the dark and light switch and initialize.
     */
    g_isConfigChangePerform = true;
    EXPECT_TRUE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));

    /**
     * @tc.steps: step2. Create node
     */
    auto scrollNode = nodeAPI->createNode(ARKUI_NODE_SCROLL);

    /**
    * @tc.steps: step3. Initialize the value of the radial gradient, and test "NODE_RADIAL_GRADIENT".
    */
    float offsetX = 5.1f;
    float offsetY = 0.0f;
    float radius = 10;
    int32_t isRepeatedColoring = 1;
    ArkUI_NumberValue radialGradient[] = {{.f32 = offsetX}, {.f32 = offsetY}, {.f32 = radius},
        {.i32 = isRepeatedColoring}};
    uint32_t color = 0xFF182431;
    uint32_t colors[] = {color, color};
    float stopOne = 0.0f;
    float stopTwo = 6.9f;
    float stops[] = {stopOne, stopTwo};
    ArkUI_ColorStop colorStop[] = {{colors, stops, 2}};
    ArkUI_AttributeItem radialGradientItem = {radialGradient,
        sizeof(radialGradient) / sizeof(ArkUI_NumberValue), nullptr, colorStop};
    nodeAPI->setAttribute(scrollNode, NODE_RADIAL_GRADIENT, &radialGradientItem);
    auto radialGradientValue = nodeAPI->getAttribute(scrollNode, NODE_RADIAL_GRADIENT);
    ASSERT_NE(radialGradientValue, nullptr);
    EXPECT_EQ(radialGradientValue->value[0].f32, offsetX);
    EXPECT_EQ(radialGradientValue->value[1].f32, offsetY);
    EXPECT_EQ(radialGradientValue->value[2].f32, radius);
    EXPECT_EQ(radialGradientValue->value[3].i32, isRepeatedColoring);

    nodeAPI->disposeNode(scrollNode);
    g_isConfigChangePerform = false;
    EXPECT_FALSE(SystemProperties::ConfigChangePerform());
}

/**
 * @tc.name: RadialGradientTest002
 * @tc.desc: Test NODE_RADIAL_GRADIENT function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, RadialGradientTest002, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Turn off the dark and light switch and initialize.
     */
    g_isConfigChangePerform = false;
    EXPECT_FALSE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));

    /**
     * @tc.steps: step2. Create node
     */
    auto swiperNode = nodeAPI->createNode(ARKUI_NODE_SWIPER);

    /**
    * @tc.steps: step3. Initialize the value of the radial gradient, and test "NODE_RADIAL_GRADIENT".
    */
    float offsetX = 0.7f;
    float offsetY = 1.3f;
    float radius = 23;
    int32_t isRepeatedColoring = 0;
    ArkUI_NumberValue radialGradient[] = {{.f32 = offsetX}, {.f32 = offsetY}, {.f32 = radius},
        {.i32 = isRepeatedColoring}};
    uint32_t color = 0xFF182431;
    uint32_t colors[] = {color, color};
    float stopOne = 1.1f;
    float stopTwo = 7.8f;
    float stops[] = {stopOne, stopTwo};
    ArkUI_ColorStop colorStop[] = {{colors, stops, 2}};
    ArkUI_AttributeItem radialGradientItem = {radialGradient,
        sizeof(radialGradient) / sizeof(ArkUI_NumberValue), nullptr, colorStop};
    nodeAPI->setAttribute(swiperNode, NODE_RADIAL_GRADIENT, &radialGradientItem);
    auto radialGradientVal = nodeAPI->getAttribute(swiperNode, NODE_RADIAL_GRADIENT);
    ASSERT_NE(radialGradientVal, nullptr);
    EXPECT_EQ(radialGradientVal->value[0].f32, offsetX);
    EXPECT_EQ(radialGradientVal->value[1].f32, offsetY);
    EXPECT_EQ(radialGradientVal->value[2].f32, radius);
    EXPECT_EQ(radialGradientVal->value[3].i32, isRepeatedColoring);

    nodeAPI->disposeNode(swiperNode);
}

/**
 * @tc.name: LinearGradientTest001
 * @tc.desc: Test NODE_LINEAR_GRADIENT function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, LinearGradientTest001, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Turn on the dark and light switch and initialize.
     */
    g_isConfigChangePerform = true;
    EXPECT_TRUE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));

    /**
     * @tc.steps: step2. Create node
     */
    auto scrollNode = nodeAPI->createNode(ARKUI_NODE_SCROLL);

    /**
    * @tc.steps: step3. Initialize the value of the linear gradient, and test "NODE_LINEAR_GRADIENT".
    */
    float offsetX = 4.7f;
    float offsetY = 0.4f;
    float radius = 21;
    int32_t isRepeatedColoring = 0;
    ArkUI_NumberValue linearGradient[] = {{.f32 = offsetX}, {.f32 = offsetY}, {.f32 = radius},
        {.i32 = isRepeatedColoring}};
    uint32_t color = 0xFF185531;
    uint32_t colors[] = {color, color};
    float stopOne = 0.1f;
    float stopTwo = 7.7f;
    float stops[] = {stopOne, stopTwo};
    ArkUI_ColorStop colorStop[] = {{colors, stops, 2}};
    ArkUI_AttributeItem linearGradientItem = {linearGradient,
        sizeof(linearGradient) / sizeof(ArkUI_NumberValue), nullptr, colorStop};
    nodeAPI->setAttribute(scrollNode, NODE_LINEAR_GRADIENT, &linearGradientItem);
    auto linearGradientValue = nodeAPI->getAttribute(scrollNode, NODE_LINEAR_GRADIENT);
    ASSERT_NE(linearGradientValue, nullptr);

    nodeAPI->disposeNode(scrollNode);
    g_isConfigChangePerform = false;
    EXPECT_FALSE(SystemProperties::ConfigChangePerform());
}

/**
 * @tc.name: LinearGradientTest002
 * @tc.desc: Test NODE_LINEAR_GRADIENT function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, LinearGradientTest002, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Turn off the dark and light switch and initialize.
     */
    g_isConfigChangePerform = false;
    EXPECT_FALSE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));

    /**
     * @tc.steps: step2. Create node
     */
    auto swiperNode = nodeAPI->createNode(ARKUI_NODE_SWIPER);

    /**
    * @tc.steps: step3. Initialize the value of the linear gradient, and test "NODE_LINEAR_GRADIENT".
    */
    float offset = 0.3f;
    float radius = 13;
    int32_t isRepeatedColoring = 1;
    ArkUI_NumberValue linearGradient[] = {{.f32 = offset}, {.f32 = offset}, {.f32 = radius},
        {.i32 = isRepeatedColoring}};
    uint32_t color = 0xFF225531;
    uint32_t colors[] = {color, color};
    float stopOne = 0.6f;
    float stopTwo = 3.8f;
    float stops[] = {stopOne, stopTwo};
    ArkUI_ColorStop colorStop[] = {{colors, stops, 2}};
    ArkUI_AttributeItem linearGradientItem = {linearGradient,
        sizeof(linearGradient) / sizeof(ArkUI_NumberValue), nullptr, colorStop};
    nodeAPI->setAttribute(swiperNode, NODE_LINEAR_GRADIENT, &linearGradientItem);
    auto linearGradientVal = nodeAPI->getAttribute(swiperNode, NODE_LINEAR_GRADIENT);
    ASSERT_NE(linearGradientVal, nullptr);

    nodeAPI->disposeNode(swiperNode);
}

/**
 * @tc.name: ForegroundColorTest001
 * @tc.desc: Test NODE_FOREGROUND_COLOR function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, ForegroundColorTest001, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Turn on the dark and light switch and initialize.
     */
    g_isConfigChangePerform = true;
    EXPECT_TRUE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));

    /**
     * @tc.steps: step2. Create node
     */
    auto scrollNode = nodeAPI->createNode(ARKUI_NODE_SCROLL);

    /**
     * @tc.steps: step3. Initialize the value of the foreground color, and test "NODE_FOREGROUND_COLOR".
     */
    uint32_t foregroundColor = 0xFF182431;
    ArkUI_NumberValue value[] = {{.u32 = foregroundColor}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(scrollNode, NODE_FOREGROUND_COLOR, &item);
    auto foregroundColorVal = nodeAPI->getAttribute(scrollNode, NODE_FOREGROUND_COLOR);
    ASSERT_NE(foregroundColorVal, nullptr);
    EXPECT_EQ(foregroundColorVal->value[0].u32, foregroundColor);
    nodeAPI->disposeNode(scrollNode);
    g_isConfigChangePerform = false;
    EXPECT_FALSE(SystemProperties::ConfigChangePerform());
}

/**
 * @tc.name: ForegroundColorTest002
 * @tc.desc: Test NODE_FOREGROUND_COLOR function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, ForegroundColorTest002, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Turn off the dark and light switch and initialize.
     */
    g_isConfigChangePerform = false;
    EXPECT_FALSE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));

    /**
     * @tc.steps: step2. Create node
     */
    auto swiperNode = nodeAPI->createNode(ARKUI_NODE_SWIPER);

    /**
     * @tc.steps: step3. Initialize the value of the foreground color, and test "NODE_FOREGROUND_COLOR".
     */
    uint32_t color = 0x337F7F7F;
    ArkUI_NumberValue value[] = {{.u32 = color}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(swiperNode, NODE_FOREGROUND_COLOR, &item);
    auto foregroundColorVal = nodeAPI->getAttribute(swiperNode, NODE_FOREGROUND_COLOR);
    ASSERT_NE(foregroundColorVal, nullptr);
    EXPECT_EQ(foregroundColorVal->value[0].u32, color);
    nodeAPI->disposeNode(swiperNode);
}

/**
 * @tc.name: MaskTest001
 * @tc.desc: Test NODE_MASK_ARKUI_MASK_TYPE_RECTANGLE function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, RadialGradiMaskTest001entTest002, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Turn off the dark and light switch and initialize.
     */
    g_isConfigChangePerform = false;
    EXPECT_FALSE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));

    /**
     * @tc.steps: step2. Create node
     */
    auto swiperNode = nodeAPI->createNode(ARKUI_NODE_SWIPER);

    /**
    * @tc.steps: step3. Initialize the value of the ARKUI_MASK_TYPE_RECTANGLE type mask,
    * and test "NODE_MASK".
    */
    uint32_t color = 0xFF182431;
    uint32_t borderColor = 0xFF185531;
    float borderWidth = 3;
    int32_t type = ARKUI_MASK_TYPE_RECTANGLE;
    float rectWidth = 20;
    float rectHeight = 20;
    float rectRadiusWidth = 5;
    float rectRadiusHeight = 6;
    float leftTopRadius = 20;
    float leftBottomRadius = 20;
    float rightTopRadius = 5;
    float rightBottomRadius = 6;
    ArkUI_NumberValue rectMask[] = {{.u32 = color}, {.u32 = borderColor}, {.f32 = borderWidth}, {.i32 = type},
        {.f32 = rectWidth}, {.f32 = rectHeight}, {.f32 = rectRadiusWidth},
        {.f32 = rectRadiusHeight}, {.f32 = leftTopRadius}, {.f32 = leftBottomRadius},
        {.f32 = rightTopRadius}, {.f32 = rightBottomRadius}};
    ArkUI_AttributeItem rectMaskItem = {rectMask,
        sizeof(rectMask) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(swiperNode, NODE_MASK, &rectMaskItem);
    auto rectMaskVal = nodeAPI->getAttribute(swiperNode, NODE_MASK);
    ASSERT_NE(rectMaskVal, nullptr);

    nodeAPI->disposeNode(swiperNode);
}

/**
 * @tc.name: MaskTest002
 * @tc.desc: Test NODE_MASK_ARKUI_MASK_TYPE_CIRCLE function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, MaskTest002, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Turn off the dark and light switch and initialize.
     */
    g_isConfigChangePerform = false;
    EXPECT_FALSE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));

    /**
     * @tc.steps: step2. Create node
     */
    auto swiperNode = nodeAPI->createNode(ARKUI_NODE_SWIPER);

    /**
    * @tc.steps: step3. Initialize the value of the ARKUI_MASK_TYPE_CIRCLE type mask,
    * and test "NODE_MASK".
    */
    uint32_t color = 0xFF182432;
    uint32_t borderColor = 0xFF185549;
    float borderWidth = 4;
    int32_t type = ARKUI_MASK_TYPE_CIRCLE;
    float circleWidth = 23;
    float circleHeight = 23;
    ArkUI_NumberValue circleMask[] = {{.u32 = color}, {.u32 = borderColor}, {.f32 = borderWidth}, {.i32 = type},
        {.f32 = circleWidth}, {.f32 = circleHeight}};
    ArkUI_AttributeItem circleMaskItem = {circleMask,
        sizeof(circleMask) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(swiperNode, NODE_MASK, &circleMaskItem);
    auto circleMaskVal = nodeAPI->getAttribute(swiperNode, NODE_MASK);
    ASSERT_NE(circleMaskVal, nullptr);

    nodeAPI->disposeNode(swiperNode);
}

/**
 * @tc.name: MaskTest003
 * @tc.desc: Test NODE_MASK_ARKUI_MASK_TYPE_ELLIPSE function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, MaskTest003, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Turn off the dark and light switch and initialize.
     */
    g_isConfigChangePerform = false;
    EXPECT_FALSE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));

    /**
     * @tc.steps: step2. Create node
     */
    auto swiperNode = nodeAPI->createNode(ARKUI_NODE_SWIPER);

    /**
    * @tc.steps: step3. Initialize the value of the ARKUI_MASK_TYPE_ELLIPSE type mask,
    * and test "NODE_MASK".
    */
    uint32_t color = 0xFF182432;
    uint32_t borderColor = 0xFF185549;
    float borderWidth = 4;
    int32_t type = ARKUI_MASK_TYPE_ELLIPSE;
    float ellipseWidth = 23;
    float ellipseHeight = 23;
    ArkUI_NumberValue ellipseMask[] = {{.u32 = color}, {.u32 = borderColor}, {.f32 = borderWidth},
        {.i32 = type}, {.f32 = ellipseWidth}, {.f32 = ellipseHeight}};
    ArkUI_AttributeItem ellipseMaskItem = {ellipseMask,
        sizeof(ellipseMask) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(swiperNode, NODE_MASK, &ellipseMaskItem);
    auto ellipseMaskVal = nodeAPI->getAttribute(swiperNode, NODE_MASK);
    ASSERT_NE(ellipseMaskVal, nullptr);

    nodeAPI->disposeNode(swiperNode);
}

/**
 * @tc.name: MaskTest004
 * @tc.desc: Test NODE_MASK_ARKUI_MASK_TYPE_PROGRESS function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, MaskTest004, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Turn off the dark and light switch and initialize.
     */
    g_isConfigChangePerform = false;
    EXPECT_FALSE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));

    /**
     * @tc.steps: step2. Create node
     */
    auto swiperNode = nodeAPI->createNode(ARKUI_NODE_SWIPER);

    /**
    * @tc.steps: step3. Initialize the value of the ARKUI_MASK_TYPE_PROGRESS type mask,
    * and test "NODE_MASK".
    */
    int32_t type = ARKUI_MASK_TYPE_PROGRESS;
    float currProgress = 0;
    float maxProgress = 50;
    uint32_t color = 0xFF199432;
    ArkUI_NumberValue progressMask[] = {{.i32 = type}, {.f32 = currProgress}, {.f32 = maxProgress},
        {.u32 = color}};
    ArkUI_AttributeItem progressMaskItem = {progressMask,
        sizeof(progressMask) / sizeof(ArkUI_NumberValue)};
    nodeAPI->setAttribute(swiperNode, NODE_MASK, &progressMaskItem);
    auto progressMaskVal = nodeAPI->getAttribute(swiperNode, NODE_MASK);
    ASSERT_NE(progressMaskVal, nullptr);
    EXPECT_EQ(progressMaskVal->value[0].i32, type);
    EXPECT_EQ(progressMaskVal->value[1].f32, currProgress);
    EXPECT_EQ(progressMaskVal->value[2].f32, maxProgress);
    EXPECT_EQ(progressMaskVal->value[3].u32, color);

    nodeAPI->disposeNode(swiperNode);
}

/**
 * @tc.name: SwiperArrowStyleTest001
 * @tc.desc: Test NODE_SWIPER_SHOW_DISPLAY_ARROW function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, SwiperArrowStyleTest001, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Turn on the dark and light switch and initialize.
     */
    g_isConfigChangePerform = true;
    EXPECT_TRUE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ArkUI_NodeHandle swiper = nodeAPI->createNode(ARKUI_NODE_SWIPER);
    const int size = 9;
    const char* arr[size] = {"0", "1", "2", "3", "4", "5", "6", "7", "8"};

    /**
     * @tc.steps: step2. Initialize the text component and mount it to the swiper.
     */
    for (int i = 0; i < size; i++) {
        ArkUI_NodeHandle textNode = nodeAPI->createNode(ARKUI_NODE_TEXT);
        ArkUI_AttributeItem content = { .string = arr[i] };
        nodeAPI->setAttribute(textNode, NODE_TEXT_CONTENT, &content);
        
        ArkUI_NumberValue value[] = {0};
        ArkUI_AttributeItem item = {value, 1};
        value[0].f32 = 200;
        nodeAPI->setAttribute(textNode, NODE_WIDTH, &item);
        value[0].f32 = 120;
        nodeAPI->setAttribute(textNode, NODE_HEIGHT, &item);
        value[0].u32 = 0xFFAFEEEE;
        nodeAPI->setAttribute(textNode, NODE_BACKGROUND_COLOR, &item);
        value[0].i32 = 0;
        nodeAPI->setAttribute(textNode, NODE_TEXT_ALIGN, &item);
        value[0].f32 = 20;
        nodeAPI->setAttribute(textNode, NODE_FONT_SIZE, &item);
        
        ArkUI_AttributeItem textId = {.string = "SwiperTextId1"};
        nodeAPI->setAttribute(textNode, NODE_ID, &textId);
        nodeAPI->addChild(swiper, textNode);
    }

    /**
     * @tc.steps: step3. Create an arrowStyle and configure the properties,
     *            then set the arrowStyle to the NODE_SWIPER_SHOW_DISPLAY_ARROW.
     */
    ArkUI_SwiperArrowStyle* arrowStyle = OH_ArkUI_SwiperArrowStyle_Create();
    OH_ArkUI_SwiperArrowStyle_SetBackgroundSize(arrowStyle, 10);
    OH_ArkUI_SwiperArrowStyle_SetBackgroundColor(arrowStyle, 0xF5DEB3);
    OH_ArkUI_SwiperArrowStyle_SetArrowSize(arrowStyle, 10);
    OH_ArkUI_SwiperArrowStyle_SetArrowColor(arrowStyle, 0xDDDDDD);
    ArkUI_NumberValue valueTemp[1];
    ArkUI_AttributeItem itemTemp = {.value=valueTemp, .size=1, .object = arrowStyle};
    valueTemp[0].i32 = 2;
    auto setResult = nodeAPI->setAttribute(swiper, NODE_SWIPER_SHOW_DISPLAY_ARROW, &itemTemp);
    EXPECT_EQ(setResult, ERROR_CODE_NO_ERROR);

    /**
     * @tc.steps: step4. Test attribute acquisition,
     */
    auto getResult = nodeAPI->getAttribute(swiper, NODE_SWIPER_SHOW_DISPLAY_ARROW);
    auto returnObject = static_cast<ArkUI_SwiperArrowStyle*>(getResult->object);
    ASSERT_NE(returnObject, nullptr);
    EXPECT_EQ(OH_ArkUI_SwiperArrowStyle_GetBackgroundColor(arrowStyle), 0xF5DEB3);
    EXPECT_EQ(OH_ArkUI_SwiperArrowStyle_GetArrowColor(arrowStyle), 0xDDDDDD);
    OH_ArkUI_SwiperArrowStyle_Destroy(arrowStyle);
    nodeAPI->disposeNode(swiper);
    g_isConfigChangePerform = false;
    EXPECT_FALSE(SystemProperties::ConfigChangePerform());
}

/**
 * @tc.name: SwiperArrowStyleTest002
 * @tc.desc: Test NODE_SWIPER_SHOW_DISPLAY_ARROW function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, SwiperArrowStyleTest002, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Turn off the dark and light switch and initialize.
     */
    g_isConfigChangePerform = false;
    EXPECT_FALSE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ArkUI_NodeHandle swiperNode = nodeAPI->createNode(ARKUI_NODE_SWIPER);
    const int size = 6;
    const char* arr[size] = {"0", "1", "2", "3", "4", "5"};

    /**
     * @tc.steps: step2. Initialize the text component and mount it to the swiper.
     */
    for (int i = 0; i < size; i++) {
        ArkUI_NodeHandle text = nodeAPI->createNode(ARKUI_NODE_TEXT);
        ArkUI_AttributeItem content = { .string = arr[i] };
        nodeAPI->setAttribute(text, NODE_TEXT_CONTENT, &content);
        
        ArkUI_NumberValue value[] = {0};
        ArkUI_AttributeItem item = {value, 1};
        value[0].f32 = 300;
        nodeAPI->setAttribute(text, NODE_WIDTH, &item);
        value[0].f32 = 150;
        nodeAPI->setAttribute(text, NODE_HEIGHT, &item);
        
        ArkUI_AttributeItem textId = {.string = "SwiperTextId2"};
        nodeAPI->setAttribute(text, NODE_ID, &textId);
        nodeAPI->addChild(swiperNode, text);
    }

    /**
     * @tc.steps: step3. Create an arrowStyle and configure the properties,
     *            then set the arrowStyle to the NODE_SWIPER_SHOW_DISPLAY_ARROW.
     */
    ArkUI_SwiperArrowStyle* arrowStyle = OH_ArkUI_SwiperArrowStyle_Create();
    OH_ArkUI_SwiperArrowStyle_SetArrowSize(arrowStyle, 20);
    OH_ArkUI_SwiperArrowStyle_SetArrowColor(arrowStyle, 0xFF003153);
    OH_ArkUI_SwiperArrowStyle_SetBackgroundSize(arrowStyle, 30);
    OH_ArkUI_SwiperArrowStyle_SetBackgroundColor(arrowStyle, 0x66334455);
    ArkUI_NumberValue valueTemp[1];
    ArkUI_AttributeItem itemTemp = {.value=valueTemp, .size=1, .object = arrowStyle};
    valueTemp[0].i32 = 2;
    auto setResult = nodeAPI->setAttribute(swiperNode, NODE_SWIPER_SHOW_DISPLAY_ARROW, &itemTemp);
    EXPECT_EQ(setResult, ERROR_CODE_NO_ERROR);

    /**
     * @tc.steps: step4. Test attribute acquisition,
     */
    auto getResult = nodeAPI->getAttribute(swiperNode, NODE_SWIPER_SHOW_DISPLAY_ARROW);
    auto returnObject = static_cast<ArkUI_SwiperArrowStyle*>(getResult->object);
    ASSERT_NE(returnObject, nullptr);
    EXPECT_EQ(OH_ArkUI_SwiperArrowStyle_GetBackgroundColor(arrowStyle), 0x66334455);
    EXPECT_EQ(OH_ArkUI_SwiperArrowStyle_GetArrowColor(arrowStyle), 0xFF003153);
    OH_ArkUI_SwiperArrowStyle_Destroy(arrowStyle);
    nodeAPI->disposeNode(swiperNode);
}

/**
 * @tc.name: SwiperArrowStyleTest003
 * @tc.desc: Test NODE_SWIPER_SHOW_DISPLAY_ARROW function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, SwiperArrowStyleTest003, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Turn off the dark and light switch and initialize.
     */
    g_isConfigChangePerform = false;
    EXPECT_FALSE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ArkUI_NodeHandle swiperNode = nodeAPI->createNode(ARKUI_NODE_SWIPER);
    const int size = 6;
    const char* arr[size] = {"0", "1", "2", "3", "4", "5"};

    /**
     * @tc.steps: step2. Initialize the text component and mount it to the swiper.
     */
    for (int i = 0; i < size; i++) {
        ArkUI_NodeHandle text = nodeAPI->createNode(ARKUI_NODE_TEXT);
        ArkUI_AttributeItem content = { .string = arr[i] };
        nodeAPI->setAttribute(text, NODE_TEXT_CONTENT, &content);
        
        ArkUI_NumberValue value[] = {0};
        ArkUI_AttributeItem item = {value, 1};
        value[0].f32 = 300;
        nodeAPI->setAttribute(text, NODE_WIDTH, &item);
        value[0].f32 = 150;
        nodeAPI->setAttribute(text, NODE_HEIGHT, &item);
        
        ArkUI_AttributeItem textId = {.string = "SwiperTextId2"};
        nodeAPI->setAttribute(text, NODE_ID, &textId);
        nodeAPI->addChild(swiperNode, text);
    }

    /**
     * @tc.steps: step3. Create an arrowStyle and configure the properties,
     *            then set the arrowStyle to the NODE_SWIPER_SHOW_DISPLAY_ARROW.
     */
    ArkUI_SwiperArrowStyle* arrowStyle = OH_ArkUI_SwiperArrowStyle_Create();
    OH_ArkUI_SwiperArrowStyle_SetArrowSize(arrowStyle, 20);
    OH_ArkUI_SwiperArrowStyle_SetBackgroundSize(arrowStyle, 30);
    ArkUI_NumberValue valueTemp[1];
    ArkUI_AttributeItem itemTemp = {.value=valueTemp, .size=1, .object = arrowStyle};
    valueTemp[0].i32 = 2;
    auto setResult = nodeAPI->setAttribute(swiperNode, NODE_SWIPER_SHOW_DISPLAY_ARROW, &itemTemp);
    EXPECT_EQ(setResult, ERROR_CODE_NO_ERROR);

    /**
     * @tc.steps: step4. Test attribute acquisition,
     */
    auto getResult = nodeAPI->getAttribute(swiperNode, NODE_SWIPER_SHOW_DISPLAY_ARROW);
    auto returnObject = static_cast<ArkUI_SwiperArrowStyle*>(getResult->object);
    ASSERT_NE(returnObject, nullptr);
    EXPECT_EQ(OH_ArkUI_SwiperArrowStyle_GetBackgroundColor(arrowStyle), 0x00000000);
    EXPECT_EQ(OH_ArkUI_SwiperArrowStyle_GetArrowColor(arrowStyle), 0x00182431);
    OH_ArkUI_SwiperArrowStyle_Destroy(arrowStyle);
    nodeAPI->disposeNode(swiperNode);
}

/**
 * @tc.name: SwiperIndicatorTest001
 * @tc.desc: Test NODE_SWIPER_INDICATOR function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, SwiperIndicatorTest001, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Turn on the dark and light switch and initialize.
     */
    g_isConfigChangePerform = true;
    EXPECT_TRUE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ArkUI_NodeHandle swiper = nodeAPI->createNode(ARKUI_NODE_SWIPER);
    const int size = 3;
    const char* arr[size] = {"0", "1", "2"};

    /**
     * @tc.steps: step2. Initialize the text component and mount it to the swiper.
     */
    for (int i = 0; i < size; i++) {
        ArkUI_NodeHandle textNode = nodeAPI->createNode(ARKUI_NODE_TEXT);
        ArkUI_AttributeItem content = { .string = arr[i] };
        nodeAPI->setAttribute(textNode, NODE_TEXT_CONTENT, &content);
        ArkUI_NumberValue value[] = {0};
        ArkUI_AttributeItem item = {value, 1};
        value[0].u32 = 0x00FFFF;
        nodeAPI->setAttribute(textNode, NODE_BACKGROUND_COLOR, &item);
        value[0].f32 = 15;
        nodeAPI->setAttribute(textNode, NODE_FONT_SIZE, &item);
        value[0].i32 = 5;
        nodeAPI->setAttribute(textNode, NODE_TEXT_ALIGN, &item);
        value[0].f32 = 120;
        nodeAPI->setAttribute(textNode, NODE_HEIGHT, &item);
        value[0].f32 = 200;
        nodeAPI->setAttribute(textNode, NODE_WIDTH, &item);
        ArkUI_AttributeItem textId = {.string = "SwiperIndicatorTextId"};
        nodeAPI->setAttribute(textNode, NODE_ID, &textId);
        nodeAPI->addChild(swiper, textNode);
    }

    /**
     * @tc.steps: step3. Create an indicator and configure the properties,
     *            then set the indicator to the NODE_SWIPER_INDICATOR.
     */
    auto indicator = OH_ArkUI_SwiperDigitIndicator_Create();
    OH_ArkUI_SwiperDigitIndicator_SetFontSize(indicator, 10);
    OH_ArkUI_SwiperDigitIndicator_SetFontColor(indicator, 0xF5DEB3);
    OH_ArkUI_SwiperDigitIndicator_SetSelectedFontSize(indicator, 10);
    OH_ArkUI_SwiperDigitIndicator_SetSelectedFontColor(indicator, 0xDDDDDD);
    ArkUI_NumberValue valueTemp[] = {{.i32 = ARKUI_SWIPER_INDICATOR_TYPE_DIGIT}};
    ArkUI_AttributeItem itemTemp = {.value=valueTemp, .size=1, .object = indicator};
    auto setResult = nodeAPI->setAttribute(swiper, NODE_SWIPER_INDICATOR, &itemTemp);
    EXPECT_EQ(setResult, ERROR_CODE_NO_ERROR);

    /**
     * @tc.steps: step4. Test attribute acquisition,
     */
    EXPECT_EQ(OH_ArkUI_SwiperDigitIndicator_GetFontColor(indicator), 0xF5DEB3);
    EXPECT_EQ(OH_ArkUI_SwiperDigitIndicator_GetSelectedFontColor(indicator), 0xDDDDDD);
    OH_ArkUI_SwiperDigitIndicator_Destroy(indicator);
    nodeAPI->disposeNode(swiper);
    g_isConfigChangePerform = false;
    EXPECT_FALSE(SystemProperties::ConfigChangePerform());
}

/**
 * @tc.name: SwiperIndicatorTest002
 * @tc.desc: Test NODE_SWIPER_INDICATOR function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, SwiperIndicatorTest002, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Turn off the dark and light switch and initialize.
     */
    g_isConfigChangePerform = false;
    EXPECT_FALSE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ArkUI_NodeHandle swiperNode = nodeAPI->createNode(ARKUI_NODE_SWIPER);
    const int size = 6;
    const char* arr[size] = {"a", "b", "c", "d", "e", "f"};

    /**
     * @tc.steps: step2. Initialize the text component and mount it to the swiper.
     */
    for (int i = 0; i < size; i++) {
        ArkUI_NodeHandle text = nodeAPI->createNode(ARKUI_NODE_TEXT);
        ArkUI_AttributeItem content = { .string = arr[i] };
        nodeAPI->setAttribute(text, NODE_TEXT_CONTENT, &content);
        ArkUI_NumberValue value[] = {0};
        ArkUI_AttributeItem item = {value, 1};
        value[0].f32 = 300;
        nodeAPI->setAttribute(text, NODE_WIDTH, &item);
        value[0].f32 = 150;
        nodeAPI->setAttribute(text, NODE_HEIGHT, &item);
        nodeAPI->addChild(swiperNode, text);
    }

    /**
     * @tc.steps: step3. Create an indicator and configure the properties,
     *            then set the indicator to the NODE_SWIPER_INDICATOR.
     */
    auto indicator = OH_ArkUI_SwiperDigitIndicator_Create();
    OH_ArkUI_SwiperDigitIndicator_SetSelectedFontSize(indicator, 20);
    OH_ArkUI_SwiperDigitIndicator_SetSelectedFontColor(indicator, 0x6B8E23);
    OH_ArkUI_SwiperDigitIndicator_SetFontSize(indicator, 25);
    OH_ArkUI_SwiperDigitIndicator_SetFontColor(indicator, 0xDA70D6);
    ArkUI_NumberValue valueTemp[] = {{.i32 = ARKUI_SWIPER_INDICATOR_TYPE_DIGIT}};
    ArkUI_AttributeItem itemTemp = {.value=valueTemp, .size=1, .object = indicator};
    auto setResult = nodeAPI->setAttribute(swiperNode, NODE_SWIPER_INDICATOR, &itemTemp);
    EXPECT_EQ(setResult, ERROR_CODE_NO_ERROR);

    /**
     * @tc.steps: step4. Test attribute acquisition,
     */
    EXPECT_EQ(OH_ArkUI_SwiperDigitIndicator_GetFontColor(indicator), 0xDA70D6);
    EXPECT_EQ(OH_ArkUI_SwiperDigitIndicator_GetSelectedFontColor(indicator), 0x6B8E23);
    OH_ArkUI_SwiperDigitIndicator_Destroy(indicator);
    nodeAPI->disposeNode(swiperNode);
}

/**
 * @tc.name: SwiperIndicatorTest003
 * @tc.desc: Test NODE_SWIPER_INDICATOR function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, SwiperIndicatorTest003, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Turn on the dark and light switch and initialize.
     */
    g_isConfigChangePerform = true;
    EXPECT_TRUE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ArkUI_NodeHandle swiper = nodeAPI->createNode(ARKUI_NODE_SWIPER);
    const int size = 4;
    const char* arr[size] = {"a", "b", "c", "d"};

    /**
     * @tc.steps: step2. Initialize the text component and mount it to the swiper.
     */
    for (int i = 0; i < size; i++) {
        ArkUI_NodeHandle textNode = nodeAPI->createNode(ARKUI_NODE_TEXT);
        ArkUI_AttributeItem content = { .string = arr[i] };
        nodeAPI->setAttribute(textNode, NODE_TEXT_CONTENT, &content);
        ArkUI_NumberValue value[] = {0};
        ArkUI_AttributeItem item = {value, 1};
        value[0].u32 = 0xF5DEB3;
        nodeAPI->setAttribute(textNode, NODE_BACKGROUND_COLOR, &item);
        value[0].f32 = 70;
        nodeAPI->setAttribute(textNode, NODE_FONT_SIZE, &item);
        value[0].i32 = 50;
        nodeAPI->setAttribute(textNode, NODE_TEXT_ALIGN, &item);
        value[0].f32 = 500;
        nodeAPI->setAttribute(textNode, NODE_HEIGHT, &item);
        value[0].f32 = 320;
        nodeAPI->setAttribute(textNode, NODE_WIDTH, &item);
        nodeAPI->addChild(swiper, textNode);
    }

    /**
     * @tc.steps: step3. Create an swiperIndicator and configure the properties,
     *            then set the swiperIndicator to the NODE_SWIPER_INDICATOR.
     */
    auto swiperIndicator = OH_ArkUI_SwiperIndicator_Create(ARKUI_SWIPER_INDICATOR_TYPE_DOT);
    OH_ArkUI_SwiperIndicator_SetColor(swiperIndicator, 0xDDDDDD);
    OH_ArkUI_SwiperIndicator_SetSelectedColor(swiperIndicator, 0xF5DEB3);
    ArkUI_NumberValue valueTemp[] = {{.i32 = ARKUI_SWIPER_INDICATOR_TYPE_DOT}};
    ArkUI_AttributeItem itemTemp = {.value=valueTemp, .size=1, .object = swiperIndicator};
    auto setResult = nodeAPI->setAttribute(swiper, NODE_SWIPER_INDICATOR, &itemTemp);
    EXPECT_EQ(setResult, ERROR_CODE_NO_ERROR);

    /**
     * @tc.steps: step4. Test attribute acquisition,
     */
    EXPECT_EQ(OH_ArkUI_SwiperIndicator_GetColor(swiperIndicator), 0xDDDDDD);
    EXPECT_EQ(OH_ArkUI_SwiperIndicator_GetSelectedColor(swiperIndicator), 0xF5DEB3);
    OH_ArkUI_SwiperIndicator_Dispose(swiperIndicator);
    nodeAPI->disposeNode(swiper);
    g_isConfigChangePerform = false;
    EXPECT_FALSE(SystemProperties::ConfigChangePerform());
}

/**
 * @tc.name: SwiperIndicatorTest004
 * @tc.desc: Test NODE_SWIPER_INDICATOR function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, SwiperIndicatorTest004, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Turn off the dark and light switch and initialize.
     */
    g_isConfigChangePerform = false;
    EXPECT_FALSE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ArkUI_NodeHandle swiperNode = nodeAPI->createNode(ARKUI_NODE_SWIPER);
    const int size = 7;
    const char* arr[size] = {"a", "b", "c", "d", "e", "f", "g"};

    /**
     * @tc.steps: step2. Initialize the text component and mount it to the swiper.
     */
    for (int i = 0; i < size; i++) {
        ArkUI_NodeHandle text = nodeAPI->createNode(ARKUI_NODE_TEXT);
        ArkUI_AttributeItem content = { .string = arr[i] };
        nodeAPI->setAttribute(text, NODE_TEXT_CONTENT, &content);
        ArkUI_NumberValue value[] = {0};
        ArkUI_AttributeItem item = {value, 1};
        value[0].f32 = 430;
        nodeAPI->setAttribute(text, NODE_WIDTH, &item);
        value[0].f32 = 170;
        nodeAPI->setAttribute(text, NODE_HEIGHT, &item);
        nodeAPI->addChild(swiperNode, text);
    }

    /**
     * @tc.steps: step3. Create an swiperIndicator and configure the properties,
     *            then set the swiperIndicator to the NODE_SWIPER_INDICATOR.
     */
    auto swiperIndicator = OH_ArkUI_SwiperIndicator_Create(ARKUI_SWIPER_INDICATOR_TYPE_DOT);
    OH_ArkUI_SwiperIndicator_SetColor(swiperIndicator, 0xffde6355);
    OH_ArkUI_SwiperIndicator_SetSelectedColor(swiperIndicator, 0xfff5f5f5);
    ArkUI_NumberValue valueTemp[] = {{.i32 = ARKUI_SWIPER_INDICATOR_TYPE_DOT}};
    ArkUI_AttributeItem itemTemp = {.value=valueTemp, .size=1, .object = swiperIndicator};
    auto setResult = nodeAPI->setAttribute(swiperNode, NODE_SWIPER_INDICATOR, &itemTemp);
    EXPECT_EQ(setResult, ERROR_CODE_NO_ERROR);

    /**
     * @tc.steps: step4. Test attribute acquisition,
     */
    EXPECT_EQ(OH_ArkUI_SwiperIndicator_GetColor(swiperIndicator), 0xffde6355);
    EXPECT_EQ(OH_ArkUI_SwiperIndicator_GetSelectedColor(swiperIndicator), 0xfff5f5f5);
    OH_ArkUI_SwiperIndicator_Dispose(swiperIndicator);
    nodeAPI->disposeNode(swiperNode);
}

/**
 * @tc.name: SwiperIndicatorTest005
 * @tc.desc: Test NODE_SWIPER_INDICATOR function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, SwiperIndicatorTest005, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Turn off the dark and light switch and initialize.
     */
    g_isConfigChangePerform = false;
    EXPECT_FALSE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ArkUI_NodeHandle swiperNode = nodeAPI->createNode(ARKUI_NODE_SWIPER);
    const int size = 6;
    const char* arr[size] = {"a", "b", "c", "d", "e", "f"};

    /**
     * @tc.steps: step2. Initialize the text component and mount it to the swiper.
     */
    for (int i = 0; i < size; i++) {
        ArkUI_NodeHandle text = nodeAPI->createNode(ARKUI_NODE_TEXT);
        ArkUI_AttributeItem content = { .string = arr[i] };
        nodeAPI->setAttribute(text, NODE_TEXT_CONTENT, &content);
        ArkUI_NumberValue value[] = {0};
        ArkUI_AttributeItem item = {value, 1};
        value[0].f32 = 300;
        nodeAPI->setAttribute(text, NODE_WIDTH, &item);
        value[0].f32 = 150;
        nodeAPI->setAttribute(text, NODE_HEIGHT, &item);
        nodeAPI->addChild(swiperNode, text);
    }

    /**
     * @tc.steps: step3. Create an indicator and configure the properties,
     *            then set the indicator to the NODE_SWIPER_INDICATOR.
     */
    auto indicator = OH_ArkUI_SwiperDigitIndicator_Create();
    OH_ArkUI_SwiperDigitIndicator_SetSelectedFontSize(indicator, 20);
    OH_ArkUI_SwiperDigitIndicator_SetFontSize(indicator, 25);
    ArkUI_NumberValue valueTemp[] = {{.i32 = ARKUI_SWIPER_INDICATOR_TYPE_DIGIT}};
    ArkUI_AttributeItem itemTemp = {.value=valueTemp, .size=1, .object = indicator};
    auto setResult = nodeAPI->setAttribute(swiperNode, NODE_SWIPER_INDICATOR, &itemTemp);
    EXPECT_EQ(setResult, ERROR_CODE_NO_ERROR);

    /**
     * @tc.steps: step4. Test attribute acquisition,
     */
    EXPECT_EQ(OH_ArkUI_SwiperDigitIndicator_GetFontColor(indicator), 0xFF000000);
    EXPECT_EQ(OH_ArkUI_SwiperDigitIndicator_GetSelectedFontColor(indicator), 0xFF000000);
    OH_ArkUI_SwiperDigitIndicator_Destroy(indicator);
    nodeAPI->disposeNode(swiperNode);
}

/**
 * @tc.name: SwiperIndicatorTest006
 * @tc.desc: Test NODE_SWIPER_INDICATOR function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, SwiperIndicatorTest006, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Turn off the dark and light switch and initialize.
     */
    g_isConfigChangePerform = false;
    EXPECT_FALSE(SystemProperties::ConfigChangePerform());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ArkUI_NodeHandle swiperNode = nodeAPI->createNode(ARKUI_NODE_SWIPER);
    const int size = 7;
    const char* arr[size] = {"a", "b", "c", "d", "e", "f", "g"};

    /**
     * @tc.steps: step2. Initialize the text component and mount it to the swiper.
     */
    for (int i = 0; i < size; i++) {
        ArkUI_NodeHandle text = nodeAPI->createNode(ARKUI_NODE_TEXT);
        ArkUI_AttributeItem content = { .string = arr[i] };
        nodeAPI->setAttribute(text, NODE_TEXT_CONTENT, &content);
        ArkUI_NumberValue value[] = {0};
        ArkUI_AttributeItem item = {value, 1};
        value[0].f32 = 430;
        nodeAPI->setAttribute(text, NODE_WIDTH, &item);
        value[0].f32 = 170;
        nodeAPI->setAttribute(text, NODE_HEIGHT, &item);
        nodeAPI->addChild(swiperNode, text);
    }

    /**
     * @tc.steps: step3. Create an swiperIndicator and configure the properties,
     *            then set the swiperIndicator to the NODE_SWIPER_INDICATOR.
     */
    auto swiperIndicator = OH_ArkUI_SwiperIndicator_Create(ARKUI_SWIPER_INDICATOR_TYPE_DOT);
    ArkUI_NumberValue valueTemp[] = {{.i32 = ARKUI_SWIPER_INDICATOR_TYPE_DOT}};
    ArkUI_AttributeItem itemTemp = {.value=valueTemp, .size=1, .object = swiperIndicator};
    auto setResult = nodeAPI->setAttribute(swiperNode, NODE_SWIPER_INDICATOR, &itemTemp);
    EXPECT_EQ(setResult, ERROR_CODE_NO_ERROR);

    /**
     * @tc.steps: step4. Test attribute acquisition,
     */
    EXPECT_EQ(OH_ArkUI_SwiperIndicator_GetColor(swiperIndicator), 0xFF000000);
    EXPECT_EQ(OH_ArkUI_SwiperIndicator_GetSelectedColor(swiperIndicator), 0xFF000000);
    OH_ArkUI_SwiperIndicator_Dispose(swiperIndicator);
    nodeAPI->disposeNode(swiperNode);
}

/**
 * @tc.name: NativeNodeTimePickerStringToColorTest
 * @tc.desc: Test timePicker String to Color function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTimePickerStringToColorTest, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ARKUI_NODE_TIME_PICKER, nullptr, true});
    ArkUI_NumberValue value[] = {{.i32 = true}};
    ArkUI_AttributeItem item = {value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr};

    // Case 1: valid hex color string (should be parsed by StringToColorInt internally)
    item.string = "#ffff00ff";
    nodeAPI->setAttribute(rootNode, NODE_TIME_PICKER_DISAPPEAR_TEXT_STYLE, &item);

    // Case 2: invalid color string (StringToColorInt should mark as default and use fallback)
    item.string = "not_a_color";
    nodeAPI->setAttribute(rootNode, NODE_TIME_PICKER_DISAPPEAR_TEXT_STYLE, &item);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_TIME_PICKER_DISAPPEAR_TEXT_STYLE), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_TIME_PICKER_DISAPPEAR_TEXT_STYLE), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_NODE_RESPONSE_REGION_LIST_001
 * @tc.desc: Test NODE_RESPONSE_REGION_LIST function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_NODE_RESPONSE_REGION_LIST_001, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);
    int32_t ret1 = nodeAPI->addChild(rootNode, childNode);
    EXPECT_EQ(ret1, ARKUI_ERROR_CODE_NO_ERROR);
    int32_t tool = 0;
    float x = 0.0f;
    float y = 0.0f;
    float width = 100.0f;
    float height = 50.0f;
    float size = 100.0f;
    ArkUI_NumberValue value[] = { { .f32 = size } };
    ArkUI_AttributeItem sizeItem = { value, sizeof(value) / sizeof(ArkUI_NumberValue) };

    ArkUI_NumberValue value2[] = { { .i32 = tool }, { .f32 = x }, { .f32 = y }, { .f32 = width }, { .f32 = height } };
    ArkUI_AttributeItem regionListItem = { value2, sizeof(value2) / sizeof(ArkUI_NumberValue) };

    nodeAPI->setAttribute(rootNode, NODE_WIDTH, &sizeItem);
    auto widthVal = nodeAPI->getAttribute(rootNode, NODE_WIDTH);
    EXPECT_EQ(widthVal->value[0].f32, size);

    nodeAPI->setAttribute(rootNode, NODE_HEIGHT, &sizeItem);
    auto heightVal = nodeAPI->getAttribute(rootNode, NODE_HEIGHT);
    EXPECT_EQ(heightVal->value[0].f32, size);

    nodeAPI->setAttribute(rootNode, NODE_RESPONSE_REGION_LIST, &regionListItem);
    auto regionListVal = nodeAPI->getAttribute(rootNode, NODE_RESPONSE_REGION_LIST);
    EXPECT_EQ(regionListVal->value[0].i32, tool);
    EXPECT_FLOAT_EQ(regionListVal->value[1].f32, x);
    EXPECT_FLOAT_EQ(regionListVal->value[2].f32, y);
    EXPECT_FLOAT_EQ(regionListVal->value[3].f32, width);
    EXPECT_FLOAT_EQ(regionListVal->value[4].f32, height);
    EXPECT_EQ(regionListVal->size, 5);
}

/**
 * @tc.name: NativeNodeTest_NODE_RESPONSE_REGION_LIST_002
 * @tc.desc: Test NODE_RESPONSE_REGION_LIST function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_NODE_RESPONSE_REGION_LIST_002, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);
    int32_t ret1 = nodeAPI->addChild(rootNode, childNode);
    EXPECT_EQ(ret1, ARKUI_ERROR_CODE_NO_ERROR);
    int32_t tool = 0;
    float x = 0.0f;
    float y = 0.0f;
    float width = 100.0f;
    float height = 100.0f;
    float size = 100.0f;
    ArkUI_NumberValue value[] = { { .f32 = size } };
    ArkUI_AttributeItem sizeItem = { value, sizeof(value) / sizeof(ArkUI_NumberValue) };

    ArkUI_NumberValue value2[] = { { .i32 = tool }, { .f32 = x }, { .f32 = y } };
    ArkUI_AttributeItem regionListItem = { value2, sizeof(value2) / sizeof(ArkUI_NumberValue) };

    nodeAPI->setAttribute(rootNode, NODE_WIDTH, &sizeItem);
    auto widthVal = nodeAPI->getAttribute(rootNode, NODE_WIDTH);
    EXPECT_EQ(widthVal->value[0].f32, size);

    nodeAPI->setAttribute(rootNode, NODE_HEIGHT, &sizeItem);
    auto heightVal = nodeAPI->getAttribute(rootNode, NODE_HEIGHT);
    EXPECT_EQ(heightVal->value[0].f32, size);

    nodeAPI->setAttribute(rootNode, NODE_RESPONSE_REGION_LIST, &regionListItem);
    auto regionListVal = nodeAPI->getAttribute(rootNode, NODE_RESPONSE_REGION_LIST);
    EXPECT_EQ(regionListVal->value[0].i32, tool);
    EXPECT_FLOAT_EQ(regionListVal->value[1].f32, x);
    EXPECT_FLOAT_EQ(regionListVal->value[2].f32, y);
    EXPECT_FLOAT_EQ(regionListVal->value[3].f32, width);
    EXPECT_FLOAT_EQ(regionListVal->value[4].f32, height);
    EXPECT_EQ(regionListVal->size, 5);
}

/**
 * @tc.name: NativeNodeTest_NODE_RESPONSE_REGION_LIST_003
 * @tc.desc: Test NODE_RESPONSE_REGION_LIST function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_NODE_RESPONSE_REGION_LIST_003, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(rootNode, nullptr);
    int32_t ret1 = nodeAPI->addChild(rootNode, childNode);
    EXPECT_EQ(ret1, ARKUI_ERROR_CODE_NO_ERROR);
    float size = 100.0f;
    ArkUI_NumberValue value[] = { { .f32 = size } };
    ArkUI_AttributeItem sizeItem = { value, sizeof(value) / sizeof(ArkUI_NumberValue) };

    ArkUI_NumberValue value2[] =
    { 
        { .i32 = -1 }, { .f32 = 0.0f }, { .f32 = 10.0f }, { .f32 = 10.0f }, { .f32 = 10.0f },
        { .i32 = 0 }, { .f32 = -10.0f }, { .f32 = 0.0f }, { .f32 = 20.0f }, { .f32 = 20.0f },
        { .i32 = 1 }, { .f32 = 10.0f }, { .f32 = 20.0f }, { .f32 = 50.0f }, { .f32 = 50.0f },
        { .i32 = 2 }, { .f32 = 80.0f }, { .f32 = 60.0f }, { .f32 = 30.0f }, { .f32 = 30.0f },
        { .i32 = 3 }, { .f32 = 20.0f }, { .f32 = 30.0f }, { .f32 = 60.0f }, { .f32 = 60.0f }
    };
    ArkUI_AttributeItem regionListItem = { value2, sizeof(value2) / sizeof(ArkUI_NumberValue) };

    nodeAPI->setAttribute(rootNode, NODE_WIDTH, &sizeItem);
    auto widthVal = nodeAPI->getAttribute(rootNode, NODE_WIDTH);
    EXPECT_EQ(widthVal->value[0].f32, size);

    nodeAPI->setAttribute(rootNode, NODE_HEIGHT, &sizeItem);
    auto heightVal = nodeAPI->getAttribute(rootNode, NODE_HEIGHT);
    EXPECT_EQ(heightVal->value[0].f32, size);

    nodeAPI->setAttribute(rootNode, NODE_RESPONSE_REGION_LIST, &regionListItem);
    auto regionListVal = nodeAPI->getAttribute(rootNode, NODE_RESPONSE_REGION_LIST);
    EXPECT_EQ(regionListVal->size, 20);
}

/**
 * @tc.name: NativeNodeTest_MonopolizeEvents_001
 * @tc.desc: Test NODE_MONOPOLIZE_EVENTS function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_MonopolizeEvents_001, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    nodeAPI->addChild(rootNode, childNode);

    ArkUI_NumberValue monoValue[] = { { .i32 = 0 } };
    ArkUI_AttributeItem monoItem = { monoValue, 1 };
    auto setResult = nodeAPI->setAttribute(rootNode, NODE_MONOPOLIZE_EVENTS, &monoItem);
    EXPECT_EQ(setResult, ERROR_CODE_NO_ERROR);

    auto setResult1 = nodeAPI->setAttribute(childNode, NODE_MONOPOLIZE_EVENTS, nullptr);
    EXPECT_EQ(setResult1, ERROR_CODE_PARAM_INVALID);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_MONOPOLIZE_EVENTS), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_MONOPOLIZE_EVENTS), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_MonopolizeEvents_002
 * @tc.desc: Test NODE_MONOPOLIZE_EVENTS function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_MonopolizeEvents_002, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    nodeAPI->addChild(rootNode, childNode);

    auto setResult1 = nodeAPI->setAttribute(childNode, NODE_MONOPOLIZE_EVENTS, nullptr);
    EXPECT_EQ(setResult1, ERROR_CODE_PARAM_INVALID);

    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_MonopolizeEvents_003
 * @tc.desc: Test NODE_MONOPOLIZE_EVENTS function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_MonopolizeEvents_003, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    nodeAPI->addChild(rootNode, childNode);

    ArkUI_NumberValue monoValue[] = { { .i32 = 1 } };
    ArkUI_AttributeItem monoItem = { monoValue, 1 };
    auto setResult = nodeAPI->setAttribute(rootNode, NODE_MONOPOLIZE_EVENTS, &monoItem);
    EXPECT_EQ(setResult, ERROR_CODE_NO_ERROR);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_MONOPOLIZE_EVENTS), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_MONOPOLIZE_EVENTS), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_HoverEffect_001
 * @tc.desc: Test setting valid hover effect attribute.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_HoverEffect_001, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    nodeAPI->addChild(rootNode, childNode);

    ArkUI_NumberValue hoverValue[] = { { .i32 = 1 } };
    ArkUI_AttributeItem hoverItem = { hoverValue, 1 };
    int32_t setResult = nodeAPI->setAttribute(rootNode, NODE_HOVER_EFFECT, &hoverItem);
    nodeAPI->getAttribute(rootNode, NODE_HOVER_EFFECT);
    EXPECT_EQ(setResult, ERROR_CODE_NO_ERROR);
    ArkUI_NumberValue hoverValue1[] = { { .i32 = 2 } };
    ArkUI_AttributeItem hoverItem1 = { hoverValue1, 1 };
    int32_t setResult1 = nodeAPI->setAttribute(rootNode, NODE_HOVER_EFFECT, &hoverItem1);
    nodeAPI->getAttribute(rootNode, NODE_HOVER_EFFECT);
    EXPECT_EQ(setResult1, ERROR_CODE_NO_ERROR);
    ArkUI_NumberValue hoverValue2[] = { { .i32 = 3 } };
    ArkUI_AttributeItem hoverItem2 = { hoverValue2, 1 };
    int32_t setResult2 = nodeAPI->setAttribute(rootNode, NODE_HOVER_EFFECT, &hoverItem2);
    nodeAPI->getAttribute(rootNode, NODE_HOVER_EFFECT);
    EXPECT_EQ(setResult2, ERROR_CODE_NO_ERROR);
    ArkUI_NumberValue hoverValue3[] = { { .i32 = 0 } };
    ArkUI_AttributeItem hoverItem3 = { hoverValue3, 1 };
    int32_t setResult3 = nodeAPI->setAttribute(rootNode, NODE_HOVER_EFFECT, &hoverItem3);
    nodeAPI->getAttribute(rootNode, NODE_HOVER_EFFECT);
    EXPECT_EQ(setResult3, ERROR_CODE_NO_ERROR);
    int32_t setResult4 = nodeAPI->setAttribute(rootNode, NODE_HOVER_EFFECT, nullptr);
    nodeAPI->getAttribute(rootNode, NODE_HOVER_EFFECT);
    EXPECT_EQ(setResult4, ERROR_CODE_PARAM_INVALID);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_HOVER_EFFECT), ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_HoverEffect_002
 * @tc.desc: Test setting valid hover effect attribute.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_HoverEffect_002, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    nodeAPI->addChild(rootNode, childNode);

    int32_t setResult4 = nodeAPI->setAttribute(rootNode, NODE_HOVER_EFFECT, nullptr);
    EXPECT_EQ(setResult4, ERROR_CODE_PARAM_INVALID);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_HOVER_EFFECT), ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_HoverEffect_003
 * @tc.desc: Test setting valid hover effect attribute.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_HoverEffect_003, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    nodeAPI->addChild(rootNode, childNode);

    ArkUI_NumberValue hoverValue1[] = { { .i32 = 2 } };
    ArkUI_AttributeItem hoverItem1 = { hoverValue1, 1 };
    int32_t setResult1 = nodeAPI->setAttribute(rootNode, NODE_HOVER_EFFECT, &hoverItem1);
    nodeAPI->getAttribute(rootNode, NODE_HOVER_EFFECT);
    EXPECT_EQ(setResult1, ERROR_CODE_NO_ERROR);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_HOVER_EFFECT), ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_HoverEffect_004
 * @tc.desc: Test setting valid hover effect attribute.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_HoverEffect_004, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    nodeAPI->addChild(rootNode, childNode);

    ArkUI_NumberValue hoverValue1[] = { { .i32 = 3 } };
    ArkUI_AttributeItem hoverItem1 = { hoverValue1, 1 };
    int32_t setResult1 = nodeAPI->setAttribute(rootNode, NODE_HOVER_EFFECT, &hoverItem1);
    nodeAPI->getAttribute(rootNode, NODE_HOVER_EFFECT);
    EXPECT_EQ(setResult1, ERROR_CODE_NO_ERROR);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_HOVER_EFFECT), ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_HoverEffect_005
 * @tc.desc: Test setting valid hover effect attribute.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_HoverEffect_005, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    nodeAPI->addChild(rootNode, childNode);

    ArkUI_NumberValue hoverValue1[] = { { .i32 = 0 } };
    ArkUI_AttributeItem hoverItem1 = { hoverValue1, 1 };
    int32_t setResult1 = nodeAPI->setAttribute(rootNode, NODE_HOVER_EFFECT, &hoverItem1);
    nodeAPI->getAttribute(rootNode, NODE_HOVER_EFFECT);
    EXPECT_EQ(setResult1, ERROR_CODE_NO_ERROR);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_HOVER_EFFECT), ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_HoverEffect_006
 * @tc.desc: Test setting valid hover effect attribute.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_HoverEffect_006, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    nodeAPI->addChild(rootNode, childNode);

    ArkUI_NumberValue hoverValue1[] = { { .i32 = 0 } };
    ArkUI_AttributeItem hoverItem1 = { hoverValue1, 1 };
    int32_t setResult1 = nodeAPI->setAttribute(rootNode, NODE_HOVER_EFFECT, &hoverItem1);
    EXPECT_EQ(setResult1, ERROR_CODE_NO_ERROR);

    auto attr = nodeAPI->getAttribute(rootNode, NODE_HOVER_EFFECT);
    ASSERT_NE(attr, nullptr);
    EXPECT_EQ(attr->value[0].i32, 0);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_HOVER_EFFECT), ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_FocusScope_001
 * @tc.desc: Test setting valid FocusScope attribute.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_FocusScope_001, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto testNode = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    nodeAPI->addChild(rootNode, testNode);
    ArkUI_NumberValue focusValue[] = { { .i32 = 1 }, { .i32 = 0 } };
    ArkUI_AttributeItem focusItem = { focusValue, 2, "id" };
    auto result = nodeAPI->setAttribute(rootNode, NODE_FOCUS_SCOPE_ID, &focusItem);
    nodeAPI->getAttribute(testNode, NODE_FOCUS_SCOPE_ID);
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FOCUS_SCOPE_ID), ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_FocusScope_002
 * @tc.desc: Test setting valid FocusScope attribute.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_FocusScope_002, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    nodeAPI->addChild(rootNode, childNode);

    ArkUI_NumberValue focusValue[] = { { .i32 = 5 }, { .i32 = 5 } };
    ArkUI_AttributeItem focusItem = { focusValue, 2, "id" };
    auto result = nodeAPI->setAttribute(rootNode, NODE_FOCUS_SCOPE_ID, &focusItem);
    nodeAPI->getAttribute(rootNode, NODE_FOCUS_SCOPE_ID);
    EXPECT_EQ(result, ERROR_CODE_PARAM_INVALID);

    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_FocusScope_003
 * @tc.desc: Test setting valid FocusScope attribute.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_FocusScope_003, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    nodeAPI->addChild(rootNode, childNode);

    auto result = nodeAPI->setAttribute(rootNode, NODE_FOCUS_SCOPE_ID, nullptr);
    EXPECT_EQ(result, ERROR_CODE_PARAM_INVALID);

    ArkUI_NumberValue focusValue[] = { { .i32 = 1 }, { .i32 = 0 } };
    ArkUI_AttributeItem focusItem = { focusValue, 5, "id" };
    auto result1 = nodeAPI->setAttribute(rootNode, NODE_FOCUS_SCOPE_ID, &focusItem);
    EXPECT_EQ(result1, ERROR_CODE_PARAM_INVALID);

    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_FocusScope_004
 * @tc.desc: Test setting valid FocusScope attribute.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_FocusScope_004, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    nodeAPI->addChild(rootNode, childNode);

    ArkUI_NumberValue focusValue[] = { { .i32 = 1 }, { .i32 = 5 } };
    ArkUI_AttributeItem focusItem = { focusValue, 2, "id" };
    auto result = nodeAPI->setAttribute(rootNode, NODE_FOCUS_SCOPE_ID, &focusItem);
    nodeAPI->getAttribute(rootNode, NODE_FOCUS_SCOPE_ID);
    EXPECT_EQ(result, ERROR_CODE_PARAM_INVALID);

    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_FocusScope_005
 * @tc.desc: Test setting valid FocusScope attribute.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_FocusScope_005, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    nodeAPI->addChild(rootNode, childNode);

    ArkUI_NumberValue focusValue[] = { { .i32 = 1 }, { .i32 = 5 } };
    ArkUI_AttributeItem focusItem = { focusValue, 2, nullptr };
    auto result = nodeAPI->setAttribute(rootNode, NODE_FOCUS_SCOPE_ID, &focusItem);
    nodeAPI->getAttribute(rootNode, NODE_FOCUS_SCOPE_ID);
    EXPECT_EQ(result, ERROR_CODE_PARAM_INVALID);

    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_FocusScope_006
 * @tc.desc: Test setting valid FocusScope attribute.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_FocusScope_006, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    nodeAPI->addChild(rootNode, childNode);

    ArkUI_NumberValue focusValue[] = { { .i32 = 1 }, { .i32 = 5 } };
    ArkUI_AttributeItem focusItem = { focusValue, -1, "id" };
    auto result = nodeAPI->setAttribute(rootNode, NODE_FOCUS_SCOPE_ID, &focusItem);
    nodeAPI->getAttribute(rootNode, NODE_FOCUS_SCOPE_ID);
    EXPECT_EQ(result, ERROR_CODE_PARAM_INVALID);

    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_FocusPriority_001
 * @tc.desc: Test setting valid FocusPriority attribute.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_FocusPriority_001, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    nodeAPI->addChild(rootNode, childNode);

    ArkUI_NumberValue focusValue[] = { { .i32 = 2000 } };
    ArkUI_AttributeItem focusItem = { focusValue, 1, "id" };
    nodeAPI->setAttribute(rootNode, NODE_FOCUS_SCOPE_PRIORITY, &focusItem);
    auto result = nodeAPI->setAttribute(rootNode, NODE_FOCUS_SCOPE_PRIORITY, &focusItem);
    nodeAPI->getAttribute(rootNode, NODE_FOCUS_SCOPE_PRIORITY);
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_NO_ERROR);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FOCUS_SCOPE_PRIORITY), ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_FocusPriority_002
 * @tc.desc: Test setting valid FocusPriority attribute.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_FocusPriority_002, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    nodeAPI->addChild(rootNode, childNode);

    nodeAPI->setAttribute(rootNode, NODE_FOCUS_SCOPE_PRIORITY, nullptr);
    auto result = nodeAPI->setAttribute(rootNode, NODE_FOCUS_SCOPE_PRIORITY, nullptr);
    EXPECT_EQ(result, ERROR_CODE_PARAM_INVALID);

    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_FocusPriority_003
 * @tc.desc: Test setting valid FocusPriority attribute.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_FocusPriority_003, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    nodeAPI->addChild(rootNode, childNode);

    ArkUI_NumberValue focusValue[] = { { .i32 = 2000 } };
    ArkUI_AttributeItem focusItem = { focusValue, 20, "id" };
    nodeAPI->setAttribute(rootNode, NODE_FOCUS_SCOPE_PRIORITY, &focusItem);
    auto result = nodeAPI->setAttribute(rootNode, NODE_FOCUS_SCOPE_PRIORITY, &focusItem);
    EXPECT_EQ(result, ERROR_CODE_PARAM_INVALID);

    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_FocusPriority_004
 * @tc.desc: Test setting valid FocusPriority attribute.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_FocusPriority_004, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    nodeAPI->addChild(rootNode, childNode);

    ArkUI_NumberValue focusValue[] = { { .i32 = 2000 } };
    ArkUI_AttributeItem focusItem = { focusValue, -1, "forTest" };
    EXPECT_TRUE(rootNode);
    nodeAPI->setAttribute(rootNode, NODE_FOCUS_SCOPE_PRIORITY, &focusItem);
    auto result = nodeAPI->setAttribute(rootNode, NODE_FOCUS_SCOPE_PRIORITY, &focusItem);
    EXPECT_EQ(result, ERROR_CODE_PARAM_INVALID);

    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_FocusPriority_005
 * @tc.desc: Test setting valid FocusPriority attribute.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_FocusPriority_005, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    nodeAPI->addChild(rootNode, childNode);

    ArkUI_NumberValue focusValue[] = { { .i32 = 2000 } };
    ArkUI_AttributeItem focusItem = { focusValue, false, "id" };
    nodeAPI->setAttribute(rootNode, NODE_FOCUS_SCOPE_PRIORITY, &focusItem);
    auto result = nodeAPI->setAttribute(rootNode, NODE_FOCUS_SCOPE_PRIORITY, &focusItem);
    nodeAPI->getAttribute(rootNode, NODE_FOCUS_SCOPE_PRIORITY);
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_NO_ERROR);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_FOCUS_SCOPE_PRIORITY), ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_DistanceThreshold_001
 * @tc.desc: Test setting valid FocusPriority attribute.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_DistanceThreshold_001, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    nodeAPI->addChild(rootNode, childNode);
    auto* frameNode = reinterpret_cast<NG::FrameNode*>(rootNode->uiNodeHandle);
    ASSERT_NE(frameNode, nullptr);

    ArkUI_NumberValue distanceValue[] = { { .f32 = 20 } };
    ArkUI_AttributeItem distanceItem = { distanceValue, 1 };
    auto result = nodeAPI->setAttribute(rootNode, NODE_ON_CLICK_EVENT_DISTANCE_THRESHOLD, &distanceItem);
    auto DistanceThreshold = nodeAPI->getAttribute(rootNode, NODE_ON_CLICK_EVENT_DISTANCE_THRESHOLD);
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_NO_ERROR);
    EXPECT_NE(DistanceThreshold, nullptr);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_ON_CLICK_EVENT_DISTANCE_THRESHOLD), ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_DistanceThreshold_002
 * @tc.desc: Test setting valid FocusPriority attribute.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_DistanceThreshold_002, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    nodeAPI->addChild(rootNode, childNode);

    nodeAPI->setAttribute(rootNode, NODE_ON_CLICK_EVENT_DISTANCE_THRESHOLD, nullptr);
    auto result = nodeAPI->setAttribute(rootNode, NODE_ON_CLICK_EVENT_DISTANCE_THRESHOLD, nullptr);
    EXPECT_EQ(result, ERROR_CODE_PARAM_INVALID);

    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_DistanceThreshold_003
 * @tc.desc: Test setting valid FocusPriority attribute.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_DistanceThreshold_003, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    nodeAPI->addChild(rootNode, childNode);
    auto* frameNode = reinterpret_cast<NG::FrameNode*>(rootNode->uiNodeHandle);
    ASSERT_NE(frameNode, nullptr);

    ArkUI_NumberValue distanceValue[] = { { .f32 = -1 } };
    ArkUI_AttributeItem distanceItem = { distanceValue, 2 };
    auto result = nodeAPI->setAttribute(rootNode, NODE_ON_CLICK_EVENT_DISTANCE_THRESHOLD, &distanceItem);
    auto DistanceThreshold = nodeAPI->getAttribute(rootNode, NODE_ON_CLICK_EVENT_DISTANCE_THRESHOLD);
    EXPECT_EQ(result, ERROR_CODE_PARAM_INVALID);
    EXPECT_NE(DistanceThreshold, nullptr);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_ON_CLICK_EVENT_DISTANCE_THRESHOLD), ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeTest_DistanceThreshold_004
 * @tc.desc: Test setting valid FocusPriority attribute.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeTest_DistanceThreshold_004, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto childNode = nodeAPI->createNode(ARKUI_NODE_BUTTON);
    nodeAPI->addChild(rootNode, childNode);
    auto* frameNode = reinterpret_cast<NG::FrameNode*>(rootNode->uiNodeHandle);
    ASSERT_NE(frameNode, nullptr);
    auto gestureHub = frameNode->GetOrCreateGestureEventHub();
    ASSERT_NE(gestureHub, nullptr);
    gestureHub->parallelCombineClick = true;

    ArkUI_NumberValue distanceValue[] = { { .f32 = -1 } };
    ArkUI_AttributeItem distanceItem = { distanceValue, 2 };
    auto result = nodeAPI->setAttribute(rootNode, NODE_ON_CLICK_EVENT_DISTANCE_THRESHOLD, &distanceItem);
    auto DistanceThreshold = nodeAPI->getAttribute(rootNode, NODE_ON_CLICK_EVENT_DISTANCE_THRESHOLD);
    EXPECT_EQ(result, ERROR_CODE_PARAM_INVALID);
    EXPECT_NE(DistanceThreshold, nullptr);

    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_ON_CLICK_EVENT_DISTANCE_THRESHOLD), ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: ShowCounterConfig
 * @tc.desc: Test ShowCounterConfig function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, ShowCounterConfigTest001, TestSize.Level1)
{
    /**
     * @tc.steps: step1. initialize.
     */
    EXPECT_EQ(OH_ArkUI_ShowCounterConfig_GetCounterTextColor(nullptr), 0x00000000);
    EXPECT_EQ(OH_ArkUI_ShowCounterConfig_GetCounterTextOverflowColor(nullptr), 0x00000000);

    /**
     * @tc.steps: step2. Create an showCounterConfig and configure the properties,
     *            then set the color to the CounterTextColor.
     */
    auto config = OH_ArkUI_ShowCounterConfig_Create();
    EXPECT_EQ(OH_ArkUI_ShowCounterConfig_GetCounterTextColor(config), 0x00000000);
    EXPECT_EQ(OH_ArkUI_ShowCounterConfig_GetCounterTextOverflowColor(config), 0x00000000);

    /**
     * @tc.steps: step3. Test attribute acquisition,
     */
    OH_ArkUI_ShowCounterConfig_SetCounterTextColor(config, 0xFF0000FF);
    OH_ArkUI_ShowCounterConfig_SetCounterTextOverflowColor(config, 0xFFFFFF00);
    EXPECT_EQ(OH_ArkUI_ShowCounterConfig_GetCounterTextColor(config), 0xFF0000FF);
    EXPECT_EQ(OH_ArkUI_ShowCounterConfig_GetCounterTextOverflowColor(config), 0xFFFFFF00);
    OH_ArkUI_ShowCounterConfig_Dispose(config);
} 

/**
 * @tc.name: NativeNodeConvertToWindowTest001
 * @tc.desc: Test convert to window function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeConvertToWindowTest001, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto node = nodeAPI->createNode(ARKUI_NODE_STACK);
    ArkUI_IntOffset position = { 10, 30 };
    ArkUI_IntOffset pos1;
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ASSERT_NE(node->uiNodeHandle, nullptr);
    const auto* impl = OHOS::Ace::NodeModel::GetFullImpl();
    ASSERT_NE(impl, nullptr);
    auto ret = OH_ArkUI_NativeModule_ConvertPositionToWindow(node, position, &pos1);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NODE_NOT_ON_MAIN_TREE);
    ret = OH_ArkUI_NativeModule_ConvertPositionToWindow(nullptr, position, &pos1);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);
}

/**
 * @tc.name: NativeNodeRefreshCancelTest01
 * @tc.desc: Test refreshNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeRefreshCancelTest01, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ ARKUI_NODE_REFRESH, nullptr, true });
    ASSERT_NE(rootNode, nullptr);
    ArkUI_NumberValue value[] = { { .i32 = true } };
    ArkUI_AttributeItem item = { value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr };
    nodeAPI->setAttribute(rootNode, NODE_REFRESH_PULL_UP_TO_CANCEL_REFRESH, &item);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_REFRESH_PULL_UP_TO_CANCEL_REFRESH), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_REFRESH_PULL_UP_TO_CANCEL_REFRESH), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeRefreshCancelTest02
 * @tc.desc: Test refreshNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeRefreshCancelTest02, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ ARKUI_NODE_REFRESH, nullptr, true });
    ASSERT_NE(rootNode, nullptr);
    ArkUI_NumberValue value[] = { { .i32 = false } };
    ArkUI_AttributeItem item = { value, sizeof(value) / sizeof(ArkUI_NumberValue), nullptr, nullptr };
    nodeAPI->setAttribute(rootNode, NODE_REFRESH_PULL_UP_TO_CANCEL_REFRESH, &item);
    EXPECT_EQ(nodeAPI->resetAttribute(rootNode, NODE_REFRESH_PULL_UP_TO_CANCEL_REFRESH), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_REFRESH_PULL_UP_TO_CANCEL_REFRESH), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeRefreshCancelTest03
 * @tc.desc: Test refreshNode function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeRefreshCancelTest03, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto rootNode = new ArkUI_Node({ ARKUI_NODE_REFRESH, nullptr, true });
    ASSERT_NE(rootNode, nullptr);
    ArkUI_NumberValue value[] = {};
    ArkUI_AttributeItem item = { value, 0, nullptr, nullptr };
    EXPECT_EQ(
        nodeAPI->setAttribute(rootNode, NODE_REFRESH_PULL_UP_TO_CANCEL_REFRESH, &item), ARKUI_ERROR_CODE_PARAM_INVALID);
    EXPECT_NE(nodeAPI->getAttribute(rootNode, NODE_REFRESH_PULL_UP_TO_CANCEL_REFRESH), nullptr);
    nodeAPI->disposeNode(rootNode);
}

/**
 * @tc.name: NativeNodeConvertFromWindowTest001
 * @tc.desc: Test convert to window function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeConvertFromWindowTest001, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto node = nodeAPI->createNode(ARKUI_NODE_STACK);
    ArkUI_IntOffset position = { 10, 30 };
    ArkUI_IntOffset pos1;
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ASSERT_NE(node->uiNodeHandle, nullptr);
    const auto* impl = OHOS::Ace::NodeModel::GetFullImpl();
    ASSERT_NE(impl, nullptr);
    auto ret = OH_ArkUI_NativeModule_ConvertPositionFromWindow(node, position, &pos1);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_NODE_NOT_ON_MAIN_TREE);
    ret = OH_ArkUI_NativeModule_ConvertPositionFromWindow(nullptr, position, &pos1);
    EXPECT_EQ(ret, ARKUI_ERROR_CODE_PARAM_INVALID);
}

/**
 * @tc.name: ShowCounterConfigTest002
 * @tc.desc: Test ShowCounterConfig function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, ShowCounterConfigTest002, TestSize.Level1)
{
    /**
     * @tc.steps: step1. initialize.
     */
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    auto textinput = new ArkUI_Node({ARKUI_NODE_TEXT_INPUT, nullptr, true});
    auto textarea = new ArkUI_Node({ARKUI_NODE_TEXT_AREA, nullptr, true});
    auto config = OH_ArkUI_ShowCounterConfig_Create();
    OH_ArkUI_ShowCounterConfig_SetCounterTextColor(config, 0xFF0000FF);
    OH_ArkUI_ShowCounterConfig_SetCounterTextOverflowColor(config, 0xFFFFFF00);
    ArkUI_NumberValue showCounterArray[] = {{.i32 = true},  // 显示计数器
                                               {.f32 = 50.0f}, // 计数器阈值(百分比)
                                               {.i32 = true}};
    ArkUI_AttributeItem item = {.value = showCounterArray, .size = 3, .object = config};
    nodeAPI->setAttribute(textinput, NODE_TEXT_INPUT_SHOW_COUNTER, &item);
    nodeAPI->setAttribute(textarea, NODE_TEXT_AREA_SHOW_COUNTER, &item);
    EXPECT_EQ(OH_ArkUI_ShowCounterConfig_GetCounterTextColor(config), 0xFF0000FF);
    EXPECT_EQ(OH_ArkUI_ShowCounterConfig_GetCounterTextOverflowColor(config), 0xFFFFFF00);
    OH_ArkUI_ShowCounterConfig_Dispose(config);
    nodeAPI->disposeNode(textinput);
    nodeAPI->disposeNode(textarea);
}

/**
 * @tc.name: TriggerNodeEventUafTest001
 * @tc.desc: Test TriggerNodeEvent with empty event listeners set
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, TriggerNodeEventUafTest001, TestSize.Level1)
{
    auto node = new ArkUI_Node();
    node->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_COLUMN);

    auto eventListenersSet = new std::set<void (*)(ArkUI_NodeEvent*)>();

    ArkUI_NodeEvent event;
    event.node = node;
    event.eventId = 1;
    event.userData = nullptr;
    event.origin = nullptr;

    // Should not crash with empty set
    NodeModel::TriggerNodeEvent(&event, eventListenersSet);

    EXPECT_TRUE(true);

    delete eventListenersSet;
    delete node;
}

/**
 * @tc.name: TriggerNodeEventUafTest002
 * @tc.desc: Test TriggerNodeEvent with null event listeners set
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, TriggerNodeEventUafTest002, TestSize.Level1)
{
    auto node = new ArkUI_Node();
    node->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_COLUMN);

    ArkUI_NodeEvent event;
    event.node = node;
    event.eventId = 1;
    event.userData = nullptr;
    event.origin = nullptr;

    // Should not crash with null set
    NodeModel::TriggerNodeEvent(&event, nullptr);

    EXPECT_TRUE(true);

    delete node;
}

/**
 * @tc.name: NodeModelCreateNodeTest001
 * @tc.desc: Test creating nodes with new ArkUI_Node() directly (unit test approach)
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NodeModelCreateNodeTest001, TestSize.Level1)
{
    // Test creating TEXT node
    ArkUI_NodeHandle textNode = new ArkUI_Node();
    textNode->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_TEXT);
    textNode->cNode = true;
    ASSERT_NE(textNode, nullptr);
    EXPECT_EQ(textNode->type, static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_TEXT));
    EXPECT_TRUE(textNode->cNode);
    delete textNode;

    // Test creating COLUMN node
    ArkUI_NodeHandle columnNode = new ArkUI_Node();
    columnNode->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_COLUMN);
    columnNode->cNode = true;
    ASSERT_NE(columnNode, nullptr);
    EXPECT_EQ(columnNode->type, static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_COLUMN));
    delete columnNode;

    // Test creating ROW node
    ArkUI_NodeHandle rowNode = new ArkUI_Node();
    rowNode->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_ROW);
    rowNode->cNode = true;
    ASSERT_NE(rowNode, nullptr);
    EXPECT_EQ(rowNode->type, static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_ROW));
    delete rowNode;
}

/**
 * @tc.name: NodeModelCreateNodeTest002
 * @tc.desc: Test NodeModel::IsValidArkUINode with different node states
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NodeModelCreateNodeTest002, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());

    // Test with nullptr
    EXPECT_FALSE(OHOS::Ace::NodeModel::IsValidArkUINode(nullptr));

    // Test with manually created node (not in g_nodeSet)
    ArkUI_NodeHandle manualNode = new ArkUI_Node();
    manualNode->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_TEXT);
    manualNode->cNode = true;
    // Manually created nodes are not in g_nodeSet, so IsValidArkUINode returns false
    EXPECT_FALSE(OHOS::Ace::NodeModel::IsValidArkUINode(manualNode));
    delete manualNode;
}

/**
 * @tc.name: NodeModelIsValidArkUINodeTest001
 * @tc.desc: Test NodeModel::IsValidArkUINode
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NodeModelIsValidArkUINodeTest001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());

    // Test with nullptr
    EXPECT_FALSE(OHOS::Ace::NodeModel::IsValidArkUINode(nullptr));

    // Test with manually created node
    ArkUI_NodeHandle validNode = new ArkUI_Node();
    validNode->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_TEXT);
    validNode->cNode = true;
    EXPECT_NE(validNode, nullptr);
    EXPECT_FALSE(OHOS::Ace::NodeModel::IsValidArkUINode(validNode));
    delete validNode;
}

/**
 * @tc.name: NodeModelAddChildTest001
 * @tc.desc: Test NodeModel::AddChild and RemoveChild with null nodes (error cases)
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NodeModelAddChildTest001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());

    // Test with manually created nodes - AddChild will fail because uiNodeHandle is null
    // This tests the error code path
    ArkUI_NodeHandle parentNode = new ArkUI_Node();
    parentNode->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_COLUMN);
    parentNode->cNode = true;
    ASSERT_NE(parentNode, nullptr);

    ArkUI_NodeHandle childNode = new ArkUI_Node();
    childNode->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_TEXT);
    childNode->cNode = true;
    ASSERT_NE(childNode, nullptr);

    // AddChild will return error because uiNodeHandle is null and impl may be null in unit test
    // We just verify the function handles it without crashing
    int32_t result = OHOS::Ace::NodeModel::AddChild(parentNode, childNode);
    // The result may be ERROR_CODE_NO_ERROR (if impl is available but uiNodeHandle is null)
    // or an error code. We don't assert specific value to avoid test flakiness.

    // RemoveChild - same as above
    result = OHOS::Ace::NodeModel::RemoveChild(parentNode, childNode);
    // Just verify it doesn't crash

    delete parentNode;
    delete childNode;
}

/**
 * @tc.name: NodeModelAddChildTest002
 * @tc.desc: Test NodeModel::AddChild with null parameters
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NodeModelAddChildTest002, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());

    ArkUI_NodeHandle validNode = new ArkUI_Node();
    validNode->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_TEXT);
    validNode->cNode = true;
    ASSERT_NE(validNode, nullptr);

    // Test with null parent
    int32_t result1 = OHOS::Ace::NodeModel::AddChild(nullptr, validNode);
    EXPECT_EQ(result1, OHOS::Ace::ERROR_CODE_PARAM_INVALID);

    // Test with null child
    int32_t result2 = OHOS::Ace::NodeModel::AddChild(validNode, nullptr);
    EXPECT_EQ(result2, OHOS::Ace::ERROR_CODE_PARAM_INVALID);

    delete validNode;
}

/**
 * @tc.name: NodeModelInsertChildTest001
 * @tc.desc: Test NodeModel::InsertChildAfter - verify no crash with manually created nodes
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NodeModelInsertChildTest001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());

    ArkUI_NodeHandle parentNode = new ArkUI_Node();
    parentNode->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_COLUMN);
    parentNode->cNode = true;
    ArkUI_NodeHandle child1 = new ArkUI_Node();
    child1->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_TEXT);
    child1->cNode = true;
    ArkUI_NodeHandle child2 = new ArkUI_Node();
    child2->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_TEXT);
    child2->cNode = true;
    ArkUI_NodeHandle child3 = new ArkUI_Node();
    child3->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_TEXT);
    child3->cNode = true;

    ASSERT_NE(parentNode, nullptr);
    ASSERT_NE(child1, nullptr);
    ASSERT_NE(child2, nullptr);
    ASSERT_NE(child3, nullptr);

    OHOS::Ace::NodeModel::AddChild(parentNode, child1);
    OHOS::Ace::NodeModel::AddChild(parentNode, child2);

    // Insert child3 after child1 - may fail due to null uiNodeHandle or impl
    // We just verify it doesn't crash
    OHOS::Ace::NodeModel::InsertChildAfter(parentNode, child3, child1);
    // Result may vary depending on unit test environment, we don't assert specific value

    delete parentNode;
    delete child1;
    delete child2;
    delete child3;
}

/**
 * @tc.name: NodeModelInsertChildTest002
 * @tc.desc: Test NodeModel::InsertChildAt - verify no crash with manually created nodes
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NodeModelInsertChildTest002, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());

    ArkUI_NodeHandle parentNode = new ArkUI_Node();
    parentNode->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_COLUMN);
    parentNode->cNode = true;
    ArkUI_NodeHandle child1 = new ArkUI_Node();
    child1->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_TEXT);
    child1->cNode = true;
    ArkUI_NodeHandle child2 = new ArkUI_Node();
    child2->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_TEXT);
    child2->cNode = true;

    ASSERT_NE(parentNode, nullptr);
    ASSERT_NE(child1, nullptr);
    ASSERT_NE(child2, nullptr);

    OHOS::Ace::NodeModel::AddChild(parentNode, child1);

    // Insert at position 1 - may fail due to null uiNodeHandle or impl
    // We just verify it doesn't crash
    OHOS::Ace::NodeModel::InsertChildAt(parentNode, child2, 1);
    // Result may vary depending on unit test environment, we don't assert specific value

    delete parentNode;
    delete child1;
    delete child2;
}

/**
 * @tc.name: NodeModelSetUserDataTest001
 * @tc.desc: Test NodeModel::SetUserData and GetUserData
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NodeModelSetUserDataTest001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());

    ArkUI_NodeHandle node = new ArkUI_Node();
    node->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_TEXT);
    node->cNode = true;
    ASSERT_NE(node, nullptr);

    // Set and get user data
    void* testData = reinterpret_cast<void*>(0x12345678);
    OHOS::Ace::NodeModel::SetUserData(node, testData);
    void* retrievedData = OHOS::Ace::NodeModel::GetUserData(node);
    EXPECT_EQ(retrievedData, testData);

    delete node;
}

/**
 * @tc.name: NodeModelSetLengthMetricUnitTest001
 * @tc.desc: Test NodeModel::SetLengthMetricUnit with valid units
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NodeModelSetLengthMetricUnitTest001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());

    ArkUI_NodeHandle node = new ArkUI_Node();
    node->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_TEXT);
    node->cNode = true;
    ASSERT_NE(node, nullptr);

    // Test VP unit
    int32_t result1 = OHOS::Ace::NodeModel::SetLengthMetricUnit(
        node, ArkUI_LengthMetricUnit::ARKUI_LENGTH_METRIC_UNIT_VP);
    EXPECT_EQ(result1, OHOS::Ace::ERROR_CODE_NO_ERROR);
    EXPECT_EQ(node->lengthMetricUnit, static_cast<int8_t>(ArkUI_LengthMetricUnit::ARKUI_LENGTH_METRIC_UNIT_VP));

    // Test FP unit
    int32_t result2 = OHOS::Ace::NodeModel::SetLengthMetricUnit(
        node, ArkUI_LengthMetricUnit::ARKUI_LENGTH_METRIC_UNIT_FP);
    EXPECT_EQ(result2, OHOS::Ace::ERROR_CODE_NO_ERROR);
    EXPECT_EQ(node->lengthMetricUnit, static_cast<int8_t>(ArkUI_LengthMetricUnit::ARKUI_LENGTH_METRIC_UNIT_FP));

    // Test PX unit
    int32_t result3 = OHOS::Ace::NodeModel::SetLengthMetricUnit(
        node, ArkUI_LengthMetricUnit::ARKUI_LENGTH_METRIC_UNIT_PX);
    EXPECT_EQ(result3, OHOS::Ace::ERROR_CODE_NO_ERROR);
    EXPECT_EQ(node->lengthMetricUnit, static_cast<int8_t>(ArkUI_LengthMetricUnit::ARKUI_LENGTH_METRIC_UNIT_PX));

    delete node;
}

/**
 * @tc.name: NodeModelSetLengthMetricUnitTest002
 * @tc.desc: Test SetLengthMetricUnit with invalid parameters
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NodeModelSetLengthMetricUnitTest002, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());

    // Test with null node
    int32_t result1 = OHOS::Ace::NodeModel::SetLengthMetricUnit(
        nullptr, ArkUI_LengthMetricUnit::ARKUI_LENGTH_METRIC_UNIT_VP);
    EXPECT_EQ(result1, OHOS::Ace::ERROR_CODE_PARAM_INVALID);

    ArkUI_NodeHandle node = new ArkUI_Node();
    node->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_TEXT);
    node->cNode = true;
    ASSERT_NE(node, nullptr);

    // Test with invalid unit value (out of range: DEFAULT=-1 to FP=2)
    int32_t result2 = OHOS::Ace::NodeModel::SetLengthMetricUnit(
        node, static_cast<ArkUI_LengthMetricUnit>(100));
    EXPECT_EQ(result2, OHOS::Ace::ERROR_CODE_PARAM_INVALID);

    delete node;
}

/**
 * @tc.name: NodeModelUsePXUnitTest001
 * @tc.desc: Test NodeModel::UsePXUnit inline function
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NodeModelUsePXUnitTest001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());

    ArkUI_NodeHandle node = new ArkUI_Node();
    node->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_TEXT);
    node->cNode = true;
    ASSERT_NE(node, nullptr);

    // Initially not using PX unit
    EXPECT_FALSE(OHOS::Ace::NodeModel::UsePXUnit(node));

    // Set to PX unit
    OHOS::Ace::NodeModel::SetLengthMetricUnit(node, ArkUI_LengthMetricUnit::ARKUI_LENGTH_METRIC_UNIT_PX);
    EXPECT_TRUE(OHOS::Ace::NodeModel::UsePXUnit(node));

    // Set to VP unit
    OHOS::Ace::NodeModel::SetLengthMetricUnit(node, ArkUI_LengthMetricUnit::ARKUI_LENGTH_METRIC_UNIT_VP);
    EXPECT_FALSE(OHOS::Ace::NodeModel::UsePXUnit(node));

    // Test with null node
    EXPECT_FALSE(OHOS::Ace::NodeModel::UsePXUnit(nullptr));

    delete node;
}

/**
 * @tc.name: NodeModelEventReceiverTest001
 * @tc.desc: Test NodeModel::AddNodeEventReceiver and RemoveNodeEventReceiver
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NodeModelEventReceiverTest001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());

    ArkUI_NodeHandle node = new ArkUI_Node();
    node->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_TEXT);
    node->cNode = true;
    ASSERT_NE(node, nullptr);

    auto eventCallback = [](ArkUI_NodeEvent* event) {
        // Mock event handler
    };

    // Add event receiver
    int32_t addResult = OHOS::Ace::NodeModel::AddNodeEventReceiver(node, eventCallback);
    EXPECT_EQ(addResult, OHOS::Ace::ERROR_CODE_NO_ERROR);

    // Remove event receiver
    int32_t removeResult = OHOS::Ace::NodeModel::RemoveNodeEventReceiver(node, eventCallback);
    EXPECT_EQ(removeResult, OHOS::Ace::ERROR_CODE_NO_ERROR);

    delete node;
}

/**
 * @tc.name: NodeModelEventReceiverTest002
 * @tc.desc: Test NodeModel::AddNodeEventReceiver with null parameters
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NodeModelEventReceiverTest002, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());

    auto eventCallback = [](ArkUI_NodeEvent* event) {};

    // Test with null node
    int32_t result1 = OHOS::Ace::NodeModel::AddNodeEventReceiver(nullptr, eventCallback);
    EXPECT_EQ(result1, OHOS::Ace::ERROR_CODE_PARAM_INVALID);

    // Test with null callback
    ArkUI_NodeHandle node = new ArkUI_Node();
    node->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_TEXT);
    node->cNode = true;
    ASSERT_NE(node, nullptr);

    int32_t result2 = OHOS::Ace::NodeModel::AddNodeEventReceiver(node, nullptr);
    EXPECT_EQ(result2, OHOS::Ace::ERROR_CODE_PARAM_INVALID);

    delete node;
}

/**
 * @tc.name: NodeModelCommonEventMapTest001
 * @tc.desc: Test NodeModel::MakeCommonEventMap and ClearCommonEventMap
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NodeModelCommonEventMapTest001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());

    ArkUI_NodeHandle node = new ArkUI_Node();
    node->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_TEXT);
    node->cNode = true;
    ASSERT_NE(node, nullptr);

    auto eventCallback = [](ArkUI_NodeEvent* event) {};

    // Make common event map
    bool makeResult = OHOS::Ace::NodeModel::MakeCommonEventMap(
        node, NODE_ON_CLICK_EVENT, nullptr, eventCallback);
    EXPECT_TRUE(makeResult);

    // Clear common event map
    bool clearResult = OHOS::Ace::NodeModel::ClearCommonEventMap(node, NODE_ON_CLICK_EVENT);
    EXPECT_TRUE(clearResult);

    delete node;
}

/**
 * @tc.name: NodeModelCommonEventMapTest002
 * @tc.desc: Test NodeModel::MakeCommonEventMap with duplicate event registration.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NodeModelCommonEventMapTest002, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());

    ArkUI_NodeHandle node = new ArkUI_Node();
    node->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_TEXT);
    node->cNode = true;
    ASSERT_NE(node, nullptr);

    int32_t userDataOne = 1;
    int32_t userDataTwo = 2;
    auto eventCallback = [](ArkUI_NodeEvent* event) {};

    bool makeResult = OHOS::Ace::NodeModel::MakeCommonEventMap(
        node, NODE_ON_CLICK_EVENT, &userDataOne, eventCallback);
    EXPECT_TRUE(makeResult);
    makeResult = OHOS::Ace::NodeModel::MakeCommonEventMap(
        node, NODE_ON_CLICK_EVENT, &userDataTwo, eventCallback);
    EXPECT_TRUE(makeResult);

    auto* extraData = reinterpret_cast<ExtraData*>(node->extraCommonData);
    ASSERT_NE(extraData, nullptr);
    auto extraParam = extraData->eventMap.find(NODE_ON_CLICK_EVENT);
    ASSERT_NE(extraParam, extraData->eventMap.end());
    ASSERT_NE(extraParam->second, nullptr);
    EXPECT_EQ(extraParam->second->userData, &userDataTwo);

    bool clearResult = OHOS::Ace::NodeModel::ClearCommonEventMap(node, NODE_ON_CLICK_EVENT);
    EXPECT_TRUE(clearResult);

    delete node;
}

/**
 * @tc.name: NodeModelMarkDirtyTest001
 * @tc.desc: Test NodeModel::MarkDirty with different flags
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NodeModelMarkDirtyTest001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());

    ArkUI_NodeHandle node = new ArkUI_Node();
    node->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_TEXT);
    node->cNode = true;
    ASSERT_NE(node, nullptr);

    // Test marking as dirty with different flags
    OHOS::Ace::NodeModel::MarkDirty(node, NODE_NEED_MEASURE);
    OHOS::Ace::NodeModel::MarkDirty(node, NODE_NEED_LAYOUT);
    OHOS::Ace::NodeModel::MarkDirty(node, NODE_NEED_RENDER);

    // Test with null node (should not crash)
    OHOS::Ace::NodeModel::MarkDirty(nullptr, NODE_NEED_MEASURE);

    delete node;
}

/**
 * @tc.name: NodeModelApplyModifierFinishTest001
 * @tc.desc: Test NodeModel::ApplyModifierFinish
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NodeModelApplyModifierFinishTest001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());

    ArkUI_NodeHandle node = new ArkUI_Node();
    node->type = static_cast<int32_t>(ArkUI_NodeType::ARKUI_NODE_TEXT);
    node->cNode = true;
    ASSERT_NE(node, nullptr);

    // Test apply modifier finish
    OHOS::Ace::NodeModel::ApplyModifierFinish(node);

    // Test with null node (should not crash)
    OHOS::Ace::NodeModel::ApplyModifierFinish(nullptr);

    delete node;
}

/**
 * @tc.name: NodeModelConvertNodeTypeToTagTest001
 * @tc.desc: Test NodeModel::ConvertNodeTypeToTag with various types
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NodeModelConvertNodeTypeToTagTest001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());

    // Test TEXT type - actual tag is "Text" (capital T)
    std::string textTag = OHOS::Ace::NodeModel::ConvertNodeTypeToTag(ArkUI_NodeType::ARKUI_NODE_TEXT);
    EXPECT_EQ(textTag, "Text");

    // Test COLUMN type - actual tag is "Column" (capital C)
    std::string columnTag = OHOS::Ace::NodeModel::ConvertNodeTypeToTag(ArkUI_NodeType::ARKUI_NODE_COLUMN);
    EXPECT_EQ(columnTag, "Column");

    // Test ROW type - actual tag is "Row" (capital R)
    std::string rowTag = OHOS::Ace::NodeModel::ConvertNodeTypeToTag(ArkUI_NodeType::ARKUI_NODE_ROW);
    EXPECT_EQ(rowTag, "Row");

    // Test unknown type - actual tag is "" (empty string, not "undefined")
    std::string unknownTag = OHOS::Ace::NodeModel::ConvertNodeTypeToTag(
        static_cast<ArkUI_NodeType>(9999));
    EXPECT_EQ(unknownTag, "");
}

/**
 * @tc.name: OH_ArkUI_UnregisterSystemColorModeChangeEvent001
 * @tc.desc: Test OH_ArkUI_UnregisterSystemColorModeChangeEvent with nullptr.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_UnregisterSystemColorModeChangeEvent001, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a node nullptr.
     * @tc.expect: function returns without error.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_NodeHandle node = nullptr;

    /**
     * @tc.steps: step2. Call function.
     * @tc.expect: function returns without error.
     */
    OH_ArkUI_UnregisterSystemColorModeChangeEvent(node);

    /**
     * @tc.steps: step3. Verify result.
     * @tc.expect: function returns without error.
     */
    EXPECT_TRUE(true);
}

/**
 * @tc.name: OH_ArkUI_UnregisterSystemColorModeChangeEvent002
 * @tc.desc: Test OH_ArkUI_UnregisterSystemColorModeChangeEvent with valid node.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_UnregisterSystemColorModeChangeEvent002, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a node not nullptr.
     * @tc.expect: function returns without error.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_NodeHandle node = new ArkUI_Node();

    /**
     * @tc.steps: step2. Call function.
     * @tc.expect: function returns without error.
     */
    OH_ArkUI_UnregisterSystemColorModeChangeEvent(node);

    /**
     * @tc.steps: step3. Verify result.
     * @tc.expect: function returns without error.
     */
    EXPECT_TRUE(true);
}

/**
 * @tc.name: OH_ArkUI_NodeUtils_GetCurrentPageRootNode002
 * @tc.desc: Test OH_ArkUI_NodeUtils_GetCurrentPageRootNode with nullptr.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NodeUtils_GetCurrentPageRootNode002, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());

    EXPECT_EQ(OH_ArkUI_NodeUtils_GetCurrentPageRootNode(nullptr), nullptr);
}

/**
 * @tc.name: OH_ArkUI_UnregisterSystemFontStyleChangeEvent001
 * @tc.desc: Test OH_ArkUI_UnregisterSystemFontStyleChangeEvent with nullptr.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_UnregisterSystemFontStyleChangeEvent001, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a node nullptr.
     * @tc.expect: function returns without error.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_NodeHandle node = nullptr;

    /**
     * @tc.steps: step2. Call function.
     * @tc.expect: function returns without error.
     */
    OH_ArkUI_UnregisterSystemFontStyleChangeEvent(node);

    /**
     * @tc.steps: step3. Verify result.
     * @tc.expect: function returns without error.
     */
    EXPECT_TRUE(true);
}

/**
 * @tc.name: OH_ArkUI_UnregisterSystemFontStyleChangeEvent002
 * @tc.desc: Test OH_ArkUI_UnregisterSystemFontStyleChangeEvent with valid node.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_UnregisterSystemFontStyleChangeEvent002, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a node not nullptr.
     * @tc.expect: function returns without error.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_NodeHandle node = new ArkUI_Node();

    /**
     * @tc.steps: step2. Call function.
     * @tc.expect: function returns without error.
     */
    OH_ArkUI_UnregisterSystemFontStyleChangeEvent(node);

    /**
     * @tc.steps: step3. Verify result.
     * @tc.expect: function returns without error.
     */
    EXPECT_TRUE(true);
}

/**
 * @tc.name: OH_ArkUI_RegisterDrawCallbackOnNodeHandle003
 * @tc.desc: Test OH_ArkUI_RegisterDrawCallbackOnNodeHandle with impl nullptr.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_RegisterDrawCallbackOnNodeHandle003, TestSize.Level1)
{
    /**
     * @tc.steps: step1. Create a node not nullptr.
     * @tc.expect: result is ERROR_CODE_PARAM_INVALID when impl is nullptr.
     */
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_NodeHandle node = new ArkUI_Node();
    void* userData = nullptr;
    void (*onDrawCompleted)(void* userData) = nullptr;

    /**
     * @tc.steps: step2. Call function with valid node.
     * @tc.expect: result is ERROR_CODE_NO_ERROR when impl is valid.
     */
    int32_t result = OH_ArkUI_RegisterDrawCallbackOnNodeHandle(node, userData, onDrawCompleted);

    /**
     * @tc.steps: step3. Verify result.
     * @tc.expect: result is ERROR_CODE_NO_ERROR.
     */
    EXPECT_EQ(result, OHOS::Ace::ERROR_CODE_NO_ERROR);
}

/**
 * @tc.name: NativeNodeRegisterCommonVisibleAreaApproximateChangeEventTest001
 * @tc.desc: Test OH_ArkUI_NativeModule_RegisterCommonVisibleAreaApproximateChangeEvent with invalid params.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeRegisterCommonVisibleAreaApproximateChangeEventTest001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    float ratios[] = { 0.5f };

    auto result = OH_ArkUI_NativeModule_RegisterCommonVisibleAreaApproximateChangeEvent(
        nullptr, ratios, 1, 0.0f, nullptr, CommonVisibleAreaApproximateChangeEventCallback);

    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

/**
 * @tc.name: NativeNodeRegisterCommonVisibleAreaApproximateChangeEventTest002
 * @tc.desc: Test OH_ArkUI_NativeModule_RegisterCommonVisibleAreaApproximateChangeEvent with invalid ratio.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeRegisterCommonVisibleAreaApproximateChangeEventTest002, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto node = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(node, nullptr);
    float ratios[] = { -0.1f };

    auto result = OH_ArkUI_NativeModule_RegisterCommonVisibleAreaApproximateChangeEvent(
        node, ratios, 1, 16.0f, nullptr, CommonVisibleAreaApproximateChangeEventCallback);

    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
    (void)OHOS::Ace::NodeModel::ClearCommonEventMap(node, NODE_VISIBLE_AREA_APPROXIMATE_CHANGE_EVENT);
    nodeAPI->disposeNode(node);
}

/**
 * @tc.name: NativeNodeRegisterCommonVisibleAreaApproximateChangeEventTest003
 * @tc.desc: Test register and unregister common visible area approximate change event successfully.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeRegisterCommonVisibleAreaApproximateChangeEventTest003, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto node = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(node, nullptr);
    float ratios[] = { 0.5f };

    auto registerResult = OH_ArkUI_NativeModule_RegisterCommonVisibleAreaApproximateChangeEvent(
        node, ratios, 1, 16.0f, nullptr, CommonVisibleAreaApproximateChangeEventCallback);
    auto unregisterResult = OH_ArkUI_NativeModule_UnregisterCommonVisibleAreaApproximateChangeEvent(node);

    EXPECT_EQ(registerResult, ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(unregisterResult, ARKUI_ERROR_CODE_NO_ERROR);
    nodeAPI->disposeNode(node);
}

/**
 * @tc.name: NativeNodeUnregisterCommonVisibleAreaApproximateChangeEventTest001
 * @tc.desc: Test OH_ArkUI_NativeModule_UnregisterCommonVisibleAreaApproximateChangeEvent with nullptr.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeUnregisterCommonVisibleAreaApproximateChangeEventTest001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());

    auto result = OH_ArkUI_NativeModule_UnregisterCommonVisibleAreaApproximateChangeEvent(nullptr);

    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

/**
 * @tc.name: NativeNodeUnregisterCommonVisibleAreaApproximateChangeEventTest002
 * @tc.desc: Test OH_ArkUI_NativeModule_UnregisterCommonVisibleAreaApproximateChangeEvent without registration.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeUnregisterCommonVisibleAreaApproximateChangeEventTest002, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto node = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(node, nullptr);

    auto result = OH_ArkUI_NativeModule_UnregisterCommonVisibleAreaApproximateChangeEvent(node);

    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
    nodeAPI->disposeNode(node);
}

/**
 * @tc.name: NativeNodeContentTransitionEffectCreateTest001
 * @tc.desc: Test OH_ArkUI_ContentTransitionEffect_Create.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, NativeNodeContentTransitionEffectCreateTest001, TestSize.Level1)
{
    constexpr int32_t type = 3;

    auto* effect = OH_ArkUI_ContentTransitionEffect_Create(type);

    ASSERT_NE(effect, nullptr);
    EXPECT_EQ(effect->contentTransitionType, type);
    delete effect;
}

/**
 * @tc.name: DrawContextTest001
 * @tc.desc: Test OH_ArkUI_DrawContext_GetCanvas
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, DrawContextTest001, TestSize.Level1)
{
    auto* context = new ArkUI_DrawContext();
    context->canvas = reinterpret_cast<void*>(12345);
    
    auto result = OH_ArkUI_DrawContext_GetCanvas(context);
    EXPECT_EQ(result, reinterpret_cast<void*>(12345));
    
    auto nullResult = OH_ArkUI_DrawContext_GetCanvas(nullptr);
    EXPECT_EQ(nullResult, nullptr);
    
    delete context;
}

/**
 * @tc.name: DrawContextTest002
 * @tc.desc: Test OH_ArkUI_DrawContext_GetSize
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, DrawContextTest002, TestSize.Level1)
{
    auto* context = new ArkUI_DrawContext();
    context->width = 100;
    context->height = 200;
    
    auto result = OH_ArkUI_DrawContext_GetSize(context);
    EXPECT_EQ(result.width, 100);
    EXPECT_EQ(result.height, 200);
    
    auto nullResult = OH_ArkUI_DrawContext_GetSize(nullptr);
    EXPECT_EQ(nullResult.width, 0);
    EXPECT_EQ(nullResult.height, 0);
    
    delete context;
}

/**
 * @tc.name: SwiperIndicatorCreate001
 * @tc.desc: Test OH_ArkUI_SwiperIndicator_Create with valid type
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, SwiperIndicatorCreate001, TestSize.Level1)
{
    auto* indicator = OH_ArkUI_SwiperIndicator_Create(ARKUI_SWIPER_INDICATOR_TYPE_DOT);
    ASSERT_NE(indicator, nullptr);
    EXPECT_EQ(indicator->type, ARKUI_SWIPER_INDICATOR_TYPE_DOT);
    OH_ArkUI_SwiperIndicator_Dispose(indicator);
}

/**
 * @tc.name: SwiperIndicatorCreate002
 * @tc.desc: Test OH_ArkUI_SwiperIndicator_Create with invalid type
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, SwiperIndicatorCreate002, TestSize.Level1)
{
    auto* indicator = OH_ArkUI_SwiperIndicator_Create(ARKUI_SWIPER_INDICATOR_TYPE_DIGIT);
    EXPECT_EQ(indicator, nullptr);
}

/**
 * @tc.name: SwiperIndicatorSetGet001
 * @tc.desc: Test OH_ArkUI_SwiperIndicator setter and getter functions
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, SwiperIndicatorSetGet001, TestSize.Level1)
{
    auto* indicator = OH_ArkUI_SwiperIndicator_Create(ARKUI_SWIPER_INDICATOR_TYPE_DOT);
    ASSERT_NE(indicator, nullptr);
    
    OH_ArkUI_SwiperIndicator_SetStartPosition(indicator, 10.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperIndicator_GetStartPosition(indicator), 10.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperIndicator_GetStartPosition(nullptr), 0.0f);
    
    OH_ArkUI_SwiperIndicator_SetTopPosition(indicator, 20.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperIndicator_GetTopPosition(indicator), 20.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperIndicator_GetTopPosition(nullptr), 0.0f);
    
    OH_ArkUI_SwiperIndicator_SetEndPosition(indicator, 30.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperIndicator_GetEndPosition(indicator), 30.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperIndicator_GetEndPosition(nullptr), 0.0f);
    
    OH_ArkUI_SwiperIndicator_SetBottomPosition(indicator, 40.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperIndicator_GetBottomPosition(indicator), 40.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperIndicator_GetBottomPosition(nullptr), 0.0f);
    
    OH_ArkUI_SwiperIndicator_Dispose(indicator);
}

/**
 * @tc.name: SwiperIndicatorSetGet002
 * @tc.desc: Test OH_ArkUI_SwiperIndicator item size functions
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, SwiperIndicatorSetGet002, TestSize.Level1)
{
    auto* indicator = OH_ArkUI_SwiperIndicator_Create(ARKUI_SWIPER_INDICATOR_TYPE_DOT);
    ASSERT_NE(indicator, nullptr);
    
    OH_ArkUI_SwiperIndicator_SetItemWidth(indicator, 5.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperIndicator_GetItemWidth(indicator), 5.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperIndicator_GetItemWidth(nullptr), 0.0f);
    
    OH_ArkUI_SwiperIndicator_SetItemHeight(indicator, 6.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperIndicator_GetItemHeight(indicator), 6.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperIndicator_GetItemHeight(nullptr), 0.0f);
    
    OH_ArkUI_SwiperIndicator_SetSelectedItemWidth(indicator, 7.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperIndicator_GetSelectedItemWidth(indicator), 7.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperIndicator_GetSelectedItemWidth(nullptr), 0.0f);
    
    OH_ArkUI_SwiperIndicator_SetSelectedItemHeight(indicator, 8.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperIndicator_GetSelectedItemHeight(indicator), 8.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperIndicator_GetSelectedItemHeight(nullptr), 0.0f);
    
    OH_ArkUI_SwiperIndicator_Dispose(indicator);
}

/**
 * @tc.name: SwiperIndicatorSetGet003
 * @tc.desc: Test OH_ArkUI_SwiperIndicator mask and color functions
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, SwiperIndicatorSetGet003, TestSize.Level1)
{
    auto* indicator = OH_ArkUI_SwiperIndicator_Create(ARKUI_SWIPER_INDICATOR_TYPE_DOT);
    ASSERT_NE(indicator, nullptr);
    
    OH_ArkUI_SwiperIndicator_SetMask(indicator, 1);
    EXPECT_EQ(OH_ArkUI_SwiperIndicator_GetMask(indicator), 1);
    EXPECT_EQ(OH_ArkUI_SwiperIndicator_GetMask(nullptr), 0);
    
    OH_ArkUI_SwiperIndicator_SetColor(indicator, 0xFF00FF00);
    EXPECT_EQ(OH_ArkUI_SwiperIndicator_GetColor(indicator), 0xFF00FF00);
    EXPECT_EQ(OH_ArkUI_SwiperIndicator_GetColor(nullptr), 0);
    
    OH_ArkUI_SwiperIndicator_SetSelectedColor(indicator, 0xFFFF0000);
    EXPECT_EQ(OH_ArkUI_SwiperIndicator_GetSelectedColor(indicator), 0xFFFF0000);
    EXPECT_EQ(OH_ArkUI_SwiperIndicator_GetSelectedColor(nullptr), 0);
    
    OH_ArkUI_SwiperIndicator_Dispose(indicator);
}

/**
 * @tc.name: SwiperDigitIndicatorCreate001
 * @tc.desc: Test OH_ArkUI_SwiperDigitIndicator_Create
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, SwiperDigitIndicatorCreate001, TestSize.Level1)
{
    auto* indicator = OH_ArkUI_SwiperDigitIndicator_Create();
    ASSERT_NE(indicator, nullptr);
    EXPECT_EQ(indicator->type, ARKUI_SWIPER_INDICATOR_TYPE_DIGIT);
    OH_ArkUI_SwiperDigitIndicator_Destroy(indicator);
}

/**
 * @tc.name: OH_ArkUI_NativeModule_GetErrorMessage001
 * @tc.desc: Test OH_ArkUI_NativeModule_GetErrorMessage returns the latest native error message.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_NativeModule_GetErrorMessage001, TestSize.Level1)
{
    auto result = OH_ArkUI_NativeModule_InvalidateAttributes(nullptr);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);

    const char* errorMessage = OH_ArkUI_NativeModule_GetErrorMessage();
    ASSERT_NE(errorMessage, nullptr);
    std::string errorMessageStr(errorMessage);
    EXPECT_NE(errorMessageStr.find(std::string("errorCode: ") + std::to_string(result)), std::string::npos);
    EXPECT_NE(errorMessageStr.find("functionName: OH_ArkUI_NativeModule_InvalidateAttributes"), std::string::npos);
    EXPECT_NE(errorMessageStr.find("errorMessage: Node parameter is null"), std::string::npos);
}

/**
 * @tc.name: SwiperDigitIndicatorSetGet001
 * @tc.desc: Test OH_ArkUI_SwiperDigitIndicator setter and getter functions
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, SwiperDigitIndicatorSetGet001, TestSize.Level1)
{
    auto* indicator = OH_ArkUI_SwiperDigitIndicator_Create();
    ASSERT_NE(indicator, nullptr);
    
    OH_ArkUI_SwiperDigitIndicator_SetStartPosition(indicator, 10.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperDigitIndicator_GetStartPosition(indicator), 10.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperDigitIndicator_GetStartPosition(nullptr), 0.0f);
    
    OH_ArkUI_SwiperDigitIndicator_SetTopPosition(indicator, 20.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperDigitIndicator_GetTopPosition(indicator), 20.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperDigitIndicator_GetTopPosition(nullptr), 0.0f);
    
    OH_ArkUI_SwiperDigitIndicator_SetEndPosition(indicator, 30.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperDigitIndicator_GetEndPosition(indicator), 30.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperDigitIndicator_GetEndPosition(nullptr), 0.0f);
    
    OH_ArkUI_SwiperDigitIndicator_SetBottomPosition(indicator, 40.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperDigitIndicator_GetBottomPosition(indicator), 40.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperDigitIndicator_GetBottomPosition(nullptr), 0.0f);
    
    OH_ArkUI_SwiperDigitIndicator_Destroy(indicator);
}

/**
 * @tc.name: SwiperDigitIndicatorSetGet002
 * @tc.desc: Test OH_ArkUI_SwiperDigitIndicator font functions
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, SwiperDigitIndicatorSetGet002, TestSize.Level1)
{
    auto* indicator = OH_ArkUI_SwiperDigitIndicator_Create();
    ASSERT_NE(indicator, nullptr);
    
    OH_ArkUI_SwiperDigitIndicator_SetFontColor(indicator, 0xFF00FF00);
    EXPECT_EQ(OH_ArkUI_SwiperDigitIndicator_GetFontColor(indicator), 0xFF00FF00);
    EXPECT_EQ(OH_ArkUI_SwiperDigitIndicator_GetFontColor(nullptr), 0);
    
    OH_ArkUI_SwiperDigitIndicator_SetSelectedFontColor(indicator, 0xFFFF0000);
    EXPECT_EQ(OH_ArkUI_SwiperDigitIndicator_GetSelectedFontColor(indicator), 0xFFFF0000);
    EXPECT_EQ(OH_ArkUI_SwiperDigitIndicator_GetSelectedFontColor(nullptr), 0);
    
    OH_ArkUI_SwiperDigitIndicator_SetFontSize(indicator, 16.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperDigitIndicator_GetFontSize(indicator), 16.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperDigitIndicator_GetFontSize(nullptr), 0.0f);
    
    OH_ArkUI_SwiperDigitIndicator_SetSelectedFontSize(indicator, 18.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperDigitIndicator_GetSelectedFontSize(indicator), 18.0f);
    EXPECT_FLOAT_EQ(OH_ArkUI_SwiperDigitIndicator_GetSelectedFontSize(nullptr), 0.0f);
    
    OH_ArkUI_SwiperDigitIndicator_Destroy(indicator);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperatingStatus001
 * @tc.desc: Test SetTreeOperatingStatus and GetTreeOperatingStatus basic functionality and nullptr safety.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperatingStatus001, TestSize.Level0)
{
    auto option = OH_ArkUI_CrossLanguageOption_Create();
    ASSERT_NE(option, nullptr);

    EXPECT_EQ(OH_ArkUI_CrossLanguageOption_GetTreeOperatingStatus(option), OH_ARKUI_TREE_OPERATING_STATUS_UNDEFINED);

    OH_ArkUI_CrossLanguageOption_SetTreeOperatingStatus(option, OH_ARKUI_TREE_OPERATING_STATUS_ENABLE);
    EXPECT_EQ(OH_ArkUI_CrossLanguageOption_GetTreeOperatingStatus(option), OH_ARKUI_TREE_OPERATING_STATUS_ENABLE);

    OH_ArkUI_CrossLanguageOption_SetTreeOperatingStatus(option, OH_ARKUI_TREE_OPERATING_STATUS_DISABLE);
    EXPECT_EQ(OH_ArkUI_CrossLanguageOption_GetTreeOperatingStatus(option), OH_ARKUI_TREE_OPERATING_STATUS_DISABLE);

    OH_ArkUI_CrossLanguageOption_Destroy(option);

    OH_ArkUI_CrossLanguageOption_SetTreeOperatingStatus(nullptr, OH_ARKUI_TREE_OPERATING_STATUS_ENABLE);
    EXPECT_EQ(OH_ArkUI_CrossLanguageOption_GetTreeOperatingStatus(nullptr), OH_ARKUI_TREE_OPERATING_STATUS_UNDEFINED);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperatingStatus002
 * @tc.desc: Test SetCrossLanguageOption/GetCrossLanguageOption with treeOperatingStatus ENABLE and DISABLE,
 *           and rejected on non-CNode.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperatingStatus002, TestSize.Level0)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto node = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(node, nullptr);
    auto option = OH_ArkUI_CrossLanguageOption_Create();
    auto queryOption = OH_ArkUI_CrossLanguageOption_Create();
    ASSERT_NE(option, nullptr);
    ASSERT_NE(queryOption, nullptr);

    OH_ArkUI_CrossLanguageOption_SetTreeOperatingStatus(option, OH_ARKUI_TREE_OPERATING_STATUS_ENABLE);
    EXPECT_EQ(OH_ArkUI_NodeUtils_SetCrossLanguageOption(node, option), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(OH_ArkUI_NodeUtils_GetCrossLanguageOption(node, queryOption), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(OH_ArkUI_CrossLanguageOption_GetTreeOperatingStatus(queryOption), OH_ARKUI_TREE_OPERATING_STATUS_ENABLE);

    OH_ArkUI_CrossLanguageOption_SetTreeOperatingStatus(option, OH_ARKUI_TREE_OPERATING_STATUS_DISABLE);
    EXPECT_EQ(OH_ArkUI_NodeUtils_SetCrossLanguageOption(node, option), ARKUI_ERROR_CODE_NO_ERROR);
    OH_ArkUI_CrossLanguageOption_SetTreeOperatingStatus(queryOption, OH_ARKUI_TREE_OPERATING_STATUS_UNDEFINED);
    EXPECT_EQ(OH_ArkUI_NodeUtils_GetCrossLanguageOption(node, queryOption), ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(OH_ArkUI_CrossLanguageOption_GetTreeOperatingStatus(queryOption), OH_ARKUI_TREE_OPERATING_STATUS_DISABLE);

    auto nonCNodeFrameNode =
        NG::FrameNode::CreateFrameNode(V2::COLUMN_ETS_TAG, 200100, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(nonCNodeFrameNode, nullptr);
    auto nonCNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(nonCNodeFrameNode)));
    ASSERT_NE(nonCNode, nullptr);
    OH_ArkUI_CrossLanguageOption_SetTreeOperatingStatus(option, OH_ARKUI_TREE_OPERATING_STATUS_ENABLE);
    EXPECT_EQ(OH_ArkUI_NodeUtils_SetCrossLanguageOption(nonCNode, option), ARKUI_ERROR_CODE_PARAM_INVALID);

    OH_ArkUI_CrossLanguageOption_Destroy(option);
    OH_ArkUI_CrossLanguageOption_Destroy(queryOption);
    nodeAPI->disposeNode(node);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperating_AddChild001
 * @tc.desc: CNode parent + CNode child, base line success.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperating_AddChild001, TestSize.Level0)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    auto parent = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto child = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(parent, nullptr);
    ASSERT_NE(child, nullptr);

    EXPECT_EQ(nodeAPI->addChild(parent, child), OHOS::Ace::ERROR_CODE_NO_ERROR);

    nodeAPI->removeChild(parent, child);
    nodeAPI->disposeNode(child);
    nodeAPI->disposeNode(parent);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperating_AddChild002
 * @tc.desc: Non-CNode parent(ENABLE) + CNode child, success.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperating_AddChild002, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);

    auto parentFrameNode =
        NG::FrameNode::CreateFrameNode(V2::COLUMN_ETS_TAG, 200001, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(parentFrameNode, nullptr);
    parentFrameNode->SetTreeOperatingStatus(NG::TreeOperatingStatus::ENABLE);
    auto parentNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(parentFrameNode)));
    ASSERT_NE(parentNode, nullptr);

    auto childNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(childNode, nullptr);

    EXPECT_EQ(nodeAPI->addChild(parentNode, childNode), OHOS::Ace::ERROR_CODE_NO_ERROR);

    nodeAPI->removeChild(parentNode, childNode);
    nodeAPI->disposeNode(childNode);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperating_AddChild003
 * @tc.desc: CNode parent + Non-CNode child(ENABLE), success.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperating_AddChild003, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);

    auto parentNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(parentNode, nullptr);

    auto childFrameNode =
        NG::FrameNode::CreateFrameNode(V2::TEXT_ETS_TAG, 200002, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(childFrameNode, nullptr);
    childFrameNode->SetTreeOperatingStatus(NG::TreeOperatingStatus::ENABLE);
    auto childNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(childFrameNode)));
    ASSERT_NE(childNode, nullptr);

    EXPECT_EQ(nodeAPI->addChild(parentNode, childNode), OHOS::Ace::ERROR_CODE_NO_ERROR);

    nodeAPI->removeChild(parentNode, childNode);
    nodeAPI->disposeNode(parentNode);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperating_AddChild004
 * @tc.desc: Non-CNode parent(ENABLE) + Non-CNode child(ENABLE), success.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperating_AddChild004, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);

    auto parentFrameNode =
        NG::FrameNode::CreateFrameNode(V2::COLUMN_ETS_TAG, 200003, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(parentFrameNode, nullptr);
    parentFrameNode->SetTreeOperatingStatus(NG::TreeOperatingStatus::ENABLE);
    auto parentNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(parentFrameNode)));
    ASSERT_NE(parentNode, nullptr);

    auto childFrameNode =
        NG::FrameNode::CreateFrameNode(V2::TEXT_ETS_TAG, 200004, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(childFrameNode, nullptr);
    childFrameNode->SetTreeOperatingStatus(NG::TreeOperatingStatus::ENABLE);
    auto childNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(childFrameNode)));
    ASSERT_NE(childNode, nullptr);

    EXPECT_EQ(nodeAPI->addChild(parentNode, childNode), OHOS::Ace::ERROR_CODE_NO_ERROR);

    nodeAPI->removeChild(parentNode, childNode);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperating_AddChild005
 * @tc.desc: Non-CNode parent(UNDEFINED) + CNode child, rejected.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperating_AddChild005, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);

    auto parentFrameNode =
        NG::FrameNode::CreateFrameNode(V2::COLUMN_ETS_TAG, 200005, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(parentFrameNode, nullptr);
    auto parentNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(parentFrameNode)));
    ASSERT_NE(parentNode, nullptr);

    auto childNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(childNode, nullptr);

    EXPECT_EQ(nodeAPI->addChild(parentNode, childNode), OHOS::Ace::ERROR_CODE_NATIVE_IMPL_BUILDER_NODE_ERROR);

    nodeAPI->disposeNode(childNode);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperating_AddChild006
 * @tc.desc: Non-CNode parent(DISABLE) + CNode child, rejected.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperating_AddChild006, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);

    auto parentFrameNode =
        NG::FrameNode::CreateFrameNode(V2::COLUMN_ETS_TAG, 200006, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(parentFrameNode, nullptr);
    parentFrameNode->SetTreeOperatingStatus(NG::TreeOperatingStatus::DISABLE);
    auto parentNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(parentFrameNode)));
    ASSERT_NE(parentNode, nullptr);

    auto childNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(childNode, nullptr);

    EXPECT_EQ(nodeAPI->addChild(parentNode, childNode), OHOS::Ace::ERROR_CODE_NATIVE_IMPL_BUILDER_NODE_ERROR);

    nodeAPI->disposeNode(childNode);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperating_AddChild007
 * @tc.desc: Non-CNode parent(ENABLE) + Non-CNode child(UNDEFINED), rejected.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperating_AddChild007, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);

    auto parentFrameNode =
        NG::FrameNode::CreateFrameNode(V2::COLUMN_ETS_TAG, 200007, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(parentFrameNode, nullptr);
    parentFrameNode->SetTreeOperatingStatus(NG::TreeOperatingStatus::ENABLE);
    auto parentNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(parentFrameNode)));
    ASSERT_NE(parentNode, nullptr);

    auto childFrameNode =
        NG::FrameNode::CreateFrameNode(V2::TEXT_ETS_TAG, 200008, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(childFrameNode, nullptr);
    auto childNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(childFrameNode)));
    ASSERT_NE(childNode, nullptr);

    EXPECT_EQ(nodeAPI->addChild(parentNode, childNode), OHOS::Ace::ERROR_CODE_NATIVE_IMPL_BUILDER_NODE_ERROR);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperating_AddChild008
 * @tc.desc: Non-CNode parent(ENABLE) + Non-CNode child(DISABLE), rejected.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperating_AddChild008, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);

    auto parentFrameNode =
        NG::FrameNode::CreateFrameNode(V2::COLUMN_ETS_TAG, 200009, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(parentFrameNode, nullptr);
    parentFrameNode->SetTreeOperatingStatus(NG::TreeOperatingStatus::ENABLE);
    auto parentNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(parentFrameNode)));
    ASSERT_NE(parentNode, nullptr);

    auto childFrameNode =
        NG::FrameNode::CreateFrameNode(V2::TEXT_ETS_TAG, 200010, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(childFrameNode, nullptr);
    childFrameNode->SetTreeOperatingStatus(NG::TreeOperatingStatus::DISABLE);
    auto childNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(childFrameNode)));
    ASSERT_NE(childNode, nullptr);

    EXPECT_EQ(nodeAPI->addChild(parentNode, childNode), OHOS::Ace::ERROR_CODE_NATIVE_IMPL_BUILDER_NODE_ERROR);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperating_AddChild009
 * @tc.desc: Non-CNode parent(UNDEFINED) + Non-CNode child(UNDEFINED), rejected.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperating_AddChild009, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);

    auto parentFrameNode =
        NG::FrameNode::CreateFrameNode(V2::COLUMN_ETS_TAG, 200011, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(parentFrameNode, nullptr);
    auto parentNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(parentFrameNode)));
    ASSERT_NE(parentNode, nullptr);

    auto childFrameNode =
        NG::FrameNode::CreateFrameNode(V2::TEXT_ETS_TAG, 200012, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(childFrameNode, nullptr);
    auto childNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(childFrameNode)));
    ASSERT_NE(childNode, nullptr);

    EXPECT_EQ(nodeAPI->addChild(parentNode, childNode), OHOS::Ace::ERROR_CODE_NATIVE_IMPL_BUILDER_NODE_ERROR);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperating_AddChild010
 * @tc.desc: CNode parent + Non-CNode child(UNDEFINED), rejected.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperating_AddChild010, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);

    auto parentNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(parentNode, nullptr);

    auto childFrameNode =
        NG::FrameNode::CreateFrameNode(V2::TEXT_ETS_TAG, 200013, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(childFrameNode, nullptr);
    auto childNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(childFrameNode)));
    ASSERT_NE(childNode, nullptr);

    EXPECT_EQ(nodeAPI->addChild(parentNode, childNode), OHOS::Ace::ERROR_CODE_NATIVE_IMPL_BUILDER_NODE_ERROR);

    nodeAPI->disposeNode(parentNode);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperating_AddChild011
 * @tc.desc: CNode parent + Non-CNode child(DISABLE), rejected.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperating_AddChild011, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);

    auto parentNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(parentNode, nullptr);

    auto childFrameNode =
        NG::FrameNode::CreateFrameNode(V2::TEXT_ETS_TAG, 200014, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(childFrameNode, nullptr);
    childFrameNode->SetTreeOperatingStatus(NG::TreeOperatingStatus::DISABLE);
    auto childNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(childFrameNode)));
    ASSERT_NE(childNode, nullptr);

    EXPECT_EQ(nodeAPI->addChild(parentNode, childNode), OHOS::Ace::ERROR_CODE_NATIVE_IMPL_BUILDER_NODE_ERROR);

    nodeAPI->disposeNode(parentNode);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperating_AddChild012
 * @tc.desc: Non-CNode parent(UNDEFINED) + Non-CNode child(ENABLE), rejected.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperating_AddChild012, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);

    auto parentFrameNode =
        NG::FrameNode::CreateFrameNode(V2::COLUMN_ETS_TAG, 200015, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(parentFrameNode, nullptr);
    auto parentNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(parentFrameNode)));
    ASSERT_NE(parentNode, nullptr);

    auto childFrameNode =
        NG::FrameNode::CreateFrameNode(V2::TEXT_ETS_TAG, 200016, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(childFrameNode, nullptr);
    childFrameNode->SetTreeOperatingStatus(NG::TreeOperatingStatus::ENABLE);
    auto childNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(childFrameNode)));
    ASSERT_NE(childNode, nullptr);

    EXPECT_EQ(nodeAPI->addChild(parentNode, childNode), OHOS::Ace::ERROR_CODE_NATIVE_IMPL_BUILDER_NODE_ERROR);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperating_AddChild013
 * @tc.desc: Non-CNode parent(UNDEFINED) + Non-CNode child(DISABLE), rejected.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperating_AddChild013, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);

    auto parentFrameNode =
        NG::FrameNode::CreateFrameNode(V2::COLUMN_ETS_TAG, 200017, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(parentFrameNode, nullptr);
    auto parentNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(parentFrameNode)));
    ASSERT_NE(parentNode, nullptr);

    auto childFrameNode =
        NG::FrameNode::CreateFrameNode(V2::TEXT_ETS_TAG, 200018, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(childFrameNode, nullptr);
    childFrameNode->SetTreeOperatingStatus(NG::TreeOperatingStatus::DISABLE);
    auto childNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(childFrameNode)));
    ASSERT_NE(childNode, nullptr);

    EXPECT_EQ(nodeAPI->addChild(parentNode, childNode), OHOS::Ace::ERROR_CODE_NATIVE_IMPL_BUILDER_NODE_ERROR);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperating_AddChild014
 * @tc.desc: Non-CNode parent(DISABLE) + Non-CNode child(ENABLE), rejected.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperating_AddChild014, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);

    auto parentFrameNode =
        NG::FrameNode::CreateFrameNode(V2::COLUMN_ETS_TAG, 200019, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(parentFrameNode, nullptr);
    parentFrameNode->SetTreeOperatingStatus(NG::TreeOperatingStatus::DISABLE);
    auto parentNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(parentFrameNode)));
    ASSERT_NE(parentNode, nullptr);

    auto childFrameNode =
        NG::FrameNode::CreateFrameNode(V2::TEXT_ETS_TAG, 200020, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(childFrameNode, nullptr);
    childFrameNode->SetTreeOperatingStatus(NG::TreeOperatingStatus::ENABLE);
    auto childNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(childFrameNode)));
    ASSERT_NE(childNode, nullptr);

    EXPECT_EQ(nodeAPI->addChild(parentNode, childNode), OHOS::Ace::ERROR_CODE_NATIVE_IMPL_BUILDER_NODE_ERROR);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperating_AddChild015
 * @tc.desc: Non-CNode parent(DISABLE) + Non-CNode child(UNDEFINED), rejected.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperating_AddChild015, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);

    auto parentFrameNode =
        NG::FrameNode::CreateFrameNode(V2::COLUMN_ETS_TAG, 200021, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(parentFrameNode, nullptr);
    parentFrameNode->SetTreeOperatingStatus(NG::TreeOperatingStatus::DISABLE);
    auto parentNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(parentFrameNode)));
    ASSERT_NE(parentNode, nullptr);

    auto childFrameNode =
        NG::FrameNode::CreateFrameNode(V2::TEXT_ETS_TAG, 200022, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(childFrameNode, nullptr);
    auto childNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(childFrameNode)));
    ASSERT_NE(childNode, nullptr);

    EXPECT_EQ(nodeAPI->addChild(parentNode, childNode), OHOS::Ace::ERROR_CODE_NATIVE_IMPL_BUILDER_NODE_ERROR);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperating_AddChild016
 * @tc.desc: Non-CNode parent(DISABLE) + Non-CNode child(DISABLE), rejected.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperating_AddChild016, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);

    auto parentFrameNode =
        NG::FrameNode::CreateFrameNode(V2::COLUMN_ETS_TAG, 200023, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(parentFrameNode, nullptr);
    parentFrameNode->SetTreeOperatingStatus(NG::TreeOperatingStatus::DISABLE);
    auto parentNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(parentFrameNode)));
    ASSERT_NE(parentNode, nullptr);

    auto childFrameNode =
        NG::FrameNode::CreateFrameNode(V2::TEXT_ETS_TAG, 200024, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(childFrameNode, nullptr);
    childFrameNode->SetTreeOperatingStatus(NG::TreeOperatingStatus::DISABLE);
    auto childNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(childFrameNode)));
    ASSERT_NE(childNode, nullptr);

    EXPECT_EQ(nodeAPI->addChild(parentNode, childNode), OHOS::Ace::ERROR_CODE_NATIVE_IMPL_BUILDER_NODE_ERROR);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperating_RemoveChild001
 * @tc.desc: Non-CNode parent(ENABLE) + CNode child, RemoveChild success.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperating_RemoveChild001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);

    auto parentFrameNode =
        NG::FrameNode::CreateFrameNode(V2::COLUMN_ETS_TAG, 200013, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(parentFrameNode, nullptr);
    parentFrameNode->SetTreeOperatingStatus(NG::TreeOperatingStatus::ENABLE);
    auto parentNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(parentFrameNode)));
    ASSERT_NE(parentNode, nullptr);

    auto childNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(childNode, nullptr);

    ASSERT_EQ(nodeAPI->addChild(parentNode, childNode), OHOS::Ace::ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->removeChild(parentNode, childNode), OHOS::Ace::ERROR_CODE_NO_ERROR);

    nodeAPI->disposeNode(childNode);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperating_RemoveChild002
 * @tc.desc: Non-CNode parent(UNDEFINED) + CNode child, RemoveChild rejected.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperating_RemoveChild002, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);

    auto parentFrameNode =
        NG::FrameNode::CreateFrameNode(V2::COLUMN_ETS_TAG, 200014, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(parentFrameNode, nullptr);
    auto parentNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(parentFrameNode)));
    ASSERT_NE(parentNode, nullptr);

    auto childNode = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(childNode, nullptr);

    EXPECT_EQ(nodeAPI->removeChild(parentNode, childNode), OHOS::Ace::ERROR_CODE_NATIVE_IMPL_BUILDER_NODE_ERROR);

    nodeAPI->disposeNode(childNode);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperating_InsertChildAfter001
 * @tc.desc: Non-CNode parent(ENABLE) + CNode child, InsertChildAfter success.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperating_InsertChildAfter001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);

    auto parentFrameNode =
        NG::FrameNode::CreateFrameNode(V2::COLUMN_ETS_TAG, 200015, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(parentFrameNode, nullptr);
    parentFrameNode->SetTreeOperatingStatus(NG::TreeOperatingStatus::ENABLE);
    auto parentNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(parentFrameNode)));
    ASSERT_NE(parentNode, nullptr);

    auto child1 = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto child2 = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(child1, nullptr);
    ASSERT_NE(child2, nullptr);

    ASSERT_EQ(nodeAPI->addChild(parentNode, child1), OHOS::Ace::ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->insertChildAfter(parentNode, child2, child1), OHOS::Ace::ERROR_CODE_NO_ERROR);

    nodeAPI->removeChild(parentNode, child1);
    nodeAPI->removeChild(parentNode, child2);
    nodeAPI->disposeNode(child1);
    nodeAPI->disposeNode(child2);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperating_InsertChildAfter002
 * @tc.desc: Non-CNode parent(UNDEFINED) + CNode child, InsertChildAfter rejected.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperating_InsertChildAfter002, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);

    auto parentFrameNode =
        NG::FrameNode::CreateFrameNode(V2::COLUMN_ETS_TAG, 200016, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(parentFrameNode, nullptr);
    auto parentNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(parentFrameNode)));
    ASSERT_NE(parentNode, nullptr);

    auto child1 = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto child2 = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(child1, nullptr);
    ASSERT_NE(child2, nullptr);

    EXPECT_EQ(
        nodeAPI->insertChildAfter(parentNode, child2, child1), OHOS::Ace::ERROR_CODE_NATIVE_IMPL_BUILDER_NODE_ERROR);

    nodeAPI->disposeNode(child1);
    nodeAPI->disposeNode(child2);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperating_InsertChildBefore001
 * @tc.desc: Non-CNode parent(ENABLE) + CNode child, InsertChildBefore success.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperating_InsertChildBefore001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);

    auto parentFrameNode =
        NG::FrameNode::CreateFrameNode(V2::COLUMN_ETS_TAG, 200017, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(parentFrameNode, nullptr);
    parentFrameNode->SetTreeOperatingStatus(NG::TreeOperatingStatus::ENABLE);
    auto parentNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(parentFrameNode)));
    ASSERT_NE(parentNode, nullptr);

    auto child1 = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto child2 = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(child1, nullptr);
    ASSERT_NE(child2, nullptr);

    ASSERT_EQ(nodeAPI->addChild(parentNode, child1), OHOS::Ace::ERROR_CODE_NO_ERROR);
    EXPECT_EQ(nodeAPI->insertChildBefore(parentNode, child2, child1), OHOS::Ace::ERROR_CODE_NO_ERROR);

    nodeAPI->removeChild(parentNode, child1);
    nodeAPI->removeChild(parentNode, child2);
    nodeAPI->disposeNode(child1);
    nodeAPI->disposeNode(child2);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperating_InsertChildBefore002
 * @tc.desc: Non-CNode parent(UNDEFINED) + CNode child, InsertChildBefore rejected.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperating_InsertChildBefore002, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);

    auto parentFrameNode =
        NG::FrameNode::CreateFrameNode(V2::COLUMN_ETS_TAG, 200018, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(parentFrameNode, nullptr);
    auto parentNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(parentFrameNode)));
    ASSERT_NE(parentNode, nullptr);

    auto child1 = nodeAPI->createNode(ARKUI_NODE_STACK);
    auto child2 = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(child1, nullptr);
    ASSERT_NE(child2, nullptr);

    EXPECT_EQ(
        nodeAPI->insertChildBefore(parentNode, child2, child1), OHOS::Ace::ERROR_CODE_NATIVE_IMPL_BUILDER_NODE_ERROR);

    nodeAPI->disposeNode(child1);
    nodeAPI->disposeNode(child2);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperating_InsertChildAt001
 * @tc.desc: Non-CNode parent(ENABLE) + CNode child, InsertChildAt success.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperating_InsertChildAt001, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);

    auto parentFrameNode =
        NG::FrameNode::CreateFrameNode(V2::COLUMN_ETS_TAG, 200019, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(parentFrameNode, nullptr);
    parentFrameNode->SetTreeOperatingStatus(NG::TreeOperatingStatus::ENABLE);
    auto parentNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(parentFrameNode)));
    ASSERT_NE(parentNode, nullptr);

    auto child = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(child, nullptr);

    EXPECT_EQ(nodeAPI->insertChildAt(parentNode, child, 0), OHOS::Ace::ERROR_CODE_NO_ERROR);

    nodeAPI->removeChild(parentNode, child);
    nodeAPI->disposeNode(child);
}

/**
 * @tc.name: OH_ArkUI_CrossLanguageTreeOperating_InsertChildAt002
 * @tc.desc: Non-CNode parent(UNDEFINED) + CNode child, InsertChildAt rejected.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_CrossLanguageTreeOperating_InsertChildAt002, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);

    auto parentFrameNode =
        NG::FrameNode::CreateFrameNode(V2::COLUMN_ETS_TAG, 200020, AceType::MakeRefPtr<NG::Pattern>(), true);
    ASSERT_NE(parentFrameNode, nullptr);
    auto parentNode =
        OHOS::Ace::NodeModel::GetArkUINode(reinterpret_cast<ArkUINodeHandle>(AceType::RawPtr(parentFrameNode)));
    ASSERT_NE(parentNode, nullptr);

    auto child = nodeAPI->createNode(ARKUI_NODE_STACK);
    ASSERT_NE(child, nullptr);

    EXPECT_EQ(nodeAPI->insertChildAt(parentNode, child, 0), OHOS::Ace::ERROR_CODE_NATIVE_IMPL_BUILDER_NODE_ERROR);

    nodeAPI->disposeNode(child);
}

/**
 * @tc.name: OH_ArkUI_TextLayoutManager_GetCharacterPositionAtCoordinate
 * @tc.desc: Test OH_ArkUI_TextLayoutManager_GetCharacterPositionAtCoordinate function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_TextLayoutManager_GetCharacterPositionAtCoordinate001, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ArkUI_NodeHandle text = nodeAPI->createNode(ARKUI_NODE_TEXT);
    auto* layoutManager = nodeAPI->getAttribute(text, NODE_TEXT_LAYOUT_MANAGER);
    if (!layoutManager) {
        return;
    }
    ArkUI_TextLayoutManager* manager = (ArkUI_TextLayoutManager*)layoutManager->object;
    OH_Drawing_PositionAndAffinity* outPos;
    EXPECT_EQ(OH_ArkUI_TextLayoutManager_GetCharacterPositionAtCoordinate(manager, 150, 50, &outPos),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    delete layoutManager;
}

/**
 * @tc.name: OH_ArkUI_TextLayoutManager_GetCharacterPositionAtCoordinate
 * @tc.desc: Test OH_ArkUI_TextLayoutManager_GetCharacterPositionAtCoordinate function.
 * @tc.type: FUNC
 */
HWTEST_F(NativeNodeTest, OH_ArkUI_TextLayoutManager_GetCharacterPositionAtCoordinate002, TestSize.Level1)
{
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ArkUI_NodeHandle text = nodeAPI->createNode(ARKUI_NODE_TEXT);
    auto* layoutManager = nodeAPI->getAttribute(text, NODE_TEXT_LAYOUT_MANAGER);
    if (!layoutManager) {
        return;
    }
    ArkUI_TextLayoutManager* manager = (ArkUI_TextLayoutManager*)layoutManager->object;
    OH_Drawing_PositionAndAffinity* outPos;
    EXPECT_EQ(OH_ArkUI_TextLayoutManager_GetCharacterPositionAtCoordinate(manager, 200, 100, &outPos),
        ARKUI_ERROR_CODE_PARAM_INVALID);
    delete layoutManager;
}
namespace {
constexpr int32_t TEST_INVALID_EVENT_TYPE = -1;
constexpr int32_t TEST_WRONG_CATEGORY = 999;
}

HWTEST_F(NativeNodeTest, DragEvent_GetDisplayId_NullDisplayId, TestSize.Level1)
{
    auto result = OH_ArkUI_DragEvent_GetDisplayId(nullptr, nullptr);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

HWTEST_F(NativeNodeTest, DragEvent_GetDragSource_NullBundleName, TestSize.Level1)
{
    ArkUIDragEvent dragEvent = {};
    auto result = OH_ArkUI_DragEvent_GetDragSource(
        reinterpret_cast<ArkUI_DragEvent*>(&dragEvent), nullptr, 100);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

HWTEST_F(NativeNodeTest, DragEvent_GetDragSource_NullDragEvent, TestSize.Level1)
{
    char bundle[100] = { 0 };
    auto result = OH_ArkUI_DragEvent_GetDragSource(nullptr, bundle, 100);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

HWTEST_F(NativeNodeTest, DragEvent_IsRemote_NullIsRemote, TestSize.Level1)
{
    ArkUIDragEvent dragEvent = {};
    auto result = OH_ArkUI_DragEvent_IsRemote(
        reinterpret_cast<ArkUI_DragEvent*>(&dragEvent), nullptr);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

HWTEST_F(NativeNodeTest, DragEvent_IsRemote_NullDragEvent, TestSize.Level1)
{
    bool isRemote = false;
    auto result = OH_ArkUI_DragEvent_IsRemote(nullptr, &isRemote);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

HWTEST_F(NativeNodeTest, CreateDragActionWithNode_NullNode, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto result = OH_ArkUI_CreateDragActionWithNode(nullptr);
    EXPECT_EQ(result, nullptr);
}

HWTEST_F(NativeNodeTest, CreateDragActionWithContext_NullUiContext, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto result = OH_ArkUI_CreateDragActionWithContext(nullptr);
    EXPECT_EQ(result, nullptr);
}

HWTEST_F(NativeNodeTest, DragAction_SetDataLoadParams_NullDataLoadParams, TestSize.Level1)
{
    ArkUIDragAction dragAction = {};
    auto result = OH_ArkUI_DragAction_SetDataLoadParams(
        reinterpret_cast<ArkUI_DragAction*>(&dragAction), nullptr);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

HWTEST_F(NativeNodeTest, DragAction_SetDataLoadParams_NullDragActions, TestSize.Level1)
{
    auto result = OH_ArkUI_DragAction_SetDataLoadParams(nullptr, nullptr);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

HWTEST_F(NativeNodeTest, DragAction_UnregisterStatusListener_NullDragAction, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    OH_ArkUI_DragAction_UnregisterStatusListener(nullptr);
}

HWTEST_F(NativeNodeTest, NodeEvent_GetPreDragStatus_WrongCategory, TestSize.Level1)
{
    ArkUI_NodeEvent nodeEvent = {};
    ArkUINodeEvent originEvent = {};
    nodeEvent.category = TEST_WRONG_CATEGORY;
    nodeEvent.origin = &originEvent;
    auto result = OH_ArkUI_NodeEvent_GetPreDragStatus(&nodeEvent);
    EXPECT_EQ(result, ArkUI_PreDragStatus::ARKUI_PRE_DRAG_STATUS_UNKNOWN);
}

HWTEST_F(NativeNodeTest, DragEvent_SetDataLoadParams_NullDataLoadParams, TestSize.Level1)
{
    ArkUIDragEvent dragEvent = {};
    auto result = OH_ArkUI_DragEvent_SetDataLoadParams(
        reinterpret_cast<ArkUI_DragEvent*>(&dragEvent), nullptr);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

HWTEST_F(NativeNodeTest, DragEvent_SetDataLoadParams_NullDragEvent, TestSize.Level1)
{
    auto result = OH_ArkUI_DragEvent_SetDataLoadParams(nullptr, nullptr);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

HWTEST_F(NativeNodeTest, EnableDropDisallowedBadge_NullUiContext, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto result = OH_ArkUI_EnableDropDisallowedBadge(nullptr, true);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

HWTEST_F(NativeNodeTest, KeyEvent_Dispatch_NullEvent, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    ArkUI_NodeHandle node = nodeAPI->createNode(ARKUI_NODE_COLUMN);
    ASSERT_NE(node, nullptr);
    OH_ArkUI_KeyEvent_Dispatch(node, nullptr);
    nodeAPI->disposeNode(node);
}

HWTEST_F(NativeNodeTest, KeyEvent_IsNumLockOn_NullState, TestSize.Level1)
{
    ArkUIKeyEvent keyEvent = {};
    ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_KEY, C_KEY_EVENT_ID, &keyEvent, false };
    auto result = OH_ArkUI_KeyEvent_IsNumLockOn(&event, nullptr);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

HWTEST_F(NativeNodeTest, KeyEvent_IsCapsLockOn_NullState, TestSize.Level1)
{
    ArkUIKeyEvent keyEvent = {};
    ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_KEY, C_KEY_EVENT_ID, &keyEvent, false };
    auto result = OH_ArkUI_KeyEvent_IsCapsLockOn(&event, nullptr);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

HWTEST_F(NativeNodeTest, KeyEvent_IsScrollLockOn_NullState, TestSize.Level1)
{
    ArkUIKeyEvent keyEvent = {};
    ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_KEY, C_KEY_EVENT_ID, &keyEvent, false };
    auto result = OH_ArkUI_KeyEvent_IsScrollLockOn(&event, nullptr);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

HWTEST_F(NativeNodeTest, TouchTestInfo_GetTouchTestInfoList_NullArray, TestSize.Level1)
{
    ArkUITouchTestInfo info = {};
    auto tinfo = reinterpret_cast<ArkUI_TouchTestInfo*>(&info);
    int32_t size = 0;
    auto result = OH_ArkUI_TouchTestInfo_GetTouchTestInfoList(tinfo, nullptr, &size);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

HWTEST_F(NativeNodeTest, TouchTestInfo_GetTouchTestInfoList_NullSize, TestSize.Level1)
{
    ArkUITouchTestInfo info = {};
    auto tinfo = reinterpret_cast<ArkUI_TouchTestInfo*>(&info);
    ArkUI_TouchTestInfoItemArray array = nullptr;
    auto result = OH_ArkUI_TouchTestInfo_GetTouchTestInfoList(tinfo, &array, nullptr);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

HWTEST_F(NativeNodeTest, NodeEvent_GetEventType_InvalidKind, TestSize.Level1)
{
    ArkUI_NodeEvent event = {};
    event.kind = TEST_INVALID_EVENT_TYPE;
    auto result = OH_ArkUI_NodeEvent_GetEventType(&event);
    EXPECT_EQ(result, ArkUI_NodeEventType::NODE_TOUCH_EVENT);
}

HWTEST_F(NativeNodeTest, NodeEvent_GetInputEvent_WrongCategory, TestSize.Level1)
{
    ArkUI_NodeEvent event = {};
    event.category = TEST_WRONG_CATEGORY;
    event.origin = nullptr;
    auto result = OH_ArkUI_NodeEvent_GetInputEvent(&event);
    EXPECT_EQ(result, nullptr);
}

HWTEST_F(NativeNodeTest, NodeEvent_GetNodeComponentEvent_WrongCategory, TestSize.Level1)
{
    ArkUI_NodeEvent event = {};
    event.category = TEST_WRONG_CATEGORY;
    event.origin = nullptr;
    auto result = OH_ArkUI_NodeEvent_GetNodeComponentEvent(&event);
    EXPECT_EQ(result, nullptr);
}

HWTEST_F(NativeNodeTest, NodeEvent_GetNodeComponentEvent_NullOriginEvent, TestSize.Level1)
{
    ArkUI_NodeEvent event = {};
    event.category = static_cast<int32_t>(NODE_EVENT_CATEGORY_COMPONENT_EVENT);
    event.origin = nullptr;
    auto result = OH_ArkUI_NodeEvent_GetNodeComponentEvent(&event);
    EXPECT_EQ(result, nullptr);
}

HWTEST_F(NativeNodeTest, NodeEvent_GetStringAsyncEvent_WrongCategory, TestSize.Level1)
{
    ArkUI_NodeEvent event = {};
    event.category = TEST_WRONG_CATEGORY;
    event.origin = nullptr;
    auto result = OH_ArkUI_NodeEvent_GetStringAsyncEvent(&event);
    EXPECT_EQ(result, nullptr);
}

HWTEST_F(NativeNodeTest, NodeEvent_GetStringAsyncEvent_NullOriginEvent, TestSize.Level1)
{
    ArkUI_NodeEvent event = {};
    event.category = static_cast<int32_t>(NODE_EVENT_CATEGORY_STRING_ASYNC_EVENT);
    event.origin = nullptr;
    auto result = OH_ArkUI_NodeEvent_GetStringAsyncEvent(&event);
    EXPECT_EQ(result, nullptr);
}

HWTEST_F(NativeNodeTest, NodeEvent_GetDragEvent_WrongCategory, TestSize.Level1)
{
    ArkUI_NodeEvent event = {};
    event.category = TEST_WRONG_CATEGORY;
    event.origin = nullptr;
    auto result = OH_ArkUI_NodeEvent_GetDragEvent(&event);
    EXPECT_EQ(result, nullptr);
}

HWTEST_F(NativeNodeTest, NodeEvent_GetDragEvent_NullOriginEvent, TestSize.Level1)
{
    ArkUI_NodeEvent event = {};
    event.category = static_cast<int32_t>(NODE_EVENT_CATEGORY_COMPONENT_EVENT);
    event.origin = nullptr;
    auto result = OH_ArkUI_NodeEvent_GetDragEvent(&event);
    EXPECT_EQ(result, nullptr);
}

HWTEST_F(NativeNodeTest, ParallelInnerGestureEvent_GetUserData_NullEvent, TestSize.Level1)
{
    auto result = OH_ArkUI_ParallelInnerGestureEvent_GetUserData(nullptr);
    EXPECT_EQ(result, nullptr);
}

HWTEST_F(NativeNodeTest, ParallelInnerGestureEvent_GetCurrentRecognizer_NullEvent, TestSize.Level1)
{
    auto result = OH_ArkUI_ParallelInnerGestureEvent_GetCurrentRecognizer(nullptr);
    EXPECT_EQ(result, nullptr);
}

HWTEST_F(NativeNodeTest, PanGesture_SetDistanceMap_NullToolTypeArray, TestSize.Level1)
{
    ArkUIGestureRecognizer recognizer = {};
    recognizer.type = PAN_GESTURE;
    recognizer.gesture = nullptr;
    double distances[] = { 1.0 };
    auto result = OH_ArkUI_PanGesture_SetDistanceMap(
        reinterpret_cast<ArkUI_GestureRecognizer*>(&recognizer), 1, nullptr, distances);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

HWTEST_F(NativeNodeTest, PanGesture_SetDistanceMap_NullDistanceArray, TestSize.Level1)
{
    ArkUIGestureRecognizer recognizer = {};
    recognizer.type = PAN_GESTURE;
    recognizer.gesture = nullptr;
    int toolTypes[] = { 0 };
    auto result = OH_ArkUI_PanGesture_SetDistanceMap(
        reinterpret_cast<ArkUI_GestureRecognizer*>(&recognizer), 1, toolTypes, nullptr);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

HWTEST_F(NativeNodeTest, PanGesture_SetDistanceMap_NullGesture, TestSize.Level1)
{
    ArkUIGestureRecognizer recognizer = {};
    recognizer.type = PAN_GESTURE;
    recognizer.gesture = nullptr;
    int toolTypes[] = { 0 };
    double distances[] = { 1.0 };
    auto result = OH_ArkUI_PanGesture_SetDistanceMap(
        reinterpret_cast<ArkUI_GestureRecognizer*>(&recognizer), 1, toolTypes, distances);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

HWTEST_F(NativeNodeTest, PreventGestureRecognizerBegin_NullGestureRecognizer, TestSize.Level1)
{
    ArkUIGestureRecognizer recognizer = {};
    recognizer.gesture = nullptr;
    auto result = OH_ArkUI_PreventGestureRecognizerBegin(
        reinterpret_cast<ArkUI_GestureRecognizer*>(&recognizer));
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

HWTEST_F(NativeNodeTest, SetTouchTestDoneCallback_NullNode, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto result = OH_ArkUI_SetTouchTestDoneCallback(nullptr, nullptr, nullptr);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

HWTEST_F(NativeNodeTest, PanGesture_GetDistanceByToolType_NullDistance, TestSize.Level1)
{
    ArkUIGestureRecognizer recognizer = {};
    recognizer.type = PAN_GESTURE;
    recognizer.gesture = nullptr;
    auto result = OH_ArkUI_PanGesture_GetDistanceByToolType(
        reinterpret_cast<ArkUI_GestureRecognizer*>(&recognizer), 0, nullptr);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

HWTEST_F(NativeNodeTest, PanGesture_GetDistanceByToolType_NullGestureRecognizer, TestSize.Level1)
{
    ArkUIGestureRecognizer recognizer = {};
    recognizer.type = PAN_GESTURE;
    recognizer.gesture = nullptr;
    double distance = 0.0;
    auto result = OH_ArkUI_PanGesture_GetDistanceByToolType(
        reinterpret_cast<ArkUI_GestureRecognizer*>(&recognizer), 0, &distance);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

HWTEST_F(NativeNodeTest, FocusRequest_NullNode, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto result = OH_ArkUI_FocusRequest(nullptr);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_FOCUS_NON_EXISTENT);
}

HWTEST_F(NativeNodeTest, FocusClear_NullUiContext, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    OH_ArkUI_FocusClear(nullptr);
}

HWTEST_F(NativeNodeTest, FocusActivate_NullUiContext, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    OH_ArkUI_FocusActivate(nullptr, true, false);
}

HWTEST_F(NativeNodeTest, FocusActivate_ActiveTrue_AutoInactiveTrue, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_Context mockContext;
    mockContext.id = 1;
    OH_ArkUI_FocusActivate(&mockContext, true, true);
}

HWTEST_F(NativeNodeTest, FocusActivate_ActiveTrue_AutoInactiveFalse, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_Context mockContext;
    mockContext.id = 1;
    OH_ArkUI_FocusActivate(&mockContext, true, false);
}

HWTEST_F(NativeNodeTest, FocusActivate_ActiveFalse_AutoInactiveTrue, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_Context mockContext;
    mockContext.id = 1;
    OH_ArkUI_FocusActivate(&mockContext, false, true);
}

HWTEST_F(NativeNodeTest, FocusActivate_ActiveFalse_AutoInactiveFalse, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_Context mockContext;
    mockContext.id = 1;
    OH_ArkUI_FocusActivate(&mockContext, false, false);
}

HWTEST_F(NativeNodeTest, FocusSetAutoTransfer_NullUiContext, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    OH_ArkUI_FocusSetAutoTransfer(nullptr, true);
}

HWTEST_F(NativeNodeTest, FocusSetAutoTransfer_True, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_Context mockContext;
    mockContext.id = 1;
    OH_ArkUI_FocusSetAutoTransfer(&mockContext, true);
}

HWTEST_F(NativeNodeTest, FocusSetAutoTransfer_False, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_Context mockContext;
    mockContext.id = 1;
    OH_ArkUI_FocusSetAutoTransfer(&mockContext, false);
}

HWTEST_F(NativeNodeTest, FocusSetKeyProcessingMode_NullUiContext, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    OH_ArkUI_FocusSetKeyProcessingMode(nullptr, ARKUI_KEY_PROCESSING_MODE_FOCUS_NAVIGATION);
}

HWTEST_F(NativeNodeTest, FocusSetKeyProcessingMode_FocusNavigation, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_Context mockContext;
    mockContext.id = 1;
    OH_ArkUI_FocusSetKeyProcessingMode(&mockContext, ARKUI_KEY_PROCESSING_MODE_FOCUS_NAVIGATION);
}

HWTEST_F(NativeNodeTest, FocusSetKeyProcessingMode_FocusAncestorEvent, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_Context mockContext;
    mockContext.id = 1;
    OH_ArkUI_FocusSetKeyProcessingMode(&mockContext, ARKUI_KEY_PROCESSING_MODE_FOCUS_ANCESTOR_EVENT);
}

HWTEST_F(NativeNodeTest, FocusSetKeyProcessingMode_InvalidMode, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    ArkUI_Context mockContext;
    mockContext.id = 1;
    OH_ArkUI_FocusSetKeyProcessingMode(&mockContext, static_cast<ArkUI_KeyProcessingMode>(99));
}

HWTEST_F(NativeNodeTest, VisibleAreaEventOptions_GetMeasureFromViewport_NullOption, TestSize.Level1)
{
    auto result = OH_ArkUI_VisibleAreaEventOptions_GetMeasureFromViewport(nullptr);
    EXPECT_EQ(result, false);
}

HWTEST_F(NativeNodeTest, CreateSnapshotOptions_Normal, TestSize.Level1)
{
    auto result = OH_ArkUI_CreateSnapshotOptions();
    EXPECT_NE(result, nullptr);
}

HWTEST_F(NativeNodeTest, DragPreviewOption_CreateAndDispose_Normal, TestSize.Level1)
{
    auto* option = OH_ArkUI_CreateDragPreviewOption();
    ASSERT_NE(option, nullptr);
    OH_ArkUI_DragPreviewOption_Dispose(option);
}

HWTEST_F(NativeNodeTest, NodeEvent_GetNodeComponentEvent_Normal, TestSize.Level1)
{
    ArkUI_NodeEvent event = {};
    ArkUINodeEvent originEvent = {};
    event.category = static_cast<int32_t>(NODE_EVENT_CATEGORY_COMPONENT_EVENT);
    event.origin = &originEvent;
    auto result = OH_ArkUI_NodeEvent_GetNodeComponentEvent(&event);
    EXPECT_NE(result, nullptr);
}

HWTEST_F(NativeNodeTest, NodeEvent_GetStringAsyncEvent_Normal, TestSize.Level1)
{
    ArkUI_NodeEvent event = {};
    ArkUINodeEvent originEvent = {};
    event.category = static_cast<int32_t>(NODE_EVENT_CATEGORY_STRING_ASYNC_EVENT);
    event.origin = &originEvent;
    auto result = OH_ArkUI_NodeEvent_GetStringAsyncEvent(&event);
    EXPECT_NE(result, nullptr);
}

HWTEST_F(NativeNodeTest, NodeEvent_GetDragEvent_Normal, TestSize.Level1)
{
    ArkUI_NodeEvent event = {};
    ArkUINodeEvent originEvent = {};
    event.category = static_cast<int32_t>(NODE_EVENT_CATEGORY_COMPONENT_EVENT);
    event.origin = &originEvent;
    auto result = OH_ArkUI_NodeEvent_GetDragEvent(&event);
    EXPECT_NE(result, nullptr);
}

HWTEST_F(NativeNodeTest, DragEvent_GetDisplayId_Normal, TestSize.Level1)
{
    ArkUIDragEvent dragEvent = {};
    dragEvent.displayId = 42;
    int32_t displayId = -1;
    auto result = OH_ArkUI_DragEvent_GetDisplayId(
        reinterpret_cast<ArkUI_DragEvent*>(&dragEvent), &displayId);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(displayId, 42);
}

HWTEST_F(NativeNodeTest, DragEvent_GetDragSource_Normal, TestSize.Level1)
{
    ArkUIDragEvent dragEvent = {};
    const char bundleNameSrc[] = "com.test.bundle";
    for (size_t i = 0; i < sizeof(bundleNameSrc); ++i) {
        dragEvent.bundleName[i] = bundleNameSrc[i];
    }
    char bundleName[100] = { 0 };
    auto result = OH_ArkUI_DragEvent_GetDragSource(
        reinterpret_cast<ArkUI_DragEvent*>(&dragEvent), bundleName, 100);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_STREQ(bundleName, "com.test.bundle");
}

HWTEST_F(NativeNodeTest, DragEvent_IsRemote_Normal, TestSize.Level1)
{
    ArkUIDragEvent dragEvent = {};
    dragEvent.isRemoteDev = true;
    bool isRemote = false;
    auto result = OH_ArkUI_DragEvent_IsRemote(
        reinterpret_cast<ArkUI_DragEvent*>(&dragEvent), &isRemote);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(isRemote, true);
}

HWTEST_F(NativeNodeTest, KeyEvent_IsNumLockOn_Normal, TestSize.Level1)
{
    ArkUIKeyEvent keyEvent = {};
    keyEvent.isNumLockOn = true;
    ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_KEY, C_KEY_EVENT_ID, &keyEvent, false };
    bool state = false;
    auto result = OH_ArkUI_KeyEvent_IsNumLockOn(&event, &state);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(state, true);
}

HWTEST_F(NativeNodeTest, KeyEvent_IsCapsLockOn_Normal, TestSize.Level1)
{
    ArkUIKeyEvent keyEvent = {};
    keyEvent.isCapsLockOn = true;
    ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_KEY, C_KEY_EVENT_ID, &keyEvent, false };
    bool state = false;
    auto result = OH_ArkUI_KeyEvent_IsCapsLockOn(&event, &state);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(state, true);
}

HWTEST_F(NativeNodeTest, KeyEvent_IsScrollLockOn_Normal, TestSize.Level1)
{
    ArkUIKeyEvent keyEvent = {};
    keyEvent.isScrollLockOn = true;
    ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_KEY, C_KEY_EVENT_ID, &keyEvent, false };
    bool state = false;
    auto result = OH_ArkUI_KeyEvent_IsScrollLockOn(&event, &state);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
    EXPECT_EQ(state, true);
}

HWTEST_F(NativeNodeTest, ParallelInnerGestureEvent_GetUserData_Normal, TestSize.Level1)
{
    ArkUIParallelInnerGestureEvent event = {};
    int32_t userData = 42;
    event.userData = &userData;
    auto result = OH_ArkUI_ParallelInnerGestureEvent_GetUserData(
        reinterpret_cast<ArkUI_ParallelInnerGestureEvent*>(&event));
    EXPECT_NE(result, nullptr);
    EXPECT_EQ(*static_cast<int32_t*>(result), 42);
}

HWTEST_F(NativeNodeTest, ParallelInnerGestureEvent_GetCurrentRecognizer_Normal, TestSize.Level1)
{
    ArkUIParallelInnerGestureEvent event = {};
    ArkUIGestureRecognizer recognizer = {};
    event.current = &recognizer;
    auto result = OH_ArkUI_ParallelInnerGestureEvent_GetCurrentRecognizer(
        reinterpret_cast<ArkUI_ParallelInnerGestureEvent*>(&event));
    EXPECT_NE(result, nullptr);
}

HWTEST_F(NativeNodeTest, TouchTestInfo_GetTouchTestInfoList_NullInfo, TestSize.Level1)
{
    ArkUI_TouchTestInfoItemArray array = nullptr;
    int32_t size = 0;
    auto result = OH_ArkUI_TouchTestInfo_GetTouchTestInfoList(nullptr, &array, &size);
    EXPECT_EQ(result, ARKUI_ERROR_CODE_PARAM_INVALID);
}

HWTEST_F(NativeNodeTest, NodeEvent_GetPreDragStatus_NullNodeEvent, TestSize.Level1)
{
    auto result = OH_ArkUI_NodeEvent_GetPreDragStatus(nullptr);
    EXPECT_EQ(result, ArkUI_PreDragStatus::ARKUI_PRE_DRAG_STATUS_UNKNOWN);
}

HWTEST_F(NativeNodeTest, KeyEvent_Dispatch_NullKeyEvent, TestSize.Level1)
{
    ASSERT_TRUE(OHOS::Ace::NodeModel::InitialFullImpl());
    auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
        OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
    ASSERT_NE(nodeAPI, nullptr);
    ArkUI_NodeHandle node = nodeAPI->createNode(ARKUI_NODE_COLUMN);
    ASSERT_NE(node, nullptr);
    ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_KEY, C_KEY_EVENT_ID, nullptr, false };
    OH_ArkUI_KeyEvent_Dispatch(node, &event);
    nodeAPI->disposeNode(node);
}

HWTEST_F(NativeNodeTest, HoverEvent_IsHovered_NullEvent, TestSize.Level1)
{
    auto result = OH_ArkUI_HoverEvent_IsHovered(nullptr);
    EXPECT_EQ(result, false);
}

HWTEST_F(NativeNodeTest, HoverEvent_IsHovered_NullHoverEvent, TestSize.Level1)
{
    ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_TOUCH, C_HOVER_EVENT_ID, nullptr, false };
    auto result = OH_ArkUI_HoverEvent_IsHovered(&event);
    EXPECT_EQ(result, false);
}

HWTEST_F(NativeNodeTest, HoverEvent_IsHovered_WrongType, TestSize.Level1)
{
    ArkUITouchEvent touchEvent = {};
    ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_TOUCH, C_TOUCH_EVENT_ID, &touchEvent, false };
    auto result = OH_ArkUI_HoverEvent_IsHovered(&event);
    EXPECT_EQ(result, false);
}

HWTEST_F(NativeNodeTest, HoverEvent_IsHovered_Normal, TestSize.Level1)
{
    ArkUIHoverEvent hoverEvent = {};
    hoverEvent.isHover = true;
    ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_TOUCH, C_HOVER_EVENT_ID, &hoverEvent, false };
    auto result = OH_ArkUI_HoverEvent_IsHovered(&event);
    EXPECT_EQ(result, true);
}

HWTEST_F(NativeNodeTest, GetCoastingAxisEvent_NullEvent, TestSize.Level1)
{
    auto result = OH_ArkUI_UIInputEvent_GetCoastingAxisEvent(nullptr);
    EXPECT_EQ(result, nullptr);
}

HWTEST_F(NativeNodeTest, GetCoastingAxisEvent_NullInputEvent, TestSize.Level1)
{
    ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_AXIS, C_COASTING_AXIS_EVENT_ID, nullptr, false };
    auto result = OH_ArkUI_UIInputEvent_GetCoastingAxisEvent(&event);
    EXPECT_EQ(result, nullptr);
}

HWTEST_F(NativeNodeTest, GetCoastingAxisEvent_WrongType, TestSize.Level1)
{
    ArkUITouchEvent touchEvent = {};
    ArkUI_UIInputEvent event = { ARKUI_UIINPUTEVENT_TYPE_TOUCH, C_TOUCH_EVENT_ID, &touchEvent, false };
    auto result = OH_ArkUI_UIInputEvent_GetCoastingAxisEvent(&event);
    EXPECT_EQ(result, nullptr);
}

HWTEST_F(NativeNodeTest, CoastingAxisEvent_GetPhase_NullEvent, TestSize.Level1)
{
    auto result = OH_ArkUI_CoastingAxisEvent_GetPhase(nullptr);
    EXPECT_EQ(result, ARKUI_COASTING_AXIS_EVENT_PHASE_NONE);
}

HWTEST_F(NativeNodeTest, CoastingAxisEvent_GetPhase_NullCoastingEvent, TestSize.Level1)
{
    ArkUICoastingAxisEvent event = {};
    auto result = OH_ArkUI_CoastingAxisEvent_GetPhase(
        reinterpret_cast<ArkUI_CoastingAxisEvent*>(&event));
    EXPECT_EQ(result, ARKUI_COASTING_AXIS_EVENT_PHASE_NONE);
}

HWTEST_F(NativeNodeTest, GetGestureRecognizerEnabled_NullRecognizer, TestSize.Level1)
{
    auto result = OH_ArkUI_GetGestureRecognizerEnabled(nullptr);
    EXPECT_EQ(result, false);
}

HWTEST_F(NativeNodeTest, IsBuiltInGesture_NullRecognizer, TestSize.Level1)
{
    auto result = OH_ArkUI_IsBuiltInGesture(nullptr);
    EXPECT_EQ(result, false);
}

HWTEST_F(NativeNodeTest, IsGestureRecognizerValid_NullRecognizer, TestSize.Level1)
{
    auto result = OH_ArkUI_IsGestureRecognizerValid(nullptr);
    EXPECT_EQ(result, false);
}

HWTEST_F(NativeNodeTest, GestureEvent_GetNode_NullEvent, TestSize.Level1)
{
    auto result = OH_ArkUI_GestureEvent_GetNode(nullptr);
    EXPECT_EQ(result, nullptr);
}

HWTEST_F(NativeNodeTest, GestureInterrupter_GetUserData_NullEvent, TestSize.Level1)
{
    auto result = OH_ArkUI_GestureInterrupter_GetUserData(nullptr);
    EXPECT_EQ(result, nullptr);
}

HWTEST_F(NativeNodeTest, VisibleAreaEventOptions_Create_Normal, TestSize.Level1)
{
    auto* option = OH_ArkUI_VisibleAreaEventOptions_Create();
    ASSERT_NE(option, nullptr);
    OH_ArkUI_VisibleAreaEventOptions_Dispose(option);
}

HWTEST_F(NativeNodeTest, VisibleAreaEventOptions_GetMeasureFromViewport_Normal, TestSize.Level1)
{
    auto* option = OH_ArkUI_VisibleAreaEventOptions_Create();
    ASSERT_NE(option, nullptr);
    OH_ArkUI_VisibleAreaEventOptions_SetMeasureFromViewport(option, true);
    auto result = OH_ArkUI_VisibleAreaEventOptions_GetMeasureFromViewport(option);
    EXPECT_EQ(result, true);
    OH_ArkUI_VisibleAreaEventOptions_Dispose(option);
}

HWTEST_F(NativeNodeTest, CreateDragPreviewOption_Normal, TestSize.Level1)
{
    auto* option = OH_ArkUI_CreateDragPreviewOption();
    ASSERT_NE(option, nullptr);
    OH_ArkUI_DragPreviewOption_Dispose(option);
}

HWTEST_F(NativeNodeTest, TouchRecognizer_GetNodeHandle_NullRecognizer, TestSize.Level1)
{
    auto result = OH_ArkUI_TouchRecognizer_GetNodeHandle(nullptr);
    EXPECT_EQ(result, nullptr);
}

HWTEST_F(NativeNodeTest, NodeEvent_GetEventType_NullEvent, TestSize.Level1)
{
    auto result = OH_ArkUI_NodeEvent_GetEventType(nullptr);
    EXPECT_EQ(result, ArkUI_NodeEventType::NODE_TOUCH_EVENT);
}

HWTEST_F(NativeNodeTest, NodeEvent_GetNodeHandle_NullEvent, TestSize.Level1)
{
    auto result = OH_ArkUI_NodeEvent_GetNodeHandle(nullptr);
    EXPECT_EQ(result, nullptr);
}

HWTEST_F(NativeNodeTest, NodeEvent_GetInputEvent_NullEvent, TestSize.Level1)
{
    auto result = OH_ArkUI_NodeEvent_GetInputEvent(nullptr);
    EXPECT_EQ(result, nullptr);
}

HWTEST_F(NativeNodeTest, NodeEvent_GetInputEvent_Normal, TestSize.Level1)
{
    ArkUI_NodeEvent event = {};
    ArkUINodeEvent originEvent = {};
    event.category = static_cast<int32_t>(NODE_EVENT_CATEGORY_INPUT_EVENT);
    event.origin = &originEvent;
    auto result = OH_ArkUI_NodeEvent_GetInputEvent(&event);
    EXPECT_NE(result, nullptr);
}

HWTEST_F(NativeNodeTest, NodeEvent_GetUserData_NullEvent, TestSize.Level1)
{
    auto result = OH_ArkUI_NodeEvent_GetUserData(nullptr);
    EXPECT_EQ(result, nullptr);
}

HWTEST_F(NativeNodeTest, NodeEvent_GetPreDragStatus_NullOriginEvent, TestSize.Level1)
{
    ArkUI_NodeEvent event = {};
    event.category = static_cast<int32_t>(NODE_EVENT_CATEGORY_COMPONENT_EVENT);
    event.origin = nullptr;
    auto result = OH_ArkUI_NodeEvent_GetPreDragStatus(&event);
    EXPECT_EQ(result, ArkUI_PreDragStatus::ARKUI_PRE_DRAG_STATUS_UNKNOWN);
}

HWTEST_F(NativeNodeTest, DragAndDropInfo_GetDragStatus_NullInfo, TestSize.Level1)
{
    auto result = OH_ArkUI_DragAndDropInfo_GetDragStatus(nullptr);
    EXPECT_EQ(result, ArkUI_DragStatus::ARKUI_DRAG_STATUS_UNKNOWN);
}

HWTEST_F(NativeNodeTest, DragAndDropInfo_GetDragEvent_NullInfo, TestSize.Level1)
{
    auto result = OH_ArkUI_DragAndDropInfo_GetDragEvent(nullptr);
    EXPECT_EQ(result, nullptr);
}
} // namespace OHOS::Ace