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 }