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