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_extension_proxy.h"
18 #include "window_extension_stub.h"
19 #include "window_extension_stub_impl.h"
20 #include "window_extension_client_interface.h"
21 #include "window_extension_client_stub_impl.h"
22 #include "iremote_object_mocker.h"
23 #include "window_extension_session_impl.h"
24
25 using namespace testing;
26 using namespace testing::ext;
27
28 namespace OHOS {
29 namespace Rosen {
30 class WindowExtensionStubImplTest : public testing::Test {
31 public:
32 static void SetUpTestCase();
33 static void TearDownTestCase();
34 void SetUp() override;
35 void TearDown() override;
36 sptr<WindowExtensionStub> mockWindowExtensionStub_;
37 sptr<WindowExtensionProxy> windowExtensionProxy_;
38 wptr<Window> window_ = nullptr;
39 };
40
SetUpTestCase()41 void WindowExtensionStubImplTest::SetUpTestCase()
42 {
43 }
44
TearDownTestCase()45 void WindowExtensionStubImplTest::TearDownTestCase()
46 {
47 }
48
SetUp()49 void WindowExtensionStubImplTest::SetUp()
50 {
51 }
52
TearDown()53 void WindowExtensionStubImplTest::TearDown()
54 {
55 }
56
57 namespace {
58 /**
59 * @tc.name: CreateWindow
60 * @tc.desc: test success
61 * @tc.type: FUNC
62 */
63 HWTEST_F(WindowExtensionStubImplTest, CreateWindow, Function | SmallTest | Level2)
64 {
65 Rect rect;
66 uint32_t parentWindowId = 0;
67 std::shared_ptr<AbilityRuntime::Context> context;
68 sptr<IRemoteObject> iSession;
69 sptr<WindowOption> option;
70 WindowExtensionStubImpl windowExtensionStubImpl("windowName");
71 auto res = windowExtensionStubImpl.CreateWindow(rect, parentWindowId, context, iSession);
72 ASSERT_EQ(nullptr, res);
73
74 iSession = new IRemoteObjectMocker();
75 ASSERT_NE(nullptr, iSession);
76 option = new(std::nothrow) WindowOption();
77 ASSERT_NE(nullptr, option);
78 res = windowExtensionStubImpl.CreateWindow(rect, parentWindowId, context, iSession);
79 ASSERT_EQ(nullptr, res);
80 }
81
82 /**
83 * @tc.name: CreateWindow
84 * @tc.desc: test success
85 * @tc.type: FUNC
86 */
87 HWTEST_F(WindowExtensionStubImplTest, SetBounds, Function | SmallTest | Level2)
88 {
89 WindowExtensionStubImpl windowExtensionStubImpl("windowName");
90 Rect rect = { 150, 150, 400, 600 };
91 windowExtensionStubImpl.SetBounds(rect);
92
93 sptr<WindowOption> option = new(std::nothrow) WindowOption();
94 ASSERT_NE(nullptr, option);
95 option->SetWindowRect(rect);
96 sptr<WindowExtensionSessionImpl> window = new(std::nothrow) WindowExtensionSessionImpl(option);
97 ASSERT_NE(nullptr, window);
98 window->property_->SetWindowRect(rect);
99 windowExtensionStubImpl.window_ = window;
100 windowExtensionStubImpl.SetBounds(rect);
101
102 Rect rect2 = { 100, 100, 200, 300 };
103 windowExtensionStubImpl.SetBounds(rect2);
104
105 rect2 = { 100, 150, 200, 600 };
106 windowExtensionStubImpl.SetBounds(rect2);
107
108 rect2 = { 150, 100, 400, 300 };
109 windowExtensionStubImpl.SetBounds(rect2);
110 }
111
112 /**
113 * @tc.name: Hide
114 * @tc.desc: test success
115 * @tc.type: FUNC
116 */
117 HWTEST_F(WindowExtensionStubImplTest, Hide, Function | SmallTest | Level2)
118 {
119 WindowExtensionStubImpl windowExtensionStubImpl("windowName");
120 windowExtensionStubImpl.Hide();
121
122 sptr<WindowOption> option = new(std::nothrow) WindowOption();
123 ASSERT_NE(nullptr, option);
124 sptr<WindowExtensionSessionImpl> window = new(std::nothrow) WindowExtensionSessionImpl(option);
125 ASSERT_NE(nullptr, window);
126 windowExtensionStubImpl.window_ = window;
127 windowExtensionStubImpl.Hide();
128 }
129
130 /**
131 * @tc.name: Show
132 * @tc.desc: test success
133 * @tc.type: FUNC
134 */
135 HWTEST_F(WindowExtensionStubImplTest, Show, Function | SmallTest | Level2)
136 {
137 WindowExtensionStubImpl windowExtensionStubImpl("windowName");
138 windowExtensionStubImpl.Show();
139
140 sptr<WindowOption> option = new(std::nothrow) WindowOption();
141 ASSERT_NE(nullptr, option);
142 sptr<WindowExtensionSessionImpl> window = new(std::nothrow) WindowExtensionSessionImpl(option);
143 ASSERT_NE(nullptr, window);
144 windowExtensionStubImpl.window_ = window;
145 windowExtensionStubImpl.Show();
146 }
147
148 /**
149 * @tc.name: RequestFocus
150 * @tc.desc: test success
151 * @tc.type: FUNC
152 */
153 HWTEST_F(WindowExtensionStubImplTest, RequestFocus, Function | SmallTest | Level2)
154 {
155 WindowExtensionStubImpl windowExtensionStubImpl("windowName");
156 windowExtensionStubImpl.RequestFocus();
157
158 sptr<WindowOption> option = new(std::nothrow) WindowOption();
159 ASSERT_NE(nullptr, option);
160 sptr<WindowExtensionSessionImpl> window = new(std::nothrow) WindowExtensionSessionImpl(option);
161 ASSERT_NE(nullptr, window);
162 windowExtensionStubImpl.window_ = window;
163 windowExtensionStubImpl.RequestFocus();
164 }
165
166 /**
167 * @tc.name: GetExtensionWindow
168 * @tc.desc: test success
169 * @tc.type: FUNC
170 */
171 HWTEST_F(WindowExtensionStubImplTest, GetExtensionWindow, Function | SmallTest | Level2)
172 {
173 sptr<IWindowExtensionClient> token;
174 WindowExtensionStubImpl windowExtensionStubImpl("windowName");
175 auto window = windowExtensionStubImpl.window_.promote();
176 windowExtensionStubImpl.GetExtensionWindow(token);
177 sptr<IWindowExtensionCallback> componentCallback;
178 WindowExtensionClientStubImpl windowExtensionClientStubImpl(componentCallback);
179 sptr<IWindowExtensionClient> clientToken(new WindowExtensionClientStubImpl(
180 windowExtensionClientStubImpl.componentCallback_));
181 windowExtensionStubImpl.GetExtensionWindow(clientToken);
182 ASSERT_EQ(windowExtensionStubImpl.window_.promote(), windowExtensionStubImpl.GetWindow());
183 }
184
185 /**
186 * @tc.name: GetWindow
187 * @tc.desc: test success
188 * @tc.type: FUNC
189 */
190 HWTEST_F(WindowExtensionStubImplTest, GetWindow, Function | SmallTest | Level2)
191 {
192 WindowExtensionStubImpl windowExtensionStubImpl("windowName");
193 auto window = windowExtensionStubImpl.window_.promote();
194 windowExtensionStubImpl.GetWindow();
195 ASSERT_EQ(windowExtensionStubImpl.window_.promote(), windowExtensionStubImpl.GetWindow());
196 }
197 }
198 }
199 }