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 "session_manager/include/fold_screen_controller/sensor_fold_state_manager/single_display_sensor_fold_state_manager.h"
19
20
21 using namespace testing;
22 using namespace testing::ext;
23
24 namespace OHOS {
25 namespace Rosen {
26 namespace {
27 constexpr uint32_t SLEEP_TIME_IN_US = 100000; // 100ms
28 }
29 class SingleDisplaySensorFoldStateManagerTest : public testing::Test {
30 public:
31 static void SetUpTestCase();
32 static void TearDownTestCase();
33 void SetUp() override;
34 void TearDown() override;
35 };
36
SetUpTestCase()37 void SingleDisplaySensorFoldStateManagerTest::SetUpTestCase()
38 {
39 }
40
TearDownTestCase()41 void SingleDisplaySensorFoldStateManagerTest::TearDownTestCase()
42 {
43 usleep(SLEEP_TIME_IN_US);
44 }
45
SetUp()46 void SingleDisplaySensorFoldStateManagerTest::SetUp()
47 {
48 }
49
TearDown()50 void SingleDisplaySensorFoldStateManagerTest::TearDown()
51 {
52 }
53
54 namespace {
55 /**
56 * @tc.name: HandleAngleChange
57 * @tc.desc: test function : HandleAngleChange
58 * @tc.type: FUNC
59 */
60 HWTEST_F(SingleDisplaySensorFoldStateManagerTest, HandleAngleChange, Function | SmallTest | Level1)
61 {
62 float angel = 0;
63 int hall = 0;
64 sptr<FoldScreenPolicy> foldScreenPolicy = nullptr;
65 SingleDisplaySensorFoldStateManager manager;
66 manager.HandleAngleChange(angel, hall, foldScreenPolicy);
67 EXPECT_TRUE(true);
68 }
69
70 /**
71 * @tc.name: HandleHallChange
72 * @tc.desc: test function : HandleHallChange
73 * @tc.type: FUNC
74 */
75 HWTEST_F(SingleDisplaySensorFoldStateManagerTest, HandleHallChange, Function | SmallTest | Level1)
76 {
77 float angel = 0;
78 int hall = 0;
79 sptr<FoldScreenPolicy> foldScreenPolicy = nullptr;
80 SingleDisplaySensorFoldStateManager manager;
81 manager.HandleHallChange(angel, hall, foldScreenPolicy);
82 EXPECT_TRUE(true);
83 }
84
85 /**
86 * @tc.name: UpdateSwitchScreenBoundaryForLargeFoldDevice
87 * @tc.desc: test function : UpdateSwitchScreenBoundaryForLargeFoldDevice
88 * @tc.type: FUNC
89 */
90 HWTEST_F(SingleDisplaySensorFoldStateManagerTest, UpdateSwitchScreenBoundaryForLargeFoldDevice,
91 Function | SmallTest | Level1)
92 {
93 float angel = 0;
94 int hall = 0;
95 SingleDisplaySensorFoldStateManager manager;
96 manager.UpdateSwitchScreenBoundaryForLargeFoldDevice(angel, hall);
97 EXPECT_TRUE(true);
98
99 angel = 91.0F;
100 hall = 1;
101 manager.UpdateSwitchScreenBoundaryForLargeFoldDevice(angel, hall);
102 EXPECT_TRUE(true);
103 }
104
105 /**
106 * @tc.name: GetNextFoldState01
107 * @tc.desc: test function : GetNextFoldState
108 * @tc.type: FUNC
109 */
110 HWTEST_F(SingleDisplaySensorFoldStateManagerTest, GetNextFoldState01, Function | SmallTest | Level1)
111 {
112 float angel = -0.1;
113 int hall = 0;
114 SingleDisplaySensorFoldStateManager manager;
115 auto result1 = manager.GetNextFoldState(angel, hall);
116 EXPECT_EQ(static_cast<int>(result1), 0);
117
118 manager.allowUserSensorForLargeFoldDevice = 0;
119 angel = 90.0F;
120 hall = 1;
121 auto result2 = manager.GetNextFoldState(angel, hall);
122 EXPECT_EQ(static_cast<int>(result2), 3);
123
124 angel = 130.0F - 0.1;
125 hall = 1;
126 auto result3 = manager.GetNextFoldState(angel, hall);
127 EXPECT_EQ(static_cast<int>(result3), 3);
128
129 angel = 130.0F - 0.1;
130 hall = 0;
131 auto result4 = manager.GetNextFoldState(angel, hall);
132 EXPECT_EQ(static_cast<int>(result4), 3);
133
134 angel = 130.0F + 0.1;
135 hall = 0;
136 auto result5 = manager.GetNextFoldState(angel, hall);
137 EXPECT_EQ(static_cast<int>(result5), 3);
138
139 angel = 140.0F + 0.1;
140 hall = 0;
141 auto result6 = manager.GetNextFoldState(angel, hall);
142 EXPECT_EQ(static_cast<int>(result6), 3);
143
144 angel = 140.0F + 0.1;
145 hall = 1;
146 auto result7 = manager.GetNextFoldState(angel, hall);
147 EXPECT_EQ(static_cast<int>(result7), 1);
148 }
149
150 /**
151 * @tc.name: GetNextFoldState02
152 * @tc.desc: test function : GetNextFoldState
153 * @tc.type: FUNC
154 */
155 HWTEST_F(SingleDisplaySensorFoldStateManagerTest, GetNextFoldState02, Function | SmallTest | Level1)
156 {
157 SingleDisplaySensorFoldStateManager manager;
158 manager.allowUserSensorForLargeFoldDevice = 1;
159 float angel = 25.0F;
160 int hall = 1;
161 auto result1 = manager.GetNextFoldState(angel, hall);
162 EXPECT_EQ(static_cast<int>(result1), 0);
163
164 angel = 70.0F - 0.1;
165 auto result2 = manager.GetNextFoldState(angel, hall);
166 EXPECT_EQ(static_cast<int>(result2), 2);
167
168 angel = 70.0F + 0.1;
169 auto result3 = manager.GetNextFoldState(angel, hall);
170 EXPECT_EQ(static_cast<int>(result3), 3);
171
172 angel = 130.0F - 0.1;
173 auto result4 = manager.GetNextFoldState(angel, hall);
174 EXPECT_EQ(static_cast<int>(result4), 3);
175
176 angel = 130.0F + 0.1;
177 auto result5 = manager.GetNextFoldState(angel, hall);
178 EXPECT_EQ(static_cast<int>(result5), 3);
179
180 angel = 80.0F - 0.1;
181 auto result6 = manager.GetNextFoldState(angel, hall);
182 EXPECT_EQ(static_cast<int>(result6), 3);
183
184 angel = 70.0F + 0.1;
185 hall = 0;
186 auto result7 = manager.GetNextFoldState(angel, hall);
187 EXPECT_EQ(static_cast<int>(result7), 3);
188
189 angel = 130.0F + 0.1;
190 auto result8 = manager.GetNextFoldState(angel, hall);
191 EXPECT_EQ(static_cast<int>(result8), 3);
192 }
193 }
194 }
195 }