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