1 /*
2  * Copyright (c) 2023 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 #include <thread>
16 #include <chrono>
17 #include "test/mock/interfaces/mock_uicontent.h"
18 #include "ui_content.h"
19 #include "interfaces/inner_api/form_render/include/form_renderer.h"
20 #include "interfaces/inner_api/form_render/include/form_renderer_delegate_impl.h"
21 #define private public
22 #include "interfaces/inner_api/form_render/include/form_renderer_group.h"
23 #undef private
24 #include "test/mock/core/pipeline/mock_pipeline_context.h"
25 
26 using namespace testing;
27 using namespace testing::ext;
28 namespace OHOS::Ace {
29 namespace {
30 constexpr char FORM_RENDER_STATE[] = "ohos.extra.param.key.form_render_state";
31 constexpr char FORM_RENDERER_COMP_ID[] = "ohos.extra.param.key.form_comp_id";
32 } // namespace
33 class FormRenderGroupTest : public testing::Test {
34 public:
SetUpTestCase()35     static void SetUpTestCase() {};
TearDownTestCase()36     static void TearDownTestCase() {};
37 };
38 /**
39  * @tc.name: FormRenderGroupTest_001
40  * @tc.desc: Test AddForm() funtion.
41  * @tc.type: FUNC
42  */
HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_001, TestSize.Level1)43 HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_001, TestSize.Level1)
44 {
45     GTEST_LOG_(INFO) << "FormRenderGroupTest_001 start";
46     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderGroupTest_001");
47     ASSERT_TRUE(eventRunner);
48     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
49     auto group = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
50     EXPECT_TRUE(group);
51     OHOS::AAFwk::Want want;
52     OHOS::AppExecFwk::FormJsInfo formJsInfo;
53     formJsInfo.bundleName = "bundleName";
54     formJsInfo.moduleName = "moduleName";
55     formJsInfo.formId = 1;
56     EXPECT_EQ(formJsInfo.formId, 1);
57     group->AddForm(want, formJsInfo);
58     want.SetParam(FORM_RENDER_STATE, true);
59     group->AddForm(want, formJsInfo);
60     GTEST_LOG_(INFO) << "FormRenderGroupTest_001 end";
61 }
62 /**
63  * @tc.name: FormRenderGroupTest_002
64  * @tc.desc: Test OnUnlock() function.
65  * @tc.type: FUNC
66  */
HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_002, TestSize.Level1)67 HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_002, TestSize.Level1)
68 {
69     GTEST_LOG_(INFO) << "FormRenderGroupTest_002 start";
70     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderGroupTest_002");
71     ASSERT_TRUE(eventRunner);
72     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
73     auto group = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
74     EXPECT_TRUE(group);
75     group->OnUnlock();
76     GTEST_LOG_(INFO) << "FormRenderGroupTest_002 end";
77 }
78 /**
79  * @tc.name: FormRenderGroupTest_003
80  * @tc.desc: Test UpdateForm() function.
81  * @tc.type: FUNC
82  */
HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_003, TestSize.Level1)83 HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_003, TestSize.Level1)
84 {
85     GTEST_LOG_(INFO) << "FormRenderGroupTest_003 start";
86     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderGroupTest_003");
87     ASSERT_TRUE(eventRunner);
88     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
89     auto group = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
90     EXPECT_TRUE(group);
91     OHOS::AppExecFwk::FormJsInfo formJsInfo;
92     formJsInfo.bundleName = "bundleName";
93     formJsInfo.moduleName = "moduleName";
94     group->UpdateForm(formJsInfo);
95     group->formRenderer_ = std::make_shared<FormRenderer>(nullptr, nullptr, eventHandler);
96     group->UpdateForm(formJsInfo);
97     GTEST_LOG_(INFO) << "FormRenderGroupTest_003 end";
98 }
99 /**
100  * @tc.name: FormRenderGroupTest_004
101  * @tc.desc: Test DeleteForm() function.
102  * @tc.type: FUNC
103  */
HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_004, TestSize.Level1)104 HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_004, TestSize.Level1)
105 {
106     GTEST_LOG_(INFO) << "FormRenderGroupTest_004 start";
107     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderGroupTest_004");
108     ASSERT_TRUE(eventRunner);
109     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
110     auto group = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
111     EXPECT_TRUE(group);
112     std::string id = "123456";
113     group->DeleteForm(id);
114     GTEST_LOG_(INFO) << "FormRenderGroupTest_004 end";
115 }
116 /**
117  * @tc.name: FormRenderGroupTest_005
118  * @tc.desc: Test DeleteForm() function.
119  * @tc.type: FUNC
120  */
HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_005, TestSize.Level1)121 HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_005, TestSize.Level1)
122 {
123     GTEST_LOG_(INFO) << "FormRenderGroupTest_005 start";
124     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderGroupTest_005");
125     ASSERT_TRUE(eventRunner);
126     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
127     auto group = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
128     EXPECT_TRUE(group);
129     OHOS::AAFwk::Want want;
130     OHOS::AppExecFwk::FormJsInfo formJsInfo;
131     formJsInfo.bundleName = "bundleName";
132     formJsInfo.moduleName = "moduleName";
133     group->AddForm(want, formJsInfo);
134     group->DeleteForm();
135     GTEST_LOG_(INFO) << "FormRenderGroupTest_005 end";
136 }
137 /**
138  * @tc.name: FormRenderGroupTest_006
139  * @tc.desc: Test ReloadForm() function.
140  * @tc.type: FUNC
141  */
HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_006, TestSize.Level1)142 HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_006, TestSize.Level1)
143 {
144     GTEST_LOG_(INFO) << "FormRenderGroupTest_006 start";
145     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderGroupTest_006");
146     ASSERT_TRUE(eventRunner);
147     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
148     auto group = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
149     EXPECT_TRUE(group);
150     OHOS::AppExecFwk::FormJsInfo formJsInfo;
151     formJsInfo.bundleName = "bundleName";
152     formJsInfo.moduleName = "moduleName";
153     formJsInfo.formId = 2;
154     EXPECT_EQ(formJsInfo.formId, 2);
155     group->ReloadForm(formJsInfo);
156     GTEST_LOG_(INFO) << "FormRenderGroupTest_006 end";
157 }
158 /**
159  * @tc.name: FormRenderGroupTest_007
160  * @tc.desc: Test UpdateConfiguration() function.
161  * @tc.type: FUNC
162  */
HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_007, TestSize.Level1)163 HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_007, TestSize.Level1)
164 {
165     GTEST_LOG_(INFO) << "FormRenderGroupTest_007 start";
166     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderGroupTest_007");
167     ASSERT_TRUE(eventRunner);
168     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
169     auto group = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
170     EXPECT_TRUE(group);
171     std::shared_ptr<OHOS::AppExecFwk::Configuration> config;
172     group->UpdateConfiguration(config);
173     GTEST_LOG_(INFO) << "FormRenderGroupTest_007 end";
174 }
175 /**
176  * @tc.name: FormRenderGroupTest_008
177  * @tc.desc: Test IsFormRequestsEmpty() function.
178  * @tc.type: FUNC
179  */
HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_008, TestSize.Level1)180 HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_008, TestSize.Level1)
181 {
182     GTEST_LOG_(INFO) << "FormRenderGroupTest_008 start";
183     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderGroupTest_008");
184     ASSERT_TRUE(eventRunner);
185     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
186     auto group = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
187     EXPECT_TRUE(group);
188     EXPECT_EQ(true, group->IsFormRequestsEmpty());
189     GTEST_LOG_(INFO) << "FormRenderGroupTest_008 end";
190 }
191 /**
192  * @tc.name: FormRenderGroupTest_009
193  * @tc.desc: Test GetAllRendererFormRequests() function.
194  * @tc.type: FUNC
195  */
HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_009, TestSize.Level1)196 HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_009, TestSize.Level1)
197 {
198     GTEST_LOG_(INFO) << "FormRenderGroupTest_009 start";
199     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderGroupTest_009");
200     ASSERT_TRUE(eventRunner);
201     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
202     auto group = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
203     EXPECT_TRUE(group);
204     std::vector<FormRequest> from_ = group->GetAllRendererFormRequests();
205     GTEST_LOG_(INFO) << "FormRenderGroupTest_009 end";
206 }
207 /**
208  * @tc.name: FormRenderGroupTest_010
209  * @tc.desc: Test RecycleForm() function.
210  * @tc.type: FUNC
211  */
HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_010, TestSize.Level1)212 HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_010, TestSize.Level1)
213 {
214     GTEST_LOG_(INFO) << "FormRenderGroupTest_010 start";
215     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderGroupTest_010");
216     ASSERT_TRUE(eventRunner);
217     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
218     auto group = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
219     EXPECT_TRUE(group);
220     std::string data = "123";
221     group->RecycleForm(data);
222     GTEST_LOG_(INFO) << "FormRenderGroupTest_010 end";
223 }
224 /**
225  * @tc.name: FormRenderGroupTest_011
226  * @tc.desc: Test FormRendererGroup() function.
227  * @tc.type: FUNC
228  */
HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_011, TestSize.Level1)229 HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_011, TestSize.Level1)
230 {
231     GTEST_LOG_(INFO) << "FormRenderGroupTest_011 start";
232     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderGroupTest_011");
233     ASSERT_TRUE(eventRunner);
234     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
235     FormRendererGroup group(nullptr, nullptr, eventHandler);
236     GTEST_LOG_(INFO) << "FormRenderGroupTest_011 end";
237 }
238 
239 /**
240  * @tc.name: FormRenderGroupTest_014
241  * @tc.desc: Test OnUnlock() function.
242  * @tc.type: FUNC
243  */
HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_014, TestSize.Level1)244 HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_014, TestSize.Level1)
245 {
246     GTEST_LOG_(INFO) << "FormRenderGroupTest_0014 start";
247     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderGroupTest_014");
248     ASSERT_TRUE(eventRunner);
249     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
250     auto group = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
251     FormRequest formRequest;
252     formRequest.compId = "unlock";
253     bool flag = false;
254     if (group != nullptr) {
255         group->formRequests_.push_back(formRequest);
256         group->currentCompId_ = "unlock";
257         group->OnUnlock();
258         flag = true;
259     }
260     EXPECT_TRUE(flag);
261     GTEST_LOG_(INFO) << "FormRenderGroupTest_014 end";
262 }
263 
264 /**
265  * @tc.name: FormRenderGroupTest_015
266  * @tc.desc: Test DeleteForm() function.
267  * @tc.type: FUNC
268  */
HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_015, TestSize.Level1)269 HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_015, TestSize.Level1)
270 {
271     GTEST_LOG_(INFO) << "FormRenderGroupTest_015 start";
272     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderGroupTest_015");
273     ASSERT_TRUE(eventRunner);
274     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
275     auto group = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
276     std::string compId = "deleteform";
277     bool flag = false;
278     if (group != nullptr) {
279         group->currentCompId_ = "deleteform";
280         group->DeleteForm(compId);
281         flag = true;
282     }
283     EXPECT_TRUE(flag);
284     GTEST_LOG_(INFO) << "FormRenderGroupTest_015 end";
285 }
286 
287 /**
288  * @tc.name: FormRenderGroupTest_016
289  * @tc.desc: Test DeleteForm() function.
290  * @tc.type: FUNC
291  */
HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_016, TestSize.Level1)292 HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_016, TestSize.Level1)
293 {
294     GTEST_LOG_(INFO) << "FormRenderGroupTest_016 start";
295     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderGroupTest_016");
296     ASSERT_TRUE(eventRunner);
297     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
298     auto group = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
299     group->formRenderer_ = nullptr;
300     std::string compId = "deleteform";
301     FormRequest formRequest;
302     formRequest.compId = "requestdeleteform";
303     bool flag = false;
304     if (group != nullptr) {
305         group->formRequests_.push_back(formRequest);
306         group->currentCompId_ = "deleteform";
307         group->DeleteForm(compId);
308         flag = true;
309     }
310     EXPECT_TRUE(flag);
311     GTEST_LOG_(INFO) << "FormRenderGroupTest_016 end";
312 }
313 
314 /**
315  * @tc.name: FormRenderGroupTest_017
316  * @tc.desc: Test DeleteForm() function.
317  * @tc.type: FUNC
318  */
HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_017, TestSize.Level1)319 HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_017, TestSize.Level1)
320 {
321     GTEST_LOG_(INFO) << "FormRenderGroupTest_017 start";
322     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderGroupTest_017");
323     ASSERT_TRUE(eventRunner);
324     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
325     auto group = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
326     group->formRenderer_ = std::make_shared<FormRenderer>(nullptr, nullptr, eventHandler);
327     std::string compId = "deleteform";
328     FormRequest formRequest;
329     formRequest.compId = "requestdeleteform";
330     bool flag = false;
331     if (group != nullptr) {
332         group->formRequests_.push_back(formRequest);
333         group->currentCompId_ = "deleteform";
334         group->DeleteForm(compId);
335         flag = true;
336     }
337     EXPECT_TRUE(flag);
338     GTEST_LOG_(INFO) << "FormRenderGroupTest_017 end";
339 }
340 
341 /**
342  * @tc.name: FormRenderGroupTest_018
343  * @tc.desc: Test UpdateConfiguration() function.
344  * @tc.type: FUNC
345  */
HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_018, TestSize.Level1)346 HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_018, TestSize.Level1)
347 {
348     GTEST_LOG_(INFO) << "FormRenderGroupTest_018 start";
349     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderGroupTest_018");
350     ASSERT_TRUE(eventRunner);
351     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
352     auto group = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
353     bool flag = false;
354     if (group != nullptr) {
355         group->UpdateConfiguration(nullptr);
356         flag = true;
357     }
358     EXPECT_TRUE(flag);
359     std::shared_ptr<OHOS::AppExecFwk::Configuration> config = std::make_shared<OHOS::AppExecFwk::Configuration>();
360     group->formRenderer_ = nullptr;
361     flag = false;
362     if (group != nullptr) {
363         group->UpdateConfiguration(config);
364         flag = true;
365     }
366     EXPECT_TRUE(flag);
367     group->formRenderer_ = std::make_shared<FormRenderer>(nullptr, nullptr, eventHandler);
368     flag = false;
369     if (group != nullptr) {
370         group->UpdateConfiguration(config);
371         flag = true;
372     }
373     EXPECT_TRUE(flag);
374     GTEST_LOG_(INFO) << "FormRenderGroupTest_018 end";
375 }
376 
377 /**
378  * @tc.name: FormRenderGroupTest_019
379  * @tc.desc: Test RecycleForm() function.
380  * @tc.type: FUNC
381  */
HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_019, TestSize.Level1)382 HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_019, TestSize.Level1)
383 {
384     GTEST_LOG_(INFO) << "FormRenderGroupTest_019 start";
385     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderGroupTest_019");
386     ASSERT_TRUE(eventRunner);
387     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
388     auto group = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
389     std::string statusData = "statusData";
390     group->formRenderer_ = nullptr;
391     bool flag = false;
392     if (group != nullptr) {
393         group->RecycleForm(statusData);
394         flag = true;
395     }
396     EXPECT_TRUE(flag);
397     group->formRenderer_ = std::make_shared<FormRenderer>(nullptr, nullptr, eventHandler);
398     flag = false;
399     if (group != nullptr) {
400         group->RecycleForm(statusData);
401         flag = true;
402     }
403     EXPECT_TRUE(flag);
404     GTEST_LOG_(INFO) << "FormRenderGroupTest_019 end";
405 }
406 
407 /**
408  * @tc.name: FormRenderGroupTest_020
409  * @tc.desc: Test PreInitAddForm() function.
410  * @tc.type: FUNC
411  */
HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_020, TestSize.Level1)412 HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_020, TestSize.Level1)
413 {
414     GTEST_LOG_(INFO) << "FormRenderGroupTest_020 start";
415     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderGroupTest_020");
416     ASSERT_TRUE(eventRunner);
417     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
418     auto group = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
419     FormRequest formRequest;
420     formRequest.compId = "PreInitAddForm";
421     bool flag = false;
422     if (group != nullptr) {
423         group->initState_ = FormRendererGroup::FormRendererInitState::PRE_INITIALIZED;
424         group->PreInitAddForm(formRequest);
425         flag = true;
426     }
427     EXPECT_TRUE(flag);
428     flag = false;
429     if (group != nullptr) {
430         group->initState_ = FormRendererGroup::FormRendererInitState::UNINITIALIZED;
431         group->formRenderer_ = std::make_shared<FormRenderer>(nullptr, nullptr, eventHandler);
432         group->PreInitAddForm(formRequest);
433         flag = true;
434     }
435     EXPECT_TRUE(flag);
436     flag = false;
437     if (group != nullptr) {
438         group->initState_ = FormRendererGroup::FormRendererInitState::UNINITIALIZED;
439         group->formRenderer_ = nullptr;
440         group->PreInitAddForm(formRequest);
441         flag = true;
442     }
443     EXPECT_TRUE(flag);
444     GTEST_LOG_(INFO) << "FormRenderGroupTest_020 end";
445 }
446 
447 /**
448  * @tc.name: FormRenderGroupTest_021
449  * @tc.desc: Test InnerAddForm() function.
450  * @tc.type: FUNC
451  */
HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_021, TestSize.Level1)452 HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_021, TestSize.Level1)
453 {
454     GTEST_LOG_(INFO) << "FormRenderGroupTest_021 start";
455     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderGroupTest_021");
456     ASSERT_TRUE(eventRunner);
457     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
458     auto group = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
459     FormRequest formRequest;
460     formRequest.compId = "InnerAddForm";
461     bool flag = false;
462     if (group != nullptr) {
463         group->initState_ = FormRendererGroup::FormRendererInitState::PRE_INITIALIZED;
464         group->formRenderer_ = nullptr;
465         group->InnerAddForm(formRequest);
466         flag = true;
467     }
468     EXPECT_TRUE(flag);
469     flag = false;
470     if (group != nullptr) {
471         group->initState_ = FormRendererGroup::FormRendererInitState::UNINITIALIZED;
472         group->formRenderer_ = std::make_shared<FormRenderer>(nullptr, nullptr, eventHandler);
473         group->InnerAddForm(formRequest);
474         flag = true;
475     }
476     EXPECT_TRUE(flag);
477     flag = false;
478     if (group != nullptr) {
479         group->initState_ = FormRendererGroup::FormRendererInitState::PRE_INITIALIZED;
480         group->formRenderer_ = std::make_shared<FormRenderer>(nullptr, nullptr, eventHandler);
481         group->InnerAddForm(formRequest);
482         flag = true;
483     }
484     EXPECT_TRUE(flag);
485     flag = false;
486     if (group != nullptr) {
487         group->initState_ = FormRendererGroup::FormRendererInitState::INITIALIZED;
488         group->formRenderer_ =  std::make_shared<FormRenderer>(nullptr, nullptr, eventHandler);
489         group->InnerAddForm(formRequest);
490         flag = true;
491     }
492     EXPECT_TRUE(flag);
493     GTEST_LOG_(INFO) << "FormRenderGroupTest_021 end";
494 }
495 
496 /**
497  * @tc.name: FormRenderGroupTest_022
498  * @tc.desc: Test GetOrderedAndCurrentCompIds() function.
499  * @tc.type: FUNC
500  */
HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_022, TestSize.Level1)501 HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_022, TestSize.Level1)
502 {
503     GTEST_LOG_(INFO) << "FormRenderGroupTest_022 start";
504     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderGroupTest_022");
505     ASSERT_TRUE(eventRunner);
506     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
507     auto group = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
508     EXPECT_TRUE(group);
509     std::pair<std::vector<std::string>, std::string> compIdPair = group->GetOrderedAndCurrentCompIds();
510     EXPECT_EQ(true, compIdPair.first.empty());
511     EXPECT_EQ(true, compIdPair.second.empty());
512     OHOS::AAFwk::Want want;
513     OHOS::AppExecFwk::FormJsInfo formJsInfo;
514     formJsInfo.formId = 1;
515     std::string compId1 = "comp1";
516     want.SetParam(FORM_RENDERER_COMP_ID, compId1);
517     group->AddForm(want, formJsInfo);
518     formJsInfo.formId = 2;
519     std::string compId2 = "comp2";
520     want.SetParam(FORM_RENDERER_COMP_ID, compId2);
521     group->AddForm(want, formJsInfo);
522     compIdPair = group->GetOrderedAndCurrentCompIds();
523     EXPECT_EQ(2, compIdPair.first.size());
524     EXPECT_EQ(compId1, compIdPair.first[0]);
525     EXPECT_EQ(compId2, compIdPair.first[1]);
526     EXPECT_EQ(compId2, compIdPair.second);
527     group->DeleteForm(compId2);
528     compIdPair = group->GetOrderedAndCurrentCompIds();
529     EXPECT_EQ(1, compIdPair.first.size());
530     EXPECT_EQ(compId1, compIdPair.second);
531     GTEST_LOG_(INFO) << "FormRenderGroupTest_022 end";
532 }
533 
534 /**
535  * @tc.name: FormRenderGroupTest_023
536  * @tc.desc: Test RecoverRenderer() function.
537  * @tc.type: FUNC
538  */
HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_023, TestSize.Level1)539 HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_023, TestSize.Level1)
540 {
541     GTEST_LOG_(INFO) << "FormRenderGroupTest_023 start";
542     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderGroupTest_023");
543     ASSERT_TRUE(eventRunner);
544     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
545     auto group = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
546     EXPECT_TRUE(group);
547     OHOS::AAFwk::Want want;
548     OHOS::AppExecFwk::FormJsInfo formJsInfo;
549     formJsInfo.formId = 1;
550     std::string compId1 = "comp1";
551     want.SetParam(FORM_RENDERER_COMP_ID, compId1);
552     group->AddForm(want, formJsInfo);
553     formJsInfo.formId = 2;
554     std::string compId2 = "comp2";
555     want.SetParam(FORM_RENDERER_COMP_ID, compId2);
556     group->AddForm(want, formJsInfo);
557     std::pair<std::vector<std::string>, std::string> compIdPair = group->GetOrderedAndCurrentCompIds();
558     group->DeleteForm();
559     EXPECT_EQ(true, group->GetAllRendererFormRequests().empty());
560     std::vector<FormRequest> requests;
561     group->RecoverRenderer(requests, 0);
562     EXPECT_EQ(true, group->GetAllRendererFormRequests().empty());
563     for (auto compId: compIdPair.first) {
564         FormRequest formRequest;
565         formRequest.compId = compId;
566         requests.emplace_back(formRequest);
567     }
568     group->RecoverRenderer(requests, requests.size());
569     EXPECT_EQ(true, group->GetAllRendererFormRequests().empty());
570     group->RecoverRenderer(requests, requests.size() - 1);
571     EXPECT_EQ(2, group->GetAllRendererFormRequests().size());
572     compIdPair = group->GetOrderedAndCurrentCompIds();
573     EXPECT_EQ(compId2, compIdPair.second);
574     GTEST_LOG_(INFO) << "FormRenderGroupTest_023 end";
575 }
576 }