• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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