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
16 #include <cstdint>
17 #include <gtest/gtest.h>
18 #include "mock_session_manager_service.h"
19 #include "display_manager.h"
20 #include "window_agent.h"
21 #include "window_impl.h"
22 #include "window_property.h"
23 #include "window_root.h"
24 #include "wm_common.h"
25
26 using namespace testing;
27 using namespace testing::ext;
28
29 namespace OHOS {
30 namespace Rosen {
31 namespace {
32 constexpr HiviewDFX::HiLogLabel LABEL = {LOG_CORE, HILOG_DOMAIN_WINDOW, "MockSessionManagerServiceTest"};
33 }
34
35 class MockSessionManagerServiceTest : public testing::Test {
36 public:
37 static void SetUpTestCase();
38 static void TearDownTestCase();
39 void SetUp() override;
40 void TearDown() override;
41 };
42
SetUpTestCase()43 void MockSessionManagerServiceTest::SetUpTestCase()
44 {
45 }
46
TearDownTestCase()47 void MockSessionManagerServiceTest::TearDownTestCase()
48 {
49 }
50
SetUp()51 void MockSessionManagerServiceTest::SetUp()
52 {
53 }
54
TearDown()55 void MockSessionManagerServiceTest::TearDown()
56 {
57 }
58
59 namespace {
60 /**
61 * @tc.name: OnRemoteDied
62 * @tc.desc: OnRemoteDied
63 * @tc.type: FUNC
64 */
65 HWTEST_F(MockSessionManagerServiceTest, OnRemoteDied, Function | SmallTest | Level2)
66 {
67 WLOGI("OnRemoteDied");
68 MockSessionManagerService::SMSDeathRecipient smsDeathRecipient(100);
69 auto res = WMError::WM_OK;
70 wptr<IRemoteObject> object = nullptr;
71 smsDeathRecipient.OnRemoteDied(object);
72 ASSERT_EQ(WMError::WM_OK, res);
73 }
74
75 /**
76 * @tc.name: OnRemoteDied
77 * @tc.desc: OnRemoteDied
78 * @tc.type: FUNC
79 */
80 HWTEST_F(MockSessionManagerServiceTest, OnRemoteDied1, Function | SmallTest | Level2)
81 {
82 GTEST_LOG_(INFO) << "MockSessionManagerServiceTest: OnRemoteDied1 start";
83 WLOGI("OnRemoteDied");
84 MockSessionManagerService::SMSDeathRecipient* mService = new MockSessionManagerService::SMSDeathRecipient(100);
85 auto res = WMError::WM_OK;
86 wptr<IRemoteObject> object = nullptr;
87 mService->OnRemoteDied(object);
88 ASSERT_EQ(WMError::WM_OK, res);
89 GTEST_LOG_(INFO) << "MockSessionManagerServiceTest: OnRemoteDied1 end";
90 }
91
92 /**
93 * @tc.name: SetSessionManagerService
94 * @tc.desc: set session manager service
95 * @tc.type: FUNC
96 */
97 HWTEST_F(MockSessionManagerServiceTest, SetSessionManagerService, Function | SmallTest | Level2)
98 {
99 WLOGI("SetSessionManagerService");
100 sptr<IRemoteObject> sessionManagerService = nullptr;
101 MockSessionManagerService::GetInstance().SetSessionManagerService(sessionManagerService);
102 ASSERT_EQ(false, MockSessionManagerService::GetInstance().SetSessionManagerService(sessionManagerService));
103 }
104
105 /**
106 * @tc.name: GetSessionManagerService
107 * @tc.desc: get session manager service
108 * @tc.type: FUNC
109 */
110 HWTEST_F(MockSessionManagerServiceTest, GetSessionManagerService, Function | SmallTest | Level2)
111 {
112 WLOGI("GetSessionManagerService");
113 sptr<IRemoteObject> sessionManagerService =
114 MockSessionManagerService::GetInstance().GetSessionManagerService();
115 ASSERT_EQ(nullptr, sessionManagerService);
116 }
117
118 /**
119 * @tc.name: onStart
120 * @tc.desc: on start
121 * @tc.type: FUNC
122 */
123 HWTEST_F(MockSessionManagerServiceTest, OnStart, Function | SmallTest | Level2)
124 {
125 WLOGI("onStart");
126 auto ret = WMError::WM_OK;
127 MockSessionManagerService::GetInstance().OnStart();
128 ASSERT_EQ(ret, WMError::WM_OK);
129 }
130
131 /**
132 * @tc.name: onStart
133 * @tc.desc: on start
134 * @tc.type: FUNC
135 */
136 HWTEST_F(MockSessionManagerServiceTest, OnStart1, Function | SmallTest | Level2)
137 {
138 GTEST_LOG_(INFO) << "MockSessionManagerServiceTest: OnStart1 start";
139 MockSessionManagerService* mService = new MockSessionManagerService();
140 WLOGI("onStart");
141 auto ret = WMError::WM_OK;
142 mService->OnStart();
143 ASSERT_EQ(ret, WMError::WM_OK);
144 GTEST_LOG_(INFO) << "MockSessionManagerServiceTest: OnStart1 end";
145 }
146
147 /**
148 * @tc.name: Dump
149 * @tc.desc: Dump
150 * @tc.type: FUNC
151 */
152 HWTEST_F(MockSessionManagerServiceTest, Dump, Function | SmallTest | Level2)
153 {
154 MockSessionManagerService* mService = new MockSessionManagerService();
155 WLOGI("onStart");
156 std::vector<std::u16string> args;
157 ASSERT_EQ(-1, mService->Dump(-2, args));
158 }
159
160 /**
161 * @tc.name: SetSessionManagerService
162 * @tc.desc: SetSessionManagerService
163 * @tc.type: FUNC
164 */
165 HWTEST_F(MockSessionManagerServiceTest, SetSessionManagerService2, Function | SmallTest | Level2)
166 {
167 sptr<IRemoteObject> sessionManagerService = nullptr;
168 ASSERT_EQ(false, MockSessionManagerService::GetInstance().SetSessionManagerService(sessionManagerService));
169 MockSessionManagerService::GetInstance().NotifyWMSConnected(100, 0, true);
170 MockSessionManagerService::GetInstance().NotifyWMSConnected(100, 0, false);
171 }
172
173 /**
174 * @tc.name: GetSMSDeathRecipientByUserId
175 * @tc.desc: GetSMSDeathRecipientByUserId/RemoveSMSDeathRecipientByUserId
176 * @tc.type: FUNC
177 */
178 HWTEST_F(MockSessionManagerServiceTest, GetSMSDeathRecipientByUserId, Function | SmallTest | Level2)
179 {
180 auto smsDeathRecipient = MockSessionManagerService::GetInstance().GetSMSDeathRecipientByUserId(100);
181 ASSERT_EQ(nullptr, smsDeathRecipient);
182 MockSessionManagerService::GetInstance().RemoveSMSDeathRecipientByUserId(100);
183 }
184
185 /**
186 * @tc.name: GetSessionManagerServiceByUserId
187 * @tc.desc: GetSessionManagerServiceByUserId/RemoveSessionManagerServiceByUserId
188 * @tc.type: FUNC
189 */
190 HWTEST_F(MockSessionManagerServiceTest, GetSessionManagerServiceByUserId, Function | SmallTest | Level2)
191 {
192 auto sessionManagerService = MockSessionManagerService::GetInstance().GetSessionManagerServiceByUserId(100);
193 ASSERT_EQ(nullptr, sessionManagerService);
194 MockSessionManagerService::GetInstance().RemoveSessionManagerServiceByUserId(100);
195 }
196
197 /**
198 * @tc.name: GetSessionManagerServiceByUserId
199 * @tc.desc: GetSessionManagerServiceByUserId/RemoveSessionManagerServiceByUserId
200 * @tc.type: FUNC
201 */
202 HWTEST_F(MockSessionManagerServiceTest, GetProcessSurfaceNodeIdByPersistentId, Function | SmallTest | Level2)
203 {
204 int32_t pid = 123;
205 std::vector<uint64_t> persistentIds = {1, 2, 3};
206 std::vector<uint64_t> surfaceNodeIds;
207 MockSessionManagerService::GetInstance().GetProcessSurfaceNodeIdByPersistentId(
208 pid, persistentIds, surfaceNodeIds);
209 ASSERT_EQ(0, surfaceNodeIds.size());
210 }
211 }
212 }
213 }