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 "oobe_mgr_test.h"
17 
18 #include "errors.h"
19 #include "oobe_datashare_utils.h"
20 #include "ioobe_task.h"
21 #include "oobe_manager.h"
22 #include <thread>
23 
24 using namespace std;
25 using namespace testing::ext;
26 
27 namespace OHOS {
28 namespace ResourceSchedule {
29 namespace {
30 const std::string KEYWORD = "basic_statement_agreed";
31 } // namespace
32 
33 class OOBETaskImpl : public IOOBETask {
34 public:
OOBETaskImpl()35     OOBETaskImpl() {}
ExcutingTask()36     void ExcutingTask() override {}
37 };
38 
SetUpTestCase()39 void OOBEMgrTest::SetUpTestCase() {}
40 
TearDownTestCase()41 void OOBEMgrTest::TearDownTestCase() {}
42 
SetUp()43 void OOBEMgrTest::SetUp() {}
44 
TearDown()45 void OOBEMgrTest::TearDown() {}
46 
47 /**
48  * @tc.name: oobe manager TestOOBEManager_001
49  * @tc.desc: test the interface RegisterObserver of OOBEManager
50  * @tc.type: FUNC
51  * @tc.require: issueI97493
52  * @tc.author:zhumingjie
53  */
54 HWTEST_F(OOBEMgrTest, TestOOBEManager_001, Function | MediumTest | Level0)
55 {
56     OOBEManager& oobeMgr = OOBEManager::GetInstance();
__anonf2c33c0d0202() 57     OOBEManager::ResDataAbilityObserver::UpdateFunc updateFunc = [&]() {};
58     int32_t ret = oobeMgr.RegisterObserver(KEYWORD, updateFunc);
59     EXPECT_EQ(ret, ERR_OK);
60 
61     int32_t ret1 = oobeMgr.UnregisterObserver();
62     EXPECT_EQ(ret1, ERR_OK);
63 }
64 
65 /**
66  * @tc.name: oobe manager TestOOBEManager_002
67  * @tc.desc: test the interface RegisterObserver of OOBEManager
68  * @tc.type: FUNC
69  * @tc.require: issueI97493
70  * @tc.author:zhumingjie
71  */
72 HWTEST_F(OOBEMgrTest, TestOOBEManager_002, Function | MediumTest | Level0)
73 {
74     OOBEManager& oobeMgr = OOBEManager::GetInstance();
__anonf2c33c0d0302() 75     OOBEManager::ResDataAbilityObserver::UpdateFunc updateFunc = [&]() {};
76     oobeMgr.observer_ = new OOBEManager::ResDataAbilityObserver();
77     int32_t ret = oobeMgr.RegisterObserver(KEYWORD, updateFunc);
78     EXPECT_EQ(ret, ERR_OK);
79 
80     int32_t ret1 = oobeMgr.UnregisterObserver();
81     EXPECT_EQ(ret1, ERR_OK);
82 }
83 
84 /**
85  * @tc.name: oobe manager TestOOBEManager_003
86  * @tc.desc: test the interface OnChange and SetUpdateFunc of ResDataShareAbilityObserver
87  * @tc.type: FUNC
88  * @tc.require: issueI97493
89  * @tc.author:zhumingjie
90  */
91 HWTEST_F(OOBEMgrTest, TestOOBEManager_003, Function | MediumTest | Level0)
92 {
93     sptr<OOBEManager::ResDataAbilityObserver> oobeObserver = new OOBEManager::ResDataAbilityObserver();
94     oobeObserver->OnChange();
95     SUCCEED();
96 
__anonf2c33c0d0402() 97     OOBEManager::ResDataAbilityObserver::UpdateFunc updateFunc = [&]() {};
98     oobeObserver->SetUpdateFunc(updateFunc);
99     EXPECT_NE(oobeObserver->update_, nullptr);
100 
101     oobeObserver->update_();
102     SUCCEED();
103 }
104 
105 /**
106  * @tc.name: oobe manager TestOOBEManager_004
107  * @tc.desc: test the interface Initialize of OOBEManager
108  * @tc.type: FUNC
109  * @tc.require: issueI97493
110  * @tc.author:zhumingjie
111  */
112 HWTEST_F(OOBEMgrTest, TestOOBEManager_004, Function | MediumTest | Level0)
113 {
114     int resultValue = 0;
115     OOBEManager& oobeMgr = OOBEManager::GetInstance();
116     ResourceSchedule::DataShareUtils::GetInstance().GetValue(KEYWORD, resultValue);
117     oobeMgr.Initialize();
118     if (resultValue != 0) {
119         EXPECT_EQ(oobeMgr.g_oobeValue, true);
120     }else {
121         EXPECT_EQ(oobeMgr.g_oobeValue, false);
122     }
123 }
124 
125 /**
126  * @tc.name: oobe manager TestOOBEManager_005
127  * @tc.desc: test the interface SubmitTask of OOBEManager
128  * @tc.type: FUNC
129  * @tc.require: issueI97493
130  * @tc.author:zhumingjie
131  */
132 HWTEST_F(OOBEMgrTest, TestOOBEManager_005, Function | MediumTest | Level0)
133 {
134     std::shared_ptr<IOOBETask> oobeTask = std::make_shared<OOBETaskImpl>();
135     OOBEManager& oobeMgr = OOBEManager::GetInstance();
136     oobeMgr.g_oobeValue = true;
137     oobeMgr.oobeTasks_.clear();
138     bool flag = oobeMgr.SubmitTask(oobeTask);
139     EXPECT_EQ(flag, true);
140 
141     oobeMgr.g_oobeValue = false;
142     bool flag1 = oobeMgr.SubmitTask(oobeTask);
143     EXPECT_EQ(oobeMgr.oobeTasks_.size(), 1);
144 
145     bool flag2 = oobeMgr.SubmitTask(nullptr);
146     EXPECT_EQ(flag2, false);
147 }
148 
149 /**
150  * @tc.name: oobe manager TestOOBEManager_006
151  * @tc.desc: test the interface SubmitTask of OOBEManager
152  * @tc.type: FUNC
153  * @tc.require: issueI97493
154  * @tc.author:zhumingjie
155  */
156 HWTEST_F(OOBEMgrTest, TestOOBEManager_006, Function | MediumTest | Level0)
157 {
158     int resultValue = 0;
159     OOBEManager& oobeMgr = OOBEManager::GetInstance();
160     oobeMgr.StartListen();
161     ResourceSchedule::DataShareUtils::GetInstance().GetValue(KEYWORD, resultValue);
162     if (resultValue != 0) {
163         EXPECT_EQ(oobeMgr.g_oobeValue, true);
164     }else {
165         EXPECT_EQ(oobeMgr.g_oobeValue, false);
166     }
167 }
168 
169 /**
170  * @tc.name: oobe manager TestOOBEManager_007
171  * @tc.desc: test the interface SubmitTask of OOBEManager
172  * @tc.type: FUNC
173  * @tc.require: issueI97493
174  * @tc.author:zhumingjie
175  */
176 HWTEST_F(OOBEMgrTest, TestOOBEManager_007, Function | MediumTest | Level0)
177 {
178     int resultValue = 0;
179     OOBEManager& oobeMgr = OOBEManager::GetInstance();
180     ResourceSchedule::DataShareUtils::GetInstance().GetValue(KEYWORD, resultValue);
181     bool flag = oobeMgr.GetOOBValue();
182     if (resultValue != 0) {
183         EXPECT_EQ(oobeMgr.g_oobeValue, true);
184     }else {
185         EXPECT_EQ(oobeMgr.g_oobeValue, false);
186     }
187 }
188 
189 /**
190  * @tc.name: oobe manager TestOOBEManager_008
191  * @tc.desc: test the callBack of OOBEManager
192  * @tc.type: FUNC
193  * @tc.require: issueIA5MRN
194  * @tc.author:fengyang
195  */
196 HWTEST_F(OOBEMgrTest, TestOOBEManager_008, Function | MediumTest | Level0)
197 {
198     OOBEManager& oobeMgr = OOBEManager::GetInstance();
__anonf2c33c0d0502() 199     oobeMgr.dataShareFunctions_.emplace_back([]() {
200         SUCCEED();
201     });
202     oobeMgr.OnReceiveDataShareReadyCallBack();
203     int64_t sleepTime = 4;
204     std::this_thread::sleep_for(std::chrono::seconds(sleepTime));
205     EXPECT_EQ(0, oobeMgr.dataShareFunctions_.size());
206 }
207 #undef private
208 #undef protected
209 } // namespace ResourceSchedule
210 } // namespace OHOS
211