1 /*
2  * Copyright (c) 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 <gtest/gtest.h>
17 
18 #include "ability.h"
19 #include "cj_ability_object.h"
20 #include "cj_runtime.h"
21 #include "configuration.h"
22 #include "window_stage_impl.h"
23 
24 using namespace testing;
25 using namespace testing::ext;
26 using namespace OHOS;
27 using namespace OHOS::AbilityRuntime;
28 
29 class CjAbilityObjectTest : public testing::Test {
30 };
31 
ProxyCall()32 void ProxyCall()
33 {
34     CJAbilityObject::LoadModule("0");
35     CJAbilityObject::LoadModule("1");
36     Want want;
37     auto proxy = CJAbilityObject(0);
38     proxy.Init(nullptr);
39     proxy.OnStart(want, AAFwk::LaunchParam());
40     auto win = std::make_shared<Rosen::WindowScene>();
41     auto winStage = new Rosen::CJWindowStageImpl(win);
42     proxy.OnSceneCreated(winStage);
43     proxy.OnSceneRestored(winStage);
44     proxy.OnForeground(want);
45     proxy.OnBackground();
46     auto config = std::make_shared<AppExecFwk::Configuration>();
47     proxy.OnConfigurationUpdated(config);
48     proxy.OnNewWant(want, AAFwk::LaunchParam());
49     std::vector<std::string> params = {"123"};
50     std::vector<std::string> infos = {"123"};
51     AAFwk::WantParams wantParams = AAFwk::WantParams();
52     proxy.OnContinue(wantParams);
53     proxy.Dump(params, infos);
54     proxy.OnSceneDestroyed();
55     proxy.OnStop();
56 }
57 
58 HWTEST_F(CjAbilityObjectTest, CJAbilityObject001, TestSize.Level1)
59 {
60     ProxyCall();
61 }
62 
63 HWTEST_F(CjAbilityObjectTest, CJAbilityObject002, TestSize.Level1)
64 {
__anon27f430c00102(CJAbilityFuncs* funcs) 65     auto registerFunc = [](CJAbilityFuncs* funcs) {
66         funcs->cjAbilityCreate = [](const char* name) -> int64_t { return name[0] == '0' ? 0 : 1; };
67         funcs->cjAbilityRelease = [](int64_t id) {};
68         funcs->cjAbilityOnStart = [](int64_t id, WantHandle want, CJLaunchParam launchParam) {};
69         funcs->cjAbilityOnStop = [](int64_t id) {};
70         funcs->cjAbilityOnSceneCreated = [](int64_t id, WindowStagePtr cjWindowStage) {};
71         funcs->cjAbilityOnSceneRestored = [](int64_t id, WindowStagePtr cjWindowStage) {};
72         funcs->cjAbilityOnSceneDestroyed = [](int64_t id) {};
73         funcs->cjAbilityOnForeground = [](int64_t id, WantHandle want) {};
74         funcs->cjAbilityOnBackground = [](int64_t id) {};
75         funcs->cjAbilityOnConfigurationUpdated = [](int64_t id, CJConfiguration configuration) {};
76         funcs->cjAbilityOnNewWant = [](int64_t id, WantHandle want, CJLaunchParam launchParam) {};
77         funcs->cjAbilityDump = [](int64_t id, VectorStringHandle params) { return VectorStringHandle(); };
78         funcs->cjAbilityOnContinue = [](int64_t id, const char* params) { return 0; };
79         funcs->cjAbilityInit = [](int64_t id, void* ability) {};
80     };
81     RegisterCJAbilityFuncs(registerFunc);
82     ProxyCall();
83     RegisterCJAbilityFuncs(nullptr);
84 }
85