1 /*
2 * Copyright (c) 2022 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_stub.h"
18 #include "window_agent.h"
19
20 using namespace testing;
21 using namespace testing::ext;
22 namespace OHOS {
23 namespace Rosen {
24 class WindowStubTest : public testing::Test {
25 public:
26 static void SetUpTestCase();
27 static void TearDownTestCase();
28 void SetUp() override;
29 void TearDown() override;
30 sptr<WindowStub> windowStub_;
31 };
32
SetUpTestCase()33 void WindowStubTest::SetUpTestCase()
34 {
35 }
36
TearDownTestCase()37 void WindowStubTest::TearDownTestCase()
38 {
39 }
40
SetUp()41 void WindowStubTest::SetUp()
42 {
43 sptr<WindowOption> option = new WindowOption();
44 sptr<WindowImpl> window = new WindowImpl(option);
45 windowStub_ = new WindowAgent(window);
46 }
47
TearDown()48 void WindowStubTest::TearDown()
49 {
50 }
51
52 namespace {
53 /**
54 * @tc.name: OnRemoteRequest01
55 * @tc.desc: test InterfaceToken check failed
56 * @tc.type: FUNC
57 */
58 HWTEST_F(WindowStubTest, OnRemoteRequest01, Function | SmallTest | Level2)
59 {
60 MessageParcel data;
61 MessageParcel reply;
62 MessageOption option;
63
64 data.WriteInterfaceToken(u"error.GetDescriptor");
65
66 data.WriteInt32(0);
67 data.WriteInt32(0);
68 data.WriteUint32(100);
69 data.WriteUint32(100);
70
71 data.WriteBool(false);
72
73 data.WriteUint32(static_cast<uint32_t>(WindowSizeChangeReason::DRAG_START));
74
75 uint32_t code = static_cast<uint32_t>(IWindow::WindowMessage::TRANS_ID_UPDATE_WINDOW_RECT);
76
77 int res = windowStub_->OnRemoteRequest(code, data, reply, option);
78 EXPECT_EQ(res, -1);
79 }
80
81 /**
82 * @tc.name: OnRemoteRequest02
83 * @tc.desc: test TRANS_ID_UPDATE_WINDOW_RECT
84 * @tc.type: FUNC
85 */
86 HWTEST_F(WindowStubTest, OnRemoteRequest02, Function | SmallTest | Level2)
87 {
88 MessageParcel data;
89 MessageParcel reply;
90 MessageOption option;
91
92 data.WriteInterfaceToken(WindowStub::GetDescriptor());
93
94 data.WriteInt32(0);
95 data.WriteInt32(0);
96 data.WriteUint32(100);
97 data.WriteUint32(100);
98
99 data.WriteBool(false);
100
101 data.WriteUint32(static_cast<uint32_t>(WindowSizeChangeReason::DRAG_START));
102
103 uint32_t code = static_cast<uint32_t>(IWindow::WindowMessage::TRANS_ID_UPDATE_WINDOW_RECT);
104
105 int res = windowStub_->OnRemoteRequest(code, data, reply, option);
106 EXPECT_EQ(res, 0);
107 }
108
109 /**
110 * @tc.name: OnRemoteRequest03
111 * @tc.desc: test TRANS_ID_UPDATE_AVOID_AREA success
112 * @tc.type: FUNC
113 */
114 HWTEST_F(WindowStubTest, OnRemoteRequest03, Function | SmallTest | Level2)
115 {
116 MessageParcel data;
117 MessageParcel reply;
118 MessageOption option;
119
120 data.WriteInterfaceToken(WindowStub::GetDescriptor());
121
122 sptr<AvoidArea> avoidArea = new AvoidArea();
123 data.WriteStrongParcelable(avoidArea);
124
125 data.WriteUint32(static_cast<uint32_t>(AvoidAreaType::TYPE_SYSTEM));
126
127 uint32_t code = static_cast<uint32_t>(IWindow::WindowMessage::TRANS_ID_UPDATE_AVOID_AREA);
128
129 int res = windowStub_->OnRemoteRequest(code, data, reply, option);
130 EXPECT_EQ(res, 0);
131 }
132
133 /**
134 * @tc.name: OnRemoteRequest04
135 * @tc.desc: test TRANS_ID_UPDATE_AVOID_AREA success
136 * @tc.type: FUNC
137 */
138 HWTEST_F(WindowStubTest, OnRemoteRequest04, Function | SmallTest | Level2)
139 {
140 MessageParcel data;
141 MessageParcel reply;
142 MessageOption option;
143
144 data.WriteInterfaceToken(WindowStub::GetDescriptor());
145
146 sptr<AvoidArea> avoidArea = new AvoidArea();
147 data.WriteStrongParcelable(avoidArea);
148
149 uint32_t code = static_cast<uint32_t>(IWindow::WindowMessage::TRANS_ID_UPDATE_AVOID_AREA);
150
151 int res = windowStub_->OnRemoteRequest(code, data, reply, option);
152 EXPECT_EQ(res, -1);
153 }
154
155 /**
156 * @tc.name: OnRemoteRequest05
157 * @tc.desc: test TRANS_ID_DUMP_INFO success
158 * @tc.type: FUNC
159 */
160 HWTEST_F(WindowStubTest, OnRemoteRequest05, Function | SmallTest | Level2)
161 {
162 MessageParcel data;
163 MessageParcel reply;
164 MessageOption option;
165
166 data.WriteInterfaceToken(WindowStub::GetDescriptor());
167
168 std::vector<std::string> params;
169 params.push_back("-a");
170 data.WriteStringVector(params);
171
172 uint32_t code = static_cast<uint32_t>(IWindow::WindowMessage::TRANS_ID_DUMP_INFO);
173
174 int res = windowStub_->OnRemoteRequest(code, data, reply, option);
175 EXPECT_EQ(res, 0);
176 }
177
178 /**
179 * @tc.name: OnRemoteRequest06
180 * @tc.desc: test TRANS_ID_DUMP_INFO failed
181 * @tc.type: FUNC
182 */
183 HWTEST_F(WindowStubTest, OnRemoteRequest06, Function | SmallTest | Level2)
184 {
185 MessageParcel data;
186 MessageParcel reply;
187 MessageOption option;
188
189 data.WriteInterfaceToken(WindowStub::GetDescriptor());
190 data.WriteRawData(nullptr, 0);
191
192 uint32_t code = static_cast<uint32_t>(IWindow::WindowMessage::TRANS_ID_DUMP_INFO);
193
194 int res = windowStub_->OnRemoteRequest(code, data, reply, option);
195 EXPECT_EQ(res, 0);
196 }
197
198
199 /**
200 * @tc.name: OnRemoteRequest07
201 * @tc.desc: test TRANS_ID_NOTIFY_CLIENT_POINT_UP success
202 * @tc.type: FUNC
203 */
204 HWTEST_F(WindowStubTest, OnRemoteRequest07, Function | SmallTest | Level2)
205 {
206 MessageParcel data;
207 MessageParcel reply;
208 MessageOption option;
209
210 data.WriteInterfaceToken(WindowStub::GetDescriptor());
211
212 std::shared_ptr<MMI::PointerEvent> pointerEvent = MMI::PointerEvent::Create();
213 pointerEvent->WriteToParcel(data);
214
215 uint32_t code = static_cast<uint32_t>(IWindow::WindowMessage::TRANS_ID_NOTIFY_CLIENT_POINT_UP);
216
217 int res = windowStub_->OnRemoteRequest(code, data, reply, option);
218 EXPECT_EQ(res, 0);
219 }
220
221 /**
222 * @tc.name: OnRemoteRequest08
223 * @tc.desc: test TRANS_ID_NOTIFY_CLIENT_POINT_UP success
224 * @tc.type: FUNC
225 */
226 HWTEST_F(WindowStubTest, OnRemoteRequest08, Function | SmallTest | Level2)
227 {
228 MessageParcel data;
229 MessageParcel reply;
230 MessageOption option;
231
232 data.WriteInterfaceToken(WindowStub::GetDescriptor());
233
234 uint32_t code = static_cast<uint32_t>(IWindow::WindowMessage::TRANS_ID_NOTIFY_CLIENT_POINT_UP);
235
236 int res = windowStub_->OnRemoteRequest(code, data, reply, option);
237 EXPECT_EQ(res, -1);
238 }
239
240 /**
241 * @tc.name: OnRemoteRequest09
242 * @tc.desc: test TRANS_ID_NOTIFY_FOREGROUND_INTERACTIVE_STATUS success
243 * @tc.type: FUNC
244 */
245 HWTEST_F(WindowStubTest, OnRemoteRequest09, Function | SmallTest | Level2)
246 {
247 MessageParcel data;
248 MessageParcel reply;
249 MessageOption option(MessageOption::TF_ASYNC);
250
251 data.WriteInterfaceToken(WindowStub::GetDescriptor());
252 data.WriteBool(false);
253 uint32_t code = static_cast<uint32_t>(IWindow::WindowMessage::TRANS_ID_NOTIFY_FOREGROUND_INTERACTIVE_STATUS);
254 int res = windowStub_->OnRemoteRequest(code, data, reply, option);
255 EXPECT_EQ(res, 0);
256 }
257
258 /**
259 * @tc.name: OnRemoteRequest10
260 * @tc.desc: test TRANS_ID_NOTIFY_FOREGROUND_INTERACTIVE_STATUS success
261 * @tc.type: FUNC
262 */
263 HWTEST_F(WindowStubTest, OnRemoteRequest10, Function | SmallTest | Level2)
264 {
265 MessageParcel data;
266 MessageParcel reply;
267 MessageOption option(MessageOption::TF_ASYNC);
268 uint32_t code = 0;
269
270 int res = windowStub_->OnRemoteRequest(code, data, reply, option);
271 EXPECT_EQ(res, -1);
272
273 IWindow::WindowMessage msgId = IWindow::WindowMessage::TRANS_ID_UPDATE_WINDOW_RECT;
274 EXPECT_EQ(msgId, IWindow::WindowMessage::TRANS_ID_UPDATE_WINDOW_RECT);
275 }
276 }
277 }
278 }
279