• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <cstddef>
17 #include <cstdint>
18 #include "gtest/gtest.h"
19 #define private public
20 #define protected public
21 #include "native_interface.h"
22 #include "native_node.h"
23 #include "native_render.h"
24 #include "native_type.h"
25 #include "interfaces/native/node/node_extened.h"
26 #include "interfaces/native/node/node_model.h"
27 #include "interfaces/native/node/render_node.h"
28 #include "interfaces/native/node/styled_string.h"
29 #include "test/mock/base/mock_task_executor.h"
30 #include "test/mock/core/common/mock_container.h"
31 #include "test/mock/core/common/mock_theme_manager.h"
32 #include "test/mock/core/pipeline/mock_pipeline_context.h"
33 #include "frameworks/base/error/error_code.h"
34 #include "frameworks/core/components_ng/base/ui_node.h"
35 
36 using namespace testing;
37 using namespace testing::ext;
38 namespace OHOS::Ace {
39 class NativeRenderNodeTest : public testing::Test {
40 public:
SetUpTestSuite()41     static void SetUpTestSuite()
42     {
43         NG::MockPipelineContext::SetUp();
44         MockContainer::SetUp();
45         MockContainer::Current()->pipelineContext_ = NG::MockPipelineContext::GetCurrent();
46         MockContainer::Current()->taskExecutor_ = AceType::MakeRefPtr<MockTaskExecutor>();
47         MockContainer::Current()->pipelineContext_->taskExecutor_ = MockContainer::Current()->taskExecutor_;
48         auto themeManager = AceType::MakeRefPtr<MockThemeManager>();
49         PipelineBase::GetCurrentContext()->SetThemeManager(themeManager);
50     }
TearDownTestSuite()51     static void TearDownTestSuite()
52     {
53         NG::MockPipelineContext::TearDown();
54         MockContainer::TearDown();
55     }
SetUp()56     void SetUp() {}
TearDown()57     void TearDown() {}
58 };
59 
60 /**
61  * @tc.name: NativeRenderNodeTest001
62  * @tc.desc: Test renderNode function.
63  * @tc.type: FUNC
64  */
65 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest001, TestSize.Level1)
66 {
67     auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
68         OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
69     auto rootCustomNode = nodeAPI->createNode(ARKUI_NODE_CUSTOM);
70     ASSERT_NE(rootCustomNode, nullptr);
71     auto rootRenderNode = OH_ArkUI_RenderNodeUtils_CreateNode();
72     ASSERT_NE(rootRenderNode, nullptr);
73     auto result = OH_ArkUI_RenderNodeUtils_AddRenderNode(rootCustomNode, rootRenderNode);
74     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
75     auto button = nodeAPI->createNode(ARKUI_NODE_BUTTON);
76     result = OH_ArkUI_RenderNodeUtils_AddRenderNode(button, rootRenderNode);
77     ASSERT_EQ(result, ERROR_CODE_PARAM_INVALID);
78     result = OH_ArkUI_RenderNodeUtils_RemoveRenderNode(rootCustomNode, rootRenderNode);
79     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
80 }
81 
82 /**
83  * @tc.name: NativeRenderNodeTest002
84  * @tc.desc: Test renderNode function.
85  * @tc.type: FUNC
86  */
87 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest002, TestSize.Level1)
88 {
89     auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
90         OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
91     auto rootCustomNode = nodeAPI->createNode(ARKUI_NODE_CUSTOM);
92     ASSERT_NE(rootCustomNode, nullptr);
93     auto rootRenderNode = OH_ArkUI_RenderNodeUtils_CreateNode();
94     ASSERT_NE(rootRenderNode, nullptr);
95     auto result = OH_ArkUI_RenderNodeUtils_AddRenderNode(rootCustomNode, rootRenderNode);
96     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
97     result = OH_ArkUI_RenderNodeUtils_ClearRenderNodeChildren(rootCustomNode);
98     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
99 }
100 
101 /**
102  * @tc.name: NativeRenderNodeTest003
103  * @tc.desc: Test renderNode function.
104  * @tc.type: FUNC
105  */
106 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest003, TestSize.Level1)
107 {
108     auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
109         OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
110     auto rootCustomNode = nodeAPI->createNode(ARKUI_NODE_CUSTOM);
111     ASSERT_NE(rootCustomNode, nullptr);
112     auto rootRenderNode = OH_ArkUI_RenderNodeUtils_CreateNode();
113     ASSERT_NE(rootRenderNode, nullptr);
114     auto result = OH_ArkUI_RenderNodeUtils_AddRenderNode(rootCustomNode, rootRenderNode);
115     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
116     result = OH_ArkUI_RenderNodeUtils_Invalidate(rootCustomNode);
117     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
118     auto rsNodeFirstChild = OH_ArkUI_RenderNodeUtils_CreateNode();
119     ASSERT_NE(rsNodeFirstChild, nullptr);
120     auto rsNodeSecondChild = OH_ArkUI_RenderNodeUtils_CreateNode();
121     ASSERT_NE(rsNodeSecondChild, nullptr);
122     auto rsNodeThirdChild = OH_ArkUI_RenderNodeUtils_CreateNode();
123     ASSERT_NE(rsNodeThirdChild, nullptr);
124     result = OH_ArkUI_RenderNodeUtils_AddChild(rootRenderNode, rsNodeFirstChild);
125     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
126     result = OH_ArkUI_RenderNodeUtils_AddChild(rootRenderNode, rsNodeSecondChild);
127     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
128     int count = 0;
129     result = OH_ArkUI_RenderNodeUtils_GetChildrenCount(rootRenderNode, &count);
130     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
131     ASSERT_EQ(count, 2); //2 represents the number of sub-nodes that have been added by the sub-nodes.
132     auto nodeForDispose = OH_ArkUI_RenderNodeUtils_CreateNode();
133     ASSERT_NE(nodeForDispose, nullptr);
134     result = OH_ArkUI_RenderNodeUtils_DisposeNode(nodeForDispose);
135     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
136     OH_ArkUI_RenderNodeUtils_InsertChildAfter(rootRenderNode, rsNodeThirdChild, rsNodeSecondChild);
137     result = OH_ArkUI_RenderNodeUtils_GetChildrenCount(rootRenderNode, &count);
138     ASSERT_EQ(count, 3); //3 represents the number of sub-nodes that have been added by the sub-nodes.
139     OH_ArkUI_RenderNodeUtils_RemoveChild(rootRenderNode, rsNodeThirdChild);
140     OH_ArkUI_RenderNodeUtils_GetChildrenCount(rootRenderNode, &count);
141     ASSERT_EQ(count, 2); //2 represents the number of sub-nodes that have been added by the sub-nodes.
142     OH_ArkUI_RenderNodeUtils_ClearChildren(rootRenderNode);
143     OH_ArkUI_RenderNodeUtils_GetChildrenCount(rootRenderNode, &count);
144     ASSERT_EQ(count, 0); //0 represents the number of sub-nodes that have been added by the sub-nodes.
145 }
146 
147 /**
148  * @tc.name: NativeRenderNodeTest004
149  * @tc.desc: Test renderNode function.
150  * @tc.type: FUNC
151  */
152 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest004, TestSize.Level1)
153 {
154     auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
155         OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
156     auto rootCustomNode = nodeAPI->createNode(ARKUI_NODE_CUSTOM);
157     ASSERT_NE(rootCustomNode, nullptr);
158     auto rootRenderNode = OH_ArkUI_RenderNodeUtils_CreateNode();
159     ASSERT_NE(rootRenderNode, nullptr);
160     auto result = OH_ArkUI_RenderNodeUtils_AddRenderNode(rootCustomNode, rootRenderNode);
161     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
162     auto rsNodeFirstChild = OH_ArkUI_RenderNodeUtils_CreateNode();
163     auto rsNodeSecondChild = OH_ArkUI_RenderNodeUtils_CreateNode();
164     auto rsNodeThirdChild = OH_ArkUI_RenderNodeUtils_CreateNode();
165     OH_ArkUI_RenderNodeUtils_AddChild(rootRenderNode, rsNodeFirstChild);
166     OH_ArkUI_RenderNodeUtils_AddChild(rootRenderNode, rsNodeSecondChild);
167     OH_ArkUI_RenderNodeUtils_AddChild(rootRenderNode, rsNodeThirdChild);
168 
169     OH_ArkUI_RenderNodeUtils_SetSize(rootRenderNode, 300, 300); // size 300 marker node.
170     OH_ArkUI_RenderNodeUtils_SetSize(rsNodeFirstChild, 100, 100); // size 100 marker node.
171     OH_ArkUI_RenderNodeUtils_SetSize(rsNodeSecondChild, 200, 200); // size 200 marker node.
172     OH_ArkUI_RenderNodeUtils_SetSize(rsNodeThirdChild, 250, 250); // size 250 marker node.
173 
174     int w = 0;
175     ArkUI_RenderNodeHandle nodeTemp;
176     result = OH_ArkUI_RenderNodeUtils_GetFirstChild(rootRenderNode, &nodeTemp);
177     OH_ArkUI_RenderNodeUtils_GetSize(nodeTemp, &w, &w);
178     ASSERT_EQ(w, 100); //100 represents rsNodeFirstChild.
179     result = OH_ArkUI_RenderNodeUtils_GetChild(rootRenderNode, 1, &nodeTemp);
180     OH_ArkUI_RenderNodeUtils_GetSize(nodeTemp, &w, &w);
181     ASSERT_EQ(w, 200); //200 represents rsNodeSecondChild.
182     result = OH_ArkUI_RenderNodeUtils_GetNextSibling(rsNodeSecondChild, &nodeTemp);
183     OH_ArkUI_RenderNodeUtils_GetSize(nodeTemp, &w, &w);
184     ASSERT_EQ(w, 250); //250 represents rsNodeThirdChild.
185     result = OH_ArkUI_RenderNodeUtils_GetPreviousSibling(rsNodeSecondChild, &nodeTemp);
186     OH_ArkUI_RenderNodeUtils_GetSize(nodeTemp, &w, &w);
187     ASSERT_EQ(w, 100); //100 represents rsNodeFirstChild.
188 
189     ArkUI_RenderNodeHandle* nodeList;
190     int count = 0;
191     OH_ArkUI_RenderNodeUtils_GetChildren(rootRenderNode, &nodeList, &count);
192     ASSERT_EQ(count, 3); //3 represents the number of sub-nodes that have been added by the sub-nodes.
193     OH_ArkUI_RenderNodeUtils_GetSize(nodeList[0], &w, &w);
194     ASSERT_EQ(w, 100); //100 represents rsNodeFirstChild.
195 }
196 
197 /**
198  * @tc.name: NativeRenderNodeTest005
199  * @tc.desc: Test renderNode function.
200  * @tc.type: FUNC
201  */
202 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest005, TestSize.Level1)
203 {
204     auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
205         OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
206     auto rootCustomNode = nodeAPI->createNode(ARKUI_NODE_CUSTOM);
207     ASSERT_NE(rootCustomNode, nullptr);
208     auto rootRenderNode = OH_ArkUI_RenderNodeUtils_CreateNode();
209     ASSERT_NE(rootRenderNode, nullptr);
210     auto rootRenderNode1 = OH_ArkUI_RenderNodeUtils_CreateNode();
211     ASSERT_NE(rootRenderNode1, nullptr);
212     auto result = OH_ArkUI_RenderNodeUtils_AddRenderNode(rootCustomNode, rootRenderNode);
213     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
214     result = OH_ArkUI_RenderNodeUtils_AddRenderNode(rootCustomNode, rootRenderNode1);
215     ASSERT_EQ(result, ERROR_CODE_CHILD_EXISTED);
216 }
217 
218 /**
219  * @tc.name: NativeRenderNodeTest006
220  * @tc.desc: Test renderNode function.
221  * @tc.type: FUNC
222  */
223 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest006, TestSize.Level1)
224 {
225     auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
226         OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
227     auto rootCustomNode = nodeAPI->createNode(ARKUI_NODE_CUSTOM);
228     ASSERT_NE(rootCustomNode, nullptr);
229     auto rootRenderNode = OH_ArkUI_RenderNodeUtils_CreateNode();
230     ASSERT_NE(rootRenderNode, nullptr);
231     auto rootRenderNode1 = OH_ArkUI_RenderNodeUtils_CreateNode();
232     ASSERT_NE(rootRenderNode1, nullptr);
233     auto result = OH_ArkUI_RenderNodeUtils_AddChild(rootRenderNode, rootRenderNode1);
234     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
235     result = OH_ArkUI_RenderNodeUtils_AddRenderNode(rootCustomNode, rootRenderNode1);
236     ASSERT_EQ(result, ERROR_CODE_RENDER_PARENT_EXISTED);
237 }
238 
239 /**
240  * @tc.name: NativeRenderNodeTest090
241  * @tc.desc: Test CreateFloatProperty and SetFloatPropertyValue functions.
242  * @tc.type: FUNC
243  */
244 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest090, TestSize.Level1)
245 {
246     auto floatProperty = OH_ArkUI_RenderNodeUtils_CreateFloatProperty(2.0f);
247     ASSERT_NE(floatProperty, nullptr);
248     auto result = OH_ArkUI_RenderNodeUtils_SetFloatPropertyValue(floatProperty, 3.0f);
249     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
250     OH_ArkUI_RenderNodeUtils_DisposeFloatProperty(floatProperty);
251 }
252 
253 /**
254  * @tc.name: NativeRenderNodeTest091
255  * @tc.desc: Test GetFloatPropertyValue function.
256  * @tc.type: FUNC
257  */
258 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest091, TestSize.Level1)
259 {
260     auto floatProperty = OH_ArkUI_RenderNodeUtils_CreateFloatProperty(4.0f);
261     ASSERT_NE(floatProperty, nullptr);
262     float value = 0.0f;
263     auto result = OH_ArkUI_RenderNodeUtils_GetFloatPropertyValue(floatProperty, &value);
264     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
265     ASSERT_EQ(value, 4.0f);
266     OH_ArkUI_RenderNodeUtils_DisposeFloatProperty(floatProperty);
267 }
268 
269 /**
270  * @tc.name: NativeRenderNodeTest092
271  * @tc.desc: Test AttachFloatProperty and AttachVector2Property functions.
272  * @tc.type: FUNC
273  */
274 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest092, TestSize.Level1)
275 {
276     auto contentModifier = OH_ArkUI_RenderNodeUtils_CreateContentModifier();
277     ASSERT_NE(contentModifier, nullptr);
278 
279     auto floatProperty = OH_ArkUI_RenderNodeUtils_CreateFloatProperty(1.0f);
280     ASSERT_NE(floatProperty, nullptr);
281     auto result = OH_ArkUI_RenderNodeUtils_AttachFloatProperty(contentModifier, floatProperty);
282     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
283 
284     auto vector2Property = OH_ArkUI_RenderNodeUtils_CreateVector2Property(10.0f, 20.0f);
285     ASSERT_NE(vector2Property, nullptr);
286     result = OH_ArkUI_RenderNodeUtils_AttachVector2Property(contentModifier, vector2Property);
287     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
288 
289     OH_ArkUI_RenderNodeUtils_DisposeVector2Property(vector2Property);
290     OH_ArkUI_RenderNodeUtils_DisposeFloatProperty(floatProperty);
291     OH_ArkUI_RenderNodeUtils_DisposeContentModifier(contentModifier);
292 }
293 
294 /**
295  * @tc.name: NativeRenderNodeTest093
296  * @tc.desc: Test AttachColorProperty and AttachFloatAnimatableProperty functions.
297  * @tc.type: FUNC
298  */
299 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest093, TestSize.Level1)
300 {
301     auto contentModifier = OH_ArkUI_RenderNodeUtils_CreateContentModifier();
302     ASSERT_NE(contentModifier, nullptr);
303 
304     auto colorProperty = OH_ArkUI_RenderNodeUtils_CreateColorProperty(0xFF0000FF);
305     ASSERT_NE(colorProperty, nullptr);
306     auto result = OH_ArkUI_RenderNodeUtils_AttachColorProperty(contentModifier, colorProperty);
307     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
308 
309     auto floatAnimProperty = OH_ArkUI_RenderNodeUtils_CreateFloatAnimatableProperty(2.5f);
310     ASSERT_NE(floatAnimProperty, nullptr);
311     result = OH_ArkUI_RenderNodeUtils_AttachFloatAnimatableProperty(contentModifier, floatAnimProperty);
312     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
313 
314     OH_ArkUI_RenderNodeUtils_DisposeFloatAnimatableProperty(floatAnimProperty);
315     OH_ArkUI_RenderNodeUtils_DisposeColorProperty(colorProperty);
316     OH_ArkUI_RenderNodeUtils_DisposeContentModifier(contentModifier);
317 }
318 
319 /**
320  * @tc.name: NativeRenderNodeTest094
321  * @tc.desc: Test AttachVector2AnimatableProperty and AttachColorAnimatableProperty functions.
322  * @tc.type: FUNC
323  */
324 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest094, TestSize.Level1)
325 {
326     auto contentModifier = OH_ArkUI_RenderNodeUtils_CreateContentModifier();
327     ASSERT_NE(contentModifier, nullptr);
328 
329     auto vector2AnimProperty = OH_ArkUI_RenderNodeUtils_CreateVector2AnimatableProperty(100.0f, 200.0f);
330     ASSERT_NE(vector2AnimProperty, nullptr);
331     auto result = OH_ArkUI_RenderNodeUtils_AttachVector2AnimatableProperty(contentModifier, vector2AnimProperty);
332     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
333 
334     auto colorAnimProperty = OH_ArkUI_RenderNodeUtils_CreateColorAnimatableProperty(0xFF00FFFF);
335     ASSERT_NE(colorAnimProperty, nullptr);
336     result = OH_ArkUI_RenderNodeUtils_AttachColorAnimatableProperty(contentModifier, colorAnimProperty);
337     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
338 
339     OH_ArkUI_RenderNodeUtils_DisposeColorAnimatableProperty(colorAnimProperty);
340     OH_ArkUI_RenderNodeUtils_DisposeVector2AnimatableProperty(vector2AnimProperty);
341     OH_ArkUI_RenderNodeUtils_DisposeContentModifier(contentModifier);
342 }
343 
344 /**
345  * @tc.name: NativeRenderNodeTest100
346  * @tc.desc: Test DisposeFloatProperty function.
347  * @tc.type: FUNC
348  */
349 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest100, TestSize.Level1)
350 {
351     auto floatProperty = OH_ArkUI_RenderNodeUtils_CreateFloatProperty(1.5f);
352     ASSERT_NE(floatProperty, nullptr);
353     OH_ArkUI_RenderNodeUtils_DisposeFloatProperty(floatProperty);
354 }
355 
356 /**
357  * @tc.name: NativeRenderNodeTest101
358  * @tc.desc: Test CreateVector2Property and SetVector2PropertyValue functions.
359  * @tc.type: FUNC
360  */
361 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest101, TestSize.Level1)
362 {
363     auto vector2Property = OH_ArkUI_RenderNodeUtils_CreateVector2Property(10.0f, 20.0f);
364     ASSERT_NE(vector2Property, nullptr);
365     auto result = OH_ArkUI_RenderNodeUtils_SetVector2PropertyValue(vector2Property, 30.0f, 40.0f);
366     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
367     OH_ArkUI_RenderNodeUtils_DisposeVector2Property(vector2Property);
368 }
369 
370 /**
371  * @tc.name: NativeRenderNodeTest102
372  * @tc.desc: Test GetVector2PropertyValue and DisposeVector2Property functions.
373  * @tc.type: FUNC
374  */
375 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest102, TestSize.Level1)
376 {
377     auto vector2Property = OH_ArkUI_RenderNodeUtils_CreateVector2Property(50.0f, 60.0f);
378     ASSERT_NE(vector2Property, nullptr);
379     float x = 0.0f, y = 0.0f;
380     auto result = OH_ArkUI_RenderNodeUtils_GetVector2PropertyValue(vector2Property, &x, &y);
381     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
382     ASSERT_EQ(x, 50.0f);
383     ASSERT_EQ(y, 60.0f);
384     OH_ArkUI_RenderNodeUtils_DisposeVector2Property(vector2Property);
385 }
386 
387 /**
388  * @tc.name: NativeRenderNodeTest103
389  * @tc.desc: Test CreateColorProperty and SetColorPropertyValue functions.
390  * @tc.type: FUNC
391  */
392 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest103, TestSize.Level1)
393 {
394     auto colorProperty = OH_ArkUI_RenderNodeUtils_CreateColorProperty(0xFF0000FF);
395     ASSERT_NE(colorProperty, nullptr);
396     auto result = OH_ArkUI_RenderNodeUtils_SetColorPropertyValue(colorProperty, 0xFF00FF00);
397     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
398     OH_ArkUI_RenderNodeUtils_DisposeColorProperty(colorProperty);
399 }
400 
401 /**
402  * @tc.name: NativeRenderNodeTest104
403  * @tc.desc: Test GetColorPropertyValue and DisposeColorProperty functions.
404  * @tc.type: FUNC
405  */
406 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest104, TestSize.Level1)
407 {
408     auto colorProperty = OH_ArkUI_RenderNodeUtils_CreateColorProperty(0xFFFF0000);
409     ASSERT_NE(colorProperty, nullptr);
410     uint32_t color = 0;
411     auto result = OH_ArkUI_RenderNodeUtils_GetColorPropertyValue(colorProperty, &color);
412     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
413     OH_ArkUI_RenderNodeUtils_DisposeColorProperty(colorProperty);
414 }
415 
416 /**
417  * @tc.name: NativeRenderNodeTest105
418  * @tc.desc: Test CreateFloatAnimatableProperty and SetFloatAnimatablePropertyValue functions.
419  * @tc.type: FUNC
420  */
421 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest105, TestSize.Level1)
422 {
423     auto floatAnimProperty = OH_ArkUI_RenderNodeUtils_CreateFloatAnimatableProperty(2.5f);
424     ASSERT_NE(floatAnimProperty, nullptr);
425     auto result = OH_ArkUI_RenderNodeUtils_SetFloatAnimatablePropertyValue(floatAnimProperty, 3.5f);
426     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
427     OH_ArkUI_RenderNodeUtils_DisposeFloatAnimatableProperty(floatAnimProperty);
428 }
429 
430 /**
431  * @tc.name: NativeRenderNodeTest106
432  * @tc.desc: Test GetFloatAnimatablePropertyValue and DisposeFloatAnimatableProperty functions.
433  * @tc.type: FUNC
434  */
435 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest106, TestSize.Level1)
436 {
437     auto floatAnimProperty = OH_ArkUI_RenderNodeUtils_CreateFloatAnimatableProperty(4.5f);
438     ASSERT_NE(floatAnimProperty, nullptr);
439     float value = 0.0f;
440     auto result = OH_ArkUI_RenderNodeUtils_GetFloatAnimatablePropertyValue(floatAnimProperty, &value);
441     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
442     ASSERT_EQ(value, 4.5f);
443     OH_ArkUI_RenderNodeUtils_DisposeFloatAnimatableProperty(floatAnimProperty);
444 }
445 
446 /**
447  * @tc.name: NativeRenderNodeTest107
448  * @tc.desc: Test CreateVector2AnimatableProperty and SetVector2AnimatablePropertyValue functions.
449  * @tc.type: FUNC
450  */
451 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest107, TestSize.Level1)
452 {
453     auto vector2AnimProperty = OH_ArkUI_RenderNodeUtils_CreateVector2AnimatableProperty(100.0f, 200.0f);
454     ASSERT_NE(vector2AnimProperty, nullptr);
455     auto result = OH_ArkUI_RenderNodeUtils_SetVector2AnimatablePropertyValue(vector2AnimProperty, 300.0f, 400.0f);
456     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
457     OH_ArkUI_RenderNodeUtils_DisposeVector2AnimatableProperty(vector2AnimProperty);
458 }
459 
460 /**
461  * @tc.name: NativeRenderNodeTest108
462  * @tc.desc: Test GetVector2AnimatablePropertyValue and DisposeVector2AnimatableProperty functions.
463  * @tc.type: FUNC
464  */
465 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest108, TestSize.Level1)
466 {
467     auto vector2AnimProperty = OH_ArkUI_RenderNodeUtils_CreateVector2AnimatableProperty(500.0f, 600.0f);
468     ASSERT_NE(vector2AnimProperty, nullptr);
469     float x = 0.0f, y = 0.0f;
470     auto result = OH_ArkUI_RenderNodeUtils_GetVector2AnimatablePropertyValue(vector2AnimProperty, &x, &y);
471     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
472     ASSERT_EQ(x, 500.0f);
473     ASSERT_EQ(y, 600.0f);
474     OH_ArkUI_RenderNodeUtils_DisposeVector2AnimatableProperty(vector2AnimProperty);
475 }
476 
477 /**
478  * @tc.name: NativeRenderNodeTest109
479  * @tc.desc: Test CreateColorAnimatableProperty and SetColorAnimatablePropertyValue functions.
480  * @tc.type: FUNC
481  */
482 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest109, TestSize.Level1)
483 {
484     auto colorAnimProperty = OH_ArkUI_RenderNodeUtils_CreateColorAnimatableProperty(0xFF00FFFF);
485     ASSERT_NE(colorAnimProperty, nullptr);
486     OH_ArkUI_RenderNodeUtils_SetColorAnimatablePropertyValue(colorAnimProperty, 0xFFFFFF00);
487     OH_ArkUI_RenderNodeUtils_DisposeColorAnimatableProperty(colorAnimProperty);
488 }
489 
490 /**
491  * @tc.name: NativeRenderNodeTest110
492  * @tc.desc: Test GetColorAnimatablePropertyValue and DisposeColorAnimatableProperty functions.
493  * @tc.type: FUNC
494  */
495 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest110, TestSize.Level1)
496 {
497     auto colorAnimProperty = OH_ArkUI_RenderNodeUtils_CreateColorAnimatableProperty(0xFFFF00FF);
498     ASSERT_NE(colorAnimProperty, nullptr);
499     uint32_t color = 0;
500     auto result = OH_ArkUI_RenderNodeUtils_GetColorAnimatablePropertyValue(colorAnimProperty, &color);
501     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
502     OH_ArkUI_RenderNodeUtils_DisposeColorAnimatableProperty(colorAnimProperty);
503 }
504 
505 /**
506  * @tc.name: NativeRenderNodeTest111
507  * @tc.desc: Test SetContentModifierOnDraw function.
508  * @tc.type: FUNC
509  */
510 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest111, TestSize.Level1)
511 {
512     auto contentModifier = OH_ArkUI_RenderNodeUtils_CreateContentModifier();
513     ASSERT_NE(contentModifier, nullptr);
514 
515     static bool drawCallbackCalled = false;
__anona84139950102(ArkUI_DrawContext* context, void* userData) 516     auto drawCallback = [](ArkUI_DrawContext* context, void* userData) {
517         drawCallbackCalled = true;
518     };
519 
520     int userData = 123;
521     auto result = OH_ArkUI_RenderNodeUtils_SetContentModifierOnDraw(contentModifier, &userData, drawCallback);
522     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
523     OH_ArkUI_RenderNodeUtils_DisposeContentModifier(contentModifier);
524 }
525 
526 /**
527  * @tc.name: NativeRenderNodeTest112
528  * @tc.desc: Test CreateRectShapeOption and DisposeRectShapeOption functions.
529  * @tc.type: FUNC
530  */
531 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest112, TestSize.Level1)
532 {
533     auto rectShape = OH_ArkUI_RenderNodeUtils_CreateRectShapeOption();
534     ASSERT_NE(rectShape, nullptr);
535     OH_ArkUI_RenderNodeUtils_DisposeRectShapeOption(rectShape);
536 }
537 
538 /**
539  * @tc.name: NativeRenderNodeTest113
540  * @tc.desc: Test SetRectShapeOptionEdgeValue function.
541  * @tc.type: FUNC
542  */
543 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest113, TestSize.Level1)
544 {
545     auto rectShape = OH_ArkUI_RenderNodeUtils_CreateRectShapeOption();
546     ASSERT_NE(rectShape, nullptr);
547     OH_ArkUI_RenderNodeUtils_SetRectShapeOptionEdgeValue(rectShape, 10.0f, 0.0f, 0.0f, 20.0f);
548     OH_ArkUI_RenderNodeUtils_DisposeRectShapeOption(rectShape);
549 }
550 
551 /**
552  * @tc.name: NativeRenderNodeTest114
553  * @tc.desc: Test CreateNodeBorderStyleOption and DisposeNodeBorderStyleOption functions.
554  * @tc.type: FUNC
555  */
556 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest114, TestSize.Level1)
557 {
558     auto borderStyle = OH_ArkUI_RenderNodeUtils_CreateNodeBorderStyleOption();
559     ASSERT_NE(borderStyle, nullptr);
560     OH_ArkUI_RenderNodeUtils_DisposeNodeBorderStyleOption(borderStyle);
561 }
562 
563 /**
564  * @tc.name: NativeRenderNodeTest115
565  * @tc.desc: Test SetNodeBorderStyleOptionEdgeStyle function.
566  * @tc.type: FUNC
567  */
568 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest115, TestSize.Level1)
569 {
570     auto borderStyle = OH_ArkUI_RenderNodeUtils_CreateNodeBorderStyleOption();
571     ASSERT_NE(borderStyle, nullptr);
572     OH_ArkUI_RenderNodeUtils_SetNodeBorderStyleOptionEdgeStyle(
573         borderStyle, ARKUI_BORDER_STYLE_SOLID, ARKUI_EDGE_DIRECTION_TOP);
574     OH_ArkUI_RenderNodeUtils_SetNodeBorderStyleOptionEdgeStyle(
575         borderStyle, ARKUI_BORDER_STYLE_DASHED, ARKUI_EDGE_DIRECTION_LEFT);
576     OH_ArkUI_RenderNodeUtils_DisposeNodeBorderStyleOption(borderStyle);
577 }
578 
579 /**
580  * @tc.name: NativeRenderNodeTest116
581  * @tc.desc: Test CreateNodeBorderWidthOption and DisposeNodeBorderWidthOption functions.
582  * @tc.type: FUNC
583  */
584 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest116, TestSize.Level1)
585 {
586     auto borderWidth = OH_ArkUI_RenderNodeUtils_CreateNodeBorderWidthOption();
587     ASSERT_NE(borderWidth, nullptr);
588     OH_ArkUI_RenderNodeUtils_DisposeNodeBorderWidthOption(borderWidth);
589 }
590 
591 /**
592  * @tc.name: NativeRenderNodeTest117
593  * @tc.desc: Test SetNodeBorderWidthOptionEdgeWidth function.
594  * @tc.type: FUNC
595  */
596 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest117, TestSize.Level1)
597 {
598     auto borderWidth = OH_ArkUI_RenderNodeUtils_CreateNodeBorderWidthOption();
599     ASSERT_NE(borderWidth, nullptr);
600     OH_ArkUI_RenderNodeUtils_SetNodeBorderWidthOptionEdgeWidth(borderWidth, 5.0f, ARKUI_EDGE_DIRECTION_TOP);
601     OH_ArkUI_RenderNodeUtils_SetNodeBorderWidthOptionEdgeWidth(borderWidth, 8.0f, ARKUI_EDGE_DIRECTION_RIGHT);
602     OH_ArkUI_RenderNodeUtils_SetNodeBorderWidthOptionEdgeWidth(borderWidth, -1.0f, ARKUI_EDGE_DIRECTION_RIGHT);
603     OH_ArkUI_RenderNodeUtils_DisposeNodeBorderWidthOption(borderWidth);
604 }
605 
606 /**
607  * @tc.name: NativeRenderNodeTest118
608  * @tc.desc: Test CreateNodeBorderColorOption and DisposeNodeBorderColorOption functions.
609  * @tc.type: FUNC
610  */
611 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest118, TestSize.Level1)
612 {
613     auto borderColor = OH_ArkUI_RenderNodeUtils_CreateNodeBorderColorOption();
614     ASSERT_NE(borderColor, nullptr);
615     OH_ArkUI_RenderNodeUtils_DisposeNodeBorderColorOption(borderColor);
616 }
617 
618 /**
619  * @tc.name: NativeRenderNodeTest119
620  * @tc.desc: Test SetNodeBorderColorOptionEdgeColor function.
621  * @tc.type: FUNC
622  */
623 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest119, TestSize.Level1)
624 {
625     auto borderColor = OH_ArkUI_RenderNodeUtils_CreateNodeBorderColorOption();
626     ASSERT_NE(borderColor, nullptr);
627     OH_ArkUI_RenderNodeUtils_SetNodeBorderColorOptionEdgeColor(borderColor, 0xFF0000FF, ARKUI_EDGE_DIRECTION_TOP);
628     OH_ArkUI_RenderNodeUtils_SetNodeBorderColorOptionEdgeColor(borderColor, 0xFF00FF00, ARKUI_EDGE_DIRECTION_BOTTOM);
629     OH_ArkUI_RenderNodeUtils_DisposeNodeBorderColorOption(borderColor);
630 }
631 
632 /**
633  * @tc.name: NativeRenderNodeTest120
634  * @tc.desc: Test CreateNodeBorderRadiusOption and DisposeNodeBorderRadiusOption functions.
635  * @tc.type: FUNC
636  */
637 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest120, TestSize.Level1)
638 {
639     auto borderRadius = OH_ArkUI_RenderNodeUtils_CreateNodeBorderRadiusOption();
640     ASSERT_NE(borderRadius, nullptr);
641     OH_ArkUI_RenderNodeUtils_DisposeNodeBorderRadiusOption(borderRadius);
642 }
643 
644 /**
645  * @tc.name: NativeRenderNodeTest121
646  * @tc.desc: Test SetNodeBorderRadiusOptionEdgeRadius function.
647  * @tc.type: FUNC
648  */
649 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest121, TestSize.Level1)
650 {
651     auto borderRadius = OH_ArkUI_RenderNodeUtils_CreateNodeBorderRadiusOption();
652     ASSERT_NE(borderRadius, nullptr);
653     OH_ArkUI_RenderNodeUtils_SetNodeBorderRadiusOptionCornerRadius(borderRadius, 10, ARKUI_CORNER_DIRECTION_TOP_LEFT);
654     OH_ArkUI_RenderNodeUtils_SetNodeBorderRadiusOptionCornerRadius(borderRadius, 15, ARKUI_CORNER_DIRECTION_TOP_RIGHT);
655     OH_ArkUI_RenderNodeUtils_DisposeNodeBorderRadiusOption(borderRadius);
656 }
657 
658 /**
659  * @tc.name: NativeRenderNodeTest122
660  * @tc.desc: Test CreateCircleShapeOption and DisposeCircleShapeOption functions.
661  * @tc.type: FUNC
662  */
663 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest122, TestSize.Level1)
664 {
665     auto circleShape = OH_ArkUI_RenderNodeUtils_CreateCircleShapeOption();
666     ASSERT_NE(circleShape, nullptr);
667     OH_ArkUI_RenderNodeUtils_DisposeCircleShapeOption(circleShape);
668 }
669 
670 /**
671  * @tc.name: NativeRenderNodeTest123
672  * @tc.desc: Test SetCircleShapeOptionCenterX and SetCircleShapeOptionCenterY functions.
673  * @tc.type: FUNC
674  */
675 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest123, TestSize.Level1)
676 {
677     auto circleShape = OH_ArkUI_RenderNodeUtils_CreateCircleShapeOption();
678     ASSERT_NE(circleShape, nullptr);
679     OH_ArkUI_RenderNodeUtils_SetCircleShapeOptionCenterX(circleShape, 100.0f);
680     OH_ArkUI_RenderNodeUtils_SetCircleShapeOptionCenterY(circleShape, 200.0f);
681     OH_ArkUI_RenderNodeUtils_DisposeCircleShapeOption(circleShape);
682 }
683 
684 /**
685  * @tc.name: NativeRenderNodeTest124
686  * @tc.desc: Test SetCircleShapeOptionRadius function.
687  * @tc.type: FUNC
688  */
689 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest124, TestSize.Level1)
690 {
691     auto circleShape = OH_ArkUI_RenderNodeUtils_CreateCircleShapeOption();
692     ASSERT_NE(circleShape, nullptr);
693     OH_ArkUI_RenderNodeUtils_SetCircleShapeOptionRadius(circleShape, 50.0f);
694     OH_ArkUI_RenderNodeUtils_DisposeCircleShapeOption(circleShape);
695 }
696 
697 /**
698  * @tc.name: NativeRenderNodeTest125
699  * @tc.desc: Test CreateRoundRectShapeOption and DisposeRoundRectShapeOption functions.
700  * @tc.type: FUNC
701  */
702 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest125, TestSize.Level1)
703 {
704     auto roundRectShape = OH_ArkUI_RenderNodeUtils_CreateRoundRectShapeOption();
705     ASSERT_NE(roundRectShape, nullptr);
706     OH_ArkUI_RenderNodeUtils_DisposeRoundRectShapeOption(roundRectShape);
707 }
708 
709 /**
710  * @tc.name: NativeRenderNodeTest126
711  * @tc.desc: Test SetRoundRectShapeOptionEdgeValue and SetRoundRectShapeOptionCornerXY functions.
712  * @tc.type: FUNC
713  */
714 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest126, TestSize.Level1)
715 {
716     auto roundRectShape = OH_ArkUI_RenderNodeUtils_CreateRoundRectShapeOption();
717     ASSERT_NE(roundRectShape, nullptr);
718     OH_ArkUI_RenderNodeUtils_SetRoundRectShapeOptionEdgeValue(roundRectShape, 100.0f, 0.0f, 0.0f, 0.0f);
719     OH_ArkUI_RenderNodeUtils_SetRoundRectShapeOptionCornerXY(
720         roundRectShape, 10.0f, 10.0f, ARKUI_CORNER_DIRECTION_TOP_LEFT);
721     OH_ArkUI_RenderNodeUtils_DisposeRoundRectShapeOption(roundRectShape);
722 }
723 
724 /**
725  * @tc.name: NativeRenderNodeTest127
726  * @tc.desc: Test CreateCommandPathOption and DisposeCommandPathOption functions.
727  * @tc.type: FUNC
728  */
729 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest127, TestSize.Level1)
730 {
731     auto commandPath = OH_ArkUI_RenderNodeUtils_CreateCommandPathOption();
732     ASSERT_NE(commandPath, nullptr);
733     OH_ArkUI_RenderNodeUtils_DisposeCommandPathOption(commandPath);
734 }
735 
736 /**
737  * @tc.name: NativeRenderNodeTest128
738  * @tc.desc: Test SetCommandPathOptionCommands function.
739  * @tc.type: FUNC
740  */
741 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest128, TestSize.Level1)
742 {
743     auto commandPath = OH_ArkUI_RenderNodeUtils_CreateCommandPathOption();
744     ASSERT_NE(commandPath, nullptr);
745     char* commands = const_cast<char*>("M 100 100 L 200 100 L 200 200 Z");
746     OH_ArkUI_RenderNodeUtils_SetCommandPathOptionCommands(commandPath, commands);
747     OH_ArkUI_RenderNodeUtils_DisposeCommandPathOption(commandPath);
748 }
749 
750 /**
751  * @tc.name: NativeRenderNodeTest129
752  * @tc.desc: Test CreateRenderNodeMaskOptionFromRectShape and CreateRenderNodeMaskOptionFromRoundRectShape functions.
753  * @tc.type: FUNC
754  */
755 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest129, TestSize.Level1)
756 {
757     auto rectShape = OH_ArkUI_RenderNodeUtils_CreateRectShapeOption();
758     ASSERT_NE(rectShape, nullptr);
759     auto maskFromRect = OH_ArkUI_RenderNodeUtils_CreateRenderNodeMaskOptionFromRectShape(rectShape);
760     ASSERT_NE(maskFromRect, nullptr);
761 
762     auto roundRectShape = OH_ArkUI_RenderNodeUtils_CreateRoundRectShapeOption();
763     ASSERT_NE(roundRectShape, nullptr);
764     auto maskFromRoundRect = OH_ArkUI_RenderNodeUtils_CreateRenderNodeMaskOptionFromRoundRectShape(roundRectShape);
765     ASSERT_NE(maskFromRoundRect, nullptr);
766 
767     OH_ArkUI_RenderNodeUtils_DisposeRenderNodeMaskOption(maskFromRect);
768     OH_ArkUI_RenderNodeUtils_DisposeRenderNodeMaskOption(maskFromRoundRect);
769     OH_ArkUI_RenderNodeUtils_DisposeRectShapeOption(rectShape);
770     OH_ArkUI_RenderNodeUtils_DisposeRoundRectShapeOption(roundRectShape);
771 }
772 
773 /**
774  * @tc.name: NativeRenderNodeTest130
775  * @tc.desc: Test CreateRenderNodeMaskOptionFromCircleShape and CreateRenderNodeMaskOptionFromOvalShape functions.
776  * @tc.type: FUNC
777  */
778 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest130, TestSize.Level1)
779 {
780     auto circleShape = OH_ArkUI_RenderNodeUtils_CreateCircleShapeOption();
781     ASSERT_NE(circleShape, nullptr);
782     auto maskFromCircle = OH_ArkUI_RenderNodeUtils_CreateRenderNodeMaskOptionFromCircleShape(circleShape);
783     ASSERT_NE(maskFromCircle, nullptr);
784 
785     auto ovalShape = OH_ArkUI_RenderNodeUtils_CreateRectShapeOption();
786     ASSERT_NE(ovalShape, nullptr);
787     auto maskFromOval = OH_ArkUI_RenderNodeUtils_CreateRenderNodeMaskOptionFromOvalShape(ovalShape);
788     ASSERT_NE(maskFromOval, nullptr);
789 
790     OH_ArkUI_RenderNodeUtils_DisposeRenderNodeMaskOption(maskFromCircle);
791     OH_ArkUI_RenderNodeUtils_DisposeRenderNodeMaskOption(maskFromOval);
792     OH_ArkUI_RenderNodeUtils_DisposeCircleShapeOption(circleShape);
793     OH_ArkUI_RenderNodeUtils_DisposeRectShapeOption(ovalShape);
794 }
795 
796 /**
797  * @tc.name: NativeRenderNodeTest131
798  * @tc.desc: Test CreateRenderNodeMaskOptionFromCommandPath and DisposeRenderNodeMaskOption functions.
799  * @tc.type: FUNC
800  */
801 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest131, TestSize.Level1)
802 {
803     auto commandPath = OH_ArkUI_RenderNodeUtils_CreateCommandPathOption();
804     ASSERT_NE(commandPath, nullptr);
805     auto maskFromPath = OH_ArkUI_RenderNodeUtils_CreateRenderNodeMaskOptionFromCommandPath(commandPath);
806     ASSERT_NE(maskFromPath, nullptr);
807 
808     OH_ArkUI_RenderNodeUtils_DisposeRenderNodeMaskOption(maskFromPath);
809     OH_ArkUI_RenderNodeUtils_DisposeCommandPathOption(commandPath);
810 }
811 
812 /**
813  * @tc.name: NativeRenderNodeTest132
814  * @tc.desc: Test SetRenderNodeMaskOptionFillColor and SetRenderNodeMaskOptionStrokeColor functions.
815  * @tc.type: FUNC
816  */
817 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest132, TestSize.Level1)
818 {
819     auto rectShape = OH_ArkUI_RenderNodeUtils_CreateRectShapeOption();
820     ASSERT_NE(rectShape, nullptr);
821     auto mask = OH_ArkUI_RenderNodeUtils_CreateRenderNodeMaskOptionFromRectShape(rectShape);
822     ASSERT_NE(mask, nullptr);
823 
824     OH_ArkUI_RenderNodeUtils_SetRenderNodeMaskOptionFillColor(mask, 0xFF0000FF);
825     OH_ArkUI_RenderNodeUtils_SetRenderNodeMaskOptionStrokeColor(mask, 0xFF00FF00);
826 
827     OH_ArkUI_RenderNodeUtils_DisposeRenderNodeMaskOption(mask);
828     OH_ArkUI_RenderNodeUtils_DisposeRectShapeOption(rectShape);
829 }
830 
831 /**
832  * @tc.name: NativeRenderNodeTest133
833  * @tc.desc: Test SetRenderNodeMaskOptionStrokeWidth function.
834  * @tc.type: FUNC
835  */
836 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest133, TestSize.Level1)
837 {
838     auto rectShape = OH_ArkUI_RenderNodeUtils_CreateRectShapeOption();
839     ASSERT_NE(rectShape, nullptr);
840     auto mask = OH_ArkUI_RenderNodeUtils_CreateRenderNodeMaskOptionFromRectShape(rectShape);
841     ASSERT_NE(mask, nullptr);
842 
843     OH_ArkUI_RenderNodeUtils_SetRenderNodeMaskOptionStrokeWidth(mask, 5.0f);
844 
845     OH_ArkUI_RenderNodeUtils_DisposeRenderNodeMaskOption(mask);
846     OH_ArkUI_RenderNodeUtils_DisposeRectShapeOption(rectShape);
847 }
848 
849 /**
850  * @tc.name: NativeRenderNodeTest134
851  * @tc.desc: Test CreateRenderNodeClipOptionFromRectShape and CreateRenderNodeClipOptionFromRoundRectShape functions.
852  * @tc.type: FUNC
853  */
854 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest134, TestSize.Level1)
855 {
856     auto rectShape = OH_ArkUI_RenderNodeUtils_CreateRectShapeOption();
857     ASSERT_NE(rectShape, nullptr);
858     auto clipFromRect = OH_ArkUI_RenderNodeUtils_CreateRenderNodeClipOptionFromRectShape(rectShape);
859     ASSERT_NE(clipFromRect, nullptr);
860 
861     auto roundRectShape = OH_ArkUI_RenderNodeUtils_CreateRoundRectShapeOption();
862     ASSERT_NE(roundRectShape, nullptr);
863     auto clipFromRoundRect = OH_ArkUI_RenderNodeUtils_CreateRenderNodeClipOptionFromRoundRectShape(roundRectShape);
864     ASSERT_NE(clipFromRoundRect, nullptr);
865 
866     OH_ArkUI_RenderNodeUtils_DisposeRenderNodeClipOption(clipFromRect);
867     OH_ArkUI_RenderNodeUtils_DisposeRenderNodeClipOption(clipFromRoundRect);
868     OH_ArkUI_RenderNodeUtils_DisposeRectShapeOption(rectShape);
869     OH_ArkUI_RenderNodeUtils_DisposeRoundRectShapeOption(roundRectShape);
870 }
871 
872 /**
873  * @tc.name: NativeRenderNodeTest135
874  * @tc.desc: Test CreateRenderNodeClipOptionFromCircleShape and CreateRenderNodeClipOptionFromOvalShape functions.
875  * @tc.type: FUNC
876  */
877 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest135, TestSize.Level1)
878 {
879     auto circleShape = OH_ArkUI_RenderNodeUtils_CreateCircleShapeOption();
880     ASSERT_NE(circleShape, nullptr);
881     auto clipFromCircle = OH_ArkUI_RenderNodeUtils_CreateRenderNodeClipOptionFromCircleShape(circleShape);
882     ASSERT_NE(clipFromCircle, nullptr);
883 
884     auto ovalShape = OH_ArkUI_RenderNodeUtils_CreateRectShapeOption();
885     ASSERT_NE(ovalShape, nullptr);
886     auto clipFromOval = OH_ArkUI_RenderNodeUtils_CreateRenderNodeClipOptionFromOvalShape(ovalShape);
887     ASSERT_NE(clipFromOval, nullptr);
888 
889     OH_ArkUI_RenderNodeUtils_DisposeRenderNodeClipOption(clipFromCircle);
890     OH_ArkUI_RenderNodeUtils_DisposeRenderNodeClipOption(clipFromOval);
891     OH_ArkUI_RenderNodeUtils_DisposeCircleShapeOption(circleShape);
892     OH_ArkUI_RenderNodeUtils_DisposeRectShapeOption(ovalShape);
893 }
894 
895 /**
896  * @tc.name: NativeRenderNodeTest136
897  * @tc.desc: Test CreateRenderNodeClipOptionFromCommandPath and DisposeRenderNodeClipOption functions.
898  * @tc.type: FUNC
899  */
900 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest136, TestSize.Level1)
901 {
902     auto commandPath = OH_ArkUI_RenderNodeUtils_CreateCommandPathOption();
903     ASSERT_NE(commandPath, nullptr);
904     auto clipFromPath = OH_ArkUI_RenderNodeUtils_CreateRenderNodeClipOptionFromCommandPath(commandPath);
905     ASSERT_NE(clipFromPath, nullptr);
906 
907     OH_ArkUI_RenderNodeUtils_DisposeRenderNodeClipOption(clipFromPath);
908     OH_ArkUI_RenderNodeUtils_DisposeCommandPathOption(commandPath);
909 }
910 
911 /**
912  * @tc.name: NativeRenderNodeTest137
913  * @tc.desc: Test SetMask function.
914  * @tc.type: FUNC
915  */
916 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest137, TestSize.Level1)
917 {
918     auto renderNode = OH_ArkUI_RenderNodeUtils_CreateNode();
919     ASSERT_NE(renderNode, nullptr);
920 
921     auto rectShape = OH_ArkUI_RenderNodeUtils_CreateRectShapeOption();
922     ASSERT_NE(rectShape, nullptr);
923     OH_ArkUI_RenderNodeUtils_SetRectShapeOptionEdgeValue(rectShape, 100.0f, 200.0f, 200.0f, 100.0f);
924 
925     auto maskOption = OH_ArkUI_RenderNodeUtils_CreateRenderNodeMaskOptionFromRectShape(rectShape);
926     ASSERT_NE(maskOption, nullptr);
927     OH_ArkUI_RenderNodeUtils_SetRenderNodeMaskOptionFillColor(maskOption, 0xFF0000FF);
928     OH_ArkUI_RenderNodeUtils_SetRenderNodeMaskOptionStrokeColor(maskOption, 0xFF00FF00);
929     OH_ArkUI_RenderNodeUtils_SetRenderNodeMaskOptionStrokeWidth(maskOption, 2.0f);
930 
931     auto result = OH_ArkUI_RenderNodeUtils_SetMask(renderNode, maskOption);
932     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
933 
934     OH_ArkUI_RenderNodeUtils_DisposeRenderNodeMaskOption(maskOption);
935     OH_ArkUI_RenderNodeUtils_DisposeRectShapeOption(rectShape);
936     OH_ArkUI_RenderNodeUtils_DisposeNode(renderNode);
937 }
938 
939 /**
940  * @tc.name: NativeRenderNodeTest138
941  * @tc.desc: Test SetClip function.
942  * @tc.type: FUNC
943  */
944 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest138, TestSize.Level1)
945 {
946     auto renderNode = OH_ArkUI_RenderNodeUtils_CreateNode();
947     ASSERT_NE(renderNode, nullptr);
948 
949     auto circleShape = OH_ArkUI_RenderNodeUtils_CreateCircleShapeOption();
950     ASSERT_NE(circleShape, nullptr);
951     OH_ArkUI_RenderNodeUtils_SetCircleShapeOptionCenterX(circleShape, 50.0f);
952     OH_ArkUI_RenderNodeUtils_SetCircleShapeOptionCenterY(circleShape, 50.0f);
953     OH_ArkUI_RenderNodeUtils_SetCircleShapeOptionRadius(circleShape, 30.0f);
954     auto result = OH_ArkUI_RenderNodeUtils_SetClip(renderNode, nullptr);
955     ASSERT_EQ(result, ERROR_CODE_PARAM_INVALID);
956 
957     auto clipOption = OH_ArkUI_RenderNodeUtils_CreateRenderNodeClipOptionFromCircleShape(circleShape);
958     ASSERT_NE(clipOption, nullptr);
959 
960     result = OH_ArkUI_RenderNodeUtils_SetClip(renderNode, clipOption);
961     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
962 
963     OH_ArkUI_RenderNodeUtils_DisposeRenderNodeClipOption(clipOption);
964     OH_ArkUI_RenderNodeUtils_DisposeCircleShapeOption(circleShape);
965     OH_ArkUI_RenderNodeUtils_DisposeNode(renderNode);
966 }
967 
968 /**
969  * @tc.name: NativeRenderNodeTest201
970  * @tc.desc: Test renderNode function.
971  * @tc.type: FUNC
972  */
973 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest201, TestSize.Level1)
974 {
975     auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
976         OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
977     auto rootCustomNode = nodeAPI->createNode(ARKUI_NODE_CUSTOM);
978     ASSERT_NE(rootCustomNode, nullptr);
979     auto rootRenderNode = OH_ArkUI_RenderNodeUtils_CreateNode();
980     ASSERT_NE(rootRenderNode, nullptr);
981     auto result = OH_ArkUI_RenderNodeUtils_AddRenderNode(rootCustomNode, rootRenderNode);
982     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
983 
984     ArkUI_NodeBorderStyleOption* borderStyle = OH_ArkUI_RenderNodeUtils_CreateNodeBorderStyleOption();
985     ASSERT_NE(borderStyle, nullptr);
986     result = OH_ArkUI_RenderNodeUtils_SetBorderStyle(rootRenderNode, borderStyle);
987     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
988     OH_ArkUI_RenderNodeUtils_DisposeNodeBorderStyleOption(borderStyle);
989 
990     ArkUI_NodeBorderStyleOption* borderStyle1 = OH_ArkUI_RenderNodeUtils_CreateNodeBorderStyleOption();
991     ASSERT_NE(borderStyle1, nullptr);
992     result = OH_ArkUI_RenderNodeUtils_GetBorderStyle(rootRenderNode, &borderStyle1);
993     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
994     ASSERT_EQ(borderStyle1->leftStyle, ArkUI_BorderStyle::ARKUI_BORDER_STYLE_SOLID);
995     ASSERT_EQ(borderStyle1->rightStyle, ArkUI_BorderStyle::ARKUI_BORDER_STYLE_SOLID);
996     ASSERT_EQ(borderStyle1->topStyle, ArkUI_BorderStyle::ARKUI_BORDER_STYLE_SOLID);
997     ASSERT_EQ(borderStyle1->bottomStyle, ArkUI_BorderStyle::ARKUI_BORDER_STYLE_SOLID);
998     OH_ArkUI_RenderNodeUtils_DisposeNodeBorderStyleOption(borderStyle1);
999 }
1000 
1001 /**
1002  * @tc.name: NativeRenderNodeTest202
1003  * @tc.desc: Test renderNode function.
1004  * @tc.type: FUNC
1005  */
1006 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest202, TestSize.Level1)
1007 {
1008     auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
1009         OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
1010     auto rootCustomNode = nodeAPI->createNode(ARKUI_NODE_CUSTOM);
1011     ASSERT_NE(rootCustomNode, nullptr);
1012     auto rootRenderNode = OH_ArkUI_RenderNodeUtils_CreateNode();
1013     ASSERT_NE(rootRenderNode, nullptr);
1014     auto result = OH_ArkUI_RenderNodeUtils_AddRenderNode(rootCustomNode, rootRenderNode);
1015     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1016 
1017     ArkUI_NodeBorderWidthOption* borderWidth = OH_ArkUI_RenderNodeUtils_CreateNodeBorderWidthOption();
1018     ASSERT_NE(borderWidth, nullptr);
1019     result = OH_ArkUI_RenderNodeUtils_SetBorderWidth(rootRenderNode, borderWidth);
1020     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1021     OH_ArkUI_RenderNodeUtils_DisposeNodeBorderWidthOption(borderWidth);
1022 
1023     ArkUI_NodeBorderWidthOption* borderWidth1 = OH_ArkUI_RenderNodeUtils_CreateNodeBorderWidthOption();
1024     ASSERT_NE(borderWidth1, nullptr);
1025     result = OH_ArkUI_RenderNodeUtils_GetBorderWidth(rootRenderNode, &borderWidth1);
1026     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1027     ASSERT_EQ(borderWidth1->leftWidth, 0.0f);
1028     ASSERT_EQ(borderWidth1->rightWidth, 0.0f);
1029     ASSERT_EQ(borderWidth1->topWidth, 0.0f);
1030     ASSERT_EQ(borderWidth1->bottomWidth, 0.0f);
1031     OH_ArkUI_RenderNodeUtils_DisposeNodeBorderWidthOption(borderWidth1);
1032 }
1033 
1034 /**
1035  * @tc.name: NativeRenderNodeTest203
1036  * @tc.desc: Test renderNode function.
1037  * @tc.type: FUNC
1038  */
1039 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest203, TestSize.Level1)
1040 {
1041     auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
1042         OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
1043     auto rootCustomNode = nodeAPI->createNode(ARKUI_NODE_CUSTOM);
1044     ASSERT_NE(rootCustomNode, nullptr);
1045     auto rootRenderNode = OH_ArkUI_RenderNodeUtils_CreateNode();
1046     ASSERT_NE(rootRenderNode, nullptr);
1047     auto result = OH_ArkUI_RenderNodeUtils_AddRenderNode(rootCustomNode, rootRenderNode);
1048     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1049 
1050     ArkUI_NodeBorderColorOption* borderColor = OH_ArkUI_RenderNodeUtils_CreateNodeBorderColorOption();
1051     ASSERT_NE(borderColor, nullptr);
1052     result = OH_ArkUI_RenderNodeUtils_SetBorderColor(rootRenderNode, borderColor);
1053     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1054     OH_ArkUI_RenderNodeUtils_DisposeNodeBorderColorOption(borderColor);
1055 
1056     ArkUI_NodeBorderColorOption* borderColor1 = OH_ArkUI_RenderNodeUtils_CreateNodeBorderColorOption();
1057     ASSERT_NE(borderColor1, nullptr);
1058     result = OH_ArkUI_RenderNodeUtils_GetBorderColor(rootRenderNode, &borderColor1);
1059     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1060     ASSERT_EQ(borderColor1->leftColor, 0);
1061     ASSERT_EQ(borderColor1->rightColor, 0);
1062     ASSERT_EQ(borderColor1->topColor, 0);
1063     ASSERT_EQ(borderColor1->bottomColor, 0);
1064     OH_ArkUI_RenderNodeUtils_DisposeNodeBorderColorOption(borderColor1);
1065 }
1066 
1067 /**
1068  * @tc.name: NativeRenderNodeTest204
1069  * @tc.desc: Test renderNode function.
1070  * @tc.type: FUNC
1071  */
1072 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest204, TestSize.Level1)
1073 {
1074     auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
1075         OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
1076     auto rootCustomNode = nodeAPI->createNode(ARKUI_NODE_CUSTOM);
1077     ASSERT_NE(rootCustomNode, nullptr);
1078     auto rootRenderNode = OH_ArkUI_RenderNodeUtils_CreateNode();
1079     ASSERT_NE(rootRenderNode, nullptr);
1080     auto result = OH_ArkUI_RenderNodeUtils_AddRenderNode(rootCustomNode, rootRenderNode);
1081     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1082 
1083     ArkUI_NodeBorderRadiusOption* borderRadius = OH_ArkUI_RenderNodeUtils_CreateNodeBorderRadiusOption();
1084     ASSERT_NE(borderRadius, nullptr);
1085     result = OH_ArkUI_RenderNodeUtils_SetBorderRadius(rootRenderNode, borderRadius);
1086     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1087     OH_ArkUI_RenderNodeUtils_DisposeNodeBorderRadiusOption(borderRadius);
1088 
1089     ArkUI_NodeBorderRadiusOption* borderRadius1 = OH_ArkUI_RenderNodeUtils_CreateNodeBorderRadiusOption();
1090     ASSERT_NE(borderRadius1, nullptr);
1091     result = OH_ArkUI_RenderNodeUtils_GetBorderRadius(rootRenderNode, &borderRadius1);
1092     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1093     ASSERT_EQ(borderRadius1->topLeftRadius, 0.0f);
1094     ASSERT_EQ(borderRadius1->topRightRadius, 0.0f);
1095     ASSERT_EQ(borderRadius1->bottomLeftRadius, 0.0f);
1096     ASSERT_EQ(borderRadius1->bottomRightRadius, 0.0f);
1097     OH_ArkUI_RenderNodeUtils_DisposeNodeBorderRadiusOption(borderRadius1);
1098 }
1099 
1100 /**
1101  * @tc.name: NativeRenderNodeTest205
1102  * @tc.desc: Test renderNode function.
1103  * @tc.type: FUNC
1104  */
1105 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest205, TestSize.Level1)
1106 {
1107     auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
1108         OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
1109     auto rootCustomNode = nodeAPI->createNode(ARKUI_NODE_CUSTOM);
1110     ASSERT_NE(rootCustomNode, nullptr);
1111     auto rootRenderNode = OH_ArkUI_RenderNodeUtils_CreateNode();
1112     ASSERT_NE(rootRenderNode, nullptr);
1113     auto result = OH_ArkUI_RenderNodeUtils_AddRenderNode(rootCustomNode, rootRenderNode);
1114     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1115 
1116     result = OH_ArkUI_RenderNodeUtils_SetMarkNodeGroup(rootRenderNode, true);
1117     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1118 }
1119 
1120 /**
1121  * @tc.name: NativeRenderNodeTest206
1122  * @tc.desc: Test renderNode function.
1123  * @tc.type: FUNC
1124  */
1125 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest206, TestSize.Level1)
1126 {
1127     auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
1128         OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
1129     auto rootCustomNode = nodeAPI->createNode(ARKUI_NODE_CUSTOM);
1130     ASSERT_NE(rootCustomNode, nullptr);
1131     auto rootRenderNode = OH_ArkUI_RenderNodeUtils_CreateNode();
1132     ASSERT_NE(rootRenderNode, nullptr);
1133     auto result = OH_ArkUI_RenderNodeUtils_AddRenderNode(rootCustomNode, rootRenderNode);
1134     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1135 
1136     result = OH_ArkUI_RenderNodeUtils_SetBounds(rootRenderNode, 50, 50, 100, 100);  // set x, y=50, width, height=100
1137     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1138 
1139     int32_t x = 0;
1140     int32_t y = 0;
1141     int32_t width = 0;
1142     int32_t height = 0;
1143     result = OH_ArkUI_RenderNodeUtils_GetBounds(rootRenderNode, &x, &y, &width, &height);
1144     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1145     ASSERT_EQ(x, 50);  // expect x equals to 50
1146     ASSERT_EQ(y, 50);  // expect y equals to 50
1147     ASSERT_EQ(width, 100);  // expect width equals to 100
1148     ASSERT_EQ(height, 100);  // expect height equals to 100
1149 }
1150 
1151 /**
1152  * @tc.name: NativeRenderNodeTest207
1153  * @tc.desc: Test renderNode function.
1154  * @tc.type: FUNC
1155  */
1156 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest207, TestSize.Level1)
1157 {
1158     auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
1159         OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
1160     auto rootCustomNode = nodeAPI->createNode(ARKUI_NODE_CUSTOM);
1161     ASSERT_NE(rootCustomNode, nullptr);
1162     auto rootRenderNode = OH_ArkUI_RenderNodeUtils_CreateNode();
1163     ASSERT_NE(rootRenderNode, nullptr);
1164     auto result = OH_ArkUI_RenderNodeUtils_AddRenderNode(rootCustomNode, rootRenderNode);
1165     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1166 
1167     result = OH_ArkUI_RenderNodeUtils_SetDrawRegion(rootRenderNode, 50, 50, 100, 100);  // set x, y=50, w, h=100
1168     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1169 }
1170 
1171 /**
1172  * @tc.name: NativeRenderNodeTest208
1173  * @tc.desc: Test renderNode function.
1174  * @tc.type: FUNC
1175  */
1176 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest208, TestSize.Level1)
1177 {
1178     auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>(
1179         OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1"));
1180     auto rootCustomNode = nodeAPI->createNode(ARKUI_NODE_CUSTOM);
1181     ASSERT_NE(rootCustomNode, nullptr);
1182     auto rootRenderNode = OH_ArkUI_RenderNodeUtils_CreateNode();
1183     ASSERT_NE(rootRenderNode, nullptr);
1184     auto result = OH_ArkUI_RenderNodeUtils_AddRenderNode(rootCustomNode, rootRenderNode);
1185     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1186 
1187     ArkUI_RenderContentModifierHandle modifier = OH_ArkUI_RenderNodeUtils_CreateContentModifier();
1188     ASSERT_NE(modifier, nullptr);
1189     result = OH_ArkUI_RenderNodeUtils_AttachContentModifier(rootRenderNode, modifier);
1190     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1191     OH_ArkUI_RenderNodeUtils_DisposeContentModifier(modifier);
1192 }
1193 
1194 /**
1195  * @tc.name: NativeRenderNodeTest209
1196  * @tc.desc: Test renderNode function.
1197  * @tc.type: FUNC
1198  */
1199 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest209, TestSize.Level1)
1200 {
1201     ArkUI_RenderContentModifierHandle modifier = OH_ArkUI_RenderNodeUtils_CreateContentModifier();
1202     ASSERT_NE(modifier, nullptr);
1203 
1204     ArkUI_FloatPropertyHandle property = OH_ArkUI_RenderNodeUtils_CreateFloatProperty(0.5f);  // set value=0.5f
1205     ASSERT_NE(property, nullptr);
1206     float value = 0.0f;
1207     auto result = OH_ArkUI_RenderNodeUtils_GetFloatPropertyValue(property, &value);
1208     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1209     ASSERT_EQ(value, 0.5f);  // expect value equals to 0.5f
1210     result = OH_ArkUI_RenderNodeUtils_SetFloatPropertyValue(property, 1.5f);  // set value=1.5f
1211     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1212     result = OH_ArkUI_RenderNodeUtils_GetFloatPropertyValue(property, &value);
1213     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1214     ASSERT_EQ(value, 1.5f);  // expect value equals to 1.5f
1215 
1216     result = OH_ArkUI_RenderNodeUtils_AttachFloatProperty(modifier, property);
1217     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1218     OH_ArkUI_RenderNodeUtils_DisposeFloatProperty(property);
1219     OH_ArkUI_RenderNodeUtils_DisposeContentModifier(modifier);
1220 }
1221 
1222 /**
1223  * @tc.name: NativeRenderNodeTest210
1224  * @tc.desc: Test renderNode function.
1225  * @tc.type: FUNC
1226  */
1227 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest210, TestSize.Level1)
1228 {
1229     ArkUI_RenderContentModifierHandle modifier = OH_ArkUI_RenderNodeUtils_CreateContentModifier();
1230     ASSERT_NE(modifier, nullptr);
1231 
1232     ArkUI_Vector2PropertyHandle property = OH_ArkUI_RenderNodeUtils_CreateVector2Property(0.5f, 0.5f);  // set x, y=0.5f
1233     ASSERT_NE(property, nullptr);
1234     float x = 0.0f;
1235     float y = 0.0f;
1236     auto result = OH_ArkUI_RenderNodeUtils_GetVector2PropertyValue(property, &x, &y);
1237     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1238     ASSERT_EQ(x, 0.5f);  // expect x equals to 0.5f
1239     ASSERT_EQ(y, 0.5f);  // expect y equals to 0.5f
1240     result = OH_ArkUI_RenderNodeUtils_SetVector2PropertyValue(property, 1.5f, 1.5f);  // set x, y=1.5f
1241     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1242     result = OH_ArkUI_RenderNodeUtils_GetVector2PropertyValue(property, &x, &y);
1243     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1244     ASSERT_EQ(x, 1.5f);  // expect x equals to 1.5f
1245     ASSERT_EQ(y, 1.5f);  // expect y equals to 1.5f
1246 
1247     result = OH_ArkUI_RenderNodeUtils_AttachVector2Property(modifier, property);
1248     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1249     OH_ArkUI_RenderNodeUtils_DisposeVector2Property(property);
1250     OH_ArkUI_RenderNodeUtils_DisposeContentModifier(modifier);
1251 }
1252 
1253 /**
1254  * @tc.name: NativeRenderNodeTest211
1255  * @tc.desc: Test renderNode function.
1256  * @tc.type: FUNC
1257  */
1258 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest211, TestSize.Level1)
1259 {
1260     ArkUI_RenderContentModifierHandle modifier = OH_ArkUI_RenderNodeUtils_CreateContentModifier();
1261     ASSERT_NE(modifier, nullptr);
1262 
1263     ArkUI_ColorPropertyHandle property =
1264         OH_ArkUI_RenderNodeUtils_CreateColorProperty(0xFF0000FF);  // set value=0xFF0000FF
1265     ASSERT_NE(property, nullptr);
1266     uint32_t value = 0;
1267     auto result = OH_ArkUI_RenderNodeUtils_GetColorPropertyValue(property, &value);
1268     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1269     result = OH_ArkUI_RenderNodeUtils_SetColorPropertyValue(property, 0xFF00FF00);  // set value=0xFF00FF00
1270     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1271     result = OH_ArkUI_RenderNodeUtils_GetColorPropertyValue(property, &value);
1272     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1273 
1274     result = OH_ArkUI_RenderNodeUtils_AttachColorProperty(modifier, property);
1275     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1276     OH_ArkUI_RenderNodeUtils_DisposeColorProperty(property);
1277     OH_ArkUI_RenderNodeUtils_DisposeContentModifier(modifier);
1278 }
1279 
1280 /**
1281  * @tc.name: NativeRenderNodeTest212
1282  * @tc.desc: Test renderNode function.
1283  * @tc.type: FUNC
1284  */
1285 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest212, TestSize.Level1)
1286 {
1287     ArkUI_RenderContentModifierHandle modifier = OH_ArkUI_RenderNodeUtils_CreateContentModifier();
1288     ASSERT_NE(modifier, nullptr);
1289 
1290     ArkUI_FloatAnimatablePropertyHandle property =
1291         OH_ArkUI_RenderNodeUtils_CreateFloatAnimatableProperty(0.5f);  // set value=0.5f
1292     ASSERT_NE(property, nullptr);
1293     float value = 0.0f;
1294     auto result = OH_ArkUI_RenderNodeUtils_GetFloatAnimatablePropertyValue(property, &value);
1295     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1296     ASSERT_EQ(value, 0.5f);  // expect value equals to 0.5f
1297     result = OH_ArkUI_RenderNodeUtils_SetFloatAnimatablePropertyValue(property, 1.5f);  // set value=1.5f
1298     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1299     result = OH_ArkUI_RenderNodeUtils_GetFloatAnimatablePropertyValue(property, &value);
1300     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1301     ASSERT_EQ(value, 1.5f);  // expect value equals to 1.5f
1302 
1303     result = OH_ArkUI_RenderNodeUtils_AttachFloatAnimatableProperty(modifier, property);
1304     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1305     OH_ArkUI_RenderNodeUtils_DisposeFloatAnimatableProperty(property);
1306     OH_ArkUI_RenderNodeUtils_DisposeContentModifier(modifier);
1307 }
1308 
1309 /**
1310  * @tc.name: NativeRenderNodeTest213
1311  * @tc.desc: Test renderNode function.
1312  * @tc.type: FUNC
1313  */
1314 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest213, TestSize.Level1)
1315 {
1316     ArkUI_RenderContentModifierHandle modifier = OH_ArkUI_RenderNodeUtils_CreateContentModifier();
1317     ASSERT_NE(modifier, nullptr);
1318 
1319     ArkUI_Vector2AnimatablePropertyHandle property =
1320         OH_ArkUI_RenderNodeUtils_CreateVector2AnimatableProperty(0.5f, 0.5f);  // set x, y=0.5f
1321     ASSERT_NE(property, nullptr);
1322     float x = 0.0f;
1323     float y = 0.0f;
1324     auto result = OH_ArkUI_RenderNodeUtils_GetVector2AnimatablePropertyValue(property, &x, &y);
1325     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1326     ASSERT_EQ(x, 0.5f);  // expect x equals to 0.5f
1327     ASSERT_EQ(y, 0.5f);  // expect y equals to 0.5f
1328     result = OH_ArkUI_RenderNodeUtils_SetVector2AnimatablePropertyValue(property, 1.5f, 1.5f);  // set x, y=1.5f
1329     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1330     result = OH_ArkUI_RenderNodeUtils_GetVector2AnimatablePropertyValue(property, &x, &y);
1331     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1332     ASSERT_EQ(x, 1.5f);  // expect x equals to 1.5f
1333     ASSERT_EQ(y, 1.5f);  // expect y equals to 1.5f
1334 
1335     result = OH_ArkUI_RenderNodeUtils_AttachVector2AnimatableProperty(modifier, property);
1336     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1337     OH_ArkUI_RenderNodeUtils_DisposeVector2AnimatableProperty(property);
1338     OH_ArkUI_RenderNodeUtils_DisposeContentModifier(modifier);
1339 }
1340 
1341 /**
1342  * @tc.name: NativeRenderNodeTest214
1343  * @tc.desc: Test renderNode function.
1344  * @tc.type: FUNC
1345  */
1346 HWTEST_F(NativeRenderNodeTest, NativeRenderNodeTest214, TestSize.Level1)
1347 {
1348     ArkUI_RenderContentModifierHandle modifier = OH_ArkUI_RenderNodeUtils_CreateContentModifier();
1349     ASSERT_NE(modifier, nullptr);
1350 
1351     ArkUI_ColorAnimatablePropertyHandle property =
1352         OH_ArkUI_RenderNodeUtils_CreateColorAnimatableProperty(0xFF0000FF);  // set value=0xFF0000FF
1353     ASSERT_NE(property, nullptr);
1354     uint32_t value = 0;
1355     auto result = OH_ArkUI_RenderNodeUtils_GetColorAnimatablePropertyValue(property, &value);
1356     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1357     result = OH_ArkUI_RenderNodeUtils_SetColorAnimatablePropertyValue(property, 0xFF00FF00);  // set value=0xFF00FF00
1358     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1359     result = OH_ArkUI_RenderNodeUtils_GetColorAnimatablePropertyValue(property, &value);
1360     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1361 
1362     result = OH_ArkUI_RenderNodeUtils_AttachColorAnimatableProperty(modifier, property);
1363     ASSERT_EQ(result, ARKUI_ERROR_CODE_NO_ERROR);
1364     OH_ArkUI_RenderNodeUtils_DisposeColorAnimatableProperty(property);
1365     OH_ArkUI_RenderNodeUtils_DisposeContentModifier(modifier);
1366 }
1367 
1368 } // namespace OHOS::Ace