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 #include "window_option.h"
18
19 using namespace testing;
20 using namespace testing::ext;
21
22 namespace OHOS {
23 namespace Rosen {
24 namespace {
25 const SystemBarProperty SYS_BAR_PROP_DEFAULT;
26 const SystemBarProperty SYS_BAR_PROP_1(true, 0xE5111111, 0xE5222222);
27 const SystemBarProperty SYS_BAR_PROP_2(false, 0xE5222222, 0xE5333333);
28 const std::unordered_map<WindowType, SystemBarProperty>& SYS_BAR_PROPS_TEST = {
29 { WindowType::WINDOW_TYPE_STATUS_BAR, SYS_BAR_PROP_1 },
30 { WindowType::WINDOW_TYPE_NAVIGATION_BAR, SYS_BAR_PROP_2 },
31 };
32 const std::unordered_map<WindowType, SystemBarProperty>& SYS_BAR_PROPS_DEFAULT = {
33 { WindowType::WINDOW_TYPE_STATUS_BAR, SYS_BAR_PROP_DEFAULT },
34 { WindowType::WINDOW_TYPE_NAVIGATION_BAR, SYS_BAR_PROP_DEFAULT },
35 };
36 }
37 class WindowOptionTest : public testing::Test {
38 public:
39 static void SetUpTestCase();
40 static void TearDownTestCase();
41 virtual void SetUp() override;
42 virtual void TearDown() override;
43 };
SetUpTestCase()44 void WindowOptionTest::SetUpTestCase()
45 {
46 }
47
TearDownTestCase()48 void WindowOptionTest::TearDownTestCase()
49 {
50 }
51
SetUp()52 void WindowOptionTest::SetUp()
53 {
54 }
55
TearDown()56 void WindowOptionTest::TearDown()
57 {
58 }
59
60 namespace {
61 /**
62 * @tc.name: WindowRect01
63 * @tc.desc: SetWindowRect/GetWindowRect
64 * @tc.type: FUNC
65 */
66 HWTEST_F(WindowOptionTest, WindowRect01, Function | SmallTest | Level2)
67 {
68 sptr<WindowOption> option = new WindowOption();
69 struct Rect rect = {1, 2, 3u, 4u};
70 option->SetWindowRect(rect);
71
72 ASSERT_EQ(1, option->GetWindowRect().posX_);
73 ASSERT_EQ(2, option->GetWindowRect().posY_);
74 ASSERT_EQ(3u, option->GetWindowRect().width_);
75 ASSERT_EQ(4u, option->GetWindowRect().height_);
76 }
77
78 /**
79 * @tc.name: WindowType01
80 * @tc.desc: SetWindowType/GetWindowType
81 * @tc.type: FUNC
82 */
83 HWTEST_F(WindowOptionTest, WindowType01, Function | SmallTest | Level2)
84 {
85 sptr<WindowOption> option = new WindowOption();
86 option->SetWindowType(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW);
87 ASSERT_EQ(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW, option->GetWindowType());
88 }
89
90 /**
91 * @tc.name: WindowMode01
92 * @tc.desc: SetWindowMode/GetWindowMode
93 * @tc.type: FUNC
94 */
95 HWTEST_F(WindowOptionTest, WindowMode01, Function | SmallTest | Level2)
96 {
97 sptr<WindowOption> option = new WindowOption();
98 option->SetWindowMode(WindowMode::WINDOW_MODE_FULLSCREEN);
99 ASSERT_EQ(WindowMode::WINDOW_MODE_FULLSCREEN, option->GetWindowMode());
100 }
101
102 /**
103 * @tc.name: WindowMode02
104 * @tc.desc: SetWindowMode/GetWindowMode
105 * @tc.type: FUNC
106 */
107 HWTEST_F(WindowOptionTest, WindowMode02, Function | SmallTest | Level2)
108 {
109 sptr<WindowOption> option = new WindowOption();
110 WindowMode defaultMode = option->GetWindowMode();
111 option->SetWindowMode(WindowMode::WINDOW_MODE_UNDEFINED);
112 ASSERT_EQ(defaultMode, option->GetWindowMode());
113 }
114
115 /**
116 * @tc.name: WindowMode03
117 * @tc.desc: SetWindowMode/GetWindowMode
118 * @tc.type: FUNC
119 */
120 HWTEST_F(WindowOptionTest, WindowMode03, Function | SmallTest | Level2)
121 {
122 sptr<WindowOption> option = new WindowOption();
123 option->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY);
124 ASSERT_EQ(WindowMode::WINDOW_MODE_SPLIT_PRIMARY, option->GetWindowMode());
125 }
126
127 /**
128 * @tc.name: WindowMode04
129 * @tc.desc: SetWindowMode/GetWindowMode
130 * @tc.type: FUNC
131 */
132 HWTEST_F(WindowOptionTest, WindowMode04, Function | SmallTest | Level2)
133 {
134 sptr<WindowOption> option = new WindowOption();
135 option->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_SECONDARY);
136 ASSERT_EQ(WindowMode::WINDOW_MODE_SPLIT_SECONDARY, option->GetWindowMode());
137 }
138
139 /**
140 * @tc.name: WindowMode05
141 * @tc.desc: SetWindowMode/GetWindowMode
142 * @tc.type: FUNC
143 */
144 HWTEST_F(WindowOptionTest, WindowMode05, Function | SmallTest | Level2)
145 {
146 sptr<WindowOption> option = new WindowOption();
147 option->SetWindowMode(WindowMode::WINDOW_MODE_FLOATING);
148 ASSERT_EQ(WindowMode::WINDOW_MODE_FLOATING, option->GetWindowMode());
149 }
150
151 /**
152 * @tc.name: WindowMode06
153 * @tc.desc: SetWindowMode/GetWindowMode
154 * @tc.type: FUNC
155 */
156 HWTEST_F(WindowOptionTest, WindowMode06, Function | SmallTest | Level2)
157 {
158 sptr<WindowOption> option = new WindowOption();
159 option->SetWindowMode(WindowMode::WINDOW_MODE_PIP);
160 ASSERT_EQ(WindowMode::WINDOW_MODE_PIP, option->GetWindowMode());
161 }
162 /**
163 * @tc.name: Focusable01
164 * @tc.desc: SetFocusable/GetFocusable
165 * @tc.type: FUNC
166 */
167 HWTEST_F(WindowOptionTest, Focusable01, Function | SmallTest | Level2)
168 {
169 sptr<WindowOption> option = new WindowOption();
170 option->SetFocusable(true);
171 ASSERT_EQ(true, option->GetFocusable());
172 }
173
174 /**
175 * @tc.name: Touchable01
176 * @tc.desc: SetTouchable/GetTouchable
177 * @tc.type: FUNC
178 */
179 HWTEST_F(WindowOptionTest, Touchable01, Function | SmallTest | Level2)
180 {
181 sptr<WindowOption> option = new WindowOption();
182 option->SetTouchable(true);
183 ASSERT_EQ(true, option->GetTouchable());
184 }
185
186 /**
187 * @tc.name: DisplayId01
188 * @tc.desc: SetDisplayId/GetDisplayId
189 * @tc.type: FUNC
190 */
191 HWTEST_F(WindowOptionTest, DisplayId01, Function | SmallTest | Level2)
192 {
193 sptr<WindowOption> option = new WindowOption();
194 option->SetDisplayId(1);
195 ASSERT_EQ(1, option->GetDisplayId());
196 }
197
198 /**
199 * @tc.name: ParentId01
200 * @tc.desc: SetParentId/GetParentId
201 * @tc.type: FUNC
202 */
203 HWTEST_F(WindowOptionTest, ParentId01, Function | SmallTest | Level2)
204 {
205 sptr<WindowOption> option = new WindowOption();
206 option->SetParentId(1);
207 ASSERT_EQ(1, option->GetParentId());
208 }
209
210 /**
211 * @tc.name: WindowName01
212 * @tc.desc: SetWindowName/GetWindowName
213 * @tc.type: FUNC
214 */
215 HWTEST_F(WindowOptionTest, WindowName01, Function | SmallTest | Level2)
216 {
217 sptr<WindowOption> option = new WindowOption();
218 option->SetWindowName("Sub Window");
219 ASSERT_EQ("Sub Window", option->GetWindowName());
220 }
221
222 /**
223 * @tc.name: BundleName01
224 * @tc.desc: SetBundleName/GetBundleName
225 * @tc.type: FUNC
226 */
227 HWTEST_F(WindowOptionTest, BundleName01, Function | SmallTest | Level2)
228 {
229 sptr<WindowOption> option = new WindowOption();
230 option->SetBundleName("settings");
231 ASSERT_EQ("settings", option->GetBundleName());
232 }
233
234 /**
235 * @tc.name: WindowFlag01
236 * @tc.desc: SetWindowFlags/GetWindowFlags
237 * @tc.type: FUNC
238 */
239 HWTEST_F(WindowOptionTest, WindowFlag01, Function | SmallTest | Level2)
240 {
241 sptr<WindowOption> option = new WindowOption();
242 option->SetWindowFlags(1u);
243 ASSERT_EQ(1u, option->GetWindowFlags());
244 }
245
246 /**
247 * @tc.name: WindowFlag02
248 * @tc.desc: AddWindowFlag/GetWindowFlags
249 * @tc.type: FUNC
250 */
251 HWTEST_F(WindowOptionTest, WindowFlag02, Function | SmallTest | Level2)
252 {
253 sptr<WindowOption> option = new WindowOption();
254 option->AddWindowFlag(WindowFlag::WINDOW_FLAG_NEED_AVOID);
255 ASSERT_EQ(static_cast<uint32_t>(WindowFlag::WINDOW_FLAG_NEED_AVOID), option->GetWindowFlags());
256 }
257
258 /**
259 * @tc.name: WindowFlag03
260 * @tc.desc: AddWindowFlag/RemoveWindowFlag/GetWindowFlags
261 * @tc.type: FUNC
262 */
263 HWTEST_F(WindowOptionTest, WindowFlag03, Function | SmallTest | Level2)
264 {
265 sptr<WindowOption> option = new WindowOption();
266 option->AddWindowFlag(WindowFlag::WINDOW_FLAG_NEED_AVOID);
267 option->AddWindowFlag(WindowFlag::WINDOW_FLAG_PARENT_LIMIT);
268 option->RemoveWindowFlag(WindowFlag::WINDOW_FLAG_NEED_AVOID);
269 ASSERT_EQ(static_cast<uint32_t>(WindowFlag::WINDOW_FLAG_PARENT_LIMIT), option->GetWindowFlags());
270 }
271
272 /**
273 * @tc.name: SetGetSystemBarProperty01
274 * @tc.desc: SetSystemBarProperty with test param and get
275 * @tc.type: FUNC
276 */
277 HWTEST_F(WindowOptionTest, SetGetSystemBarProperty01, Function | SmallTest | Level3)
278 {
279 sptr<WindowOption> option = new WindowOption();
280 option->SetSystemBarProperty(WindowType::WINDOW_TYPE_STATUS_BAR, SYS_BAR_PROP_1);
281 option->SetSystemBarProperty(WindowType::WINDOW_TYPE_NAVIGATION_BAR, SYS_BAR_PROP_2);
282 ASSERT_EQ(SYS_BAR_PROPS_TEST, option->GetSystemBarProperty());
283 }
284
285 /**
286 * @tc.name: SetGetSystemBarProperty02
287 * @tc.desc: SetSystemBarProperty with invalid type and get
288 * @tc.type: FUNC
289 */
290 HWTEST_F(WindowOptionTest, SetGetSystemBarProperty02, Function | SmallTest | Level3)
291 {
292 sptr<WindowOption> option = new WindowOption();
293 option->SetSystemBarProperty(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW, SYS_BAR_PROP_1);
294 option->SetSystemBarProperty(WindowType::WINDOW_TYPE_MEDIA, SYS_BAR_PROP_2);
295 ASSERT_EQ(SYS_BAR_PROPS_DEFAULT, option->GetSystemBarProperty());
296 }
297
298 /**
299 * @tc.name: SetGetSystemBarProperty03
300 * @tc.desc: GetSystemBarProperty with no set
301 * @tc.type: FUNC
302 */
303 HWTEST_F(WindowOptionTest, SetGetSystemBarProperty03, Function | SmallTest | Level3)
304 {
305 sptr<WindowOption> option = new WindowOption();
306 ASSERT_EQ(SYS_BAR_PROPS_DEFAULT, option->GetSystemBarProperty());
307 }
308
309 /**
310 * @tc.name: HitOffset
311 * @tc.desc: HitOffset setter/getter test
312 * @tc.type: FUNC
313 */
314 HWTEST_F(WindowOptionTest, HitOffset, Function | SmallTest | Level3)
315 {
316 sptr<WindowOption> option = new WindowOption();
317 option->SetHitOffset(1, 1);
318 PointInfo point = {1, 1};
319 ASSERT_EQ(point.x, option->GetHitOffset().x);
320 ASSERT_EQ(point.y, option->GetHitOffset().y);
321 }
322
323 /**
324 * @tc.name: KeepScreenOn
325 * @tc.desc: KeepScreenOn setter/getter test
326 * @tc.type: FUNC
327 */
328 HWTEST_F(WindowOptionTest, KeepScreenOn, Function | SmallTest | Level3)
329 {
330 sptr<WindowOption> option = new WindowOption();
331 option->SetKeepScreenOn(true);
332 ASSERT_EQ(true, option->IsKeepScreenOn());
333 option->SetKeepScreenOn(false);
334 ASSERT_EQ(false, option->IsKeepScreenOn());
335 }
336
337 /**
338 * @tc.name: TurnScreenOn
339 * @tc.desc: TurnScreenOn setter/getter test
340 * @tc.type: FUNC
341 */
342 HWTEST_F(WindowOptionTest, TurnScreenOn, Function | SmallTest | Level3)
343 {
344 sptr<WindowOption> option = new WindowOption();
345 option->SetTurnScreenOn(true);
346 ASSERT_EQ(true, option->IsTurnScreenOn());
347 option->SetTurnScreenOn(false);
348 ASSERT_EQ(false, option->IsTurnScreenOn());
349 }
350
351 /**
352 * @tc.name: Brightness
353 * @tc.desc: Brightness setter/getter test
354 * @tc.type: FUNC
355 */
356 HWTEST_F(WindowOptionTest, Brightness, Function | SmallTest | Level3)
357 {
358 sptr<WindowOption> option = new WindowOption();
359 option->SetBrightness(MINIMUM_BRIGHTNESS);
360 ASSERT_EQ(MINIMUM_BRIGHTNESS, option->GetBrightness());
361 option->SetBrightness(MAXIMUM_BRIGHTNESS);
362 ASSERT_EQ(MAXIMUM_BRIGHTNESS, option->GetBrightness());
363 }
364
365 /**
366 * @tc.name: CallingWindow
367 * @tc.desc: CallingWindow setter/getter test
368 * @tc.type: FUNC
369 */
370 HWTEST_F(WindowOptionTest, CallingWindow, Function | SmallTest | Level3)
371 {
372 sptr<WindowOption> option = new WindowOption();
373 option->SetCallingWindow(1);
374 ASSERT_EQ(1, option->GetCallingWindow());
375 }
376
377 /**
378 * @tc.name: SetWindowSessionType
379 * @tc.desc: SetWindowSessionType fun
380 * @tc.type: FUNC
381 */
382 HWTEST_F(WindowOptionTest, SetWindowSessionType, Function | SmallTest | Level3)
383 {
384 sptr<WindowOption> option = new WindowOption();
385 auto ret = true;
386 option->SetWindowSessionType(WindowSessionType::SCENE_SESSION);
387 ASSERT_EQ(true, ret);
388 }
389
390 /**
391 * @tc.name: GetWindowSessionType
392 * @tc.desc: GetWindowSessionType fun
393 * @tc.type: FUNC
394 */
395 HWTEST_F(WindowOptionTest, GetWindowSessionType, Function | SmallTest | Level3)
396 {
397 sptr<WindowOption> option = new WindowOption();
398 option->SetWindowSessionType(WindowSessionType::SCENE_SESSION);
399 option->GetWindowSessionType();
400 ASSERT_EQ(WindowSessionType::SCENE_SESSION, option->GetWindowSessionType());
401 }
402
403 /**
404 * @tc.name: Test01
405 * @tc.desc: Test01
406 * @tc.type: FUNC
407 */
408 HWTEST_F(WindowOptionTest, Test01, Function | SmallTest | Level3)
409 {
410 sptr<WindowOption> option = new WindowOption();
411 ASSERT_NE(nullptr, option);
412 option->SetExtensionTag(true);
413 option->SetSubWindowTitle("Test");
414 std::string ret = option->GetSubWindowTitle();
415 ASSERT_EQ(true, ret == "Test");
416 option->SetSubWindowDecorEnable(true);
417 bool ret1 = option->GetSubWindowDecorEnable();
418 ASSERT_EQ(true, ret1);
419 option->SetOnlySupportSceneBoard(true);
420 bool ret2 = option->GetOnlySupportSceneBoard();
421 ASSERT_EQ(true, ret2);
422 }
423
424 /**
425 * @tc.name: RealParentId
426 * @tc.desc: RealParentId setter and getter test
427 * @tc.type: FUNC
428 */
429 HWTEST_F(WindowOptionTest, SetRealParentId, Function | SmallTest | Level3)
430 {
431 sptr<WindowOption> option = sptr<WindowOption>::MakeSptr();
432 ASSERT_NE(nullptr, option);
433 option->SetRealParentId(114);
434 EXPECT_EQ(114, option->GetRealParentId());
435 option->SetRealParentId(514);
436 EXPECT_EQ(514, option->GetRealParentId());
437 }
438
439 /**
440 * @tc.name: SetParentWindowType
441 * @tc.desc: SetParentWindowType setter and getter test
442 * @tc.type: FUNC
443 */
444 HWTEST_F(WindowOptionTest, SetParentWindowType, Function | SmallTest | Level3)
445 {
446 sptr<WindowOption> option = sptr<WindowOption>::MakeSptr();
447 ASSERT_NE(nullptr, option);
448 option->SetParentWindowType(WindowType::WINDOW_TYPE_TOAST);
449 EXPECT_EQ(WindowType::WINDOW_TYPE_TOAST, option->GetParentWindowType());
450 option->SetParentWindowType(WindowType::WINDOW_TYPE_APP_COMPONENT);
451 EXPECT_EQ(WindowType::WINDOW_TYPE_APP_COMPONENT, option->GetParentWindowType());
452 }
453
454 /**
455 * @tc.name: UIExtensionUsage
456 * @tc.desc: UIExtensionUsage setter and getter test
457 * @tc.type: FUNC
458 */
459 HWTEST_F(WindowOptionTest, SetUIExtensionUsage, Function | SmallTest | Level3)
460 {
461 sptr<WindowOption> option = sptr<WindowOption>::MakeSptr();
462 ASSERT_NE(nullptr, option);
463 option->SetUIExtensionUsage(0);
464 EXPECT_EQ(0, option->GetUIExtensionUsage());
465 option->SetUIExtensionUsage(1);
466 EXPECT_EQ(1, option->GetUIExtensionUsage());
467 }
468
469 /**
470 * @tc.name: SetDialogDecorEnable
471 * @tc.desc: SetDialogDecorEnable
472 * @tc.type: FUNC
473 */
474 HWTEST_F(WindowOptionTest, SetDialogDecorEnable, Function | SmallTest | Level3)
475 {
476 sptr<WindowOption> option = new WindowOption();
477 ASSERT_NE(nullptr, option);
478 option->SetDialogDecorEnable(true);
479 ASSERT_EQ(true, option->GetDialogDecorEnable());
480 option->SetDialogDecorEnable(false);
481 ASSERT_EQ(false, option->GetDialogDecorEnable());
482 }
483
484 /**
485 * @tc.name: SetDialogTitle
486 * @tc.desc: SetDialogTitle
487 * @tc.type: FUNC
488 */
489 HWTEST_F(WindowOptionTest, SetDialogTitle, Function | SmallTest | Level3)
490 {
491 sptr<WindowOption> option = new WindowOption();
492 ASSERT_NE(nullptr, option);
493 option->SetDialogTitle("Test");
494 std::string ret = option->GetDialogTitle();
495 ASSERT_EQ(true, ret == "Test");
496 }
497
498 /**
499 * @tc.name: SetWindowTopmost
500 * @tc.desc: SetWindowTopmost
501 * @tc.type: FUNC
502 */
503 HWTEST_F(WindowOptionTest, SetWindowTopmost, Function | SmallTest | Level3)
504 {
505 sptr<WindowOption> option = new WindowOption();
506 ASSERT_NE(nullptr, option);
507 option->SetWindowTopmost(true);
508 ASSERT_EQ(true, option->GetWindowTopmost());
509 option->SetWindowTopmost(false);
510 ASSERT_EQ(false, option->GetWindowTopmost());
511 }
512 }
513 } // namespace Rosen
514 } // namespace OHOS
515