• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025-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 <memory>
17 #include "gtest/gtest.h"
18 #include "hap_resource.h"
19 #include "resource_manager_test_common.h"
20 #include "system_resource_manager.h"
21 
22 using namespace testing::ext;
23 using namespace OHOS::Global::Resource;
24 
25 namespace {
26 class SystemResourceManagerTest : public testing::Test {
27 protected:
28     void SetUp() override;
29     void TearDown() override;
30 
31     static constexpr int refCountTwo = 2;
32     static constexpr int refCountFour = 4;
33 };
34 
SetUp()35 void SystemResourceManagerTest::SetUp()
36 {
37     SystemResourceManager::ReleaseSystemResourceManager();
38 }
39 
TearDown()40 void SystemResourceManagerTest::TearDown()
41 {}
42 
TEST_F(SystemResourceManagerTest,CreateSystemResourceTest)43 TEST_F(SystemResourceManagerTest, CreateSystemResourceTest)
44 {
45     {
46         std::shared_ptr<ResourceManager> resMgr(CreateResourceManager());
47         EXPECT_EQ(SystemResourceManager::weakResourceManager_.use_count(), 1);
48     }
49     EXPECT_EQ(SystemResourceManager::weakResourceManager_.use_count(), 0);
50 }
51 
TEST_F(SystemResourceManagerTest,GetSystemResourceManagerNoSandBoxTest)52 TEST_F(SystemResourceManagerTest, GetSystemResourceManagerNoSandBoxTest)
53 {
54     {
55         SystemResourceManager::GetSystemResourceManagerNoSandBox();
56         EXPECT_EQ(SystemResourceManager::weakResourceManager_.use_count(), 1);
57     }
58     EXPECT_EQ(SystemResourceManager::weakResourceManager_.use_count(), 1);
59     SystemResourceManager::ReleaseSystemResourceManager();
60     EXPECT_EQ(SystemResourceManager::weakResourceManager_.use_count(), 0);
61 }
62 
TEST_F(SystemResourceManagerTest,DoubleCreateSystemResourceTest)63 TEST_F(SystemResourceManagerTest, DoubleCreateSystemResourceTest)
64 {
65     std::weak_ptr<HapResource> weakResource;
66     {
67         std::shared_ptr<ResourceManager> resMgr1(CreateResourceManager());
68         std::shared_ptr<ResourceManager> resMgr2(CreateResourceManager());
69         EXPECT_EQ(SystemResourceManager::weakResourceManager_.use_count(), refCountTwo);
70         auto sysResMgr = SystemResourceManager::weakResourceManager_.lock();
71         ASSERT_TRUE(sysResMgr != nullptr);
72         auto hapResources = sysResMgr->hapManager_->GetHapResource();
73         ASSERT_GT(hapResources.size(), 0);
74         weakResource = hapResources[0];
75         EXPECT_EQ(weakResource.use_count(), refCountFour);
76     }
77     EXPECT_EQ(weakResource.use_count(), 0);
78 }
79 
TEST_F(SystemResourceManagerTest,SystemResourceCreateBeforeGet)80 TEST_F(SystemResourceManagerTest, SystemResourceCreateBeforeGet)
81 {
82     std::weak_ptr<HapResource> weakResource;
83     {
84         std::shared_ptr<ResourceManager> resMgr(CreateResourceManager());
85         SystemResourceManager::GetSystemResourceManagerNoSandBox();
86         EXPECT_EQ(SystemResourceManager::weakResourceManager_.use_count(), refCountTwo);
87         auto sysResMgr = SystemResourceManager::weakResourceManager_.lock();
88         ASSERT_TRUE(sysResMgr != nullptr);
89         auto hapResources = sysResMgr->hapManager_->GetHapResource();
90         ASSERT_GT(hapResources.size(), 0);
91         weakResource = hapResources[0];
92         EXPECT_EQ(weakResource.use_count(), refCountFour);
93     }
94     EXPECT_EQ(weakResource.use_count(), refCountTwo);
95     SystemResourceManager::ReleaseSystemResourceManager();
96     EXPECT_EQ(weakResource.use_count(), 0);
97 }
98 
TEST_F(SystemResourceManagerTest,SystemResourceCreateAfterGet)99 TEST_F(SystemResourceManagerTest, SystemResourceCreateAfterGet)
100 {
101     std::weak_ptr<HapResource> weakResource;
102     {
103         SystemResourceManager::GetSystemResourceManagerNoSandBox();
104         std::shared_ptr<ResourceManager> resMgr(CreateResourceManager());
105         EXPECT_EQ(SystemResourceManager::weakResourceManager_.use_count(), refCountTwo);
106         auto sysResMgr = SystemResourceManager::weakResourceManager_.lock();
107         ASSERT_TRUE(sysResMgr != nullptr);
108         auto hapResources = sysResMgr->hapManager_->GetHapResource();
109         ASSERT_GT(hapResources.size(), 0);
110         weakResource = hapResources[0];
111         EXPECT_EQ(weakResource.use_count(), refCountFour);
112     }
113     EXPECT_EQ(weakResource.use_count(), refCountTwo);
114     SystemResourceManager::ReleaseSystemResourceManager();
115     EXPECT_EQ(weakResource.use_count(), 0);
116 }
117 }  // namespace