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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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_012 241 * @tc.desc: Test SetVisibleChange() function. 242 * @tc.type: FUNC 243 */ 244 HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_012, TestSize.Level1) 245 { 246 GTEST_LOG_(INFO) << "FormRenderGroupTest_012 start"; 247 auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderGroupTest_012"); 248 ASSERT_TRUE(eventRunner); 249 auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner); 250 auto group = FormRendererGroup::Create(nullptr, nullptr, eventHandler); 251 EXPECT_TRUE(group); 252 group->SetVisibleChange(true); 253 GTEST_LOG_(INFO) << "FormRenderGroupTest_012 end"; 254 } 255 256 /** 257 * @tc.name: FormRenderGroupTest_022 258 * @tc.desc: Test GetOrderedAndCurrentCompIds() function. 259 * @tc.type: FUNC 260 */ 261 HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_022, TestSize.Level1) 262 { 263 GTEST_LOG_(INFO) << "FormRenderGroupTest_022 start"; 264 auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderGroupTest_022"); 265 ASSERT_TRUE(eventRunner); 266 auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner); 267 auto group = FormRendererGroup::Create(nullptr, nullptr, eventHandler); 268 EXPECT_TRUE(group); 269 std::pair<std::vector<std::string>, std::string> compIdPair = group->GetOrderedAndCurrentCompIds(); 270 EXPECT_EQ(true, compIdPair.first.empty()); 271 EXPECT_EQ(true, compIdPair.second.empty()); 272 OHOS::AAFwk::Want want; 273 OHOS::AppExecFwk::FormJsInfo formJsInfo; 274 formJsInfo.formId = 1; 275 std::string compId1 = "comp1"; 276 want.SetParam(FORM_RENDERER_COMP_ID, compId1); 277 group->AddForm(want, formJsInfo); 278 formJsInfo.formId = 2; 279 std::string compId2 = "comp2"; 280 want.SetParam(FORM_RENDERER_COMP_ID, compId2); 281 group->AddForm(want, formJsInfo); 282 compIdPair = group->GetOrderedAndCurrentCompIds(); 283 EXPECT_EQ(2, compIdPair.first.size()); 284 EXPECT_EQ(compId1, compIdPair.first[0]); 285 EXPECT_EQ(compId2, compIdPair.first[1]); 286 EXPECT_EQ(compId2, compIdPair.second); 287 group->DeleteForm(compId2); 288 compIdPair = group->GetOrderedAndCurrentCompIds(); 289 EXPECT_EQ(1, compIdPair.first.size()); 290 EXPECT_EQ(compId1, compIdPair.second); 291 GTEST_LOG_(INFO) << "FormRenderGroupTest_022 end"; 292 } 293 294 /** 295 * @tc.name: FormRenderGroupTest_023 296 * @tc.desc: Test RecoverRenderer() function. 297 * @tc.type: FUNC 298 */ 299 HWTEST_F(FormRenderGroupTest, FormRenderGroupTest_023, TestSize.Level1) 300 { 301 GTEST_LOG_(INFO) << "FormRenderGroupTest_023 start"; 302 auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderGroupTest_023"); 303 ASSERT_TRUE(eventRunner); 304 auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner); 305 auto group = FormRendererGroup::Create(nullptr, nullptr, eventHandler); 306 EXPECT_TRUE(group); 307 OHOS::AAFwk::Want want; 308 OHOS::AppExecFwk::FormJsInfo formJsInfo; 309 formJsInfo.formId = 1; 310 std::string compId1 = "comp1"; 311 want.SetParam(FORM_RENDERER_COMP_ID, compId1); 312 group->AddForm(want, formJsInfo); 313 formJsInfo.formId = 2; 314 std::string compId2 = "comp2"; 315 want.SetParam(FORM_RENDERER_COMP_ID, compId2); 316 group->AddForm(want, formJsInfo); 317 std::pair<std::vector<std::string>, std::string> compIdPair = group->GetOrderedAndCurrentCompIds(); 318 group->DeleteForm(); 319 EXPECT_EQ(true, group->GetAllRendererFormRequests().empty()); 320 std::vector<FormRequest> requests; 321 group->RecoverRenderer(requests, 0); 322 EXPECT_EQ(true, group->GetAllRendererFormRequests().empty()); 323 for (auto compId: compIdPair.first) { 324 FormRequest formRequest; 325 formRequest.compId = compId; 326 requests.emplace_back(formRequest); 327 } 328 group->RecoverRenderer(requests, requests.size()); 329 EXPECT_EQ(true, group->GetAllRendererFormRequests().empty()); 330 group->RecoverRenderer(requests, requests.size() - 1); 331 EXPECT_EQ(2, group->GetAllRendererFormRequests().size()); 332 compIdPair = group->GetOrderedAndCurrentCompIds(); 333 EXPECT_EQ(compId2, compIdPair.second); 334 GTEST_LOG_(INFO) << "FormRenderGroupTest_023 end"; 335 } 336 }