1 /*
2  * Copyright (c) 2021-2023 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 "abs_shared_result_set.h"
17 #include "data_ability_predicates.h"
18 #include "values_bucket.h"
19 #include "demo_ability_test.h"
20 #include <future>
21 #include <gtest/gtest.h>
22 #include <iostream>
23 #include "mock_lifecycle_observer.h"
24 #include "scene_board_judgement.h"
25 
26 using namespace std;
27 const int openfileValue = 123;
28 const int deleteValue = 234;
29 const int insertValue = 345;
30 const int updateValue = 456;
31 const int openRawFileValue = 567;
32 const int batchInsertValue = 789;
33 const int resultCodeCompare = 1992;
34 
35 namespace OHOS {
36 namespace AppExecFwk {
OnStart(const Want & want,sptr<AAFwk::SessionInfo> sessionInfo)37 void DemoAbility::OnStart(const Want& want, sptr<AAFwk::SessionInfo> sessionInfo)
38 {
39     GTEST_LOG_(INFO) << "DemoAbility::OnStart called";
40     std::shared_ptr<MockLifecycleObserver> observer = std::make_shared<MockLifecycleObserver>();
41     Ability::GetLifecycle()->AddObserver(observer);
42     Ability::OnStart(want);
43     EXPECT_STREQ(std::string("abilityName").c_str(), want.GetElement().GetAbilityName().c_str());
44 }
OnStop()45 void DemoAbility::OnStop()
46 {
47     GTEST_LOG_(INFO) << "DemoAbility::OnStop called";
48     Ability::OnStop();
49 }
OnActive()50 void DemoAbility::OnActive()
51 {
52     GTEST_LOG_(INFO) << "DemoAbility::OnActive called";
53     Ability::OnActive();
54     std::shared_ptr<AbilityInfo> abilityInfo = GetAbilityInfo();
55     EXPECT_TRUE(abilityInfo != nullptr);
56     if (AppExecFwk::AbilityType::PAGE == abilityInfo->type) {
57         if (!Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
58             EXPECT_NE(nullptr, Ability::GetWindow());
59         }
60     }
61 }
OnInactive()62 void DemoAbility::OnInactive()
63 {
64     GTEST_LOG_(INFO) << "DemoAbility::OnInactive called";
65     Ability::OnInactive();
66 }
OnBackground()67 void DemoAbility::OnBackground()
68 {
69     GTEST_LOG_(INFO) << "DemoAbility::OnBackground called";
70     Ability::OnBackground();
71 }
72 
OnForeground(const Want & want)73 void DemoAbility::OnForeground(const Want& want)
74 {
75     GTEST_LOG_(INFO) << "DemoAbility::OnForeground called";
76     Ability::OnForeground(want);
77 }
78 
OnNewWant(const Want & want)79 void DemoAbility::OnNewWant(const Want& want)
80 {
81     GTEST_LOG_(INFO) << "DemoAbility::OnNewWant called";
82 }
83 
OnRestoreAbilityState(const PacMap & inState)84 void DemoAbility::OnRestoreAbilityState(const PacMap& inState)
85 {
86     GTEST_LOG_(INFO) << "DemoAbility::OnRestoreAbilityState called";
87 }
88 
OnSaveAbilityState(PacMap & outState)89 void DemoAbility::OnSaveAbilityState(PacMap& outState)
90 {
91     std::shared_ptr<ApplicationInfo> appInfo = GetApplicationInfo();
92     std::shared_ptr<AbilityInfo> abilityInfo = GetAbilityInfo();
93 
94     EXPECT_STREQ(abilityInfo->resourcePath.c_str(), std::string("resourcePath").c_str());
95     EXPECT_STREQ(appInfo->dataDir.c_str(), std::string("dataDir").c_str());
96     EXPECT_STREQ(GetDatabaseDir().c_str(), std::string("dataBaseDir").c_str());
97     EXPECT_STREQ(GetDataDir().c_str(), std::string("dataDir").c_str());
98     EXPECT_STREQ(GetBundleCodePath().c_str(), std::string("codePath").c_str());
99     EXPECT_STREQ(GetBundleName().c_str(), std::string("bundleName").c_str());
100     EXPECT_STREQ(GetBundleResourcePath().c_str(), std::string("resourcePath").c_str());
101     EXPECT_STREQ(GetAppType().c_str(), std::string("system").c_str());
102 
103     EXPECT_NE(GetBundleManager(), nullptr);
104     EXPECT_NE(GetApplicationContext(), nullptr);
105     EXPECT_NE(GetContext(), nullptr);
106     EXPECT_NE(GetAbilityManager(), nullptr);
107     EXPECT_NE(GetProcessInfo(), nullptr);
108 
109     GTEST_LOG_(INFO) << "DemoAbility::OnSaveAbilityState called";
110 }
111 
OnAbilityResult(int requestCode,int resultCode,const Want & resultData)112 void DemoAbility::OnAbilityResult(int requestCode, int resultCode, const Want& resultData)
113 {
114     GTEST_LOG_(INFO) << "DemoAbility::OnAbilityResult called";
115     EXPECT_EQ(resultCodeCompare, resultCode);
116 }
117 
OnConnect(const Want & want)118 sptr<IRemoteObject> DemoAbility::OnConnect(const Want& want)
119 {
120     GTEST_LOG_(INFO) << "DemoAbility::OnConnect called";
121     Ability::OnConnect(want);
122     EXPECT_STREQ(std::string("abilityName").c_str(), want.GetElement().GetAbilityName().c_str());
123     return nullptr;
124 }
125 
OnDisconnect(const Want & want)126 void DemoAbility::OnDisconnect(const Want& want)
127 {
128     GTEST_LOG_(INFO) << "DemoAbility::OnDisconnect called";
129     Ability::OnDisconnect(want);
130     EXPECT_STREQ(std::string("abilityName").c_str(), want.GetElement().GetAbilityName().c_str());
131 }
132 
OnCommand(const AAFwk::Want & want,bool restart,int startId)133 void DemoAbility::OnCommand(const AAFwk::Want& want, bool restart, int startId)
134 {
135     GTEST_LOG_(INFO) << "DemoAbility::OnCommand called";
136     EXPECT_STREQ(std::string("abilityName").c_str(), want.GetElement().GetAbilityName().c_str());
137     Ability::OnCommand(want, restart, startId);
138 }
139 
GetFileTypes(const Uri & uri,const std::string & mimeTypeFilter)140 std::vector<std::string> DemoAbility::GetFileTypes(const Uri& uri, const std::string& mimeTypeFilter)
141 {
142     GTEST_LOG_(INFO) << "DemoAbility::GetFileTypes called";
143     std::vector<std::string> types;
144     types.push_back("Type1");
145     types.push_back("Type2");
146     types.push_back("Type3");
147     return types;
148 }
149 
OpenFile(const Uri & uri,const std::string & mode)150 int DemoAbility::OpenFile(const Uri& uri, const std::string& mode)
151 {
152     GTEST_LOG_(INFO) << "DemoAbility::OpenFile called";
153     return openfileValue;
154 }
155 
Delete(const Uri & uri,const NativeRdb::DataAbilityPredicates & predicates)156 int DemoAbility::Delete(const Uri& uri, const NativeRdb::DataAbilityPredicates& predicates)
157 {
158     GTEST_LOG_(INFO) << "DemoAbility::Delete called";
159     return deleteValue;
160 }
161 
Insert(const Uri & uri,const NativeRdb::ValuesBucket & value)162 int DemoAbility::Insert(const Uri& uri, const NativeRdb::ValuesBucket& value)
163 {
164     GTEST_LOG_(INFO) << "DemoAbility::Insert called";
165     return insertValue;
166 }
167 
Update(const Uri & uri,const NativeRdb::ValuesBucket & value,const NativeRdb::DataAbilityPredicates & predicates)168 int DemoAbility::Update(
169     const Uri& uri, const NativeRdb::ValuesBucket& value, const NativeRdb::DataAbilityPredicates& predicates)
170 {
171     GTEST_LOG_(INFO) << "DemoAbility::Update called";
172     return updateValue;
173 }
174 
OpenRawFile(const Uri & uri,const std::string & mode)175 int DemoAbility::OpenRawFile(const Uri& uri, const std::string& mode)
176 {
177     GTEST_LOG_(INFO) << "DemoAbility::OpenRawFile called";
178     return openRawFileValue;
179 }
180 
Reload(const Uri & uri,const PacMap & extras)181 bool DemoAbility::Reload(const Uri& uri, const PacMap& extras)
182 {
183     GTEST_LOG_(INFO) << "DemoAbility::Reload called";
184     return true;
185 }
186 
BatchInsert(const Uri & uri,const std::vector<NativeRdb::ValuesBucket> & values)187 int DemoAbility::BatchInsert(const Uri& uri, const std::vector<NativeRdb::ValuesBucket>& values)
188 {
189     GTEST_LOG_(INFO) << "DemoAbility::BatchInsert called";
190     return batchInsertValue;
191 }
192 
GetType(const Uri & uri)193 std::string DemoAbility::GetType(const Uri& uri)
194 {
195     GTEST_LOG_(INFO) << "DemoAbility::GetType called";
196     std::string type("Type1");
197     return type;
198 }
199 
Query(const Uri & uri,const std::vector<std::string> & columns,const NativeRdb::DataAbilityPredicates & predicates)200 std::shared_ptr<NativeRdb::AbsSharedResultSet> DemoAbility::Query(
201     const Uri& uri, const std::vector<std::string>& columns, const NativeRdb::DataAbilityPredicates& predicates)
202 {
203     GTEST_LOG_(INFO) << "DemoAbility::Query called";
204     std::shared_ptr<NativeRdb::AbsSharedResultSet> resultset = std::make_shared<NativeRdb::AbsSharedResultSet>(
205         "resultset");
206     return resultset;
207 }
208 
209 REGISTER_AA(DemoAbility)
210 }  // namespace AppExecFwk
211 }  // namespace OHOS
212