• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 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 #define private public
18 #define protected public
19 #include "ability_manager_service.h"
20 #include "configuration.h"
21 #include "configuration_convertor.h"
22 #include "configuration_utils.h"
23 #ifdef SUPPORT_GRAPHICS
24 #include "locale_config.h"
25 #include "window_scene.h"
26 #endif
27 #undef private
28 #undef protected
29 
30 using namespace testing::ext;
31 using namespace OHOS::AppExecFwk;
32 namespace OHOS {
33 namespace AAFwk {
34 class ConfigurationTest : public testing::Test {
35 public:
36     static void SetUpTestCase(void);
37     static void TearDownTestCase(void);
38     void SetUp();
39     void TearDown();
40 
41     void InitResourceManager(std::shared_ptr<Global::Resource::ResourceManager> resourceManager);
42 };
43 
SetUpTestCase(void)44 void ConfigurationTest::SetUpTestCase(void)
45 {}
46 
TearDownTestCase(void)47 void ConfigurationTest::TearDownTestCase(void)
48 {}
49 
SetUp(void)50 void ConfigurationTest::SetUp(void)
51 {}
52 
TearDown(void)53 void ConfigurationTest::TearDown(void)
54 {}
55 
InitResourceManager(std::shared_ptr<Global::Resource::ResourceManager> resourceManager)56 void ConfigurationTest::InitResourceManager(std::shared_ptr<Global::Resource::ResourceManager> resourceManager)
57 {
58     std::unique_ptr<Global::Resource::ResConfig> resConfig(Global::Resource::CreateResConfig());
59     if (resConfig == nullptr) {
60         HILOG_ERROR("res config is invalid.");
61         return;
62     }
63 
64 #ifdef SUPPORT_GRAPHICS
65     UErrorCode status = U_ZERO_ERROR;
66     icu::Locale locale = icu::Locale::forLanguageTag("zh", status);
67     HILOG_INFO("language: %{public}s, script: %{public}s, region: %{public}s", locale.getLanguage(),
68         locale.getScript(), locale.getCountry());
69     resConfig->SetLocaleInfo(locale);
70 #endif
71     Global::Resource::RState updateRet = resourceManager->UpdateResConfig(*resConfig);
72     if (updateRet != Global::Resource::RState::SUCCESS) {
73         HILOG_ERROR("Init locale failed.");
74     }
75 }
76 
77 /*
78  * Feature: Configuration
79  * Function: AddItem
80  * SubFunction: NA
81  * FunctionPoints: NA
82  * EnvConditions:NA
83  * CaseDescription: Update Configuration
84  */
85 HWTEST_F(ConfigurationTest, AddItem_001, TestSize.Level1)
86 {
87     AppExecFwk::Configuration config;
88     int displayId = 1001;
89     std::string val{ "中文" };
90     EXPECT_EQ(0, config.GetItemSize());
91     config.AddItem(displayId, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, val);
92     EXPECT_EQ(1, config.GetItemSize());
93 
94     // replace
95     config.AddItem(displayId, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, val);
96     EXPECT_EQ(1, config.GetItemSize());
97 }
98 
99 /*
100  * Feature: Configuration
101  * Function: AddItem
102  * SubFunction: NA
103  * FunctionPoints: NA
104  * EnvConditions:NA
105  * CaseDescription: Update Configuration
106  */
107 HWTEST_F(ConfigurationTest, AddItem_002, TestSize.Level1)
108 {
109     AppExecFwk::Configuration config;
110     std::string val{ "中文" };
111     EXPECT_EQ(0, config.GetItemSize());
112     config.AddItem(AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, val);
113     EXPECT_EQ(1, config.GetItemSize());
114 
115     // replace
116     config.AddItem(AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, val);
117     EXPECT_EQ(1, config.GetItemSize());
118 }
119 
120 /*
121  * Feature: Configuration
122  * Function: AddItem
123  * SubFunction: NA
124  * FunctionPoints: NA
125  * EnvConditions:NA
126  * CaseDescription: Update Configuration
127  */
128 HWTEST_F(ConfigurationTest, AddItem_003, TestSize.Level1)
129 {
130     AppExecFwk::Configuration config;
131     std::string val{ "中文" };
132     std::string key{ "test_key" };
133     EXPECT_EQ(0, config.GetItemSize());
134     auto ref = config.AddItem(key, val);
135     EXPECT_FALSE(ref);
136 }
137 
138 /*
139  * Feature: Configuration
140  * Function: GetItem
141  * SubFunction: NA
142  * FunctionPoints: NA
143  * EnvConditions:NA
144  * CaseDescription: Process Configuration Change
145  */
146 HWTEST_F(ConfigurationTest, GetItem_001, TestSize.Level1)
147 {
148     AppExecFwk::Configuration config;
149     int displayId = 1001;
150     std::string val{ "中文" };
151     config.AddItem(displayId, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, val);
152 
153     auto item = config.GetItem(displayId, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE);
154     EXPECT_EQ(item, val);
155 
156     // replace
157     std::string english{ "英文" };
158     config.AddItem(displayId, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, english);
159     item = config.GetItem(displayId, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE);
160     EXPECT_EQ(item, english);
161 
162     int displayId2 = 1002;
163     std::string non{ "" };
164     item = config.GetItem(displayId2, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE);
165     EXPECT_EQ(item, non);
166 }
167 
168 /*
169  * Feature: Configuration
170  * Function: GetItem
171  * SubFunction: NA
172  * FunctionPoints: NA
173  * EnvConditions:NA
174  * CaseDescription: Process Configuration Change
175  */
176 HWTEST_F(ConfigurationTest, GetItem_002, TestSize.Level1)
177 {
178     AppExecFwk::Configuration config;
179     std::string val{ "中文" };
180     config.AddItem(AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, val);
181 
182     auto item = config.GetItem(AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE);
183     EXPECT_EQ(item, val);
184 
185     // replace
186     std::string english{ "英文" };
187     config.AddItem(AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, english);
188     item = config.GetItem(AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE);
189     EXPECT_EQ(item, english);
190 
191     int displayId2 = 1002;
192     std::string non{ "" };
193     item = config.GetItem(displayId2, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE);
194     EXPECT_EQ(item, non);
195 }
196 
197 /*
198  * Feature: Configuration
199  * Function: GetItem
200  * SubFunction: NA
201  * FunctionPoints: NA
202  * EnvConditions:NA
203  * CaseDescription: Process Configuration Change
204  */
205 HWTEST_F(ConfigurationTest, GetItem_003, TestSize.Level1)
206 {
207     AppExecFwk::Configuration config;
208     std::string non{ "" };
209     auto item = config.GetItem("test_kay");
210     EXPECT_EQ(item, non);
211 }
212 /*
213  * Feature: Configuration
214  * Function: RemoveItem
215  * SubFunction: NA
216  * FunctionPoints: NA
217  * EnvConditions:NA
218  * CaseDescription: Process Configuration Change
219  */
220 HWTEST_F(ConfigurationTest, RemoveItem_001, TestSize.Level1)
221 {
222     AppExecFwk::Configuration config;
223     int displayId = 1001;
224     std::string val{ "中文" };
225     config.AddItem(displayId, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, val);
226 
227     auto item = config.GetItem(displayId, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE);
228     EXPECT_EQ(item, val);
229 
230     // remove it
231     bool canRemove = config.RemoveItem(displayId, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE);
232     EXPECT_TRUE(canRemove);
233 
234     std::string non{ "" };
235     item = config.GetItem(displayId, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE);
236     EXPECT_EQ(item, non);
237 
238     canRemove = config.RemoveItem(displayId, non);
239     EXPECT_FALSE(canRemove);
240 
241     int displayId2 = 1002;
242     canRemove = config.RemoveItem(displayId2, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE);
243     EXPECT_FALSE(canRemove);
244 }
245 
246 /*
247  * Feature: Configuration
248  * Function: RemoveItem
249  * SubFunction: NA
250  * FunctionPoints: NA
251  * EnvConditions:NA
252  * CaseDescription: Process Configuration Change
253  */
254 HWTEST_F(ConfigurationTest, RemoveItem_002, TestSize.Level1)
255 {
256     AppExecFwk::Configuration config;
257     std::string val{ "中文" };
258     config.AddItem(AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, val);
259 
260     auto item = config.GetItem(AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE);
261     EXPECT_EQ(item, val);
262 
263     // remove it
264     bool canRemove = config.RemoveItem(AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE);
265     EXPECT_TRUE(canRemove);
266 
267     std::string non{ "" };
268     item = config.GetItem(AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE);
269     EXPECT_EQ(item, non);
270 
271     canRemove = config.RemoveItem(non);
272     EXPECT_FALSE(canRemove);
273 
274     canRemove = config.RemoveItem(AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE);
275     EXPECT_FALSE(canRemove);
276 }
277 
278 /*
279  * Feature: Configuration
280  * Function: GetItemSize
281  * SubFunction: Process Configuration Change Inner
282  * FunctionPoints: NA
283  * EnvConditions:NA
284  * CaseDescription: Process Configuration Change Inner
285  */
286 HWTEST_F(ConfigurationTest, GetItemSize_001, TestSize.Level1)
287 {
288     AppExecFwk::Configuration config;
289     int displayId = 1001;
290     std::string val{ "中文" };
291     EXPECT_EQ(0, config.GetItemSize());
292     config.AddItem(displayId, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, val);
293     EXPECT_EQ(1, config.GetItemSize());
294 
295     int displayId2 = 1002;
296     config.AddItem(displayId2, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, val);
297     EXPECT_EQ(2, config.GetItemSize());
298 }
299 
300 /*
301  * Feature: Configuration
302  * Function: CompareDifferent
303  * SubFunction: Process Configuration Change Inner
304  * FunctionPoints: NA
305  * EnvConditions:NA
306  * CaseDescription: Check according to key
307  */
308 HWTEST_F(ConfigurationTest, CompareDifferent_001, TestSize.Level1)
309 {
310     AppExecFwk::Configuration config;
311     int displayId = 1001;
312     std::string val{ "中文" };
313     config.AddItem(displayId, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, val);
314 
315 
316     AppExecFwk::Configuration config2;
317     int displayId2 = 1001;
318     std::string English{ "英文" };
319     config2.AddItem(displayId2, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, English);
320 
321     std::vector<std::string> changeKeyV;
322 
323     config.CompareDifferent(changeKeyV, config2);
324     int size = changeKeyV.size();
325     EXPECT_EQ(size, 1);
326 }
327 
328 /*
329  * Feature: Configuration
330  * Function: CompareDifferent
331  * SubFunction: Process Configuration Change Inner
332  * FunctionPoints: NA
333  * EnvConditions:NA
334  * CaseDescription: Check according to key
335  */
336 HWTEST_F(ConfigurationTest, CompareDifferent_002, TestSize.Level1)
337 {
338     AppExecFwk::Configuration config;
339     int displayId = 1001;
340     std::string val{ "中文" };
341     config.AddItem(displayId, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, val);
342 
343 
344     AppExecFwk::Configuration config2;
345     int displayId2 = 1002;
346     std::string English{ "英文" };
347     config2.AddItem(displayId2, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, English);
348 
349     std::vector<std::string> changeKeyV;
350 
351     config.CompareDifferent(changeKeyV, config2);
352     int size = changeKeyV.size();
353     EXPECT_EQ(size, 1);
354 }
355 
356 /*
357  * Feature: Configuration
358  * Function: Merge
359  * SubFunction: Process Configuration Change Inner
360  * FunctionPoints: NA
361  * EnvConditions:NA
362  * CaseDescription: Check according to key
363  */
364 HWTEST_F(ConfigurationTest, Merge_001, TestSize.Level1)
365 {
366     AppExecFwk::Configuration config;
367     int displayId = 1001;
368     std::string val{ "中文" };
369     config.AddItem(displayId, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, val);
370 
371 
372     AppExecFwk::Configuration config2;
373     int displayId2 = 1002;
374     std::string English{ "英文" };
375     config2.AddItem(displayId2, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, English);
376 
377     std::vector<std::string> changeKeyV;
378 
379     config.CompareDifferent(changeKeyV, config2);
380     int size = changeKeyV.size();
381     EXPECT_EQ(size, 1);
382 
383     config.Merge(changeKeyV, config2);
384 
385     auto item = config.GetItem(displayId2, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE);
386     EXPECT_EQ(item, English);
387 }
388 
389 /*
390  * Feature: Configuration
391  * Function: Merge
392  * SubFunction: Process Configuration Change Inner
393  * FunctionPoints: NA
394  * EnvConditions:NA
395  * CaseDescription: Check according to key
396  */
397 HWTEST_F(ConfigurationTest, Merge_002, TestSize.Level1)
398 {
399     AppExecFwk::Configuration config;
400     int displayId = 1001;
401     std::string chinese{ "Chinese " };
402     config.AddItem(displayId, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, chinese);
403 
404 
405     AppExecFwk::Configuration config2;
406     std::string english{ "English" };
407     config2.AddItem(displayId, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, english);
408 
409     std::vector<std::string> changeKeyV;
410 
411     config.CompareDifferent(changeKeyV, config2);
412     int size = changeKeyV.size();
413     EXPECT_EQ(size, 1);
414 
415     config.Merge(changeKeyV, config2);
416 
417     auto item = config.GetItem(displayId, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE);
418     EXPECT_EQ(item, english);
419 }
420 /*
421  * Feature: Configuration
422  * Function: GetName
423  * SubFunction: Process Configuration Change Inner
424  * FunctionPoints: NA
425  * EnvConditions:NA
426  * CaseDescription: Check according to key
427  */
428 HWTEST_F(ConfigurationTest, GetName_001, TestSize.Level1)
429 {
430     AppExecFwk::Configuration config;
431     int displayId = 1001;
432     std::string chinese{ "Chinese " };
433     config.AddItem(displayId, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, chinese);
434 
435     int displayId2 = 1002;
436     std::string english{ "English" };
437     config.AddItem(displayId2, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, english);
438 
439     auto name = config.GetName();
440     EXPECT_TRUE(name != "");
441     GTEST_LOG_(INFO) << "get name pair [" << name << "]";
442 }
443 
444 /*
445  * Feature: Configuration
446  * Function: Assignment structure
447  * SubFunction: Process Configuration Change Inner
448  * FunctionPoints: NA
449  * EnvConditions:NA
450  * CaseDescription: Check according to key
451  */
452 HWTEST_F(ConfigurationTest, structure_001, TestSize.Level1)
453 {
454     AppExecFwk::Configuration config;
455     int displayId = 1001;
456     std::string chinese{ "Chinese " };
457     config.AddItem(displayId, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, chinese);
458 
459     AppExecFwk::Configuration configOther(config);
460     auto item = configOther.GetItem(displayId, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE);
461     EXPECT_TRUE(item == chinese);
462 
463     AppExecFwk::Configuration configThird;
464     configThird = configOther;
465 
466     auto item2 = configThird.GetItem(displayId, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE);
467     EXPECT_TRUE(item2 == chinese);
468 
469     AppExecFwk::Configuration configFourth = configThird;
470     auto item3 = configFourth.GetItem(displayId, AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE);
471     EXPECT_TRUE(item3 == chinese);
472 }
473 
474 /**
475  * @tc.name: UpdateConfigToResMgr_001
476  * @tc.desc: Update configuration to resource manager.
477  * @tc.type: FUNC
478  * @tc.require: issueI6CWJD
479  */
480 HWTEST_F(ConfigurationTest, UpdateConfigToResMgr_001, TestSize.Level1)
481 {
482     // init configuration, "en", "dark", "false"
483     AppExecFwk::Configuration configuration;
484     bool addItemRet;
485     addItemRet = configuration.AddItem(AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, "en");
486     EXPECT_EQ(addItemRet, true);
487     addItemRet = configuration.AddItem(AAFwk::GlobalConfigurationKey::SYSTEM_COLORMODE, "dark");
488     EXPECT_EQ(addItemRet, true);
489     addItemRet = configuration.AddItem(AAFwk::GlobalConfigurationKey::INPUT_POINTER_DEVICE, "false");
490     EXPECT_EQ(addItemRet, true);
491 
492     // init resource manager, "zh", "light", "true"
493     std::shared_ptr<Global::Resource::ResourceManager> resourceManager(Global::Resource::CreateResourceManager());
494     ASSERT_NE(resourceManager, nullptr);
495     std::unique_ptr<Global::Resource::ResConfig> resConfig(Global::Resource::CreateResConfig());
496     ASSERT_NE(resConfig, nullptr);
497 
498 #ifdef SUPPORT_GRAPHICS
499     UErrorCode status = U_ZERO_ERROR;
500     icu::Locale locale = icu::Locale::forLanguageTag("zh", status);
501     EXPECT_EQ(status, U_ZERO_ERROR);
502     HILOG_INFO("language: %{public}s, script: %{public}s, region: %{public}s", locale.getLanguage(),
503         locale.getScript(), locale.getCountry());
504     resConfig->SetLocaleInfo(locale);
505 #endif
506     resConfig->SetColorMode(ConvertColorMode("light"));
507     resConfig->SetInputDevice(ConvertHasPointerDevice("true"));
508     Global::Resource::RState updateRet = resourceManager->UpdateResConfig(*resConfig);
509     EXPECT_EQ(updateRet, Global::Resource::RState::SUCCESS);
510 
511     // update configuration to resource manager
512     auto configUtils = std::make_shared<AbilityRuntime::ConfigurationUtils>();
513     ASSERT_NE(configUtils, nullptr);
514     configUtils->UpdateGlobalConfig(configuration, nullptr);
515     configUtils->UpdateGlobalConfig(configuration, resourceManager);
516 
517     // check resource manager has updated to "en", "dark", "false"
518     std::unique_ptr<Global::Resource::ResConfig> updatedResConfig(Global::Resource::CreateResConfig());
519     ASSERT_NE(updatedResConfig, nullptr);
520     resourceManager->GetResConfig(*updatedResConfig);
521 #ifdef SUPPORT_GRAPHICS
522     const icu::Locale *localeInfo = updatedResConfig->GetLocaleInfo();
523     ASSERT_NE(localeInfo, nullptr);
524     HILOG_INFO("language: %{public}s, script: %{public}s, region: %{public}s", localeInfo->getLanguage(),
525         localeInfo->getScript(), localeInfo->getCountry());
526     EXPECT_EQ(strcmp(localeInfo->getLanguage(), "en"), 0);
527 #endif
528     EXPECT_EQ(updatedResConfig->GetColorMode(), ConvertColorMode("dark"));
529     EXPECT_EQ(updatedResConfig->GetInputDevice(), ConvertHasPointerDevice("false"));
530 }
531 
532 /**
533  * @tc.name: InitDisplayConfig_0100
534  * @tc.desc: Init display config.
535  * @tc.type: FUNC
536  * @tc.require: issueI7HPHB
537  */
538 HWTEST_F(ConfigurationTest, InitDisplayConfig_0100, TestSize.Level1)
539 {
540     auto configUtils = std::make_shared<AbilityRuntime::ConfigurationUtils>();
541     ASSERT_NE(configUtils, nullptr);
542 
543     int displayId = Rosen::WindowScene::DEFAULT_DISPLAY_ID;
544     float originDensity;
545     std::string originDirection;
546     auto ret = configUtils->GetDisplayConfig(displayId, originDensity, originDirection);
547     EXPECT_EQ(ret, true);
548 
549     configUtils->InitDisplayConfig(displayId, nullptr, nullptr);
550 
551     AppExecFwk::Configuration originConfig;
552     auto configuration = std::make_shared<Configuration>(originConfig);
553     ASSERT_NE(configuration, nullptr);
554     configUtils->InitDisplayConfig(displayId, configuration, nullptr);
555 
556     std::shared_ptr<Global::Resource::ResourceManager> resourceManager(Global::Resource::CreateResourceManager());
557     ASSERT_NE(resourceManager, nullptr);
558     InitResourceManager(resourceManager);
559     configUtils->InitDisplayConfig(displayId, configuration, resourceManager);
560 
561     // check configurtion
562     std::string displayIdStr = configuration->GetItem(ConfigurationInner::APPLICATION_DISPLAYID);
563     EXPECT_EQ(displayIdStr, std::to_string(displayId));
564     std::string densityStr = configuration->GetItem(displayId, ConfigurationInner::APPLICATION_DENSITYDPI);
565     EXPECT_EQ(densityStr, GetDensityStr(originDensity));
566     std::string directionStr = configuration->GetItem(displayId, ConfigurationInner::APPLICATION_DIRECTION);
567     EXPECT_EQ(directionStr, originDirection);
568 
569     // check resourcemanager
570     std::unique_ptr<Global::Resource::ResConfig> resConfig(Global::Resource::CreateResConfig());
571     resourceManager->GetResConfig(*resConfig);
572     EXPECT_EQ(originDensity, resConfig->GetScreenDensity());
573     EXPECT_EQ(ConvertDirection(originDirection), resConfig->GetDirection());
574 }
575 
576 /**
577  * @tc.name: UpdateDisplayConfig_0100
578  * @tc.desc: Update display config with changed config.
579  * @tc.type: FUNC
580  * @tc.require: issueI7HPHB
581  */
582 HWTEST_F(ConfigurationTest, UpdateDisplayConfig_0100, TestSize.Level1)
583 {
584     auto configUtils = std::make_shared<AbilityRuntime::ConfigurationUtils>();
585     ASSERT_NE(configUtils, nullptr);
586 
587     int displayId = Rosen::WindowScene::DEFAULT_DISPLAY_ID;
588     float originDensity;
589     std::string originDirection;
590     auto ret = configUtils->GetDisplayConfig(displayId, originDensity, originDirection);
591     EXPECT_EQ(ret, true);
592 
593     bool configChanged;
594     configUtils->UpdateDisplayConfig(displayId, nullptr, nullptr, configChanged);
595 
596     AppExecFwk::Configuration originConfig;
597     auto configuration = std::make_shared<Configuration>(originConfig);
598     ASSERT_NE(configuration, nullptr);
599     configUtils->UpdateDisplayConfig(displayId, configuration, nullptr, configChanged);
600 
601     std::shared_ptr<Global::Resource::ResourceManager> resourceManager(Global::Resource::CreateResourceManager());
602     ASSERT_NE(resourceManager, nullptr);
603     InitResourceManager(resourceManager);
604     configUtils->UpdateDisplayConfig(displayId, configuration, resourceManager, configChanged);
605     EXPECT_EQ(configChanged, true);
606 
607     // check configurtion
608     std::string densityStr = configuration->GetItem(displayId, ConfigurationInner::APPLICATION_DENSITYDPI);
609     EXPECT_EQ(densityStr, GetDensityStr(originDensity));
610     std::string directionStr = configuration->GetItem(displayId, ConfigurationInner::APPLICATION_DIRECTION);
611     EXPECT_EQ(directionStr, originDirection);
612 
613     // check resourcemanager
614     std::unique_ptr<Global::Resource::ResConfig> resConfig(Global::Resource::CreateResConfig());
615     resourceManager->GetResConfig(*resConfig);
616     EXPECT_EQ(originDensity, resConfig->GetScreenDensity());
617     EXPECT_EQ(ConvertDirection(originDirection), resConfig->GetDirection());
618 }
619 
620 /**
621  * @tc.name: UpdateDisplayConfig_0200
622  * @tc.desc: Update display config with unchanged config.
623  * @tc.type: FUNC
624  * @tc.require: issueI7HPHB
625  */
626 HWTEST_F(ConfigurationTest, UpdateDisplayConfig_0200, TestSize.Level1)
627 {
628     auto configUtils = std::make_shared<AbilityRuntime::ConfigurationUtils>();
629     ASSERT_NE(configUtils, nullptr);
630 
631     int displayId = Rosen::WindowScene::DEFAULT_DISPLAY_ID;
632     float originDensity;
633     std::string originDirection;
634     auto ret = configUtils->GetDisplayConfig(displayId, originDensity, originDirection);
635     EXPECT_EQ(ret, true);
636 
637     bool configChanged;
638     configUtils->UpdateDisplayConfig(displayId, nullptr, nullptr, configChanged);
639 
640     AppExecFwk::Configuration originConfig;
641     auto configuration = std::make_shared<Configuration>(originConfig);
642     ASSERT_NE(configuration, nullptr);
643     configUtils->UpdateDisplayConfig(displayId, configuration, nullptr, configChanged);
644 
645     // Add configuration.
646     configuration->AddItem(displayId, ConfigurationInner::APPLICATION_DENSITYDPI, GetDensityStr(originDensity));
647     configuration->AddItem(displayId, ConfigurationInner::APPLICATION_DIRECTION, originDirection);
648     configuration->AddItem(ConfigurationInner::APPLICATION_DISPLAYID, std::to_string(displayId));
649 
650     std::shared_ptr<Global::Resource::ResourceManager> resourceManager(Global::Resource::CreateResourceManager());
651     ASSERT_NE(resourceManager, nullptr);
652     configUtils->UpdateDisplayConfig(displayId, configuration, resourceManager, configChanged);
653     EXPECT_EQ(configChanged, false);
654 }
655 } // namespace AAFwk
656 } // namespace OHOS
657