• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 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 
18 #include <system_ability_definition.h>
19 
20 #include "fold_screen_controller/super_fold_state_manager.h"
21 #include "fold_screen_state_internel.h"
22 
23 using namespace testing;
24 using namespace testing::ext;
25 
26 namespace OHOS {
27 namespace Rosen {
28 
29 namespace {
30 #define ONLY_FOR_SUPERFOLD_DISPLAY_DEVICE if (!FoldScreenStateInternel::IsSuperFoldDisplayDevice()) {return;}
31 }
32 
33 class SuperFoldStateManagerTest : public testing::Test {
34 public:
35     static void SetUpTestCase();
36     static void TearDownTestCase();
37     void SetUp() override;
38     void TearDown() override;
39 };
40 
SetUpTestCase()41 void SuperFoldStateManagerTest::SetUpTestCase()
42 {
43 }
44 
TearDownTestCase()45 void SuperFoldStateManagerTest::TearDownTestCase()
46 {
47 }
48 
SetUp()49 void SuperFoldStateManagerTest::SetUp()
50 {
51 }
52 
TearDown()53 void SuperFoldStateManagerTest::TearDown()
54 {
55 }
56 
57 namespace {
58 
59 /**
60  * @tc.name: HandleSuperFoldStatusChange
61  * @tc.desc: test function : ANGLE_CHANGE_EXPANDED
62  * @tc.type: FUNC
63  */
64 HWTEST_F(SuperFoldStateManagerTest, HandleSuperFoldStatusChange01, Function | SmallTest | Level1)
65 {
66     ONLY_FOR_SUPERFOLD_DISPLAY_DEVICE
67     SuperFoldStatusChangeEvents events = SuperFoldStatusChangeEvents::ANGLE_CHANGE_EXPANDED;
68     SuperFoldStateManager::GetInstance().SetCurrentStatus(SuperFoldStatus::HALF_FOLDED);
69     std::function<void()> func = [&]()
__anonfdcf13890302() 70     {
71         SuperFoldStateManager::GetInstance().HandleSuperFoldStatusChange(events);
72     };
73 
74     func();
75     SuperFoldStatus curState = SuperFoldStateManager::GetInstance().GetCurrentStatus();
76     SuperFoldStatus expState = SuperFoldStatus::EXPANDED;
77 
78     EXPECT_EQ(curState, expState);
79 }
80 
81 /**
82  * @tc.name: HandleSuperFoldStatusChange
83  * @tc.desc: test function : ANGLE_CHANGE_HALF_FOLDED
84  * @tc.type: FUNC
85  */
86 HWTEST_F(SuperFoldStateManagerTest, HandleSuperFoldStatusChange02, Function | SmallTest | Level1)
87 {
88     ONLY_FOR_SUPERFOLD_DISPLAY_DEVICE
89     SuperFoldStatusChangeEvents events = SuperFoldStatusChangeEvents::ANGLE_CHANGE_HALF_FOLDED;
90     SuperFoldStateManager::GetInstance().SetCurrentStatus(SuperFoldStatus::FOLDED);
91     std::function<void()> func = [&]()
__anonfdcf13890402() 92     {
93         SuperFoldStateManager::GetInstance().HandleSuperFoldStatusChange(events);
94     };
95 
96     func();
97     SuperFoldStatus curState = SuperFoldStateManager::GetInstance().GetCurrentStatus();
98     SuperFoldStatus expState = SuperFoldStatus::HALF_FOLDED;
99 
100     EXPECT_EQ(curState, expState);
101 }
102 
103 /**
104  * @tc.name: HandleSuperFoldStatusChange
105  * @tc.desc: test function : ANGLE_CHANGE_HALF_FOLDED
106  * @tc.type: FUNC
107  */
108 HWTEST_F(SuperFoldStateManagerTest, HandleSuperFoldStatusChange03, Function | SmallTest | Level1)
109 {
110     ONLY_FOR_SUPERFOLD_DISPLAY_DEVICE
111     SuperFoldStatusChangeEvents events = SuperFoldStatusChangeEvents::ANGLE_CHANGE_HALF_FOLDED;
112     SuperFoldStateManager::GetInstance().SetCurrentStatus(SuperFoldStatus::EXPANDED);
113     std::function<void()> func = [&]()
__anonfdcf13890502() 114     {
115         SuperFoldStateManager::GetInstance().HandleSuperFoldStatusChange(events);
116     };
117 
118     func();
119     SuperFoldStatus curState = SuperFoldStateManager::GetInstance().GetCurrentStatus();
120     SuperFoldStatus expState = SuperFoldStatus::HALF_FOLDED;
121 
122     EXPECT_EQ(curState, expState);
123 }
124 
125 /**
126  * @tc.name: HandleSuperFoldStatusChange
127  * @tc.desc: test function : ANGLE_CHANGE_FOLDED
128  * @tc.type: FUNC
129  */
130 HWTEST_F(SuperFoldStateManagerTest, HandleSuperFoldStatusChange04, Function | SmallTest | Level1)
131 {
132     ONLY_FOR_SUPERFOLD_DISPLAY_DEVICE
133     SuperFoldStatusChangeEvents events = SuperFoldStatusChangeEvents::ANGLE_CHANGE_FOLDED;
134     SuperFoldStateManager::GetInstance().SetCurrentStatus(SuperFoldStatus::HALF_FOLDED);
135     std::function<void()> func = [&]()
__anonfdcf13890602() 136     {
137         SuperFoldStateManager::GetInstance().HandleSuperFoldStatusChange(events);
138     };
139 
140     func();
141     SuperFoldStatus curState = SuperFoldStateManager::GetInstance().GetCurrentStatus();
142     SuperFoldStatus expState = SuperFoldStatus::FOLDED;
143 
144     EXPECT_EQ(curState, expState);
145 }
146 
147 /**
148  * @tc.name: HandleSuperFoldStatusChange
149  * @tc.desc: test function : KEYBOARD_ON
150  * @tc.type: FUNC
151  */
152 HWTEST_F(SuperFoldStateManagerTest, HandleSuperFoldStatusChange05, Function | SmallTest | Level1)
153 {
154     ONLY_FOR_SUPERFOLD_DISPLAY_DEVICE
155     SuperFoldStatusChangeEvents events = SuperFoldStatusChangeEvents::KEYBOARD_ON;
156     SuperFoldStateManager::GetInstance().SetCurrentStatus(SuperFoldStatus::HALF_FOLDED);
157     std::function<void()> func = [&]()
__anonfdcf13890702() 158     {
159         SuperFoldStateManager::GetInstance().HandleSuperFoldStatusChange(events);
160     };
161 
162     func();
163     SuperFoldStatus curState = SuperFoldStateManager::GetInstance().GetCurrentStatus();
164     SuperFoldStatus expState = SuperFoldStatus::KEYBOARD;
165 
166     EXPECT_EQ(curState, expState);
167 }
168 
169 /**
170  * @tc.name: HandleSuperFoldStatusChange
171  * @tc.desc: test function : KEYBOARD_ON
172  * @tc.type: FUNC
173  */
174 HWTEST_F(SuperFoldStateManagerTest, HandleSuperFoldStatusChange06, Function | SmallTest | Level1)
175 {
176     ONLY_FOR_SUPERFOLD_DISPLAY_DEVICE
177     SuperFoldStatusChangeEvents events = SuperFoldStatusChangeEvents::KEYBOARD_ON;
178     SuperFoldStateManager::GetInstance().SetCurrentStatus(SuperFoldStatus::EXPANDED);
179     std::function<void()> func = [&]()
__anonfdcf13890802() 180     {
181         SuperFoldStateManager::GetInstance().
182             HandleSuperFoldStatusChange(SuperFoldStatusChangeEvents::ANGLE_CHANGE_HALF_FOLDED);
183         SuperFoldStateManager::GetInstance().HandleSuperFoldStatusChange(events);
184     };
185 
186     func();
187     SuperFoldStatus curState = SuperFoldStateManager::GetInstance().GetCurrentStatus();
188     SuperFoldStatus expState = SuperFoldStatus::KEYBOARD;
189 
190     EXPECT_EQ(curState, expState);
191 }
192 
193 /**
194  * @tc.name: HandleSuperFoldStatusChange
195  * @tc.desc: test function : KEYBOARD_OFF
196  * @tc.type: FUNC
197  */
198 HWTEST_F(SuperFoldStateManagerTest, HandleSuperFoldStatusChange07, Function | SmallTest | Level1)
199 {
200     ONLY_FOR_SUPERFOLD_DISPLAY_DEVICE
201     SuperFoldStatusChangeEvents events = SuperFoldStatusChangeEvents::KEYBOARD_OFF;
202     SuperFoldStateManager::GetInstance().SetCurrentStatus(SuperFoldStatus::KEYBOARD);
203     std::function<void()> func = [&]()
__anonfdcf13890902() 204     {
205         SuperFoldStateManager::GetInstance().HandleSuperFoldStatusChange(events);
206     };
207 
208     func();
209     SuperFoldStatus curState = SuperFoldStateManager::GetInstance().GetCurrentStatus();
210     SuperFoldStatus expState = SuperFoldStatus::HALF_FOLDED;
211 
212     EXPECT_EQ(curState, expState);
213 }
214 
215 /**
216  * @tc.name: HandleSuperFoldStatusChange
217  * @tc.desc: test function : SYSTEM_KEYBOARD_ON
218  * @tc.type: FUNC
219  */
220 HWTEST_F(SuperFoldStateManagerTest, HandleSuperFoldStatusChange08, Function | SmallTest | Level1)
221 {
222     ONLY_FOR_SUPERFOLD_DISPLAY_DEVICE
223     SuperFoldStatusChangeEvents events = SuperFoldStatusChangeEvents::SYSTEM_KEYBOARD_ON;
224     SuperFoldStateManager::GetInstance().SetCurrentStatus(SuperFoldStatus::HALF_FOLDED);
225     std::function<void()> func = [&]()
__anonfdcf13890a02() 226     {
227         SuperFoldStateManager::GetInstance().HandleSuperFoldStatusChange(events);
228     };
229 
230     func();
231     SuperFoldStatus curState = SuperFoldStateManager::GetInstance().GetCurrentStatus();
232     SuperFoldStatus expState = SuperFoldStatus::HALF_FOLDED;
233 
234     EXPECT_EQ(curState, expState);
235 }
236 
237 /**
238  * @tc.name: HandleSuperFoldStatusChange
239  * @tc.desc: test function : SYSTEM_KEYBOARD_OFF
240  * @tc.type: FUNC
241  */
242 HWTEST_F(SuperFoldStateManagerTest, HandleSuperFoldStatusChange09, Function | SmallTest | Level1)
243 {
244     ONLY_FOR_SUPERFOLD_DISPLAY_DEVICE
245     SuperFoldStatusChangeEvents events = SuperFoldStatusChangeEvents::SYSTEM_KEYBOARD_OFF;
246     SuperFoldStateManager::GetInstance().SetCurrentStatus(SuperFoldStatus::HALF_FOLDED);
247     std::function<void()> func = [&]()
__anonfdcf13890b02() 248     {
249         SuperFoldStateManager::GetInstance().HandleSuperFoldStatusChange(events);
250     };
251 
252     func();
253     SuperFoldStatus curState = SuperFoldStateManager::GetInstance().GetCurrentStatus();
254     SuperFoldStatus expState = SuperFoldStatus::HALF_FOLDED;
255 
256     EXPECT_EQ(curState, expState);
257 }
258 
259 /**
260  * @tc.name: MatchSuperFoldStatusToFoldStatus
261  * @tc.desc: test function : EXPANDED
262  * @tc.type: FUNC
263  */
264 HWTEST_F(SuperFoldStateManagerTest, MatchSuperFoldStatusToFoldStatus01, Function | SmallTest | Level1)
265 {
266     ONLY_FOR_SUPERFOLD_DISPLAY_DEVICE
267     SuperFoldStatus superFoldStatus = SuperFoldStatus::EXPANDED;
268     FoldStatus foldStatus;
269     std::function<void()> func = [&]()
__anonfdcf13890c02() 270     {
271         foldStatus = SuperFoldStateManager::GetInstance().MatchSuperFoldStatusToFoldStatus(superFoldStatus);
272     };
273 
274     func();
275     FoldStatus foldStatusExp = FoldStatus::EXPAND;
276     EXPECT_EQ(foldStatus, foldStatusExp);
277 }
278 
279 /**
280  * @tc.name: MatchSuperFoldStatusToFoldStatus
281  * @tc.desc: test function : HALF_FOLDED
282  * @tc.type: FUNC
283  */
284 HWTEST_F(SuperFoldStateManagerTest, MatchSuperFoldStatusToFoldStatus02, Function | SmallTest | Level1)
285 {
286     ONLY_FOR_SUPERFOLD_DISPLAY_DEVICE
287     SuperFoldStatus superFoldStatus = SuperFoldStatus::HALF_FOLDED;
288     FoldStatus foldStatus;
289     std::function<void()> func = [&]()
__anonfdcf13890d02() 290     {
291         foldStatus = SuperFoldStateManager::GetInstance().MatchSuperFoldStatusToFoldStatus(superFoldStatus);
292     };
293 
294     func();
295     FoldStatus foldStatusExp = FoldStatus::HALF_FOLD;
296     EXPECT_EQ(foldStatus, foldStatusExp);
297 }
298 
299 /**
300  * @tc.name: MatchSuperFoldStatusToFoldStatus
301  * @tc.desc: test function : FOLDED
302  * @tc.type: FUNC
303  */
304 HWTEST_F(SuperFoldStateManagerTest, MatchSuperFoldStatusToFoldStatus03, Function | SmallTest | Level1)
305 {
306     ONLY_FOR_SUPERFOLD_DISPLAY_DEVICE
307     SuperFoldStatus superFoldStatus = SuperFoldStatus::FOLDED;
308     FoldStatus foldStatus;
309     std::function<void()> func = [&]()
__anonfdcf13890e02() 310     {
311         foldStatus = SuperFoldStateManager::GetInstance().MatchSuperFoldStatusToFoldStatus(superFoldStatus);
312     };
313 
314     func();
315     FoldStatus foldStatusExp = FoldStatus::FOLDED;
316     EXPECT_EQ(foldStatus, foldStatusExp);
317 }
318 
319 /**
320  * @tc.name: MatchSuperFoldStatusToFoldStatus
321  * @tc.desc: test function : KEYBOARD
322  * @tc.type: FUNC
323  */
324 HWTEST_F(SuperFoldStateManagerTest, MatchSuperFoldStatusToFoldStatus04, Function | SmallTest | Level1)
325 {
326     ONLY_FOR_SUPERFOLD_DISPLAY_DEVICE
327     SuperFoldStatus superFoldStatus = SuperFoldStatus::KEYBOARD;
328     FoldStatus foldStatus;
329     std::function<void()> func = [&]()
__anonfdcf13890f02() 330     {
331         foldStatus = SuperFoldStateManager::GetInstance().MatchSuperFoldStatusToFoldStatus(superFoldStatus);
332     };
333 
334     func();
335     FoldStatus foldStatusExp = FoldStatus::HALF_FOLD;
336     EXPECT_EQ(foldStatus, foldStatusExp);
337 }
338 
339 /**
340  * @tc.name: MatchSuperFoldStatusToFoldStatus
341  * @tc.desc: test function : UNKNOWN
342  * @tc.type: FUNC
343  */
344 HWTEST_F(SuperFoldStateManagerTest, MatchSuperFoldStatusToFoldStatus05, Function | SmallTest | Level1)
345 {
346     ONLY_FOR_SUPERFOLD_DISPLAY_DEVICE
347     SuperFoldStatus superFoldStatus = SuperFoldStatus::UNKNOWN;
348     FoldStatus foldStatus;
349     std::function<void()> func = [&]()
__anonfdcf13891002() 350     {
351         foldStatus = SuperFoldStateManager::GetInstance().MatchSuperFoldStatusToFoldStatus(superFoldStatus);
352     };
353 
354     func();
355     FoldStatus foldStatusExp = FoldStatus::UNKNOWN;
356     EXPECT_EQ(foldStatus, foldStatusExp);
357 }
358 
359 /**
360  * @tc.name: SetSystemKeyboardStatus
361  * @tc.desc: SetSystemKeyboardStatus with true as parameter
362  * @tc.type: FUNC
363  */
364 HWTEST_F(SuperFoldStateManagerTest, SetSystemKeyboardStatus01, Function | SmallTest | Level1)
365 {
366     ONLY_FOR_SUPERFOLD_DISPLAY_DEVICE
367     SuperFoldStateManager::GetInstance().SetCurrentStatus(SuperFoldStatus::HALF_FOLDED);
368     std::function<void()> func = [&]()
__anonfdcf13891102() 369     {
370         SuperFoldStateManager::GetInstance().SetSystemKeyboardStatus(true);
371     };
372 
373     func();
374     SuperFoldStatus curState = SuperFoldStateManager::GetInstance().GetCurrentStatus();
375     SuperFoldStatus expState = SuperFoldStatus::HALF_FOLDED;
376 
377     EXPECT_EQ(curState, expState);
378 }
379 
380 /**
381  * @tc.name: SetSystemKeyboardStatus
382  * @tc.desc: SetSystemKeyboardStatus with false as parameter
383  * @tc.type: FUNC
384  */
385 HWTEST_F(SuperFoldStateManagerTest, SetSystemKeyboardStatus02, Function | SmallTest | Level1)
386 {
387     ONLY_FOR_SUPERFOLD_DISPLAY_DEVICE
388     SuperFoldStateManager::GetInstance().SetCurrentStatus(SuperFoldStatus::HALF_FOLDED);
389     std::function<void()> func = [&]()
__anonfdcf13891202() 390     {
391         SuperFoldStateManager::GetInstance().SetSystemKeyboardStatus(false);
392     };
393 
394     func();
395     SuperFoldStatus curState = SuperFoldStateManager::GetInstance().GetCurrentStatus();
396     SuperFoldStatus expState = SuperFoldStatus::HALF_FOLDED;
397 
398     EXPECT_EQ(curState, expState);
399 }
400 }
401 }
402 }