1 /*
2 * Copyright (C) 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 #define private public
16 #define protected public
17
18 #include "cellular_call_config.h"
19 #include "cellular_call_connection_ims.h"
20 #include "cellular_call_handler.h"
21 #include "cellular_call_proxy.h"
22 #include "cellular_call_register.h"
23 #include "cellular_call_service.h"
24 #include "cellular_call_supplement.h"
25 #include "config_request.h"
26 #include "control_base.h"
27 #include "cs_control.h"
28 #include "gtest/gtest.h"
29 #include "tel_ril_call_parcel.h"
30 #include "ims_call_callback_proxy.h"
31 #include "ims_call_callback_stub.h"
32 #include "ims_call_client.h"
33 #include "ims_control.h"
34 #include "ims_error.h"
35 #include "token.h"
36 #include "securec.h"
37 #include "cellular_call_hisysevent.h"
38 #include "standardize_utils.h"
39 #include "cellular_call_rdb_helper.h"
40 #include "cellular_call_dump_helper.h"
41 #include "emergency_utils.h"
42 #include "satellite_call_client.h"
43 #include "ims_video_call_control.h"
44
45 namespace OHOS {
46 namespace Telephony {
47 using namespace testing::ext;
48
49 #ifdef CALL_MANAGER_AUTO_START_OPTIMIZE
50 static const int32_t INVALID_VALUE = -1;
51 #endif
52
53 namespace {
54 const int32_t INVALID_SLOTID = 2;
55 const int32_t SIM1_SLOTID = 0;
56 const int32_t SIM2_SLOTID = 1;
57 const std::string PHONE_NUMBER = "00000000";
58 const int32_t DEFAULT_INDEX = 1;
59 } // namespace
60
61 class DemoHandler : public AppExecFwk::EventHandler {
62 public:
DemoHandler(std::shared_ptr<AppExecFwk::EventRunner> & runner)63 explicit DemoHandler(std::shared_ptr<AppExecFwk::EventRunner> &runner) : AppExecFwk::EventHandler(runner) {}
~DemoHandler()64 virtual ~DemoHandler() {}
ProcessEvent(const AppExecFwk::InnerEvent::Pointer & event)65 void ProcessEvent(const AppExecFwk::InnerEvent::Pointer &event) {}
66 };
67
68 class ZeroBranchTest : public testing::Test {
69 public:
70 static void SetUpTestCase();
71 static void TearDownTestCase();
72 void SetUp();
73 void TearDown();
74 int32_t InitCellularCallInfo(int32_t accountId, std::string phonenumber, CellularCallInfo &callInfo);
75 void InitImsCallInfoList(ImsCurrentCallList &callInfoList, int32_t num);
76 void InitCsCallInfoList(CallInfoList &callInfoList, int32_t num);
77 void MakeCallInfoParcelData(bool isError, MessageParcel &data);
78 };
79
SetUpTestCase()80 void ZeroBranchTest::SetUpTestCase()
81 {
82 std::cout << "---------- CellularCallService start ------------" << std::endl;
83 DelayedSingleton<CellularCallService>::GetInstance()->Init();
84 DelayedSingleton<ImsCallClient>::GetInstance()->Init();
85 }
86
TearDownTestCase()87 void ZeroBranchTest::TearDownTestCase() {}
88
SetUp()89 void ZeroBranchTest::SetUp() {}
90
TearDown()91 void ZeroBranchTest::TearDown() {}
92
InitCellularCallInfo(int32_t accountId,std::string phonenumber,CellularCallInfo & callInfo)93 int32_t ZeroBranchTest::InitCellularCallInfo(int32_t accountId, std::string phonenumber, CellularCallInfo &callInfo)
94 {
95 callInfo.accountId = accountId;
96 callInfo.slotId = accountId;
97 callInfo.index = accountId;
98 callInfo.callType = CallType::TYPE_IMS;
99 callInfo.videoState = 0; // 0 means audio
100 if (memset_s(callInfo.phoneNum, kMaxNumberLen, 0, kMaxNumberLen) != EOK) {
101 return TELEPHONY_ERR_MEMSET_FAIL;
102 }
103 if (phonenumber.length() > static_cast<size_t>(kMaxNumberLen)) {
104 return CALL_ERR_NUMBER_OUT_OF_RANGE;
105 }
106 if (memcpy_s(callInfo.phoneNum, kMaxNumberLen, phonenumber.c_str(), phonenumber.length()) != EOK) {
107 return TELEPHONY_ERR_MEMCPY_FAIL;
108 }
109 return TELEPHONY_SUCCESS;
110 }
111
InitImsCallInfoList(ImsCurrentCallList & callInfoList,int32_t num)112 void ZeroBranchTest::InitImsCallInfoList(ImsCurrentCallList &callInfoList, int32_t num)
113 {
114 callInfoList.callSize = num;
115 ImsCurrentCall call;
116 int32_t callStateSum = 6;
117 for (int32_t i = 0; i < num; ++i) {
118 call.index = i;
119 call.state = i % callStateSum;
120 callInfoList.calls.push_back(call);
121 }
122 }
123
MakeCallInfoParcelData(bool isError,MessageParcel & data)124 void ZeroBranchTest::MakeCallInfoParcelData(bool isError, MessageParcel &data)
125 {
126 if (isError) {
127 int32_t errorSize = 0;
128 data.WriteInt32(errorSize);
129 } else {
130 CellularCallInfo callInfo;
131 callInfo.slotId = -1;
132 int32_t size = 1;
133 data.WriteInt32(size);
134 data.WriteRawData(static_cast<const void *>(&callInfo), sizeof(CellularCallInfo));
135 }
136 }
137
InitCsCallInfoList(CallInfoList & callInfoList,int32_t num)138 void ZeroBranchTest::InitCsCallInfoList(CallInfoList &callInfoList, int32_t num)
139 {
140 callInfoList.callSize = num;
141 CallInfo call;
142 int32_t callStateSum = 9;
143 for (int32_t i = 0; i < num; ++i) {
144 call.index = i;
145 call.state = i % callStateSum;
146 callInfoList.calls.push_back(call);
147 }
148 }
149
150 /**
151 * @tc.number Telephony_CellularCallConfig_001
152 * @tc.name Test error branch
153 * @tc.desc Function test
154 */
155 HWTEST_F(ZeroBranchTest, Telephony_CellularCallConfig_001, Function | MediumTest | Level3)
156 {
157 AccessToken token;
158 CellularCallConfig config;
159 config.SetDomainPreferenceMode(SIM1_SLOTID, 1);
160 config.SetDomainPreferenceMode(SIM1_SLOTID, -1);
161 config.GetDomainPreferenceMode(SIM1_SLOTID);
162 bool enabled = false;
163 config.SetImsSwitchStatus(INVALID_SLOTID, enabled);
164 config.SetImsSwitchStatus(SIM1_SLOTID, enabled);
165 config.volteSupported_[SIM1_SLOTID] = true;
166 config.volteSupported_[INVALID_SLOTID] = true;
167 config.volteProvisioningSupported_[SIM1_SLOTID] = true;
168 config.volteProvisioningSupported_[INVALID_SLOTID] = true;
169 config.SetImsSwitchStatus(INVALID_SLOTID, enabled);
170 config.SetImsSwitchStatus(SIM1_SLOTID, true);
171 config.volteSupported_[SIM1_SLOTID] = enabled;
172 config.volteSupported_[INVALID_SLOTID] = enabled;
173 config.volteProvisioningSupported_[SIM1_SLOTID] = enabled;
174 config.volteProvisioningSupported_[INVALID_SLOTID] = enabled;
175 config.GetImsSwitchStatus(SIM1_SLOTID, enabled);
176 config.saveImsSwitchStatusToLocalForPowerOn(SIM1_SLOTID);
177 config.saveImsSwitchStatusToLocal(SIM1_SLOTID, true);
178 config.GetImsSwitchStatus(SIM1_SLOTID, enabled);
179 int32_t state = 0;
180 config.SetVoNRSwitchStatus(SIM1_SLOTID, state);
181 config.SetVoNRSwitchStatus(INVALID_SLOTID, state);
182 config.GetVoNRSwitchStatus(SIM1_SLOTID, state);
183 config.GetVoNRSwitchStatus(SIM2_SLOTID, state);
184 config.GetDomainPreferenceModeResponse(SIM1_SLOTID, 1);
185 config.GetImsSwitchStatusResponse(SIM1_SLOTID, 1);
186 config.GetPreferenceMode(SIM1_SLOTID);
187 std::string value = "";
188 config.SetImsConfig(ImsConfigItem::ITEM_VIDEO_QUALITY, value);
189 config.SetImsConfig(ImsConfigItem::ITEM_VIDEO_QUALITY, 1);
190 config.GetImsConfig(ImsConfigItem::ITEM_VIDEO_QUALITY);
191 config.SetImsFeatureValue(FeatureType::TYPE_VOICE_OVER_LTE, 1);
192 int32_t res = config.GetImsFeatureValue(FeatureType::TYPE_VOICE_OVER_LTE);
193 config.HandleFactoryReset(0);
194 config.HandleFactoryReset(1);
195 #ifdef CALL_MANAGER_AUTO_START_OPTIMIZE
196 ASSERT_EQ(res, CALL_ERR_RESOURCE_UNAVAILABLE);
197 #else
198 ASSERT_EQ(res, TELEPHONY_SUCCESS);
199 #endif
200 }
201
202 /**
203 * @tc.number Telephony_CellularCallConfig_002
204 * @tc.name Test error branch
205 * @tc.desc Function test
206 */
207 HWTEST_F(ZeroBranchTest, Telephony_CellularCallConfig_002, Function | MediumTest | Level3)
208 {
209 AccessToken token;
210 CellularCallConfig config;
211 config.SetMute(SIM1_SLOTID, 0);
212 config.GetMute(SIM1_SLOTID);
213 config.GetEmergencyCallList(SIM1_SLOTID);
214 std::vector<EmergencyCall> eccVec = {};
215 config.SetEmergencyCallList(SIM1_SLOTID, eccVec);
216 config.SetTempMode(SIM1_SLOTID);
217 config.InitModeActive();
218 EmergencyInfoList eccList;
219 config.UpdateEmergencyCallFromRadio(SIM1_SLOTID, eccList);
220 config.GetEccCallList(SIM1_SLOTID);
221 config.GetMcc(SIM1_SLOTID);
222 config.SetReadyToCall(SIM1_SLOTID, true);
223 config.SetReadyToCall(INVALID_SLOTID, true);
224 config.IsReadyToCall(SIM1_SLOTID);
225 config.IsReadyToCall(INVALID_SLOTID);
226
227 config.HandleSimStateChanged(SIM1_SLOTID);
228 config.HandleSetLteImsSwitchResult(SIM1_SLOTID, ErrType::NONE);
229 config.HandleSetVoNRSwitchResult(SIM1_SLOTID, ErrType::NONE);
230 config.HandleSimRecordsLoaded(SIM1_SLOTID);
231 config.HandleOperatorConfigChanged(SIM1_SLOTID, 0);
232 config.UpdateImsConfiguration(SIM1_SLOTID, -1, false);
233 OperatorConfig poc;
234 config.ParseAndCacheOperatorConfigs(SIM1_SLOTID, poc);
235 config.UpdateImsCapabilities(SIM1_SLOTID, true, false, -1);
236 bool enabled = false;
237 config.SaveImsSwitch(SIM1_SLOTID, true);
238 config.IsUtProvisioned(SIM1_SLOTID);
239 config.utProvisioningSupported_[SIM1_SLOTID] = true;
240 config.IsUtProvisioned(SIM1_SLOTID);
241 config.utProvisioningSupported_[SIM1_SLOTID] = enabled;
242 config.ResetImsSwitch(SIM1_SLOTID);
243 config.HandleSimAccountLoaded(SIM1_SLOTID);
244 ASSERT_FALSE(config.utProvisioningSupported_[SIM1_SLOTID]);
245 }
246
247 /**
248 * @tc.number Telephony_CellularCallSupplement_001
249 * @tc.name Test error branch
250 * @tc.desc Function test
251 */
252 HWTEST_F(ZeroBranchTest, Telephony_CellularCallSupplement_001, Function | MediumTest | Level3)
253 {
254 AccessToken token;
255 CellularCallSupplement callSup;
256 MMIData mmiDataEmp = {};
257 MMIData mmiDataAct = { .actionString = "*" };
258 MMIData mmiDataDeact = { .actionString = "#" };
259 MMIData mmiDataInterrogate = { .actionString = "*#" };
260 callSup.HandleClip(SIM1_SLOTID, mmiDataEmp);
261 callSup.HandleClip(SIM1_SLOTID, mmiDataAct);
262 callSup.HandleClip(SIM1_SLOTID, mmiDataDeact);
263 callSup.HandleClip(SIM1_SLOTID, mmiDataInterrogate);
264 callSup.HandleClir(SIM1_SLOTID, mmiDataEmp);
265 callSup.HandleClir(SIM1_SLOTID, mmiDataAct);
266 callSup.HandleClir(SIM1_SLOTID, mmiDataDeact);
267 callSup.HandleClir(SIM1_SLOTID, mmiDataInterrogate);
268 callSup.HandleColr(SIM1_SLOTID, mmiDataEmp);
269 callSup.HandleColr(SIM1_SLOTID, mmiDataAct);
270 callSup.HandleColr(SIM1_SLOTID, mmiDataDeact);
271 callSup.HandleColr(SIM1_SLOTID, mmiDataInterrogate);
272 callSup.HandleColp(SIM1_SLOTID, mmiDataEmp);
273 callSup.HandleColp(SIM1_SLOTID, mmiDataAct);
274 callSup.HandleColp(SIM1_SLOTID, mmiDataDeact);
275 callSup.HandleColp(SIM1_SLOTID, mmiDataInterrogate);
276 callSup.HandleCallTransfer(SIM1_SLOTID, mmiDataEmp);
277 callSup.HandleCallTransfer(SIM1_SLOTID, mmiDataInterrogate);
278 callSup.HandleCallTransfer(SIM1_SLOTID, mmiDataAct);
279 callSup.HandleCallRestriction(SIM1_SLOTID, mmiDataEmp);
280 callSup.HandleCallRestriction(SIM1_SLOTID, mmiDataAct);
281 callSup.HandleCallRestriction(SIM1_SLOTID, mmiDataDeact);
282 callSup.HandleCallRestriction(SIM1_SLOTID, mmiDataInterrogate);
283 callSup.HandleCallWaiting(SIM1_SLOTID, mmiDataEmp);
284 callSup.HandleCallWaiting(SIM1_SLOTID, mmiDataAct);
285 callSup.HandleCallWaiting(SIM1_SLOTID, mmiDataDeact);
286 ASSERT_FALSE(mmiDataAct.actionString.empty());
287 }
288
289 /**
290 * @tc.number Telephony_CellularCallSupplement_002
291 * @tc.name Test error branch
292 * @tc.desc Function test
293 */
294 HWTEST_F(ZeroBranchTest, Telephony_CellularCallSupplement_002, Function | MediumTest | Level3)
295 {
296 AccessToken token;
297 CellularCallSupplement callSup;
298 callSup.SendUssd(SIM1_SLOTID, "*#21#");
299 PinPukResponse pinPuk;
300 callSup.EventSetPinPuk(pinPuk);
301 MMIData mmiDataPin = { .serviceInfoA = "1234", .serviceInfoB = "1111", .serviceInfoC = "1111" };
302 callSup.AlterPinPassword(SIM1_SLOTID, mmiDataPin);
303 callSup.UnlockPuk(SIM1_SLOTID, mmiDataPin);
304 callSup.AlterPin2Password(SIM1_SLOTID, mmiDataPin);
305 callSup.UnlockPuk2(SIM1_SLOTID, mmiDataPin);
306 mmiDataPin = { .serviceInfoA = "1234", .serviceInfoB = "1111", .serviceInfoC = "1112" };
307 callSup.AlterPinPassword(SIM1_SLOTID, mmiDataPin);
308 callSup.UnlockPuk(SIM1_SLOTID, mmiDataPin);
309 callSup.AlterPin2Password(SIM1_SLOTID, mmiDataPin);
310 callSup.UnlockPuk2(SIM1_SLOTID, mmiDataPin);
311 mmiDataPin = { .serviceInfoA = "1234", .serviceInfoB = "1111", .serviceInfoC = "111111111" };
312 callSup.AlterPinPassword(SIM1_SLOTID, mmiDataPin);
313 callSup.UnlockPuk(SIM1_SLOTID, mmiDataPin);
314 callSup.AlterPin2Password(SIM1_SLOTID, mmiDataPin);
315 callSup.UnlockPuk2(SIM1_SLOTID, mmiDataPin);
316 callSup.CloseUnFinishedUssd(SIM1_SLOTID);
317 GetClipResult getClipResult;
318 std::string message = "";
319 callSup.EventGetClip(getClipResult, message, 0);
320 callSup.EventGetClip(getClipResult, message, 1);
321 callSup.EventSetClip(0, message, 0, 1);
322 callSup.EventSetClip(0, message, 1, 1);
323 GetClirResult getClirResult;
324 callSup.EventGetClir(getClirResult, message, 0);
325 callSup.EventGetClir(getClirResult, message, 1);
326 callSup.EventSetClir(0, message, 0, 1);
327 callSup.EventSetClir(0, message, 1, 1);
328 GetColrResult getColrResult;
329 callSup.EventGetColr(getColrResult, message, 0);
330 callSup.EventGetColr(getColrResult, message, 1);
331 callSup.EventSetColr(0, message, 0, 1);
332 callSup.EventSetColr(0, message, 1, 1);
333 ASSERT_TRUE(mmiDataPin.actionString.empty());
334 }
335
336 /**
337 * @tc.number Telephony_CellularCallSupplement_003
338 * @tc.name Test error branch
339 * @tc.desc Function test
340 */
341 HWTEST_F(ZeroBranchTest, Telephony_CellularCallSupplement_003, Function | MediumTest | Level3)
342 {
343 AccessToken token;
344 CellularCallSupplement callSup;
345 GetColpResult getColpResult;
346 std::string message = "";
347 callSup.EventGetColp(getColpResult, message, 0);
348 callSup.EventGetColp(getColpResult, message, 1);
349 callSup.EventSetColp(0, message, 0, 1);
350 callSup.EventSetColp(0, message, 1, 1);
351 CallRestrictionResult callResResult;
352 callSup.EventGetCallRestriction(callResResult, message, 0);
353 callSup.EventGetCallRestriction(callResResult, message, 1);
354 callResResult.status = 1;
355 callSup.EventGetCallRestriction(callResResult, message, 0);
356 callResResult.result.result = 1;
357 callSup.EventGetCallRestriction(callResResult, message, 0);
358 callSup.EventSetCallRestriction(0, message, 0, 1);
359 callSup.EventSetCallRestriction(0, message, 1, 1);
360 callSup.EventSetBarringPassword(0, message, 0);
361 callSup.EventSetBarringPassword(0, message, 1);
362 callSup.EventSetCallWaiting(0, message, 0, 1);
363 callSup.EventSetCallWaiting(0, message, 1, 1);
364 CallForwardQueryInfoList cFQueryList;
365 callSup.EventGetCallTransferInfo(cFQueryList, message, 0);
366 CallForwardQueryResult queryResult;
367 callSup.BuildCallForwardQueryInfo(queryResult, message, 0);
368 callSup.BuildCallForwardQueryInfo(queryResult, message, 1);
369 queryResult.classx = 1;
370 callSup.BuildCallForwardQueryInfo(queryResult, message, 0);
371 queryResult.status = 1;
372 callSup.BuildCallForwardQueryInfo(queryResult, message, 0);
373 queryResult.reason = 2;
374 callSup.BuildCallForwardQueryInfo(queryResult, message, 0);
375 callSup.EventSetCallTransferInfo(0, message, 0, 1);
376 callSup.EventSetCallTransferInfo(0, message, 1, 1);
377 RadioResponseInfo responseInfo;
378 callSup.EventSendUssd(responseInfo);
379 SsNoticeInfo ssNoticeInfo;
380 callSup.EventSsNotify(ssNoticeInfo);
381 UssdNoticeInfo ussdNoticeInfo;
382 callSup.EventUssdNotify(ussdNoticeInfo, SIM1_SLOTID);
383 RadioResponseInfo response;
384 callSup.EventCloseUnFinishedUssd(response);
385 callSup.GetCallTransferInfo(SIM1_SLOTID, CallTransferType::TRANSFER_TYPE_UNCONDITIONAL);
386 ASSERT_NE(callSup.GetCallTransferInfo(SIM2_SLOTID, CallTransferType::TRANSFER_TYPE_UNCONDITIONAL),
387 TELEPHONY_SUCCESS);
388 }
389
390 /**
391 * @tc.number Telephony_CellularCallSupplement_004
392 * @tc.name Test error branch
393 * @tc.desc Function test
394 */
395 HWTEST_F(ZeroBranchTest, Telephony_CellularCallSupplement_004, Function | MediumTest | Level3)
396 {
397 AccessToken token;
398 CellularCallSupplement callSup;
399 CallWaitResult waitingInfo;
400 std::string message = "";
401 callSup.EventGetCallWaiting(waitingInfo, message, 0);
402 callSup.EventGetCallWaiting(waitingInfo, message, 1);
403 waitingInfo.status =1;
404 callSup.EventGetCallWaiting(waitingInfo, message, 0);
405 waitingInfo.classCw =1;
406 callSup.EventGetCallWaiting(waitingInfo, message, 0);
407 waitingInfo.classCw =4;
408 callSup.EventGetCallWaiting(waitingInfo, message, 0);
409 waitingInfo.classCw =8;
410 callSup.EventGetCallWaiting(waitingInfo, message, 0);
411 waitingInfo.classCw =16;
412 callSup.EventGetCallWaiting(waitingInfo, message, 0);
413 waitingInfo.classCw =32;
414 callSup.EventGetCallWaiting(waitingInfo, message, 0);
415 waitingInfo.classCw =64;
416 callSup.EventGetCallWaiting(waitingInfo, message, 0);
417 waitingInfo.classCw =128;
418 callSup.EventGetCallWaiting(waitingInfo, message, 0);
419 CallTransferInfo cfInfo;
420 callSup.SetCallTransferInfo(SIM1_SLOTID, cfInfo);
421 strcpy_s(cfInfo.transferNum, kMaxNumberLen + 1, "111");
422 callSup.SetCallTransferInfo(SIM1_SLOTID, cfInfo);
423 callSup.SetCallTransferInfo(SIM2_SLOTID, cfInfo);
424 auto utCommand = std::make_shared<SsRequestCommand>();
425 callSup.SetCallTransferInfoByIms(SIM1_SLOTID, cfInfo, utCommand);
426 callSup.SetCallTransferInfoByIms(SIM2_SLOTID, cfInfo, utCommand);
427 bool activate = false;
428 callSup.SetCallWaiting(SIM1_SLOTID, activate);
429 callSup.SetCallWaiting(SIM2_SLOTID, activate);
430 callSup.GetCallWaiting(SIM1_SLOTID);
431 callSup.GetCallWaiting(SIM2_SLOTID);
432 CallRestrictionInfo crInfo;
433 callSup.SetCallRestriction(SIM1_SLOTID, crInfo);
434 callSup.SetCallRestriction(SIM2_SLOTID, crInfo);
435 auto crCommand = std::make_shared<SsRequestCommand>();
436 std::string info(crInfo.password);
437 std::string fac("AO");
438 callSup.SetCallRestrictionByIms(SIM1_SLOTID, fac, static_cast<int32_t>(crInfo.mode), info, crCommand);
439 callSup.SetCallRestrictionByIms(SIM2_SLOTID, fac, static_cast<int32_t>(crInfo.mode), info, crCommand);
440 callSup.GetCallRestriction(SIM1_SLOTID, CallRestrictionType::RESTRICTION_TYPE_ALL_INCOMING);
441 callSup.GetCallRestriction(SIM2_SLOTID, CallRestrictionType::RESTRICTION_TYPE_ALL_INCOMING);
442 callSup.SetBarringPassword(SIM1_SLOTID, CallRestrictionType::RESTRICTION_TYPE_ALL_INCOMING, "1111", "0000");
443 ASSERT_NE(callSup.SetBarringPassword(SIM2_SLOTID, CallRestrictionType::RESTRICTION_TYPE_ALL_INCOMING,
444 "1111", "0000"), TELEPHONY_SUCCESS);
445 }
446
447 /**
448 * @tc.number Telephony_CellularCallSupplement_005
449 * @tc.name Test error branch
450 * @tc.desc Function test
451 */
452 HWTEST_F(ZeroBranchTest, Telephony_CellularCallSupplement_005, Function | MediumTest | Level3)
453 {
454 AccessToken token;
455 CellularCallSupplement callSup;
456 MMIData mmiDataEmp = {};
457 MMIData mmiDataAct = { .actionString = "*" };
458 MMIData mmiDataDeact = { .actionString = "#" };
459 MMIData mmiDataInterrogate = { .actionString = "*#" };
460 callSup.HandleClip(SIM2_SLOTID, mmiDataEmp);
461 callSup.HandleClip(SIM2_SLOTID, mmiDataAct);
462 callSup.HandleClip(SIM2_SLOTID, mmiDataDeact);
463 callSup.HandleClip(SIM2_SLOTID, mmiDataInterrogate);
464 callSup.HandleColr(SIM2_SLOTID, mmiDataEmp);
465 callSup.HandleColr(SIM2_SLOTID, mmiDataAct);
466 callSup.HandleColr(SIM2_SLOTID, mmiDataDeact);
467 callSup.HandleColr(SIM2_SLOTID, mmiDataInterrogate);
468 callSup.HandleColp(SIM2_SLOTID, mmiDataEmp);
469 callSup.HandleColp(SIM2_SLOTID, mmiDataAct);
470 callSup.HandleColp(SIM2_SLOTID, mmiDataDeact);
471 callSup.HandleColp(SIM2_SLOTID, mmiDataInterrogate);
472 callSup.HandleCallTransfer(SIM2_SLOTID, mmiDataEmp);
473 callSup.HandleCallTransfer(SIM2_SLOTID, mmiDataInterrogate);
474 callSup.HandleCallTransfer(SIM2_SLOTID, mmiDataAct);
475 callSup.HandleCallRestriction(SIM2_SLOTID, mmiDataEmp);
476 callSup.HandleCallRestriction(SIM2_SLOTID, mmiDataAct);
477 callSup.HandleCallRestriction(SIM2_SLOTID, mmiDataDeact);
478 callSup.HandleCallRestriction(SIM2_SLOTID, mmiDataInterrogate);
479 callSup.HandleCallWaiting(SIM2_SLOTID, mmiDataEmp);
480 callSup.HandleCallWaiting(SIM2_SLOTID, mmiDataAct);
481 callSup.HandleCallWaiting(SIM2_SLOTID, mmiDataDeact);
482 bool enable = false;
483 #ifdef CALL_MANAGER_AUTO_START_OPTIMIZE
484 ASSERT_EQ(callSup.CanSetCallTransferTime(SIM1_SLOTID, enable), CALL_ERR_RESOURCE_UNAVAILABLE);
485 #else
486 ASSERT_EQ(callSup.CanSetCallTransferTime(SIM1_SLOTID, enable), TELEPHONY_SUCCESS);
487 #endif
488 }
489
490 /**
491 * @tc.number Telephony_CellularCallSupplement_006
492 * @tc.name Test error branch
493 * @tc.desc Function test
494 */
495 HWTEST_F(ZeroBranchTest, Telephony_CellularCallSupplement_006, Function | MediumTest | Level3)
496 {
497 AccessToken token;
498 CellularCallSupplement callSup;
499 MMIData mmiDataEmp = {};
500 MMIData mmiDataAct = { .actionString = "*" };
501 MMIData mmiDataDeact = { .actionString = "#" };
502 MMIData mmiDataInterrogate = { .actionString = "*#" };
503 EventFwk::MatchingSkills matchingSkills;
504 matchingSkills.AddEvent(EventFwk::CommonEventSupport::COMMON_EVENT_OPERATOR_CONFIG_CHANGED);
505 EventFwk::CommonEventSubscribeInfo subscriberInfo(matchingSkills);
506 auto handler = std::make_shared<CellularCallHandler>(subscriberInfo);
507 auto callClient = DelayedSingleton<SatelliteCallClient>::GetInstance();
508 ASSERT_EQ(callClient->RegisterSatelliteCallCallbackHandler(SIM1_SLOTID, handler), TELEPHONY_SUCCESS);
509 callSup.HandleClip(SIM1_SLOTID, mmiDataAct);
510 callSup.HandleClip(SIM1_SLOTID, mmiDataDeact);
511 callSup.HandleClip(SIM1_SLOTID, mmiDataInterrogate);
512 callSup.HandleColr(SIM1_SLOTID, mmiDataAct);
513 callSup.HandleColr(SIM1_SLOTID, mmiDataDeact);
514 callSup.HandleColr(SIM1_SLOTID, mmiDataInterrogate);
515 callSup.HandleColp(SIM1_SLOTID, mmiDataAct);
516 callSup.HandleColp(SIM1_SLOTID, mmiDataDeact);
517 callSup.HandleColp(SIM1_SLOTID, mmiDataInterrogate);
518 int32_t cause = 0;
519 callSup.HandleGetCallTransfer(SIM1_SLOTID, cause);
520 int32_t serviceCode = 0;
521 std::string phoneNumber("1234567890");
522 CallTransferSettingType callTransferAction = CallTransferSettingType::CALL_TRANSFER_DISABLE;
523 callSup.HandleSetCallTransfer(SIM1_SLOTID, serviceCode, cause, phoneNumber, callTransferAction);
524 callSup.HandleCallRestriction(SIM1_SLOTID, mmiDataAct);
525 callSup.HandleCallRestriction(SIM1_SLOTID, mmiDataDeact);
526 callSup.HandleCallRestriction(SIM1_SLOTID, mmiDataInterrogate);
527 callSup.HandleCallWaiting(SIM1_SLOTID, mmiDataAct);
528 callSup.HandleCallWaiting(SIM1_SLOTID, mmiDataDeact);
529 callSup.HandleCallWaiting(SIM1_SLOTID, mmiDataInterrogate);
530 }
531
532 /**
533 * @tc.number Telephony_CellularCallSupplement_007
534 * @tc.name Test error branch
535 * @tc.desc Function test
536 */
537 HWTEST_F(ZeroBranchTest, Telephony_CellularCallSupplement_007, Function | MediumTest | Level3)
538 {
539 AccessToken token;
540 CellularCallSupplement callSup;
541 MMIData mmiDataEmp = {};
542 MMIData mmiDataAct = { .actionString = "*" };
543 MMIData mmiDataDeact = { .actionString = "#" };
544 MMIData mmiDataInterrogate = { .actionString = "*#" };
545 EventFwk::MatchingSkills matchingSkills;
546 matchingSkills.AddEvent(EventFwk::CommonEventSupport::COMMON_EVENT_OPERATOR_CONFIG_CHANGED);
547 EventFwk::CommonEventSubscribeInfo subscriberInfo(matchingSkills);
548 auto handler = std::make_shared<CellularCallHandler>(subscriberInfo);
549 auto callClient = DelayedSingleton<SatelliteCallClient>::GetInstance();
550 ASSERT_EQ(callClient->RegisterSatelliteCallCallbackHandler(SIM1_SLOTID, handler), TELEPHONY_SUCCESS);
551 std::string serviceInfoB("10");
552 ASSERT_EQ(callSup.ObtainServiceCode(serviceInfoB), 13);
553 serviceInfoB = "11";
554 ASSERT_EQ(callSup.ObtainServiceCode(serviceInfoB), 1);
555 serviceInfoB = "12";
556 ASSERT_EQ(callSup.ObtainServiceCode(serviceInfoB), 12);
557 serviceInfoB = "13";
558 ASSERT_EQ(callSup.ObtainServiceCode(serviceInfoB), 4);
559 serviceInfoB = "16";
560 ASSERT_EQ(callSup.ObtainServiceCode(serviceInfoB), 8);
561 serviceInfoB = "19";
562 ASSERT_EQ(callSup.ObtainServiceCode(serviceInfoB), 5);
563 serviceInfoB = "20";
564 ASSERT_EQ(callSup.ObtainServiceCode(serviceInfoB), 48);
565 serviceInfoB = "21";
566 ASSERT_EQ(callSup.ObtainServiceCode(serviceInfoB), 160);
567 serviceInfoB = "22";
568 ASSERT_EQ(callSup.ObtainServiceCode(serviceInfoB), 80);
569 serviceInfoB = "24";
570 ASSERT_EQ(callSup.ObtainServiceCode(serviceInfoB), 16);
571 serviceInfoB = "25";
572 ASSERT_EQ(callSup.ObtainServiceCode(serviceInfoB), 32);
573 serviceInfoB = "99";
574 ASSERT_EQ(callSup.ObtainServiceCode(serviceInfoB), 64);
575 std::string phoneNumber("1234");
576 CallTransferSettingType callTransferAction;
577 ASSERT_EQ(callSup.ObtainCallTrasferAction("*", phoneNumber, callTransferAction), TELEPHONY_SUCCESS);
578 ASSERT_EQ(callSup.ObtainCallTrasferAction("**", phoneNumber, callTransferAction), TELEPHONY_SUCCESS);
579 ASSERT_EQ(callSup.ObtainCallTrasferAction("#", phoneNumber, callTransferAction), TELEPHONY_SUCCESS);
580 ASSERT_EQ(callSup.ObtainCallTrasferAction("##", phoneNumber, callTransferAction), TELEPHONY_SUCCESS);
581 ASSERT_EQ(callSup.ObtainCause("21"), static_cast<int32_t>(CallTransferType::TRANSFER_TYPE_UNCONDITIONAL));
582 ASSERT_EQ(callSup.ObtainCause("61"), static_cast<int32_t>(CallTransferType::TRANSFER_TYPE_NO_REPLY));
583 ASSERT_EQ(callSup.ObtainCause("62"), static_cast<int32_t>(CallTransferType::TRANSFER_TYPE_NOT_REACHABLE));
584 ASSERT_EQ(callSup.ObtainCause("67"), static_cast<int32_t>(CallTransferType::TRANSFER_TYPE_BUSY));
585 ASSERT_EQ(callSup.ObtainCause("99"), TELEPHONY_ERROR);
586 }
587
588 /**
589 * @tc.number Telephony_CellularCallSupplement_008
590 * @tc.name Test error branch
591 * @tc.desc Function test
592 */
593 HWTEST_F(ZeroBranchTest, Telephony_CellularCallSupplement_008, Function | MediumTest | Level3)
594 {
595 AccessToken token;
596 CellularCallSupplement callSup;
597 EventFwk::MatchingSkills matchingSkills;
598 matchingSkills.AddEvent(EventFwk::CommonEventSupport::COMMON_EVENT_OPERATOR_CONFIG_CHANGED);
599 EventFwk::CommonEventSubscribeInfo subscriberInfo(matchingSkills);
600 auto handler = std::make_shared<CellularCallHandler>(subscriberInfo);
601 auto callClient = DelayedSingleton<SatelliteCallClient>::GetInstance();
602 ASSERT_EQ(callClient->RegisterSatelliteCallCallbackHandler(SIM1_SLOTID, handler), TELEPHONY_SUCCESS);
603 ASSERT_EQ(callSup.ObtainBarringInstallation("33"), "AO");
604 ASSERT_EQ(callSup.ObtainBarringInstallation("331"), "OI");
605 ASSERT_EQ(callSup.ObtainBarringInstallation("332"), "OX");
606 ASSERT_EQ(callSup.ObtainBarringInstallation("351"), "IR");
607 ASSERT_EQ(callSup.ObtainBarringInstallation("35"), "AI");
608 ASSERT_EQ(callSup.ObtainBarringInstallation("330"), "AB");
609 ASSERT_EQ(callSup.ObtainBarringInstallation("333"), "AG");
610 ASSERT_EQ(callSup.ObtainBarringInstallation("353"), "AC");
611 ASSERT_EQ(callSup.ObtainBarringInstallation("1000"), "");
612 std::string fac;
613 ASSERT_EQ(callSup.CheckCallRestrictionType(fac, CallRestrictionType::RESTRICTION_TYPE_ALL_OUTGOING),
614 TELEPHONY_SUCCESS);
615 ASSERT_EQ(callSup.CheckCallRestrictionType(fac, CallRestrictionType::RESTRICTION_TYPE_INTERNATIONAL),
616 TELEPHONY_SUCCESS);
617 ASSERT_EQ(callSup.CheckCallRestrictionType(fac,
618 CallRestrictionType::RESTRICTION_TYPE_INTERNATIONAL_EXCLUDING_HOME), TELEPHONY_SUCCESS);
619 ASSERT_EQ(callSup.CheckCallRestrictionType(fac, CallRestrictionType::RESTRICTION_TYPE_ALL_INCOMING),
620 TELEPHONY_SUCCESS);
621 ASSERT_EQ(callSup.CheckCallRestrictionType(fac, CallRestrictionType::RESTRICTION_TYPE_ROAMING_INCOMING),
622 TELEPHONY_SUCCESS);
623 ASSERT_EQ(callSup.CheckCallRestrictionType(fac, CallRestrictionType::RESTRICTION_TYPE_ALL_CALLS),
624 TELEPHONY_SUCCESS);
625 ASSERT_EQ(callSup.CheckCallRestrictionType(fac, CallRestrictionType::RESTRICTION_TYPE_OUTGOING_SERVICES),
626 TELEPHONY_SUCCESS);
627 ASSERT_EQ(callSup.CheckCallRestrictionType(fac, CallRestrictionType::RESTRICTION_TYPE_INCOMING_SERVICES),
628 TELEPHONY_SUCCESS);
629 MmiCodeInfo mmiCodeInfo;
630 SsNoticeInfo ssNoticeInfo;
631 ssNoticeInfo.result = 0;
632 callSup.GetMessage(mmiCodeInfo, ssNoticeInfo);
633 ssNoticeInfo.result = 1;
634 ssNoticeInfo.serviceType = static_cast<int32_t>(CallTransferType::TRANSFER_TYPE_UNCONDITIONAL);
635 callSup.GetMessage(mmiCodeInfo, ssNoticeInfo);
636 ssNoticeInfo.serviceType = static_cast<int32_t>(CallTransferType::TRANSFER_TYPE_BUSY);
637 callSup.GetMessage(mmiCodeInfo, ssNoticeInfo);
638 ssNoticeInfo.serviceType = static_cast<int32_t>(CallTransferType::TRANSFER_TYPE_NO_REPLY);
639 callSup.GetMessage(mmiCodeInfo, ssNoticeInfo);
640 ssNoticeInfo.serviceType = static_cast<int32_t>(CallTransferType::TRANSFER_TYPE_NOT_REACHABLE);
641 callSup.GetMessage(mmiCodeInfo, ssNoticeInfo);
642 }
643
644 /**
645 * @tc.number Telephony_CellularCallSupplement_009
646 * @tc.name Test error branch
647 * @tc.desc Function test
648 */
649 HWTEST_F(ZeroBranchTest, Telephony_CellularCallSupplement_009, Function | MediumTest | Level3)
650 {
651 AccessToken token;
652 CellularCallSupplement callSup;
653 MMIData mmiDataAct = { .actionString = "*" };
654 auto command = std::make_shared<SsRequestCommand>();
655 CallTransferInfo cfInfo;
656 #ifdef CALL_MANAGER_AUTO_START_OPTIMIZE
657 ASSERT_EQ(callSup.SetCallTransferInfoByIms(SIM1_SLOTID, cfInfo, command), TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL);
658 #else
659 ASSERT_EQ(callSup.SetCallTransferInfoByIms(SIM1_SLOTID, cfInfo, command), TELEPHONY_SUCCESS);
660 #endif
661 ASSERT_EQ(callSup.SetCallTransferInfo(SIM1_SLOTID, cfInfo), TELEPHONY_ERR_ARGUMENT_INVALID);
662 ASSERT_EQ(callSup.GetCallTransferInfo(SIM1_SLOTID, CallTransferType::TRANSFER_TYPE_UNCONDITIONAL),
663 CALL_ERR_UNSUPPORTED_NETWORK_TYPE);
664 bool activate = true;
665 ASSERT_EQ(callSup.SetCallWaiting(SIM1_SLOTID, activate), CALL_ERR_UNSUPPORTED_NETWORK_TYPE);
666 ASSERT_EQ(callSup.GetCallWaiting(SIM1_SLOTID), CALL_ERR_UNSUPPORTED_NETWORK_TYPE);
667 CallRestrictionInfo cRInfo;
668 std::string info(cRInfo.password);
669 std::string fac("AO");
670 #ifdef CALL_MANAGER_AUTO_START_OPTIMIZE
671 ASSERT_EQ(callSup.SetCallRestrictionByIms(SIM1_SLOTID, fac, static_cast<int32_t>(cRInfo.mode), info, command),
672 TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL);
673 #else
674 ASSERT_EQ(callSup.SetCallRestrictionByIms(SIM1_SLOTID, fac, static_cast<int32_t>(cRInfo.mode), info, command),
675 TELEPHONY_SUCCESS);
676 #endif
677 ASSERT_EQ(callSup.GetCallRestriction(SIM1_SLOTID, CallRestrictionType::RESTRICTION_TYPE_ALL_INCOMING),
678 CALL_ERR_UNSUPPORTED_NETWORK_TYPE);
679 ASSERT_EQ(callSup.SetBarringPassword(SIM1_SLOTID, CallRestrictionType::RESTRICTION_TYPE_ALL_INCOMING,
680 "1111", "0000"), CALL_ERR_UNSUPPORTED_NETWORK_TYPE);
681 ASSERT_EQ(callSup.SetCallRestriction(SIM1_SLOTID, cRInfo), CALL_ERR_UNSUPPORTED_NETWORK_TYPE);
682 callSup.AlterPinPassword(SIM1_SLOTID, mmiDataAct);
683 callSup.UnlockPuk(SIM1_SLOTID, mmiDataAct);
684 callSup.AlterPin2Password(SIM1_SLOTID, mmiDataAct);
685 callSup.UnlockPuk2(SIM1_SLOTID, mmiDataAct);
686 ASSERT_FALSE(callSup.IsVaildPinOrPuk("123", "123"));
687 ASSERT_FALSE(callSup.IsVaildPinOrPuk("1234567", "123"));
688 ASSERT_TRUE(callSup.IsVaildPinOrPuk("1234567", "1234567"));
689 }
690
691 /**
692 * @tc.number Telephony_CellularCallCsControl_001
693 * @tc.name Test error branch
694 * @tc.desc Function test
695 */
696 HWTEST_F(ZeroBranchTest, Telephony_CellularCallCsControl_001, Function | MediumTest | Level3)
697 {
698 AccessToken token;
699 CSControl csControl;
700 CellularCallInfo cellularCallInfo;
701 InitCellularCallInfo(SIM1_SLOTID, PHONE_NUMBER, cellularCallInfo);
702 CallInfoList callInfoList;
703 csControl.ReportCallsData(SIM1_SLOTID, callInfoList);
704 csControl.connectionMap_.insert(std::make_pair(1, CellularCallConnectionCS()));
705 csControl.ReportCallsData(SIM1_SLOTID, callInfoList);
706 csControl.connectionMap_.insert(std::make_pair(1, CellularCallConnectionCS()));
707 InitCsCallInfoList(callInfoList, 5);
708 csControl.ReportCallsData(SIM1_SLOTID, callInfoList);
709 csControl.connectionMap_.clear();
710 csControl.ReportCallsData(SIM1_SLOTID, callInfoList);
711 bool enabled = false;
712 csControl.Dial(cellularCallInfo, enabled);
713 csControl.DialCdma(cellularCallInfo);
714 csControl.DialGsm(cellularCallInfo);
715 csControl.CalculateInternationalRoaming(SIM1_SLOTID);
716 csControl.Answer(cellularCallInfo);
717 csControl.Reject(cellularCallInfo);
718 csControl.SeparateConference(SIM1_SLOTID, PHONE_NUMBER, 1);
719 csControl.SeparateConference(SIM1_SLOTID, "", 1);
720 int32_t invlaidCallType = -1;
721 csControl.HangUp(cellularCallInfo, CallSupplementType::TYPE_DEFAULT);
722 csControl.HangUp(cellularCallInfo, CallSupplementType::TYPE_HANG_UP_ACTIVE);
723 csControl.HangUp(cellularCallInfo, CallSupplementType::TYPE_HANG_UP_ALL);
724 csControl.HangUp(cellularCallInfo, static_cast<CallSupplementType>(invlaidCallType));
725 csControl.HoldCall(SIM1_SLOTID);
726 csControl.UnHoldCall(SIM1_SLOTID);
727 csControl.SwitchCall(SIM1_SLOTID);
728 csControl.CombineConference(SIM1_SLOTID);
729 csControl.HangUpAllConnection(SIM1_SLOTID);
730 csControl.GetConnectionMap();
731 csControl.ReportHangUpInfo(SIM1_SLOTID);
732 csControl.ReportIncomingInfo(SIM1_SLOTID, callInfoList);
733 csControl.ReportUpdateInfo(SIM1_SLOTID, callInfoList);
734 CallInfo callInfo;
735 csControl.EncapsulationCallReportInfo(SIM1_SLOTID, callInfo);
736 std::string phoneNum = "00000000";
737 CLIRMode clirMode = CLIRMode::DEFAULT;
738 int res = csControl.EncapsulateDialCommon(SIM1_SLOTID, phoneNum, clirMode);
739 CallsReportInfo callsReportInfo;
740 csControl.DeleteConnection(callsReportInfo, callInfoList);
741 csControl.ReleaseAllConnection();
742 ASSERT_EQ(res, TELEPHONY_SUCCESS);
743 }
744
745 /**
746 * @tc.number Telephony_CellularCallCsControl_002
747 * @tc.name Test error branch
748 * @tc.desc Function test
749 */
750 HWTEST_F(ZeroBranchTest, Telephony_CellularCallCsControl_002, Function | MediumTest | Level3)
751 {
752 AccessToken token;
753 CSControl csControl;
754 CellularCallInfo cellularCallInfo;
755 InitCellularCallInfo(SIM1_SLOTID, PHONE_NUMBER, cellularCallInfo);
756 CellularCallInfo cellularCallInfo_new;
757 cellularCallInfo_new.callType = CallType::TYPE_CS;
758 std::vector<CellularCallInfo> infos;
759 bool enabled = false;
760 infos.emplace_back(cellularCallInfo);
761 infos.emplace_back(cellularCallInfo_new);
762 csControl.PostDialProceed(cellularCallInfo, true);
763 csControl.PostDialProceed(cellularCallInfo, enabled);
764 csControl.ExecutePostDial(SIM1_SLOTID, 0);
765 csControl.connectionMap_.insert(std::make_pair(1, CellularCallConnectionCS()));
766 cellularCallInfo.index = 1;
767 csControl.Answer(cellularCallInfo);
768 csControl.PostDialProceed(cellularCallInfo, true);
769 csControl.ExecutePostDial(SIM1_SLOTID, 0);
770 csControl.ExecutePostDial(SIM1_SLOTID, 1);
771 csControl.connectionMap_.clear();
772 for (uint16_t i = 0; i <= 7; ++i) {
773 csControl.connectionMap_.insert(std::make_pair(i, CellularCallConnectionCS()));
774 }
775 csControl.DialCdma(cellularCallInfo);
776 csControl.DialGsm(cellularCallInfo);
777 csControl.connectionMap_.clear();
778 ASSERT_EQ(csControl.ReportHangUp(infos, SIM1_SLOTID), TELEPHONY_SUCCESS);
779 }
780
781 /**
782 * @tc.number Telephony_CellularCallImsControl_001
783 * @tc.name Test error branch
784 * @tc.desc Function test
785 */
786 HWTEST_F(ZeroBranchTest, Telephony_CellularCallImsControl_001, Function | MediumTest | Level3)
787 {
788 AccessToken token;
789 IMSControl imsControl;
790 CellularCallInfo cellularCallInfo;
791 std::vector<CellularCallInfo> infos;
792 infos.emplace_back(cellularCallInfo);
793 CellularCallInfo cellularCallInfo_new;
794 bool enabled = false;
795 int32_t invalidSupType = -1;
796 ImsCurrentCallList ImsCallList;
797 InitCellularCallInfo(SIM1_SLOTID, PHONE_NUMBER, cellularCallInfo);
798 imsControl.ReportImsCallsData(SIM1_SLOTID, ImsCallList);
799 InitImsCallInfoList(ImsCallList, 5);
800 imsControl.ReportImsCallsData(SIM1_SLOTID, ImsCallList);
801 imsControl.Dial(cellularCallInfo, true);
802 cellularCallInfo_new.slotId = 1;
803 imsControl.Dial(cellularCallInfo_new, true);
804 cellularCallInfo_new.callType = CallType::TYPE_IMS;
805 infos.emplace_back(cellularCallInfo_new);
806 imsControl.HangUp(cellularCallInfo, CallSupplementType::TYPE_DEFAULT);
807 imsControl.HangUp(cellularCallInfo, CallSupplementType::TYPE_HANG_UP_HOLD_WAIT);
808 imsControl.HangUp(cellularCallInfo, CallSupplementType::TYPE_HANG_UP_ACTIVE);
809 imsControl.HangUp(cellularCallInfo, CallSupplementType::TYPE_HANG_UP_ALL);
810 imsControl.HangUp(cellularCallInfo, static_cast<CallSupplementType>(invalidSupType));
811 imsControl.Answer(cellularCallInfo);
812 imsControl.Reject(cellularCallInfo);
813 imsControl.PostDialProceed(cellularCallInfo, true);
814 imsControl.PostDialProceed(cellularCallInfo, enabled);
815 imsControl.RestoreConnection(infos, SIM1_SLOTID);
816 imsControl.RestoreConnection(infos, SIM2_SLOTID);
817 imsControl.ReportHangUp(infos, SIM1_SLOTID);
818 imsControl.ReportHangUp(infos, SIM2_SLOTID);
819 imsControl.HoldCall(SIM1_SLOTID);
820 imsControl.UnHoldCall(SIM1_SLOTID);
821 imsControl.SwitchCall(SIM1_SLOTID);
822 imsControl.CombineConference(SIM1_SLOTID);
823 std::vector<std::string> numberList;
824 imsControl.InviteToConference(SIM1_SLOTID, numberList);
825 std::string kickOutStr = "";
826 imsControl.KickOutFromConference(SIM1_SLOTID, kickOutStr, 0);
827 kickOutStr = "111";
828 imsControl.KickOutFromConference(SIM1_SLOTID, kickOutStr, 0);
829 imsControl.HangUpAllConnection(SIM1_SLOTID);
830 }
831
832 /**
833 * @tc.number Telephony_CellularCallImsControl_002
834 * @tc.name Test error branch
835 * @tc.desc Function test
836 */
837 HWTEST_F(ZeroBranchTest, Telephony_CellularCallImsControl_002, Function | MediumTest | Level3)
838 {
839 AccessToken token;
840 IMSControl imsControl;
841 ImsCurrentCallList ImsCallList;
842 imsControl.ReportImsCallsData(SIM1_SLOTID, ImsCallList);
843 InitImsCallInfoList(ImsCallList, 5);
844 imsControl.ReportImsCallsData(SIM1_SLOTID, ImsCallList);
845 CallInfoList callInfoList;
846 imsControl.ReportCallsData(SIM1_SLOTID, callInfoList);
847 imsControl.ReportHangUpInfo(SIM1_SLOTID);
848 imsControl.ReportIncomingInfo(SIM1_SLOTID, ImsCallList);
849 imsControl.ReportUpdateInfo(SIM1_SLOTID, ImsCallList);
850 ImsCurrentCall ImsCallInfo;
851 imsControl.EncapsulationCallReportInfo(SIM1_SLOTID, ImsCallInfo);
852 CallsReportInfo callsReportInfo;
853 imsControl.DeleteConnection(callsReportInfo, ImsCallList);
854 imsControl.ReleaseAllConnection();
855 imsControl.DialAfterHold(SIM1_SLOTID);
856 std::string msg = "";
857 imsControl.StartRtt(SIM1_SLOTID, msg);
858 imsControl.GetConnectionMap();
859 imsControl.ReleaseAllConnection();
860 CLIRMode clirMode = CLIRMode::DEFAULT;
861 int32_t videoState = 0;
862 imsControl.DialJudgment(SIM1_SLOTID, PHONE_NUMBER, clirMode, videoState);
863 #ifdef CALL_MANAGER_AUTO_START_OPTIMIZE
864 ASSERT_EQ(imsControl.StopRtt(SIM1_SLOTID), INVALID_VALUE);
865 ASSERT_EQ(imsControl.EncapsulateDial(SIM1_SLOTID, PHONE_NUMBER, clirMode, videoState),
866 TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL);
867 #else
868 ASSERT_EQ(imsControl.StopRtt(SIM1_SLOTID), TELEPHONY_SUCCESS);
869 ASSERT_EQ(imsControl.EncapsulateDial(SIM1_SLOTID, PHONE_NUMBER, clirMode, videoState), TELEPHONY_SUCCESS);
870 #endif
871 }
872
873 /**
874 * @tc.number Telephony_CellularCallImsControl_003
875 * @tc.name Test error branch
876 * @tc.desc Function test
877 */
878 HWTEST_F(ZeroBranchTest, Telephony_CellularCallImsControl_003, Function | MediumTest | Level3)
879 {
880 AccessToken token;
881 IMSControl imsControl;
882 imsControl.connectionMap_.insert(std::make_pair(1, CellularCallConnectionIMS()));
883 imsControl.RecoverPendingHold();
884 imsControl.DialAfterHold(SIM1_SLOTID);
885 imsControl.HangUpAllConnection(SIM1_SLOTID);
886 ImsCurrentCallList imsCallList;
887 CallsReportInfo callsReportInfo;
888 imsControl.DeleteConnection(callsReportInfo, imsCallList);
889 ASSERT_EQ(imsControl.ReportHangUpInfo(SIM1_SLOTID), TELEPHONY_SUCCESS);
890 }
891
892 /**
893 * @tc.number Telephony_ImsVideoCallControl_001
894 * @tc.name Test error branch
895 * @tc.desc Function test
896 */
897 HWTEST_F(ZeroBranchTest, Telephony_ImsVideoCallControl_001, Function | MediumTest | Level3)
898 {
899 AccessToken token;
900 auto imsVideoCallControl = DelayedSingleton<ImsVideoCallControl>::GetInstance();
901 ASSERT_NE(imsVideoCallControl, nullptr);
902 std::string cameraId = "";
903 std::string surfaceId = "";
904 std::string path = "";
905 CellularCallInfo cellularCallInfo;
906 InitCellularCallInfo(SIM1_SLOTID, PHONE_NUMBER, cellularCallInfo);
907 #ifdef CALL_MANAGER_AUTO_START_OPTIMIZE
908 ASSERT_EQ(imsVideoCallControl->ControlCamera(SIM1_SLOTID, DEFAULT_INDEX, cameraId), INVALID_VALUE);
909 ASSERT_EQ(imsVideoCallControl->SetPreviewWindow(SIM1_SLOTID, DEFAULT_INDEX, surfaceId, nullptr),
910 INVALID_VALUE);
911 ASSERT_EQ(imsVideoCallControl->SetDisplayWindow(SIM1_SLOTID, DEFAULT_INDEX, surfaceId, nullptr),
912 INVALID_VALUE);
913 ASSERT_EQ(imsVideoCallControl->SetCameraZoom(1.0), INVALID_VALUE);
914 ASSERT_EQ(imsVideoCallControl->SetPausePicture(SIM1_SLOTID, DEFAULT_INDEX, path), INVALID_VALUE);
915 ASSERT_EQ(imsVideoCallControl->SetDeviceDirection(SIM1_SLOTID, DEFAULT_INDEX, 0), INVALID_VALUE);
916 ASSERT_EQ(imsVideoCallControl->SendUpdateCallMediaModeRequest(cellularCallInfo, ImsCallMode::CALL_MODE_AUDIO_ONLY),
917 INVALID_VALUE);
918 ASSERT_EQ(imsVideoCallControl->SendUpdateCallMediaModeResponse(cellularCallInfo, ImsCallMode::CALL_MODE_AUDIO_ONLY),
919 INVALID_VALUE);
920 ASSERT_EQ(imsVideoCallControl->CancelCallUpgrade(SIM1_SLOTID, DEFAULT_INDEX), INVALID_VALUE);
921 ASSERT_EQ(imsVideoCallControl->RequestCameraCapabilities(SIM1_SLOTID, DEFAULT_INDEX), INVALID_VALUE);
922 #else
923 ASSERT_EQ(imsVideoCallControl->ControlCamera(SIM1_SLOTID, DEFAULT_INDEX, cameraId), TELEPHONY_SUCCESS);
924 ASSERT_EQ(imsVideoCallControl->SetPreviewWindow(SIM1_SLOTID, DEFAULT_INDEX, surfaceId, nullptr),
925 TELEPHONY_SUCCESS);
926 ASSERT_EQ(imsVideoCallControl->SetDisplayWindow(SIM1_SLOTID, DEFAULT_INDEX, surfaceId, nullptr),
927 TELEPHONY_SUCCESS);
928 ASSERT_EQ(imsVideoCallControl->SetCameraZoom(1.0), TELEPHONY_SUCCESS);
929 ASSERT_EQ(imsVideoCallControl->SetPausePicture(SIM1_SLOTID, DEFAULT_INDEX, path), TELEPHONY_SUCCESS);
930 ASSERT_EQ(imsVideoCallControl->SetDeviceDirection(SIM1_SLOTID, DEFAULT_INDEX, 0), TELEPHONY_SUCCESS);
931 ASSERT_EQ(imsVideoCallControl->SendUpdateCallMediaModeRequest(cellularCallInfo, ImsCallMode::CALL_MODE_AUDIO_ONLY),
932 TELEPHONY_ERR_FAIL);
933 ASSERT_EQ(imsVideoCallControl->SendUpdateCallMediaModeResponse(cellularCallInfo, ImsCallMode::CALL_MODE_AUDIO_ONLY),
934 TELEPHONY_ERR_FAIL);
935 ASSERT_EQ(imsVideoCallControl->CancelCallUpgrade(SIM1_SLOTID, DEFAULT_INDEX), TELEPHONY_SUCCESS);
936 ASSERT_EQ(imsVideoCallControl->RequestCameraCapabilities(SIM1_SLOTID, DEFAULT_INDEX), TELEPHONY_SUCCESS);
937 #endif
938 }
939
940 /**
941 * @tc.number Telephony_ImsVideoCallControl_002
942 * @tc.name Test error branch
943 * @tc.desc Function test
944 */
945 HWTEST_F(ZeroBranchTest, Telephony_ImsVideoCallControl_002, Function | MediumTest | Level3)
946 {
947 AccessToken token;
948 auto imsVideoCallControl = DelayedSingleton<ImsVideoCallControl>::GetInstance();
949 ASSERT_NE(imsVideoCallControl, nullptr);
950 ImsCallMode mode = ImsCallMode::CALL_MODE_AUDIO_ONLY;
951 ASSERT_EQ(imsVideoCallControl->ConverToImsCallType(mode), ImsCallType::TEL_IMS_CALL_TYPE_VOICE);
952 mode = ImsCallMode::CALL_MODE_RECEIVE_ONLY;
953 ASSERT_EQ(imsVideoCallControl->ConverToImsCallType(mode), ImsCallType::TEL_IMS_CALL_TYPE_VT_RX);
954 mode = ImsCallMode::CALL_MODE_SEND_ONLY;
955 ASSERT_EQ(imsVideoCallControl->ConverToImsCallType(mode), ImsCallType::TEL_IMS_CALL_TYPE_VT_TX);
956 mode = ImsCallMode::CALL_MODE_SEND_RECEIVE;
957 ASSERT_EQ(imsVideoCallControl->ConverToImsCallType(mode), ImsCallType::TEL_IMS_CALL_TYPE_VT);
958 mode = ImsCallMode::CALL_MODE_VIDEO_PAUSED;
959 ASSERT_EQ(imsVideoCallControl->ConverToImsCallType(mode), ImsCallType::TEL_IMS_CALL_TYPE_PAUSE);
960 }
961
962 /**
963 * @tc.number Telephony_CellularCallConnectionIms_001
964 * @tc.name Test error branch
965 * @tc.desc Function test
966 */
967 HWTEST_F(ZeroBranchTest, Telephony_CellularCallConnectionIms_001, Function | MediumTest | Level3)
968 {
969 AccessToken token;
970 CellularCallConnectionIMS callConn;
971 ImsDialInfoStruct dialRequest;
972 std::vector<std::string> numberList = {};
973 std::string msg = "";
974 int32_t videoState = 0;
975 #ifdef CALL_MANAGER_AUTO_START_OPTIMIZE
976 ASSERT_EQ(callConn.DialRequest(SIM1_SLOTID, dialRequest), TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL);
977 ASSERT_EQ(callConn.HangUpRequest(SIM1_SLOTID, PHONE_NUMBER, 0), INVALID_VALUE);
978 ASSERT_EQ(callConn.AnswerRequest(SIM1_SLOTID, PHONE_NUMBER, 0, 0), INVALID_VALUE);
979 ASSERT_EQ(callConn.RejectRequest(SIM1_SLOTID, PHONE_NUMBER, 0), INVALID_VALUE);
980 ASSERT_EQ(callConn.HoldCallRequest(SIM1_SLOTID), INVALID_VALUE);
981 ASSERT_EQ(callConn.UnHoldCallRequest(SIM1_SLOTID), INVALID_VALUE);
982 ASSERT_EQ(callConn.SwitchCallRequest(SIM1_SLOTID, videoState), INVALID_VALUE);
983 ASSERT_EQ(callConn.CombineConferenceRequest(SIM1_SLOTID, 0), INVALID_VALUE);
984 ASSERT_EQ(callConn.InviteToConferenceRequest(SIM1_SLOTID, numberList), INVALID_VALUE);
985 ASSERT_EQ(callConn.KickOutFromConferenceRequest(SIM1_SLOTID, 0), INVALID_VALUE);
986 ASSERT_EQ(callConn.CallSupplementRequest(SIM1_SLOTID, CallSupplementType::TYPE_DEFAULT), TELEPHONY_SUCCESS);
987 ASSERT_EQ(callConn.StartRttRequest(SIM1_SLOTID, msg), INVALID_VALUE);
988 ASSERT_EQ(callConn.StopRttRequest(SIM1_SLOTID), INVALID_VALUE);
989 ASSERT_EQ(callConn.GetImsCallsDataRequest(SIM1_SLOTID, 0), INVALID_VALUE);
990 ASSERT_EQ(callConn.SendDtmfRequest(SIM1_SLOTID, '*', 0), INVALID_VALUE);
991 ASSERT_EQ(callConn.StartDtmfRequest(SIM1_SLOTID, '*', 0), INVALID_VALUE);
992 ASSERT_EQ(callConn.StopDtmfRequest(SIM1_SLOTID, 0), INVALID_VALUE);
993 ASSERT_EQ(callConn.GetCallFailReasonRequest(SIM1_SLOTID), INVALID_VALUE);
994 #else
995 ASSERT_EQ(callConn.DialRequest(SIM1_SLOTID, dialRequest), TELEPHONY_SUCCESS);
996 ASSERT_EQ(callConn.HangUpRequest(SIM1_SLOTID, PHONE_NUMBER, 0), TELEPHONY_SUCCESS);
997 ASSERT_EQ(callConn.AnswerRequest(SIM1_SLOTID, PHONE_NUMBER, 0, 0), TELEPHONY_SUCCESS);
998 ASSERT_EQ(callConn.RejectRequest(SIM1_SLOTID, PHONE_NUMBER, 0), TELEPHONY_SUCCESS);
999 ASSERT_EQ(callConn.HoldCallRequest(SIM1_SLOTID), TELEPHONY_SUCCESS);
1000 ASSERT_EQ(callConn.UnHoldCallRequest(SIM1_SLOTID), TELEPHONY_SUCCESS);
1001 ASSERT_EQ(callConn.SwitchCallRequest(SIM1_SLOTID, videoState), TELEPHONY_SUCCESS);
1002 ASSERT_EQ(callConn.CombineConferenceRequest(SIM1_SLOTID, 0), TELEPHONY_SUCCESS);
1003 ASSERT_EQ(callConn.InviteToConferenceRequest(SIM1_SLOTID, numberList), TELEPHONY_SUCCESS);
1004 ASSERT_EQ(callConn.KickOutFromConferenceRequest(SIM1_SLOTID, 0), TELEPHONY_SUCCESS);
1005 ASSERT_EQ(callConn.CallSupplementRequest(SIM1_SLOTID, CallSupplementType::TYPE_DEFAULT), TELEPHONY_SUCCESS);
1006 ASSERT_EQ(callConn.StartRttRequest(SIM1_SLOTID, msg), TELEPHONY_SUCCESS);
1007 ASSERT_EQ(callConn.StopRttRequest(SIM1_SLOTID), TELEPHONY_SUCCESS);
1008 ASSERT_EQ(callConn.GetImsCallsDataRequest(SIM1_SLOTID, 0), TELEPHONY_SUCCESS);
1009 ASSERT_EQ(callConn.SendDtmfRequest(SIM1_SLOTID, '*', 0), TELEPHONY_SUCCESS);
1010 ASSERT_EQ(callConn.StartDtmfRequest(SIM1_SLOTID, '*', 0), TELEPHONY_SUCCESS);
1011 ASSERT_EQ(callConn.StopDtmfRequest(SIM1_SLOTID, 0), TELEPHONY_SUCCESS);
1012 ASSERT_EQ(callConn.GetCallFailReasonRequest(SIM1_SLOTID), TELEPHONY_SUCCESS);
1013 #endif
1014 }
1015
1016 /**
1017 * @tc.number Telephony_CellularCallConfigRequest_001
1018 * @tc.name Test error branch
1019 * @tc.desc Function test
1020 */
1021 HWTEST_F(ZeroBranchTest, Telephony_CellularCallConfigRequest_001, Function | MediumTest | Level3)
1022 {
1023 AccessToken token;
1024 ConfigRequest configReq;
1025 configReq.SetDomainPreferenceModeRequest(SIM1_SLOTID, 1);
1026 configReq.GetDomainPreferenceModeRequest(SIM1_SLOTID);
1027 configReq.SetDomainPreferenceModeRequest(SIM2_SLOTID, 1);
1028 configReq.GetDomainPreferenceModeRequest(SIM2_SLOTID);
1029 bool enabled = false;
1030 configReq.SetImsSwitchStatusRequest(SIM1_SLOTID, enabled);
1031 configReq.GetImsSwitchStatusRequest(SIM1_SLOTID);
1032 int32_t state = 0;
1033 configReq.SetVoNRSwitchStatusRequest(SIM1_SLOTID, state);
1034 configReq.SetVoNRSwitchStatusRequest(SIM2_SLOTID, state);
1035 std::string value = "";
1036 configReq.SetImsConfigRequest(ImsConfigItem::ITEM_VIDEO_QUALITY, value);
1037 configReq.SetImsConfigRequest(ImsConfigItem::ITEM_VIDEO_QUALITY, 1);
1038 configReq.GetImsConfigRequest(ImsConfigItem::ITEM_VIDEO_QUALITY);
1039 configReq.SetImsFeatureValueRequest(FeatureType::TYPE_VOICE_OVER_LTE, 1);
1040 int32_t imsFeature = 0;
1041 configReq.GetImsFeatureValueRequest(FeatureType::TYPE_VOICE_OVER_LTE, imsFeature);
1042 configReq.SetMuteRequest(SIM1_SLOTID, 0);
1043 configReq.GetMuteRequest(SIM1_SLOTID);
1044 configReq.SetMuteRequest(SIM2_SLOTID, 0);
1045 configReq.GetMuteRequest(SIM2_SLOTID);
1046 std::vector<EmergencyCall> eccVec = {};
1047 configReq.GetEmergencyCallListRequest(SIM1_SLOTID);
1048 configReq.SetEmergencyCallListRequest(SIM1_SLOTID, eccVec);
1049 configReq.GetEmergencyCallListRequest(SIM2_SLOTID);
1050 configReq.SetEmergencyCallListRequest(SIM2_SLOTID, eccVec);
1051 ImsCapabilityList imsCapabilityList;
1052 #ifdef CALL_MANAGER_AUTO_START_OPTIMIZE
1053 ASSERT_EQ(configReq.UpdateImsCapabilities(SIM1_SLOTID, imsCapabilityList), CALL_ERR_RESOURCE_UNAVAILABLE);
1054 #else
1055 ASSERT_EQ(configReq.UpdateImsCapabilities(SIM1_SLOTID, imsCapabilityList), TELEPHONY_SUCCESS);
1056 #endif
1057 }
1058 } // namespace Telephony
1059 } // namespace OHOS