1 /*
2 * Copyright (c) 2022-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 "display_mock_parcel_test.h"
17 #include "display_log.h"
18 #include "display_mgr_errors.h"
19 #include "display_power_mgr_client.h"
20 #include "ipc_object_stub.h"
21 #include "power_state_machine_info.h"
22 #ifdef HAS_HIVIEWDFX_HISYSEVENT_PART
23 #include <hisysevent.h>
24 #endif
25 #include <memory>
26 #include <unistd.h>
27
28 using namespace testing::ext;
29 #ifdef HAS_HIVIEWDFX_HISYSEVENT_PART
30 using namespace OHOS::HiviewDFX;
31 #endif
32 using namespace OHOS::PowerMgr;
33 using namespace OHOS::DisplayPowerMgr;
34 using namespace OHOS;
35 using namespace std;
36
37 namespace {
38 static constexpr uint32_t BRIGHTNESS_SETTING_VALUE = 50;
39 static constexpr uint32_t BRIGHTNESS_OVERRIDE_VALUE = 100;
40 static constexpr uint32_t BRIGHTNESS_DURATION = 0;
41 static constexpr uint32_t BRIGHTNESS_DEFAULT_VALUE = 102;
42 static constexpr uint32_t BRIGHTNESS_MIN_VALUE = 5;
43 static constexpr uint32_t BRIGHTNESS_MAX_VALUE = 255;
44 static constexpr uint32_t BRIGHTNESS_NONE_VALUE = 0;
45 static constexpr uint32_t CODE_VALUE = 100;
46 static constexpr uint32_t DISPLAY_ID = 0;
47 static constexpr uint32_t MAIN_ID_PROXY = 0;
48 static constexpr uint32_t REASON = 0;
49 static constexpr int32_t BRIGHTNESS_ADJUST_VALUE = 150;
50 static constexpr int32_t MAIN_ID_CLIENT = 0;
51 static constexpr int32_t TIMEOUT_MS = 500;
52 static constexpr double DISCOUNT_VALUE = 0.30;
53 static constexpr uint32_t DEFAULT_DURATION = 500;
54 static constexpr uint32_t ERR_OK = 0;
55 } // namespace
56
DisplayProxyBrightnessTestFunc(std::shared_ptr<DisplayPowerMgrProxy> & sptrDisplayProxy)57 void DisplayMockParcelTest::DisplayProxyBrightnessTestFunc(std::shared_ptr<DisplayPowerMgrProxy>& sptrDisplayProxy)
58 {
59 bool ret = false;
60 int32_t errCode = 0;
61 EXPECT_NE(sptrDisplayProxy->SetBrightness(BRIGHTNESS_SETTING_VALUE, DISPLAY_ID, false, ret, errCode), ERR_OK);
62 EXPECT_FALSE(ret);
63 EXPECT_NE(sptrDisplayProxy->DiscountBrightness(DISCOUNT_VALUE, DISPLAY_ID, ret), ERR_OK);
64 EXPECT_FALSE(ret);
65 EXPECT_NE(sptrDisplayProxy->OverrideBrightness(BRIGHTNESS_OVERRIDE_VALUE, DISPLAY_ID, DEFAULT_DURATION, ret),
66 ERR_OK);
67 EXPECT_FALSE(ret);
68 EXPECT_NE(sptrDisplayProxy->RestoreBrightness(DISPLAY_ID, DEFAULT_DURATION, ret), ERR_OK);
69 EXPECT_FALSE(ret);
70 uint32_t brightness = 0;
71 EXPECT_NE(sptrDisplayProxy->GetBrightness(DISPLAY_ID, brightness), ERR_OK);
72 EXPECT_EQ(BRIGHTNESS_NONE_VALUE, brightness);
73 EXPECT_NE(sptrDisplayProxy->GetDefaultBrightness(brightness), ERR_OK);
74 EXPECT_EQ(BRIGHTNESS_NONE_VALUE, brightness);
75 EXPECT_NE(sptrDisplayProxy->GetMaxBrightness(brightness), ERR_OK);
76 EXPECT_EQ(BRIGHTNESS_NONE_VALUE, brightness);
77 EXPECT_NE(sptrDisplayProxy->GetMinBrightness(brightness), ERR_OK);
78 EXPECT_EQ(BRIGHTNESS_NONE_VALUE, brightness);
79 EXPECT_NE(sptrDisplayProxy->AdjustBrightness(DISPLAY_ID, BRIGHTNESS_ADJUST_VALUE, BRIGHTNESS_DURATION, ret),
80 ERR_OK);
81 EXPECT_FALSE(ret);
82 EXPECT_NE(sptrDisplayProxy->AutoAdjustBrightness(true, ret), ERR_OK);
83 EXPECT_FALSE(ret);
84 EXPECT_NE(sptrDisplayProxy->AutoAdjustBrightness(false, ret), ERR_OK);
85 EXPECT_FALSE(ret);
86 EXPECT_NE(sptrDisplayProxy->IsAutoAdjustBrightness(ret), ERR_OK);
87 EXPECT_FALSE(ret);
88 EXPECT_NE(sptrDisplayProxy->BoostBrightness(TIMEOUT_MS, DISPLAY_ID, ret), ERR_OK);
89 EXPECT_FALSE(ret);
90 EXPECT_NE(sptrDisplayProxy->CancelBoostBrightness(DISPLAY_ID, ret), ERR_OK);
91 EXPECT_FALSE(ret);
92 }
93
DisplayProxyTestFunc(std::shared_ptr<DisplayPowerMgrProxy> & sptrDisplayProxy)94 void DisplayMockParcelTest::DisplayProxyTestFunc(std::shared_ptr<DisplayPowerMgrProxy>& sptrDisplayProxy)
95 {
96 std::vector<uint32_t> result;
97 result.push_back(DISPLAY_ID);
98 bool ret = false;
99 EXPECT_NE(sptrDisplayProxy->SetDisplayState(DISPLAY_ID,
100 static_cast<uint32_t>(DisplayPowerMgr::DisplayState::DISPLAY_ON), REASON, ret), ERR_OK);
101 EXPECT_FALSE(ret);
102 int32_t state = 0;
103 EXPECT_NE(sptrDisplayProxy->GetDisplayState(DISPLAY_ID, state), ERR_OK);
104 EXPECT_NE(DisplayPowerMgr::DisplayState::DISPLAY_ON, DisplayPowerMgr::DisplayState(state));
105 std::vector<uint32_t> ids;
106 EXPECT_NE(sptrDisplayProxy->GetDisplayIds(ids), ERR_OK);
107 EXPECT_NE(result, ids);
108 uint32_t mainId = MAIN_ID_PROXY;
109 EXPECT_NE(sptrDisplayProxy->GetMainDisplayId(mainId), ERR_OK);
110 EXPECT_EQ(MAIN_ID_PROXY, mainId);
111 DisplayProxyBrightnessTestFunc(sptrDisplayProxy);
112 }
113
OnDisplayStateChanged(uint32_t displayId,DisplayPowerMgr::DisplayState state,uint32_t reason)114 void DisplayMockParcelTest::DisplayPowerMgrTestCallback::OnDisplayStateChanged(
115 uint32_t displayId, DisplayPowerMgr::DisplayState state, uint32_t reason)
116 {
117 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrTestCallback::OnDisplayStateChangedStub");
118 }
119
120 namespace {
121 /**
122 * @tc.name: DisplayMockParcelTest_001
123 * @tc.desc: test DisplayPowerMgrClient function with mock parcel
124 * @tc.type: FUNC
125 * @tc.require: issueI5YZQR
126 */
127 HWTEST_F(DisplayMockParcelTest, DisplayMockParcelTest_001, TestSize.Level0)
128 {
129 DISPLAY_HILOGI(LABEL_TEST, "DisplayMockParcelTest_001 function start!");
130 auto& client = DisplayPowerMgr::DisplayPowerMgrClient::GetInstance();
131 std::vector<uint32_t> result;
132 result.push_back(DISPLAY_ID);
133 EXPECT_FALSE(client.SetDisplayState(DisplayPowerMgr::DisplayState::DISPLAY_ON));
134 EXPECT_NE(DisplayPowerMgr::DisplayState::DISPLAY_ON, client.GetDisplayState(DISPLAY_ID));
135 EXPECT_NE(result, client.GetDisplayIds());
136 EXPECT_NE(MAIN_ID_CLIENT, client.GetMainDisplayId());
137 EXPECT_FALSE(client.SetBrightness(BRIGHTNESS_SETTING_VALUE, DISPLAY_ID));
138 EXPECT_FALSE(client.DiscountBrightness(DISCOUNT_VALUE, DISPLAY_ID));
139 EXPECT_FALSE(client.OverrideBrightness(BRIGHTNESS_OVERRIDE_VALUE, DISPLAY_ID));
140 EXPECT_FALSE(client.RestoreBrightness(DISPLAY_ID));
141 EXPECT_NE(BRIGHTNESS_SETTING_VALUE, client.GetBrightness(DISPLAY_ID));
142 EXPECT_EQ(BRIGHTNESS_DEFAULT_VALUE, client.GetDefaultBrightness());
143 EXPECT_EQ(BRIGHTNESS_MAX_VALUE, client.GetMaxBrightness());
144 EXPECT_NE(BRIGHTNESS_MIN_VALUE, client.GetMinBrightness());
145 EXPECT_FALSE(client.AutoAdjustBrightness(true));
146 EXPECT_FALSE(client.AdjustBrightness(BRIGHTNESS_ADJUST_VALUE, BRIGHTNESS_DURATION, DISPLAY_ID));
147 EXPECT_FALSE(client.AutoAdjustBrightness(false));
148 EXPECT_FALSE(client.IsAutoAdjustBrightness());
149 EXPECT_FALSE(client.BoostBrightness(TIMEOUT_MS, DISPLAY_ID));
150 EXPECT_FALSE(client.CancelBoostBrightness(DISPLAY_ID));
151 EXPECT_EQ(BRIGHTNESS_NONE_VALUE, client.GetDeviceBrightness(DISPLAY_ID));
152 DISPLAY_HILOGI(LABEL_TEST, "DisplayMockParcelTest_001 function end!");
153 }
154
155 /**
156 * @tc.name: DisplayMockParcelTest_002
157 * @tc.desc: test DisplayPowerMgrProxy function(IRemoteObject is null, IDisplayPowerCallback is null)
158 * @tc.type: FUNC
159 * @tc.require: issueI5YZQR
160 */
161 HWTEST_F(DisplayMockParcelTest, DisplayMockParcelTest_002, TestSize.Level0)
162 {
163 DISPLAY_HILOGI(LABEL_TEST, "DisplayMockParcelTest_002 function start!");
164 auto sptrDisplayProxy = std::make_shared<DisplayPowerMgr::DisplayPowerMgrProxy>(nullptr);
165 sptr<IDisplayPowerCallback> callbackPtr = nullptr;
166
167 DisplayMockParcelTest::DisplayProxyTestFunc(sptrDisplayProxy);
168 uint32_t brightness = BRIGHTNESS_NONE_VALUE;
169 EXPECT_NE(sptrDisplayProxy->GetDeviceBrightness(DISPLAY_ID, brightness), ERR_OK);
170 EXPECT_EQ(BRIGHTNESS_NONE_VALUE, brightness);
171
172 bool result = false;
173 EXPECT_NE(sptrDisplayProxy->RegisterCallback(callbackPtr, result), ERR_OK);
174 EXPECT_FALSE(result);
175 DISPLAY_HILOGI(LABEL_TEST, "DisplayMockParcelTest_002 function end!");
176 }
177
178 /**
179 * @tc.name: DisplayMockParcelTest_003
180 * @tc.desc: test DisplayPowerMgrProxy function(IRemoteObject is null, IDisplayPowerCallback is not null)
181 * @tc.type: FUNC
182 * @tc.require: issueI5YZQR
183 */
184 HWTEST_F(DisplayMockParcelTest, DisplayMockParcelTest_003, TestSize.Level0)
185 {
186 DISPLAY_HILOGI(LABEL_TEST, "DisplayMockParcelTest_003 function start!");
187 auto sptrDisplayProxy = std::make_shared<DisplayPowerMgr::DisplayPowerMgrProxy>(nullptr);
188 sptr<IDisplayPowerCallback> callbackPtr = new DisplayMockParcelTest::DisplayPowerMgrTestCallback();
189 bool result = false;
190 EXPECT_NE(sptrDisplayProxy->RegisterCallback(callbackPtr, result), ERR_OK);
191 EXPECT_FALSE(result);
192 DISPLAY_HILOGI(LABEL_TEST, "DisplayMockParcelTest_003 function end!");
193 }
194
195 /**
196 * @tc.name: DisplayMockParcelTest_004
197 * @tc.desc: test DisplayPowerMgrProxy function(IRemoteObject and IDisplayPowerCallback is not null)
198 * @tc.type: FUNC
199 * @tc.require: issueI5YZQR
200 */
201 HWTEST_F(DisplayMockParcelTest, DisplayMockParcelTest_004, TestSize.Level0)
202 {
203 DISPLAY_HILOGI(LABEL_TEST, "DisplayMockParcelTest_004 function start!");
204 sptr<IPCObjectStub> sptrRemoteObj = new IPCObjectStub();
205 auto sptrDisplayProxy = std::make_shared<DisplayPowerMgr::DisplayPowerMgrProxy>(sptrRemoteObj);
206
207 sptr<IDisplayPowerCallback> callbackPtr = new DisplayMockParcelTest::DisplayPowerMgrTestCallback();
208
209 DisplayMockParcelTest::DisplayProxyTestFunc(sptrDisplayProxy);
210 uint32_t brightness = 0;
211 EXPECT_NE(sptrDisplayProxy->GetDeviceBrightness(DISPLAY_ID, brightness), ERR_OK);
212 EXPECT_EQ(BRIGHTNESS_NONE_VALUE, brightness);
213
214 bool result = false;
215 EXPECT_NE(sptrDisplayProxy->RegisterCallback(callbackPtr, result), ERR_OK);
216 EXPECT_FALSE(result);
217 DISPLAY_HILOGI(LABEL_TEST, "DisplayMockParcelTest_004 function end!");
218 }
219
220 /**
221 * @tc.name: DisplayMockParcelTest_005
222 * @tc.desc: test DisplayPowerCallbackStub function
223 * @tc.type: FUNC
224 * @tc.require: issueI5YZQR
225 */
226 HWTEST_F(DisplayMockParcelTest, DisplayMockParcelTest_005, TestSize.Level0)
227 {
228 DISPLAY_HILOGI(LABEL_TEST, "DisplayMockParcelTest_005 function start!");
229 sptr<DisplayPowerCallbackStub> callbackPtr = new DisplayMockParcelTest::DisplayPowerMgrTestCallback();
230 MessageParcel data;
231 MessageParcel reply;
232 MessageOption option;
233 EXPECT_NE(ERR_OK, callbackPtr->OnRemoteRequest(CODE_VALUE, data, reply, option));
234 DISPLAY_HILOGI(LABEL_TEST, "DisplayMockParcelTest_005 function end!");
235 }
236 } // namespace
237