1 /*
2  * Copyright (c) 2024 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 "gtest/gtest.h"
17 #include "interfaces/inner_api/form_render/include/form_renderer_delegate_impl.h"
18 
19 using namespace testing;
20 using namespace testing::ext;
21 
22 namespace OHOS::Ace {
23 namespace {
24 constexpr double FORM_WIDTH = 100.0f;
25 constexpr double FORM_HEIGHT = 100.0f;
26 constexpr double FORM_BORDER_WIDTH = 10.0f;
27 const std::string CHECK_KEY = "CHECK_KEY";
28 } // namespace
29 class FormRenderDelegateImplTest : public testing::Test {
30 public:
SetUpTestCase()31     static void SetUpTestCase() {};
32 
TearDownTestCase()33     static void TearDownTestCase() {};
34 
SurfaceCreateOnFormRendererDelegateImpl()35     sptr<FormRendererDelegateImpl> SurfaceCreateOnFormRendererDelegateImpl()
36     {
37         sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
38         constexpr uint32_t createCode = static_cast<uint32_t>(IFormRendererDelegate::Message::ON_SURFACE_CREATE);
39         std::string surfaceNodeName = "ArkTSCardNode";
40         struct Rosen::RSSurfaceNodeConfig surfaceNodeConfig = { .SurfaceNodeName = surfaceNodeName };
41         OHOS::AppExecFwk::FormJsInfo formJsInfo;
42         OHOS::AAFwk::Want want;
43         std::shared_ptr<Rosen::RSSurfaceNode> rsNode = OHOS::Rosen::RSSurfaceNode::Create(surfaceNodeConfig, true);
44         MessageParcel createData;
45         createData.WriteInterfaceToken(FormRendererDelegateImpl::GetDescriptor());
46         rsNode->SetId(1);
47         rsNode->Marshalling(createData);
48         createData.WriteParcelable(&formJsInfo);
49         createData.WriteParcelable(&want);
50         MessageParcel createReply;
51         MessageOption createOption;
52         auto createAns = renderDelegate->OnRemoteRequest(createCode, createData, createReply, createOption);
53         EXPECT_EQ(createAns, ERR_OK);
54         return renderDelegate;
55     }
56 };
57 
58 /*
59  * @tc.name: FormRenderDelegateImplTest_001
60  * @tc.desc: Test OnSurfaceCreate() function.
61  * @tc.type: FUNC
62  */
63 HWTEST_F(FormRenderDelegateImplTest, FormRenderDelegateImplTest_001, TestSize.Level1)
64 {
65     GTEST_LOG_(INFO) << "FormRenderDelegateImplTest_001 start";
66     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
67     OHOS::AAFwk::Want want;
68     OHOS::AppExecFwk::FormJsInfo formJsInfo;
69     formJsInfo.bundleName = "bundleName";
70     formJsInfo.moduleName = "moduleName";
71     formJsInfo.formId = -1;
72     EXPECT_EQ(renderDelegate->OnSurfaceCreate(nullptr, formJsInfo, want), ERR_NULL_OBJECT);
73 
74     std::string surfaceNodeName = "ArkTSCardNode";
75     struct Rosen::RSSurfaceNodeConfig surfaceNodeConfig = { .SurfaceNodeName = surfaceNodeName };
76     std::shared_ptr<Rosen::RSSurfaceNode> rsNode = OHOS::Rosen::RSSurfaceNode::Create(surfaceNodeConfig, true);
77     EXPECT_EQ(renderDelegate->OnSurfaceCreate(rsNode, formJsInfo, want), ERR_INVALID_DATA);
78 
79     formJsInfo.formId = 1;
80     EXPECT_EQ(renderDelegate->OnSurfaceCreate(rsNode, formJsInfo, want), ERR_INVALID_DATA);
81 
82     std::string onSurfaceCreateKey;
83     auto onSurfaceCreate = [&onSurfaceCreateKey](const std::shared_ptr<Rosen::RSSurfaceNode>& /* surfaceNode */,
84         const OHOS::AppExecFwk::FormJsInfo& /* info */,
__anond3ebbf3e0202(const std::shared_ptr<Rosen::RSSurfaceNode>& , const OHOS::AppExecFwk::FormJsInfo& , const AAFwk::Want& ) 85         const AAFwk::Want& /* want */) { onSurfaceCreateKey = CHECK_KEY; };
86     renderDelegate->SetSurfaceCreateEventHandler(std::move(onSurfaceCreate));
87     EXPECT_EQ(renderDelegate->OnSurfaceCreate(rsNode, formJsInfo, want), ERR_OK);
88     GTEST_LOG_(INFO) << "FormRenderDelegateImplTest_001 end";
89 }
90 
91 /*
92  * @tc.name: FormRenderDelegateImplTest_002
93  * @tc.desc: Test OnActionEvent() function.
94  * @tc.type: FUNC
95  */
96 HWTEST_F(FormRenderDelegateImplTest, FormRenderDelegateImplTest_002, TestSize.Level1)
97 {
98     GTEST_LOG_(INFO) << "FormRenderDelegateImplTest_002 start";
99     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
100     EXPECT_EQ(renderDelegate->OnActionEvent(""), ERR_INVALID_DATA);
101 
102     std::string onActionEventKey;
__anond3ebbf3e0302(const std::string& ) 103     auto onAction = [&onActionEventKey](const std::string& /* action */) { onActionEventKey = CHECK_KEY; };
104     renderDelegate->SetActionEventHandler(std::move(onAction));
105     EXPECT_EQ(renderDelegate->OnActionEvent(""), ERR_OK);
106     GTEST_LOG_(INFO) << "FormRenderDelegateImplTest_002 end";
107 }
108 
109 /*
110  * @tc.name: FormRenderDelegateImplTest_003
111  * @tc.desc: Test OnError() function.
112  * @tc.type: FUNC
113  */
114 HWTEST_F(FormRenderDelegateImplTest, FormRenderDelegateImplTest_003, TestSize.Level1)
115 {
116     GTEST_LOG_(INFO) << "FormRenderDelegateImplTest_003 start";
117     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
118     EXPECT_EQ(renderDelegate->OnError("", ""), ERR_INVALID_DATA);
119 
120     std::string onErrorEventKey;
121     auto onError = [&onErrorEventKey](
__anond3ebbf3e0402( const std::string& , const std::string& ) 122         const std::string& /* code */, const std::string& /* msg */) { onErrorEventKey = CHECK_KEY; };
123     renderDelegate->SetErrorEventHandler(std::move(onError));
124     EXPECT_EQ(renderDelegate->OnError("", ""), ERR_OK);
125     GTEST_LOG_(INFO) << "FormRenderDelegateImplTest_003 end";
126 }
127 
128 /*
129  * @tc.name: FormRenderDelegateImplTest_004
130  * @tc.desc: Test OnSurfaceChange() function.
131  * @tc.type: FUNC
132  */
133 HWTEST_F(FormRenderDelegateImplTest, FormRenderDelegateImplTest_004, TestSize.Level1)
134 {
135     GTEST_LOG_(INFO) << "FormRenderDelegateImplTest_004 start";
136     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
137     EXPECT_EQ(renderDelegate->OnSurfaceChange(FORM_WIDTH, FORM_HEIGHT, FORM_BORDER_WIDTH), ERR_INVALID_DATA);
138 
139     std::string onSurfaceChangeEventKey;
140     auto onSurfaceChange = [&onSurfaceChangeEventKey](float /* width */,
__anond3ebbf3e0502(float , float , float ) 141         float /* height */, float /* borderWidth */) { onSurfaceChangeEventKey = CHECK_KEY; };
142     renderDelegate->SetSurfaceChangeEventHandler(std::move(onSurfaceChange));
143     EXPECT_EQ(renderDelegate->OnSurfaceChange(FORM_WIDTH, FORM_HEIGHT, FORM_BORDER_WIDTH), ERR_OK);
144     GTEST_LOG_(INFO) << "FormRenderDelegateImplTest_004 end";
145 }
146 
147 /*
148  * @tc.name: FormRenderDelegateImplTest_005
149  * @tc.desc: Test OnSurfaceDetach() function.
150  * @tc.type: FUNC
151  */
152 HWTEST_F(FormRenderDelegateImplTest, FormRenderDelegateImplTest_005, TestSize.Level1)
153 {
154     GTEST_LOG_(INFO) << "FormRenderDelegateImplTest_005 start";
155     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
156     uint16_t surfaceId= 11111;
157     EXPECT_EQ(renderDelegate->OnSurfaceDetach(surfaceId), ERR_INVALID_DATA);
158 
159     std::string onSurfaceDetachEventKey;
__anond3ebbf3e0602() 160     auto onSurfaceDetach = [&onSurfaceDetachEventKey]() { onSurfaceDetachEventKey = CHECK_KEY; };
161     renderDelegate->SetSurfaceDetachEventHandler(std::move(onSurfaceDetach));
162     EXPECT_EQ(renderDelegate->OnSurfaceDetach(surfaceId), ERR_OK);
163     GTEST_LOG_(INFO) << "FormRenderDelegateImplTest_005 end";
164 }
165 
166 /*
167  * @tc.name: FormRenderDelegateImplTest_006
168  * @tc.desc: Test OnFormLinkInfoUpdate() function.
169  * @tc.type: FUNC
170  */
171 HWTEST_F(FormRenderDelegateImplTest, FormRenderDelegateImplTest_006, TestSize.Level1)
172 {
173     GTEST_LOG_(INFO) << "FormRenderDelegateImplTest_006 start";
174     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
175     std::vector<std::string> info = {};
176     EXPECT_EQ(renderDelegate->OnFormLinkInfoUpdate(info), ERR_INVALID_DATA);
177 
178     std::string onFormLinkInfoUpdateEventKey;
179     auto onFormLinkInfoUpdate = [&onFormLinkInfoUpdateEventKey](
__anond3ebbf3e0702( const std::vector<std::string>& ) 180         const std::vector<std::string>& /* formLinkInfos */) { onFormLinkInfoUpdateEventKey = CHECK_KEY; };
181     renderDelegate->SetFormLinkInfoUpdateHandler(std::move(onFormLinkInfoUpdate));
182     EXPECT_EQ(renderDelegate->OnFormLinkInfoUpdate(info), ERR_OK);
183     GTEST_LOG_(INFO) << "FormRenderDelegateImplTest_006 end";
184 }
185 
186 /*
187  * @tc.name: FormRenderDelegateImplTest_007
188  * @tc.desc: Test OnGetRectRelativeToWindow() function.
189  * @tc.type: FUNC
190  */
191 HWTEST_F(FormRenderDelegateImplTest, FormRenderDelegateImplTest_007, TestSize.Level1)
192 {
193     GTEST_LOG_(INFO) << "FormRenderDelegateImplTest_007 start";
194     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
195     int32_t top = 1;
196     int32_t left = 1;
197     EXPECT_EQ(renderDelegate->OnGetRectRelativeToWindow(top, left), ERR_INVALID_DATA);
198 
199     std::string OnGetRectRelativeToWindowEventKey;
200     auto onGetRectRelativeToWindow = [&OnGetRectRelativeToWindowEventKey](
__anond3ebbf3e0802( int32_t& , int32_t& ) 201         int32_t& /* top */, int32_t& /* left */) { OnGetRectRelativeToWindowEventKey = CHECK_KEY; };
202     renderDelegate->SetGetRectRelativeToWindowHandler(std::move(onGetRectRelativeToWindow));
203     EXPECT_EQ(renderDelegate->OnGetRectRelativeToWindow(top, left), ERR_OK);
204     GTEST_LOG_(INFO) << "FormRenderDelegateImplTest_007 end";
205 }
206 
207 /**
208  * @tc.name: FormRenderDelegateImplTest_008
209  * @tc.desc: test FormRendererDelegateImpl OnRemoteRequest event
210  * @tc.type: FUNC
211  */
212 HWTEST_F(FormRenderDelegateImplTest, FormRenderDelegateImplTest_008, TestSize.Level1)
213 {
214     auto renderDelegate = SurfaceCreateOnFormRendererDelegateImpl();
215     uint64_t surfaceId = 1;
216     OHOS::AppExecFwk::FormJsInfo formJsInfo;
217 
218     constexpr uint32_t reUseCode = static_cast<uint32_t>(IFormRendererDelegate::Message::ON_SURFACE_REUSE);
219     MessageParcel reUseData;
220     OHOS::AAFwk::Want want;
221     reUseData.WriteInterfaceToken(FormRendererDelegateImpl::GetDescriptor());
222     reUseData.WriteUint64(surfaceId);
223     reUseData.WriteParcelable(&formJsInfo);
224     reUseData.WriteParcelable(&want);
225     MessageParcel reUseReply;
226     MessageOption reUseOption;
227     auto reUseAns = renderDelegate->OnRemoteRequest(reUseCode, reUseData, reUseReply, reUseOption);
228     EXPECT_EQ(reUseAns, ERR_OK);
229 }
230 
231 /**
232  * @tc.name: FormRenderDelegateImplTest_009
233  * @tc.desc: test FormRendererDelegateImpl OnRemoteRequest event
234  * @tc.type: FUNC
235  */
236 HWTEST_F(FormRenderDelegateImplTest, FormRenderDelegateImplTest_009, TestSize.Level1)
237 {
238     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
239     constexpr uint32_t code = static_cast<uint32_t>(IFormRendererDelegate::Message::ON_SURFACE_CREATE);
240 
241     MessageParcel data;
242     data.WriteInterfaceToken(FormRendererDelegateImpl::GetDescriptor());
243     MessageParcel reply;
244     MessageOption option;
245     auto ans = renderDelegate->OnRemoteRequest(code, data, reply, option);
246     EXPECT_EQ(ans, ERR_INVALID_VALUE);
247 }
248 
249 /**
250  * @tc.name: FormRenderDelegateImplTest_010
251  * @tc.desc: test FormRendererDelegateImpl OnRemoteRequest event
252  * @tc.type: FUNC
253  */
254 HWTEST_F(FormRenderDelegateImplTest, FormRenderDelegateImplTest_010, TestSize.Level1)
255 {
256     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
257     constexpr uint32_t code = static_cast<uint32_t>(IFormRendererDelegate::Message::ON_SURFACE_CREATE);
258     std::string surfaceNodeName = "ArkTSCardNode";
259     struct Rosen::RSSurfaceNodeConfig surfaceNodeConfig = { .SurfaceNodeName = surfaceNodeName };
260     std::shared_ptr<Rosen::RSSurfaceNode> rsNode = OHOS::Rosen::RSSurfaceNode::Create(surfaceNodeConfig, true);
261 
262     MessageParcel data;
263     data.WriteInterfaceToken(FormRendererDelegateImpl::GetDescriptor());
264     rsNode->Marshalling(data);
265     MessageParcel reply;
266     MessageOption option;
267     auto ans = renderDelegate->OnRemoteRequest(code, data, reply, option);
268     EXPECT_EQ(ans, ERR_INVALID_VALUE);
269 }
270 
271 /**
272  * @tc.name: FormRenderDelegateImplTest_011
273  * @tc.desc: test FormRendererDelegateImpl OnRemoteRequest event
274  * @tc.type: FUNC
275  */
276 HWTEST_F(FormRenderDelegateImplTest, FormRenderDelegateImplTest_011, TestSize.Level1)
277 {
278     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
279     constexpr uint32_t code = static_cast<uint32_t>(IFormRendererDelegate::Message::ON_SURFACE_CREATE);
280     std::string surfaceNodeName = "ArkTSCardNode";
281     struct Rosen::RSSurfaceNodeConfig surfaceNodeConfig = { .SurfaceNodeName = surfaceNodeName };
282     OHOS::AppExecFwk::FormJsInfo formJsInfo;
283     std::shared_ptr<Rosen::RSSurfaceNode> rsNode = OHOS::Rosen::RSSurfaceNode::Create(surfaceNodeConfig, true);
284 
285     MessageParcel data;
286     data.WriteInterfaceToken(FormRendererDelegateImpl::GetDescriptor());
287     rsNode->Marshalling(data);
288     data.WriteParcelable(&formJsInfo);
289     MessageParcel reply;
290     MessageOption option;
291     auto ans = renderDelegate->OnRemoteRequest(code, data, reply, option);
292     EXPECT_EQ(ans, ERR_INVALID_VALUE);
293 }
294 
295 /**
296  * @tc.name: FormRenderDelegateImplTest_012
297  * @tc.desc: test FormRendererDelegateImpl OnRemoteRequest event
298  * @tc.type: FUNC
299  */
300 HWTEST_F(FormRenderDelegateImplTest, FormRenderDelegateImplTest_012, TestSize.Level1)
301 {
302     auto renderDelegate = SurfaceCreateOnFormRendererDelegateImpl();
303     uint64_t surfaceId = 2;
304     OHOS::AppExecFwk::FormJsInfo formJsInfo;
305 
306     constexpr uint32_t reUseCode = static_cast<uint32_t>(IFormRendererDelegate::Message::ON_SURFACE_REUSE);
307     MessageParcel reUseData;
308     OHOS::AAFwk::Want want;
309     reUseData.WriteInterfaceToken(FormRendererDelegateImpl::GetDescriptor());
310     reUseData.WriteUint64(surfaceId);
311     reUseData.WriteParcelable(&formJsInfo);
312     reUseData.WriteParcelable(&want);
313     MessageParcel reUseReply;
314     MessageOption reUseOption;
315     auto reUseAns = renderDelegate->OnRemoteRequest(reUseCode, reUseData, reUseReply, reUseOption);
316     EXPECT_EQ(reUseAns, ERR_INVALID_VALUE);
317 }
318 
319 /**
320  * @tc.name: FormRenderDelegateImplTest_013
321  * @tc.desc: test FormRendererDelegateImpl OnRemoteRequest event
322  * @tc.type: FUNC
323  */
324 HWTEST_F(FormRenderDelegateImplTest, FormRenderDelegateImplTest_013, TestSize.Level1)
325 {
326     auto renderDelegate = SurfaceCreateOnFormRendererDelegateImpl();
327     uint64_t surfaceId = 1;
328 
329     constexpr uint32_t reUseCode = static_cast<uint32_t>(IFormRendererDelegate::Message::ON_SURFACE_REUSE);
330     MessageParcel reUseData;
331     reUseData.WriteInterfaceToken(FormRendererDelegateImpl::GetDescriptor());
332     reUseData.WriteUint64(surfaceId);
333     MessageParcel reUseReply;
334     MessageOption reUseOption;
335     auto reUseAns = renderDelegate->OnRemoteRequest(reUseCode, reUseData, reUseReply, reUseOption);
336     EXPECT_EQ(reUseAns, ERR_INVALID_VALUE);
337 }
338 
339 /**
340  * @tc.name: FormRenderDelegateImplTest_014
341  * @tc.desc: test FormRendererDelegateImpl OnRemoteRequest event
342  * @tc.type: FUNC
343  */
344 HWTEST_F(FormRenderDelegateImplTest, FormRenderDelegateImplTest_014, TestSize.Level1)
345 {
346     auto renderDelegate = SurfaceCreateOnFormRendererDelegateImpl();
347     uint64_t surfaceId = 2;
348     OHOS::AppExecFwk::FormJsInfo formJsInfo;
349 
350     constexpr uint32_t reUseCode = static_cast<uint32_t>(IFormRendererDelegate::Message::ON_SURFACE_REUSE);
351     MessageParcel reUseData;
352     reUseData.WriteInterfaceToken(FormRendererDelegateImpl::GetDescriptor());
353     reUseData.WriteUint64(surfaceId);
354     reUseData.WriteParcelable(&formJsInfo);
355     MessageParcel reUseReply;
356     MessageOption reUseOption;
357     auto reUseAns = renderDelegate->OnRemoteRequest(reUseCode, reUseData, reUseReply, reUseOption);
358     EXPECT_EQ(reUseAns, ERR_INVALID_VALUE);
359 }
360 
361 /**
362  * @tc.name: FormRenderDelegateImplTest_015
363  * @tc.desc: test FormRendererDelegateImpl OnRemoteRequest event
364  * @tc.type: FUNC
365  */
366 HWTEST_F(FormRenderDelegateImplTest, FormRenderDelegateImplTest_015, TestSize.Level1)
367 {
368     auto renderDelegate = SurfaceCreateOnFormRendererDelegateImpl();
369     uint64_t surfaceId = 2;
370     OHOS::AppExecFwk::FormJsInfo formJsInfo;
371 
372     constexpr uint32_t reUseCode = static_cast<uint32_t>(IFormRendererDelegate::Message::ON_SURFACE_REUSE);
373     MessageParcel reUseData;
374     reUseData.WriteInterfaceToken(FormRendererDelegateImpl::GetDescriptor());
375     reUseData.WriteUint64(surfaceId);
376     reUseData.WriteParcelable(&formJsInfo);
377     MessageParcel reUseReply;
378     MessageOption reUseOption;
379     auto reUseAns = renderDelegate->OnRemoteRequest(reUseCode, reUseData, reUseReply, reUseOption);
380     EXPECT_EQ(reUseAns, ERR_INVALID_VALUE);
381 }
382 
383 /**
384  * @tc.name: FormRenderDelegateImplTest_016
385  * @tc.desc: test FormRendererDelegateImpl OnRemoteRequest event
386  * @tc.type: FUNC
387  */
388 HWTEST_F(FormRenderDelegateImplTest, FormRenderDelegateImplTest_016, TestSize.Level1)
389 {
390     auto renderDelegate = SurfaceCreateOnFormRendererDelegateImpl();
391     uint64_t surfaceId = 1;
392 
393     constexpr uint32_t detachCode = static_cast<uint32_t>(IFormRendererDelegate::Message::ON_FORMSURFACE_DETACH);
394     MessageParcel detachData;
395     detachData.WriteInterfaceToken(FormRendererDelegateImpl::GetDescriptor());
396     detachData.WriteUint64(surfaceId);
397     MessageParcel detachReply;
398     MessageOption detachOption;
399     auto reUseAns = renderDelegate->OnRemoteRequest(detachCode, detachData, detachReply, detachOption);
400     EXPECT_EQ(reUseAns, ERR_OK);
401 }
402 
403 /**
404  * @tc.name: FormRenderDelegateImplTest_017
405  * @tc.desc: test FormRendererDelegateImpl OnRemoteRequest event
406  * @tc.type: FUNC
407  */
408 HWTEST_F(FormRenderDelegateImplTest, FormRenderDelegateImplTest_017, TestSize.Level1)
409 {
410     auto renderDelegate = SurfaceCreateOnFormRendererDelegateImpl();
411     uint64_t surfaceId = 1;
412 
413     constexpr uint32_t releaseCode = static_cast<uint32_t>(IFormRendererDelegate::Message::ON_SURFACE_RELEASE);
414     MessageParcel releaseData;
415     releaseData.WriteInterfaceToken(FormRendererDelegateImpl::GetDescriptor());
416     releaseData.WriteUint64(surfaceId);
417     MessageParcel releaseReply;
418     MessageOption releaseOption;
419     auto reUseAns = renderDelegate->OnRemoteRequest(releaseCode, releaseData, releaseReply, releaseOption);
420     EXPECT_EQ(reUseAns, ERR_OK);
421 }
422 
423 /**
424  * @tc.name: FormRenderDelegateImplTest_018
425  * @tc.desc: test FormRendererDelegateImpl OnRemoteRequest event
426  * @tc.type: FUNC
427  */
428 HWTEST_F(FormRenderDelegateImplTest, FormRenderDelegateImplTest_018, TestSize.Level1)
429 {
430     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
431 
432     const std::string action = "just a unittest";
433     constexpr uint32_t actionCreateCode = static_cast<uint32_t>(IFormRendererDelegate::Message::ON_ACTION_CREATE);
434     MessageParcel actionCreateData;
435     actionCreateData.WriteInterfaceToken(FormRendererDelegateImpl::GetDescriptor());
436     actionCreateData.WriteString(action);
437     MessageParcel actionCreateReply;
438     MessageOption actionCreateOption;
439     auto reUseAns =
440         renderDelegate->OnRemoteRequest(actionCreateCode, actionCreateData, actionCreateReply, actionCreateOption);
441     EXPECT_EQ(reUseAns, ERR_OK);
442 }
443 
444 /**
445  * @tc.name: FormRenderDelegateImplTest_019
446  * @tc.desc: test FormRendererDelegateImpl OnRemoteRequest event
447  * @tc.type: FUNC
448  */
449 HWTEST_F(FormRenderDelegateImplTest, FormRenderDelegateImplTest_019, TestSize.Level1)
450 {
451     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
452 
453     const std::string code = "code in unittest";
454     const std::string msg = "code in unittest";
455     constexpr uint32_t errorCode = static_cast<uint32_t>(IFormRendererDelegate::Message::ON_ERROR);
456     MessageParcel errorData;
457     errorData.WriteInterfaceToken(FormRendererDelegateImpl::GetDescriptor());
458     errorData.WriteString(code);
459     errorData.WriteString(msg);
460     MessageParcel errorReply;
461     MessageOption errorOption;
462     auto reUseAns = renderDelegate->OnRemoteRequest(errorCode, errorData, errorReply, errorOption);
463     EXPECT_EQ(reUseAns, ERR_OK);
464 }
465 
466 /**
467  * @tc.name: FormRenderDelegateImplTest_020
468  * @tc.desc: test FormRendererDelegateImpl OnRemoteRequest event
469  * @tc.type: FUNC
470  */
471 HWTEST_F(FormRenderDelegateImplTest, FormRenderDelegateImplTest_020, TestSize.Level1)
472 {
473     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
474 
475     float width = 1.0;
476     float height = 1.0;
477     float borderWidth = 1.0;
478     constexpr uint32_t surfaceChangeCode = static_cast<uint32_t>(IFormRendererDelegate::Message::ON_SURFACE_CHANGE);
479     MessageParcel surfaceChangeData;
480     surfaceChangeData.WriteInterfaceToken(FormRendererDelegateImpl::GetDescriptor());
481     surfaceChangeData.WriteFloat(width);
482     surfaceChangeData.WriteFloat(height);
483     surfaceChangeData.WriteFloat(borderWidth);
484     MessageParcel surfaceChangeReply;
485     MessageOption surfaceChangeOption;
486     auto reUseAns =
487         renderDelegate->OnRemoteRequest(surfaceChangeCode, surfaceChangeData, surfaceChangeReply, surfaceChangeOption);
488     EXPECT_EQ(reUseAns, ERR_OK);
489 }
490 
491 /**
492  * @tc.name: FormRenderDelegateImplTest_021
493  * @tc.desc: test FormRendererDelegateImpl OnRemoteRequest event
494  * @tc.type: FUNC
495  */
496 HWTEST_F(FormRenderDelegateImplTest, FormRenderDelegateImplTest_021, TestSize.Level1)
497 {
498     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
499 
500     const std::vector<std::string> formLinkInfos;
501     constexpr uint32_t linkInfoUpdateChangeCode =
502         static_cast<uint32_t>(IFormRendererDelegate::Message::ON_FORM_LINK_INFO_UPDATE);
503     MessageParcel linkInfoUpdateData;
504     linkInfoUpdateData.WriteInterfaceToken(FormRendererDelegateImpl::GetDescriptor());
505     linkInfoUpdateData.WriteStringVector(formLinkInfos);
506     MessageParcel linkInfoUpdateReply;
507     MessageOption linkInfoUpdateOption;
508     auto reUseAns = renderDelegate->OnRemoteRequest(
509         linkInfoUpdateChangeCode, linkInfoUpdateData, linkInfoUpdateReply, linkInfoUpdateOption);
510     EXPECT_EQ(reUseAns, ERR_OK);
511 }
512 
513 /**
514  * @tc.name: FormRenderDelegateImplTest_022
515  * @tc.desc: test FormRendererDelegateImpl OnRemoteRequest event
516  * @tc.type: FUNC
517  */
518 HWTEST_F(FormRenderDelegateImplTest, FormRenderDelegateImplTest_022, TestSize.Level1)
519 {
520     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
521 
522     constexpr uint32_t getRectCode =
523         static_cast<uint32_t>(IFormRendererDelegate::Message::ON_GET_RECT_RELATIVE_TO_WINDOW);
524     MessageParcel getRectData;
525     getRectData.WriteInterfaceToken(FormRendererDelegateImpl::GetDescriptor());
526     MessageParcel getRectReply;
527     MessageOption getRectOption;
528     auto reUseAns = renderDelegate->OnRemoteRequest(getRectCode, getRectData, getRectReply, getRectOption);
529     EXPECT_EQ(reUseAns, ERR_OK);
530 }
531 
532 }
533