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 
18 #define private public
19 #define protected public
20 #include "extension_base.h"
21 #include "ui_extension_context.h"
22 #undef private
23 #undef protected
24 
25 #include "hilog_tag_wrapper.h"
26 #include "want.h"
27 #include "mock_window.h"
28 
29 using namespace testing::ext;
30 using namespace OHOS::Rosen;
31 
32 namespace OHOS {
33 namespace AbilityRuntime {
34 class UIExtensionContextTest : public testing::Test {
35 public:
36     static void SetUpTestCase();
37     static void TearDownTestCase();
38     void SetUp() override;
39     void TearDown() override;
40 };
41 
SetUpTestCase(void)42 void UIExtensionContextTest::SetUpTestCase(void)
43 {}
44 
TearDownTestCase(void)45 void UIExtensionContextTest::TearDownTestCase(void)
46 {}
47 
SetUp()48 void UIExtensionContextTest::SetUp()
49 {}
50 
TearDown()51 void UIExtensionContextTest::TearDown()
52 {}
53 
54 /**
55  * @tc.number: StartAbility_0100
56  * @tc.name: StartAbility
57  * @tc.desc: Start a new ability.
58  */
59 HWTEST_F(UIExtensionContextTest, StartAbility_0100, TestSize.Level1)
60 {
61     TAG_LOGI(AAFwkTag::TEST, "StartAbility_0100 start");
62 
63     auto context = std::make_shared<UIExtensionContext>();
64     AAFwk::Want want;
65     ElementName element("device", "ohos.samples", "form_extension_context_test");
66     want.SetElement(element);
67     EXPECT_TRUE(context->StartAbility(want) != ERR_OK);
68 
69     TAG_LOGI(AAFwkTag::TEST, "StartAbility_0100 end");
70 }
71 
72 /**
73  * @tc.number: StartAbility_0200
74  * @tc.name: StartAbility
75  * @tc.desc: Start a new ability.
76  */
77 HWTEST_F(UIExtensionContextTest, StartAbility_0200, TestSize.Level1)
78 {
79     TAG_LOGI(AAFwkTag::TEST, "StartAbility_0200 start");
80 
81     auto context = std::make_shared<UIExtensionContext>();
82     AAFwk::Want want;
83     AAFwk::StartOptions startOptions;
84     ElementName element("device", "ohos.samples", "form_extension_context_test");
85     want.SetElement(element);
86     EXPECT_TRUE(context->StartAbility(want, startOptions) != ERR_OK);
87 
88     TAG_LOGI(AAFwkTag::TEST, "StartAbility_0200 end");
89 }
90 
91 /**
92  * @tc.number: TerminateSelf_0100
93  * @tc.name: TerminateSelf
94  * @tc.desc: Terminate a ability.
95  */
96 HWTEST_F(UIExtensionContextTest, TerminateSelf_0100, TestSize.Level1)
97 {
98     TAG_LOGI(AAFwkTag::TEST, "TerminateSelf_0100 start");
99 
100     auto context = std::make_shared<UIExtensionContext>();
101     auto ret = context->TerminateSelf();
102     EXPECT_EQ(ret, ERR_INVALID_VALUE);
103 
104     TAG_LOGI(AAFwkTag::TEST, "TerminateSelf_0100 end");
105 }
106 
107 /**
108  * @tc.number: ConnectAbility_0100
109  * @tc.name: ConnectAbility
110  * @tc.desc: Connect a ability.
111  */
112 HWTEST_F(UIExtensionContextTest, ConnectAbility_0100, TestSize.Level1)
113 {
114     TAG_LOGI(AAFwkTag::TEST, "ConnectAbility_0100 start");
115 
116     auto context = std::make_shared<UIExtensionContext>();
117     AAFwk::Want want;
118     sptr<AbilityConnectCallback> connectCallback;
119     auto ret = context->ConnectAbility(want, connectCallback);
120     EXPECT_NE(ret, 0);
121 
122     TAG_LOGI(AAFwkTag::TEST, "ConnectAbility_0100 end");
123 }
124 
125 /**
126  * @tc.number: DisconnectAbility_0100
127  * @tc.name: DisconnectAbility
128  * @tc.desc: Disconnect a ability.
129  */
130 HWTEST_F(UIExtensionContextTest, DisconnectAbility_0100, TestSize.Level1)
131 {
132     TAG_LOGI(AAFwkTag::TEST, "DisconnectAbility_0100 start");
133 
134     auto context = std::make_shared<UIExtensionContext>();
135     AAFwk::Want want;
136     sptr<AbilityConnectCallback> connectCallback;
137     auto ret = context->DisconnectAbility(want, connectCallback);
138     EXPECT_NE(ret, 0);
139 
140     TAG_LOGI(AAFwkTag::TEST, "DisconnectAbility_0100 end");
141 }
142 
143 /**
144  * @tc.number: StartAbilityForResult_0100
145  * @tc.name: StartAbilityForResult
146  * @tc.desc: Start a ability for result.
147  */
148 HWTEST_F(UIExtensionContextTest, StartAbilityForResult_0100, TestSize.Level1)
149 {
150     TAG_LOGI(AAFwkTag::TEST, "StartAbilityForResult_0100 start");
151 
152     auto context = std::make_shared<UIExtensionContext>();
153     AAFwk::Want want;
154     AAFwk::StartOptions startOptions;
155     int32_t requestCode = 1;
156     RuntimeTask task = [](const int32_t count, const Want& want, bool isInner)
__anon4d874f5c0102(const int32_t count, const Want& want, bool isInner) 157     { GTEST_LOG_(INFO) << "StartAbilityForResult_0100 task called"; };
158     auto ret = context->StartAbilityForResult(want, startOptions, requestCode, std::move(task));
159     EXPECT_NE(ret, ERR_OK);
160 
161     TAG_LOGI(AAFwkTag::TEST, "StartAbilityForResult_0100 end");
162 }
163 
164 /**
165  * @tc.number: StartAbilityForResult_0200
166  * @tc.name: StartAbilityForResult
167  * @tc.desc: Start a ability for result.
168  */
169 HWTEST_F(UIExtensionContextTest, StartAbilityForResult_0200, TestSize.Level1)
170 {
171     TAG_LOGI(AAFwkTag::TEST, "StartAbilityForResult_0200 start");
172 
173     auto context = std::make_shared<UIExtensionContext>();
174     AAFwk::Want want;
175     int32_t requestCode = 1;
176     RuntimeTask task = [](const int32_t count, const Want& want, bool isInner)
__anon4d874f5c0202(const int32_t count, const Want& want, bool isInner) 177     { GTEST_LOG_(INFO) << "StartAbilityForResult_0200 task called"; };
178     auto ret = context->StartAbilityForResult(want, requestCode, std::move(task));
179     EXPECT_NE(ret, ERR_OK);
180 
181     TAG_LOGI(AAFwkTag::TEST, "StartAbilityForResult_0200 end");
182 }
183 
184 /**
185  * @tc.number: OnAbilityResult_0100
186  * @tc.name: OnAbilityResult
187  * @tc.desc: On Ability Result.
188  */
189 HWTEST_F(UIExtensionContextTest, OnAbilityResult_0100, TestSize.Level1)
190 {
191     TAG_LOGI(AAFwkTag::TEST, "OnAbilityResult_0100 start");
192 
193     auto context = std::make_shared<UIExtensionContext>();
194     int32_t code = 2;
195     int32_t resultCode = 2;
196     AAFwk::Want resultData;
197     context->OnAbilityResult(code, resultCode, resultData);
198     auto count = context->resultCallbacks_.size();
199     EXPECT_EQ(count, 0);
200 
201     TAG_LOGI(AAFwkTag::TEST, "OnAbilityResult_0100 end");
202 }
203 
204 /**
205  * @tc.number: GenerateCurRequestCode_0100
206  * @tc.name: GenerateCurRequestCode
207  * @tc.desc: GenerateCurRequestCode.
208  */
209 HWTEST_F(UIExtensionContextTest, GenerateCurRequestCode_0100, TestSize.Level1)
210 {
211     TAG_LOGI(AAFwkTag::TEST, "GenerateCurRequestCode_0100 start");
212 
213     auto context = std::make_shared<UIExtensionContext>();
214     auto result = context->GenerateCurRequestCode();
215     EXPECT_FALSE(result = 0);
216 
217     TAG_LOGI(AAFwkTag::TEST, "GenerateCurRequestCode_0100 end");
218 }
219 
220 
221 /**
222  * @tc.number: GetWidow_0100
223  * @tc.name: GetWidow
224  * @tc.desc: GetWidow.
225  */
226 HWTEST_F(UIExtensionContextTest, GetWidow_0100, TestSize.Level1)
227 {
228     TAG_LOGI(AAFwkTag::TEST, "GetWidow_0100 start");
229 
230     auto context = std::make_shared<UIExtensionContext>();
231     sptr<MockWindow> window(new (std::nothrow) MockWindow());
232     context->SetWindow(window);
233     EXPECT_TRUE(context->GetWindow() != nullptr);
234 
235     TAG_LOGI(AAFwkTag::TEST, "GetWidow_0100 end");
236 }
237 
238 /**
239  * @tc.number: GetUIContent_0100
240  * @tc.name: GetUIContent
241  * @tc.desc: GetUIContent.
242  */
243 HWTEST_F(UIExtensionContextTest, GetUIContent_0100, TestSize.Level1)
244 {
245     TAG_LOGI(AAFwkTag::TEST, "GetUIContent_0100 start");
246 
247     auto context = std::make_shared<UIExtensionContext>();
248     sptr<MockWindow> window(new (std::nothrow) MockWindow());
249     context->SetWindow(window);
250     Ace::UIContent* content = context->GetUIContent();
251     EXPECT_TRUE(content == nullptr);
252 
253     TAG_LOGI(AAFwkTag::TEST, "GetUIContent_0100 end");
254 }
255 
256 /**
257  * @tc.number: StartAbilityForResultAsCaller_0100
258  * @tc.name: StartAbilityForResultAsCaller
259  * @tc.desc: StartAbilityForResultAsCaller.
260  */
261 HWTEST_F(UIExtensionContextTest, StartAbilityForResultAsCaller_0100, TestSize.Level1)
262 {
263     TAG_LOGI(AAFwkTag::TEST, "StartAbilityForResultAsCaller_0100 start");
264 
265     auto context = std::make_shared<UIExtensionContext>();
266     sptr<MockWindow> window(new (std::nothrow) MockWindow());
267     context->SetWindow(window);
268     AAFwk::Want want;
269     int requestCode = 0;
270     RuntimeTask task = [](const int32_t count, const Want& want, bool isInner)
__anon4d874f5c0302(const int32_t count, const Want& want, bool isInner) 271     { GTEST_LOG_(INFO) << "StartAbilityForResult_0100 task called"; };
272     context->StartAbilityForResultAsCaller(want, requestCode, std::move(task));
273     EXPECT_TRUE(context != nullptr);
274 
275     TAG_LOGI(AAFwkTag::TEST, "StartAbilityForResultAsCaller_0100 end");
276 }
277 
278 /**
279  * @tc.number: StartAbilityForResultAsCaller_0200
280  * @tc.name: StartAbilityForResultAsCaller
281  * @tc.desc: StartAbilityForResultAsCaller.
282  */
283 HWTEST_F(UIExtensionContextTest, StartAbilityForResultAsCaller_0200, TestSize.Level1)
284 {
285     TAG_LOGI(AAFwkTag::TEST, "StartAbilityForResultAsCaller_0200 start");
286 
287     auto context = std::make_shared<UIExtensionContext>();
288     sptr<MockWindow> window(new (std::nothrow) MockWindow());
289     context->SetWindow(window);
290     AAFwk::Want want;
291     AAFwk::StartOptions startOptions;
292     int requestCode = 0;
293     RuntimeTask task = [](const int32_t count, const Want& want, bool isInner)
__anon4d874f5c0402(const int32_t count, const Want& want, bool isInner) 294     { GTEST_LOG_(INFO) << "StartAbilityForResult_0100 task called"; };
295     context->StartAbilityForResultAsCaller(want, startOptions, requestCode, std::move(task));
296     EXPECT_TRUE(context != nullptr);
297 
298     TAG_LOGI(AAFwkTag::TEST, "StartAbilityForResultAsCaller_0200 end");
299 }
300 
301 /**
302  * @tc.number: ReportDrawnCompleted_0100
303  * @tc.name: ReportDrawnCompleted
304  * @tc.desc: ReportDrawnCompleted.
305  */
306 HWTEST_F(UIExtensionContextTest, ReportDrawnCompleted_0100, TestSize.Level1)
307 {
308     TAG_LOGI(AAFwkTag::TEST, "ReportDrawnCompleted_0100 start");
309 
310     auto context = std::make_shared<UIExtensionContext>();
311     sptr<MockWindow> window(new (std::nothrow) MockWindow());
312     context->SetWindow(window);
313     context->ReportDrawnCompleted();
314     EXPECT_TRUE(context != nullptr);
315 
316     TAG_LOGI(AAFwkTag::TEST, "ReportDrawnCompleted_0100 end");
317 }
318 
319 /**
320  * @tc.number: InsertResultCallbackTask_0100
321  * @tc.name: InsertResultCallbackTask
322  * @tc.desc: InsertResultCallbackTask.
323  */
324 HWTEST_F(UIExtensionContextTest, InsertResultCallbackTask_0100, TestSize.Level1)
325 {
326     TAG_LOGI(AAFwkTag::TEST, "InsertResultCallbackTask_0100 start");
327 
328     auto context = std::make_shared<UIExtensionContext>();
329     sptr<MockWindow> window(new (std::nothrow) MockWindow());
330     context->SetWindow(window);
331     int requestCode = 0;
332     RuntimeTask task = [](const int32_t count, const Want& want, bool isInner)
__anon4d874f5c0502(const int32_t count, const Want& want, bool isInner) 333     { GTEST_LOG_(INFO) << "StartAbilityForResult_0100 task called"; };
334     context->InsertResultCallbackTask(requestCode, std::move(task));
335     EXPECT_TRUE(context != nullptr);
336 
337     TAG_LOGI(AAFwkTag::TEST, "InsertResultCallbackTask_0100 end");
338 }
339 
340 /**
341  * @tc.number: OpenAtomicService_0100
342  * @tc.name: OpenAtomicService
343  * @tc.desc: OpenAtomicService.
344  */
345 HWTEST_F(UIExtensionContextTest, OpenAtomicService_0100, TestSize.Level1)
346 {
347     TAG_LOGI(AAFwkTag::TEST, "OpenAtomicService_0100 start");
348 
349     auto context = std::make_shared<UIExtensionContext>();
350     sptr<MockWindow> window(new (std::nothrow) MockWindow());
351     context->SetWindow(window);
352     AAFwk::Want want;
353     AAFwk::StartOptions startOptions;
354     int requestCode = 0;
355     RuntimeTask task = [](const int32_t count, const Want& want, bool isInner)
__anon4d874f5c0602(const int32_t count, const Want& want, bool isInner) 356     { GTEST_LOG_(INFO) << "StartAbilityForResult_0100 task called"; };
357     context->OpenAtomicService(want, startOptions, requestCode, std::move(task));
358     EXPECT_TRUE(context != nullptr);
359 
360     TAG_LOGI(AAFwkTag::TEST, "OpenAtomicService_0100 end");
361 }
362 } // namespace AbilityRuntime
363 } // namespace OHOS
364