1 /*
2 * Copyright (C) 2021-2022 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 #define private public
17 #define protected public
18 #include "call_manager_gtest.h"
19
20 #include <gtest/gtest.h>
21 #include <cstring>
22 #include <string>
23
24 #include "bluetooth_hfp_ag.h"
25 #include "call_manager_connect.h"
26 #include "call_manager_service.h"
27 #include "surface_utils.h"
28 #include "telephony_types.h"
29 #include "voip_call.h"
30
31 using namespace OHOS::Bluetooth;
32 namespace OHOS {
33 namespace Telephony {
34 using namespace testing::ext;
35 constexpr int16_t SIM2_SLOTID = 1;
36 constexpr int16_t SIM1_SLOTID_NO_CARD = 0;
37 constexpr int16_t RETURN_VALUE_IS_ZERO = 0;
38 constexpr int16_t INVALID_NEGATIVE_ID = -100;
39 constexpr int16_t INVALID_POSITIVE_ID = 100;
40 constexpr int INVALID_DIAL_TYPE = 3;
41 constexpr int WAIT_TIME = 3;
42 constexpr int16_t CAMERA_ROTATION_90 = 90;
43 constexpr int16_t CAMERA_ROTATION_ERROR = 50;
44 constexpr int16_t SLEEP_1000_MS = 1000;
45 constexpr int BASE_TIME_MS = 1000;
46 constexpr int SLEEP_TIME_MS = 50;
47 constexpr int MAX_LIMIT_TIME = 18000;
48 constexpr int16_t SIM1_SLOTID = 0;
49 const std::string PHONE_NUMBER = "0000000000";
50
51 BluetoothCallClient &bluetoothCallClient = DelayedRefSingleton<BluetoothCallClient>::GetInstance();
52 std::unordered_map<int32_t, std::unordered_set<int32_t>> g_callStateMap;
53 int32_t g_newCallId = -1;
54 std::mutex CallInfoManager::mutex_;
55 int16_t CallInfoManager::newCallState_;
56 CallAttributeInfo CallInfoManager::updateCallInfo_;
57 std::unordered_set<int32_t> CallInfoManager::callIdSet_;
58
CallDetailsChange(const CallAttributeInfo & info)59 int32_t CallInfoManager::CallDetailsChange(const CallAttributeInfo &info)
60 {
61 TELEPHONY_LOGI("CallDetailsChange Start");
62 std::lock_guard<std::mutex> lock(mutex_);
63 updateCallInfo_ = info;
64 if (callIdSet_.find(updateCallInfo_.callId) == callIdSet_.end()) {
65 TELEPHONY_LOGI("CallDetailsChange new call");
66 callIdSet_.insert(updateCallInfo_.callId);
67 g_newCallId = updateCallInfo_.callId;
68 newCallState_ = (int32_t)updateCallInfo_.callState;
69 std::unordered_set<int32_t> newSet;
70 newSet.clear();
71 g_callStateMap.insert(std::pair<int32_t, std::unordered_set<int32_t>>(g_newCallId, newSet));
72 }
73 g_callStateMap[updateCallInfo_.callId].insert((int32_t)updateCallInfo_.callState);
74 return TELEPHONY_SUCCESS;
75 }
76
MeeTimeDetailsChange(const CallAttributeInfo & info)77 int32_t CallInfoManager::MeeTimeDetailsChange(const CallAttributeInfo &info)
78 {
79 TELEPHONY_LOGI("MeeTimeDetailsChange Start");
80 std::lock_guard<std::mutex> lock(mutex_);
81 updateCallInfo_ = info;
82 if (callIdSet_.find(updateCallInfo_.callId) == callIdSet_.end()) {
83 TELEPHONY_LOGI("MeeTimeDetailsChange new call");
84 callIdSet_.insert(updateCallInfo_.callId);
85 g_newCallId = updateCallInfo_.callId;
86 newCallState_ = (int32_t)updateCallInfo_.callState;
87 std::unordered_set<int32_t> newSet;
88 newSet.clear();
89 g_callStateMap.insert(std::pair<int32_t, std::unordered_set<int32_t>>(g_newCallId, newSet));
90 }
91 g_callStateMap[updateCallInfo_.callId].insert((int32_t)updateCallInfo_.callState);
92 return TELEPHONY_SUCCESS;
93 }
94
HasActiveStatus()95 bool CallInfoManager::HasActiveStatus()
96 {
97 TELEPHONY_LOGI("Waiting for activation !");
98 int sumUseTime = 0;
99 int slipMs = SLEEP_TIME_MS;
100 do {
101 if (!(HasState(g_newCallId, static_cast<int32_t>(TelCallState::CALL_STATUS_ACTIVE)))) {
102 usleep(slipMs * BASE_TIME_MS);
103 sumUseTime += slipMs;
104 } else {
105 TELEPHONY_LOGI("===========wait %d ms callStatus:%d==============", sumUseTime, newCallState_);
106 return true;
107 }
108 } while (sumUseTime < MAX_LIMIT_TIME);
109 TELEPHONY_LOGI("===========wait %d ms callStatus:%d=====not active=========", sumUseTime, newCallState_);
110 return false;
111 }
112
HasState(int callId,int32_t callState)113 bool CallInfoManager::HasState(int callId, int32_t callState)
114 {
115 if (g_callStateMap.find(callId) == g_callStateMap.end()) {
116 return false;
117 }
118 if (g_callStateMap[callId].find(callState) == g_callStateMap[callId].end()) {
119 return false;
120 }
121 return true;
122 }
123
CallEventChange(const CallEventInfo & info)124 int32_t CallInfoManager::CallEventChange(const CallEventInfo &info)
125 {
126 return TELEPHONY_SUCCESS;
127 }
128
Init()129 void CallInfoManager::Init()
130 {
131 g_newCallId = -1;
132 updateCallInfo_.speakerphoneOn = -1;
133 updateCallInfo_.startTime = -1;
134 updateCallInfo_.isEcc = -1;
135 updateCallInfo_.accountId = -1;
136 updateCallInfo_.callType = CallType::TYPE_CS;
137 updateCallInfo_.callId = -1;
138 updateCallInfo_.callState = TelCallState::CALL_STATUS_IDLE;
139 updateCallInfo_.videoState = VideoStateType::TYPE_VOICE;
140 }
141
LockCallId(bool eq,int32_t targetId,int32_t slipMs,int32_t timeoutMs)142 void CallInfoManager::LockCallId(bool eq, int32_t targetId, int32_t slipMs, int32_t timeoutMs)
143 {
144 int32_t useTimeMs = 0;
145 std::cout << "wait for a few seconds......" << std::endl;
146 while ((updateCallInfo_.callId != targetId) && (useTimeMs < timeoutMs)) {
147 usleep(slipMs * SLEEP_1000_MS);
148 useTimeMs += slipMs;
149 }
150 std::cout << "\n===========wait " << useTimeMs << " ms target:" << updateCallInfo_.callId << std::endl;
151 if (eq) {
152 EXPECT_EQ(updateCallInfo_.callId, targetId);
153 } else {
154 EXPECT_NE(updateCallInfo_.callId, targetId);
155 }
156 }
157
LockCallState(bool eq,int32_t targetState,int32_t slipMs,int32_t timeoutMs)158 void CallInfoManager::LockCallState(bool eq, int32_t targetState, int32_t slipMs, int32_t timeoutMs)
159 {
160 if (CallManagerGtest::clientPtr_->GetCallState() == targetState) {
161 return;
162 }
163 int32_t usedTimeMs = 0;
164 std::cout << "wait for a few seconds......" << std::endl;
165 while ((CallManagerGtest::clientPtr_->GetCallState() != targetState) && (usedTimeMs < timeoutMs)) {
166 usleep(slipMs * SLEEP_1000_MS);
167 usedTimeMs += slipMs;
168 }
169 int32_t callState = CallManagerGtest::clientPtr_->GetCallState();
170 std::cout << "waited " << usedTimeMs << " seconds" << std::endl;
171 std::cout << "target call state:" << targetState << std::endl;
172 if (eq) {
173 EXPECT_EQ(callState, targetState);
174 } else {
175 EXPECT_NE(callState, targetState);
176 }
177 }
178
HangUpCall()179 void CallManagerGtest::HangUpCall()
180 {
181 clientPtr_->HangUpCall(INVALID_CALLID);
182 }
183
184 class ClientErrorBranchTest : public testing::Test {
185 public:
SetUpTestCase()186 static void SetUpTestCase() {};
TearDownTestCase()187 static void TearDownTestCase() {};
SetUp()188 void SetUp() {};
TearDown()189 void TearDown() {};
190 };
191
192 /********************************************* Test RejectCall() ***********************************************/
193 /**
194 * @tc.number Telephony_CallManager_RejectCall_0100
195 * @tc.name test RejectCall with the callId does not exist
196 * @tc.desc Function test
197 */
198 HWTEST_F(CallManagerGtest, Telephony_CallManager_RejectCall_0100, Function | MediumTest | Level2)
199 {
200 AccessToken token;
201 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
202 return;
203 }
204 int32_t callId = INVALID_NEGATIVE_ID;
205 std::u16string textMessage = Str8ToStr16("this is a test message");
206 EXPECT_NE(CallManagerGtest::clientPtr_->RejectCall(callId, true, textMessage), RETURN_VALUE_IS_ZERO);
207 }
208
209 /**
210 * @tc.number Telephony_CallManager_RejectCall_0200
211 * @tc.name test RejectCall without permission
212 * @tc.desc Function test
213 */
214 HWTEST_F(CallManagerGtest, Telephony_CallManager_RejectCall_0200, Function | MediumTest | Level2)
215 {
216 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
217 return;
218 }
219 int32_t callId = INVALID_NEGATIVE_ID;
220 std::u16string textMessage = Str8ToStr16("this is a test message");
221 EXPECT_NE(CallManagerGtest::clientPtr_->RejectCall(callId, true, textMessage), RETURN_VALUE_IS_ZERO);
222 }
223
224 /**
225 * @tc.number Telephony_CallManager_RejectCall_0300
226 * @tc.name test RejectCall with the callId does not exist
227 * @tc.desc Function test
228 */
229 HWTEST_F(CallManagerGtest, Telephony_CallManager_RejectCall_0300, Function | MediumTest | Level2)
230 {
231 AccessToken token;
232 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
233 return;
234 }
235 EXPECT_NE(bluetoothCallClient.RejectCall(), RETURN_VALUE_IS_ZERO);
236 }
237
238 /******************************************* Test HangUpCall() *********************************************/
239 /**
240 * @tc.number Telephony_CallManager_HangUpCall_0100
241 * @tc.name test disconnect call with wrong callId
242 * @tc.desc Function test
243 */
244 HWTEST_F(CallManagerGtest, Telephony_CallManager_HangUpCall_0100, Function | MediumTest | Level2)
245 {
246 AccessToken token;
247 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
248 return;
249 }
250 int32_t callId = INVALID_NEGATIVE_ID;
251 EXPECT_NE(CallManagerGtest::clientPtr_->HangUpCall(callId), RETURN_VALUE_IS_ZERO);
252 }
253
254 /**
255 * @tc.number Telephony_CallManager_HangUpCall_0200 to do ...
256 * @tc.name test ring disconnect call after DialCall,
257 * wait for the correct status of the callback to execute correctly
258 * @tc.desc Function test
259 */
260 HWTEST_F(CallManagerGtest, Telephony_CallManager_HangUpCall_0200, Function | MediumTest | Level2)
261 {
262 AccessToken token;
263 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
264 return;
265 }
266 InitDialInfo(
267 0, (int32_t)VideoStateType::TYPE_VOICE, (int32_t)DialScene::CALL_NORMAL, (int32_t)DialType::DIAL_CARRIER_TYPE);
268 int32_t callId = INVALID_NEGATIVE_ID;
269 EXPECT_NE(CallManagerGtest::clientPtr_->HangUpCall(callId), RETURN_VALUE_IS_ZERO);
270 }
271
272 /**
273 * @tc.number Telephony_CallManager_HangUpCall_0300 to do ...
274 * @tc.name test ring disconnect call after DialCall without permission
275 * @tc.desc Function test
276 */
277 HWTEST_F(CallManagerGtest, Telephony_CallManager_HangUpCall_0300, Function | MediumTest | Level2)
278 {
279 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
280 return;
281 }
282 InitDialInfo(
283 0, (int32_t)VideoStateType::TYPE_VOICE, (int32_t)DialScene::CALL_NORMAL, (int32_t)DialType::DIAL_CARRIER_TYPE);
284 int32_t callId = INVALID_NEGATIVE_ID;
285 EXPECT_NE(CallManagerGtest::clientPtr_->HangUpCall(callId), RETURN_VALUE_IS_ZERO);
286 }
287
288 /**
289 * @tc.number Telephony_CallManager_HangUpCall_0400 to do ...
290 * @tc.name test ring disconnect call after DialCall
291 * @tc.desc Function test
292 */
293 HWTEST_F(CallManagerGtest, Telephony_CallManager_HangUpCall_0400, Function | MediumTest | Level2)
294 {
295 AccessToken token;
296 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
297 return;
298 }
299 EXPECT_NE(bluetoothCallClient.HangUpCall(), RETURN_VALUE_IS_ZERO);
300 }
301
302 /******************************************* Test GetCallState() *********************************************/
303 /**
304 * @tc.number Telephony_CallManager_GetCallState_0100
305 * @tc.name test GetCallState() without call
306 * @tc.desc Function test
307 */
308 HWTEST_F(CallManagerGtest, Telephony_CallManager_GetCallState_0100, Function | MediumTest | Level1)
309 {
310 AccessToken token;
311 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
312 return;
313 }
314 EXPECT_GE(CallManagerGtest::clientPtr_->GetCallState(), (int32_t)CallStateToApp::CALL_STATE_IDLE);
315 }
316
317 /**
318 * @tc.number Telephony_CallManager_GetCallState_0200 to do ...
319 * @tc.name test GetCallState() after call
320 * wait for the correct status of the callback to execute correctly
321 * @tc.desc Function test
322 */
323 HWTEST_F(CallManagerGtest, Telephony_CallManager_GetCallState_0200, Function | MediumTest | Level1)
324 {
325 AccessToken token;
326 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
327 return;
328 }
329 InitDialInfo(
330 0, (int32_t)VideoStateType::TYPE_VOICE, (int32_t)DialScene::CALL_NORMAL, (int32_t)DialType::DIAL_CARRIER_TYPE);
331 EXPECT_GE(CallManagerGtest::clientPtr_->GetCallState(), (int32_t)CallStateToApp::CALL_STATE_IDLE);
332 }
333
334 /**
335 * @tc.number Telephony_CallManager_GetCallState_0300
336 * @tc.name test GetCallState()
337 * @tc.desc Function test
338 */
339 HWTEST_F(CallManagerGtest, Telephony_CallManager_GetCallState_0300, Function | MediumTest | Level1)
340 {
341 AccessToken token;
342 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
343 return;
344 }
345 EXPECT_EQ(bluetoothCallClient.GetCallState(), TELEPHONY_SUCCESS);
346 }
347
348 /**************************** Test ReportAudioDeviceInfo() ****************************/
349 /**
350 * @tc.number Telephony_CallManager_ReportAudioDeviceInfo_0100
351 * @tc.name test report audio device info
352 * @tc.desc Function test
353 */
354 HWTEST_F(CallManagerGtest, Telephony_CallManager_ReportAudioDeviceInfo_0100, TestSize.Level0)
355 {
356 AccessToken token;
357 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
358 return;
359 }
360 std::string phoneNumber = "10086";
361 if (clientPtr_->GetCallState() == static_cast<int>(CallStateToApp::CALL_STATE_OFFHOOK)) {
362 HangUpCall();
363 }
364 EXPECT_GE(CallManagerGtest::clientPtr_->DialCall(Str8ToStr16(phoneNumber), dialInfo_), RETURN_VALUE_IS_ZERO);
365 EXPECT_GE(CallManagerGtest::clientPtr_->ReportAudioDeviceInfo(), RETURN_VALUE_IS_ZERO);
366 sleep(1);
367 if (clientPtr_->GetCallState() == static_cast<int>(CallStateToApp::CALL_STATE_OFFHOOK)) {
368 HangUpCall();
369 }
370 }
371
372 /**
373 * @tc.number Telephony_CallManager_ReportAudioDeviceInfo_0200
374 * @tc.name test report audio device info without active call
375 * @tc.desc Function test
376 */
377 HWTEST_F(CallManagerGtest, Telephony_CallManager_ReportAudioDeviceInfo_0200, TestSize.Level1)
378 {
379 AccessToken token;
380 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
381 return;
382 }
383 if (clientPtr_->GetCallState() == static_cast<int>(CallStateToApp::CALL_STATE_OFFHOOK)) {
384 HangUpCall();
385 }
386 EXPECT_GE(CallManagerGtest::clientPtr_->ReportAudioDeviceInfo(), RETURN_VALUE_IS_ZERO);
387 }
388
389 /**
390 * @tc.number Telephony_CallManager_ReportAudioDeviceInfo_0300
391 * @tc.name test report audio device info without permission
392 * @tc.desc Function test
393 */
394 HWTEST_F(CallManagerGtest, Telephony_CallManager_ReportAudioDeviceInfo_0300, TestSize.Level0)
395 {
396 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
397 return;
398 }
399 EXPECT_NE(CallManagerGtest::clientPtr_->ReportAudioDeviceInfo(), RETURN_VALUE_IS_ZERO);
400 }
401
402 /******************************************* Test HoldCall() *********************************************/
403 /**
404 * @tc.number Telephony_CallManager_HoldCall_0100
405 * @tc.name Hold calls for non-existent call ID
406 * @tc.desc Function test
407 */
408 HWTEST_F(CallManagerGtest, Telephony_CallManager_HoldCall_0100, Function | MediumTest | Level2)
409 {
410 AccessToken token;
411 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
412 return;
413 }
414 int32_t callId = INVALID_NEGATIVE_ID;
415 EXPECT_NE(CallManagerGtest::clientPtr_->HoldCall(callId), RETURN_VALUE_IS_ZERO);
416 }
417
418 /**
419 * @tc.number Telephony_CallManager_HoldCall_0200 to do ...
420 * @tc.name coming call test hold call, return non 0
421 * wait for the correct status of the callback to execute correctly
422 * @tc.desc Function test
423 */
424 HWTEST_F(CallManagerGtest, Telephony_CallManager_HoldCall_0200, Function | MediumTest | Level2)
425 {
426 AccessToken token;
427 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
428 return;
429 }
430 InitDialInfo(
431 0, (int32_t)VideoStateType::TYPE_VOICE, (int32_t)DialScene::CALL_NORMAL, (int32_t)DialType::DIAL_CARRIER_TYPE);
432 int32_t callId = INVALID_NEGATIVE_ID;
433 EXPECT_NE(CallManagerGtest::clientPtr_->HoldCall(callId), RETURN_VALUE_IS_ZERO);
434 }
435
436 /**
437 * @tc.number Telephony_CallManager_HoldCall_0300 to do ...
438 * @tc.name coming call test hold call without permission
439 * @tc.desc Function test
440 */
441 HWTEST_F(CallManagerGtest, Telephony_CallManager_HoldCall_0300, Function | MediumTest | Level2)
442 {
443 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
444 return;
445 }
446 InitDialInfo(
447 0, (int32_t)VideoStateType::TYPE_VOICE, (int32_t)DialScene::CALL_NORMAL, (int32_t)DialType::DIAL_CARRIER_TYPE);
448 int32_t callId = INVALID_NEGATIVE_ID;
449 EXPECT_NE(CallManagerGtest::clientPtr_->HoldCall(callId), RETURN_VALUE_IS_ZERO);
450 }
451
452 /**
453 * @tc.number Telephony_CallManager_HoldCall_0400
454 * @tc.name Hold calls for non-existent call ID
455 * @tc.desc Function test
456 */
457 HWTEST_F(CallManagerGtest, Telephony_CallManager_HoldCall_0400, Function | MediumTest | Level2)
458 {
459 AccessToken token;
460 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
461 return;
462 }
463 EXPECT_NE(bluetoothCallClient.HoldCall(), RETURN_VALUE_IS_ZERO);
464 }
465
466 /******************************************* Test UnHoldCall() *********************************************/
467 /**
468 * @tc.number Telephony_CallManager_UnHoldCall_0100
469 * @tc.name Replies calls to a call ID that does not exist, return non 0
470 * @tc.desc Function test
471 */
472 HWTEST_F(CallManagerGtest, Telephony_CallManager_UnHoldCall_0100, Function | MediumTest | Level2)
473 {
474 AccessToken token;
475 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
476 return;
477 }
478 int32_t callId = INVALID_NEGATIVE_ID;
479 EXPECT_NE(CallManagerGtest::clientPtr_->UnHoldCall(callId), RETURN_VALUE_IS_ZERO);
480 }
481
482 /**
483 * @tc.number Telephony_CallManager_UnHoldCall_0200 to do ...
484 * @tc.name Passing in the suspended call ID, test UnHoldCall() return non 0
485 * wait for the correct status of the callback to execute correctly
486 * @tc.desc Function test
487 */
488 HWTEST_F(CallManagerGtest, Telephony_CallManager_UnHoldCall_0200, Function | MediumTest | Level2)
489 {
490 AccessToken token;
491 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
492 return;
493 }
494 InitDialInfo(
495 0, (int32_t)VideoStateType::TYPE_VOICE, (int32_t)DialScene::CALL_NORMAL, (int32_t)DialType::DIAL_CARRIER_TYPE);
496 int32_t callId = INVALID_NEGATIVE_ID;
497 EXPECT_NE(CallManagerGtest::clientPtr_->UnHoldCall(callId), RETURN_VALUE_IS_ZERO);
498 }
499
500 /**
501 * @tc.number Telephony_CallManager_UnHoldCall_0300
502 * @tc.name Replies calls to a call ID that does not exist without permission
503 * @tc.desc Function test
504 */
505 HWTEST_F(CallManagerGtest, Telephony_CallManager_UnHoldCall_0300, Function | MediumTest | Level2)
506 {
507 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
508 return;
509 }
510 int32_t callId = INVALID_NEGATIVE_ID;
511 EXPECT_NE(CallManagerGtest::clientPtr_->UnHoldCall(callId), RETURN_VALUE_IS_ZERO);
512 }
513
514 /**
515 * @tc.number Telephony_CallManager_UnHoldCall_0400
516 * @tc.name Replies calls to a call ID that does not exist, return non 0
517 * @tc.desc Function test
518 */
519 HWTEST_F(CallManagerGtest, Telephony_CallManager_UnHoldCall_0400, Function | MediumTest | Level2)
520 {
521 AccessToken token;
522 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
523 return;
524 }
525 EXPECT_NE(bluetoothCallClient.UnHoldCall(), RETURN_VALUE_IS_ZERO);
526 }
527
528 /******************************************* Test SwitchCall() *********************************************/
529 /**
530 * @tc.number Telephony_CallManager_SwitchCall_0100
531 * @tc.name Test returns 0 after switching call
532 * @tc.desc Function test
533 */
534 HWTEST_F(CallManagerGtest, Telephony_CallManager_SwitchCall_0100, Function | MediumTest | Level2)
535 {
536 AccessToken token;
537 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
538 return;
539 }
540 int32_t callId = INVALID_NEGATIVE_ID;
541 EXPECT_NE(CallManagerGtest::clientPtr_->SwitchCall(callId), RETURN_VALUE_IS_ZERO);
542 }
543
544 /**
545 * @tc.number Telephony_CallManager_SwitchCall_0200
546 * @tc.name Test returns 0 after switching call without permission
547 * @tc.desc Function test
548 */
549 HWTEST_F(CallManagerGtest, Telephony_CallManager_SwitchCall_0200, Function | MediumTest | Level2)
550 {
551 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
552 return;
553 }
554 int32_t callId = INVALID_NEGATIVE_ID;
555 EXPECT_NE(CallManagerGtest::clientPtr_->SwitchCall(callId), RETURN_VALUE_IS_ZERO);
556 }
557
558 /**
559 * @tc.number Telephony_CallManager_SwitchCall_0300
560 * @tc.name Test returns 0 after switching call
561 * @tc.desc Function test
562 */
563 HWTEST_F(CallManagerGtest, Telephony_CallManager_SwitchCall_0300, Function | MediumTest | Level2)
564 {
565 AccessToken token;
566 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
567 return;
568 }
569 EXPECT_NE(bluetoothCallClient.SwitchCall(), RETURN_VALUE_IS_ZERO);
570 }
571
572 /**
573 * @tc.number Telephony_CallManager_SwitchCall_0400
574 * @tc.name Test returns 0 after switching call, and DialCall(), return true
575 * wait for the correct status of the callback to execute correctly
576 * @tc.desc Function test
577 */
578 HWTEST_F(CallManagerGtest, Telephony_CallManager_SwitchCall_0400, Function | MediumTest | Level2)
579 {
580 AccessToken token;
581 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
582 return;
583 }
584
585 if (clientPtr_->GetCallState() == static_cast<int>(CallStateToApp::CALL_STATE_OFFHOOK)) {
586 HangUpCall();
587 }
588 std::string phoneNumber = "44444444444";
589 int32_t callId = INVALID_NEGATIVE_ID;
590 InitDialInfo(
591 0, (int32_t)VideoStateType::TYPE_VOICE, (int32_t)DialScene::CALL_NORMAL, (int32_t)DialType::DIAL_CARRIER_TYPE);
592 int32_t ret = CallManagerGtest::clientPtr_->DialCall(Str8ToStr16(phoneNumber), dialInfo_);
593 EXPECT_GE(ret, RETURN_VALUE_IS_ZERO);
594 EXPECT_NE(CallManagerGtest::clientPtr_->SwitchCall(callId), RETURN_VALUE_IS_ZERO);
595 sleep(WAIT_TIME);
596 if (clientPtr_->GetCallState() == static_cast<int>(CallStateToApp::CALL_STATE_OFFHOOK)) {
597 HangUpCall();
598 }
599 }
600
601 /********************************************* Test HasCall() ***********************************************/
602 /**
603 * @tc.number Telephony_CallManager_HasCall_0100
604 * @tc.name in CALL_STATE_IDLE status, than test Hascall(), return false
605 * @tc.desc Function test
606 */
607 HWTEST_F(CallManagerGtest, Telephony_CallManager_HasCall_0100, Function | MediumTest | Level2)
608 {
609 AccessToken token;
610 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
611 return;
612 }
613 if (clientPtr_->GetCallState() == static_cast<int>(CallStateToApp::CALL_STATE_OFFHOOK)) {
614 HangUpCall();
615 }
616 int32_t callState = CallManagerGtest::clientPtr_->GetCallState();
617 int32_t idleState = (int32_t)CallStateToApp::CALL_STATE_IDLE;
618 ASSERT_GE(callState, idleState);
619 CallManagerGtest::clientPtr_->HasCall();
620 CallManagerGtest::clientPtr_->HasCall(false);
621 CallManagerGtest::clientPtr_->HasCall(true);
622 }
623
624 /**
625 * @tc.number Telephony_CallManager_HasCall_0200 to do ...
626 * @tc.name The wrong number is not on call, return false
627 * @tc.desc Function test
628 */
629 HWTEST_F(CallManagerGtest, Telephony_CallManager_HasCall_0200, Function | MediumTest | Level1)
630 {
631 AccessToken token;
632 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
633 return;
634 }
635
636 std::string phoneNumber = "";
637 InitDialInfo(
638 0, (int32_t)VideoStateType::TYPE_VOICE, (int32_t)DialScene::CALL_NORMAL, (int32_t)DialType::DIAL_CARRIER_TYPE);
639 int32_t ret = CallManagerGtest::clientPtr_->DialCall(Str8ToStr16(phoneNumber), dialInfo_);
640 EXPECT_NE(ret, RETURN_VALUE_IS_ZERO);
641 CallManagerGtest::clientPtr_->HasCall();
642 CallManagerGtest::clientPtr_->HasCall(false);
643 CallManagerGtest::clientPtr_->HasCall(true);
644 }
645
646 /**
647 * @tc.number Telephony_CallManager_HasCall_0300 to do ...
648 * @tc.name Free time test Hascall(), return false
649 * @tc.desc Function test
650 */
651 HWTEST_F(CallManagerGtest, Telephony_CallManager_HasCall_0300, Function | MediumTest | Level1)
652 {
653 AccessToken token;
654 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
655 return;
656 }
657 ASSERT_GE(CallManagerGtest::clientPtr_->GetCallState(), (int32_t)CallStateToApp::CALL_STATE_IDLE);
658 CallManagerGtest::clientPtr_->HasCall();
659 CallManagerGtest::clientPtr_->HasCall(false);
660 CallManagerGtest::clientPtr_->HasCall(true);
661 }
662
663 /**
664 * @tc.number Telephony_CallManager_HasCall_0400
665 * @tc.name in CALL_STATE_IDLE status, than test Hascall(), return false
666 * @tc.desc Function test
667 */
668 HWTEST_F(CallManagerGtest, Telephony_CallManager_HasCall_0400, Function | MediumTest | Level2)
669 {
670 AccessToken token;
671 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
672 return;
673 }
674 ASSERT_GE(CallManagerGtest::clientPtr_->GetCallState(), (int32_t)CallStateToApp::CALL_STATE_IDLE);
675 bluetoothCallClient.HasCall();
676 }
677
678 /********************************* Test IsNewCallAllowed() ***************************************/
679 /**
680 * @tc.number Telephony_CallManager_IsNewCallAllowed_0100
681 * @tc.name The call failed after making a call without the card
682 * @tc.desc Function test
683 */
684 HWTEST_F(CallManagerGtest, Telephony_CallManager_IsNewCallAllowed_0100, Function | MediumTest | Level1)
685 {
686 AccessToken token;
687 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
688 return;
689 }
690 if (clientPtr_->GetCallState() == static_cast<int>(CallStateToApp::CALL_STATE_OFFHOOK)) {
691 HangUpCall();
692 }
693 std::string phoneNumber = "55555555555";
694 InitDialInfo(SIM1_SLOTID, (int32_t)VideoStateType::TYPE_VOICE, (int32_t)DialScene::CALL_NORMAL,
695 (int32_t)DialType::DIAL_CARRIER_TYPE);
696 int32_t ret = CallManagerGtest::clientPtr_->DialCall(Str8ToStr16(phoneNumber), dialInfo_);
697 ASSERT_GE(ret, RETURN_VALUE_IS_ZERO);
698 bool enabled = false;
699 EXPECT_EQ(CallManagerGtest::clientPtr_->IsNewCallAllowed(enabled), TELEPHONY_SUCCESS);
700 EXPECT_EQ(enabled, true);
701 sleep(WAIT_TIME);
702 if (clientPtr_->GetCallState() == static_cast<int>(CallStateToApp::CALL_STATE_OFFHOOK)) {
703 HangUpCall();
704 }
705 }
706
707 /**
708 * @tc.number Telephony_CallManager_IsNewCallAllowed_0200
709 * @tc.name The call failed after making a call without the card
710 * @tc.desc Function test
711 */
712 HWTEST_F(CallManagerGtest, Telephony_CallManager_IsNewCallAllowed_0200, Function | MediumTest | Level1)
713 {
714 AccessToken token;
715 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
716 return;
717 }
718 if (clientPtr_->GetCallState() == static_cast<int>(CallStateToApp::CALL_STATE_OFFHOOK)) {
719 HangUpCall();
720 }
721 bool enabled = false;
722 EXPECT_EQ(bluetoothCallClient.IsNewCallAllowed(enabled), TELEPHONY_SUCCESS);
723 EXPECT_EQ(enabled, true);
724 }
725
726 /********************************************* Test IsRinging() ***********************************************/
727 /**
728 * @tc.number Telephony_CallManager_IsRinging_0100
729 * @tc.name There is no call, return true
730 * @tc.desc Function test
731 */
732 HWTEST_F(CallManagerGtest, Telephony_CallManager_IsRinging_0100, Function | MediumTest | Level1)
733 {
734 AccessToken token;
735 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
736 return;
737 }
738 int32_t callState = CallManagerGtest::clientPtr_->GetCallState();
739 int32_t idleState = (int32_t)CallStateToApp::CALL_STATE_IDLE;
740 ASSERT_GE(callState, idleState);
741 bool enabled = false;
742 EXPECT_EQ(CallManagerGtest::clientPtr_->IsRinging(enabled), TELEPHONY_SUCCESS);
743 EXPECT_NE(enabled, true);
744 }
745
746 /**
747 * @tc.number Telephony_CallManager_IsRinging_0200
748 * @tc.name There is no call, return true
749 * @tc.desc Function test
750 */
751 HWTEST_F(CallManagerGtest, Telephony_CallManager_IsRinging_0200, Function | MediumTest | Level1)
752 {
753 AccessToken token;
754 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
755 return;
756 }
757 int32_t callState = CallManagerGtest::clientPtr_->GetCallState();
758 int32_t idleState = (int32_t)CallStateToApp::CALL_STATE_IDLE;
759 ASSERT_GE(callState, idleState);
760 bool enabled = false;
761 EXPECT_EQ(bluetoothCallClient.IsRinging(enabled), TELEPHONY_SUCCESS);
762 EXPECT_NE(enabled, true);
763 }
764
765 /***************************************** Test CombineConference() ********************************************/
766 /**
767 * @tc.number Telephony_CallManager_CombineConference_0100
768 * @tc.name Import callId "@&%¥", test CombineConference(), return non 0
769 * @tc.desc Function test
770 */
771 HWTEST_F(CallManagerGtest, Telephony_CallManager_CombineConference_0100, Function | MediumTest | Level2)
772 {
773 AccessToken token;
774 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
775 return;
776 }
777 int32_t callId = INVALID_NEGATIVE_ID;
778 EXPECT_NE(CallManagerGtest::clientPtr_->CombineConference(callId), RETURN_VALUE_IS_ZERO);
779 }
780
781 /**
782 * @tc.number Telephony_CallManager_CombineConference_0200
783 * @tc.name Import callId "100", test CombineConference(), return non 0
784 * @tc.desc Function test
785 */
786 HWTEST_F(CallManagerGtest, Telephony_CallManager_CombineConference_0200, Function | MediumTest | Level2)
787 {
788 AccessToken token;
789 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
790 return;
791 }
792 int32_t callId = INVALID_POSITIVE_ID;
793 EXPECT_NE(CallManagerGtest::clientPtr_->CombineConference(callId), RETURN_VALUE_IS_ZERO);
794 }
795
796 /**
797 * @tc.number Telephony_CallManager_CombineConference_0300
798 * @tc.name Import callId "@&%¥", test CombineConference(), return non 0
799 * @tc.desc Function test
800 */
801 HWTEST_F(CallManagerGtest, Telephony_CallManager_CombineConference_0300, Function | MediumTest | Level2)
802 {
803 AccessToken token;
804 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
805 return;
806 }
807 EXPECT_NE(bluetoothCallClient.CombineConference(), RETURN_VALUE_IS_ZERO);
808 }
809
810 /**
811 * @tc.number Telephony_CallManager_CombineConference_0400
812 * @tc.name Import callId "@&%¥", test CombineConference(), return non 0
813 * @tc.desc Function test
814 */
815 HWTEST_F(CallManagerGtest, Telephony_CallManager_CombineConference_0400, Function | MediumTest | Level2)
816 {
817 AccessToken token;
818 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
819 return;
820 }
821
822 std::string phoneNumber = "10086";
823 InitDialInfo(
824 0, (int32_t)VideoStateType::TYPE_VOICE, (int32_t)DialScene::CALL_NORMAL, (int32_t)DialType::DIAL_CARRIER_TYPE);
825 EXPECT_GE(CallManagerGtest::clientPtr_->DialCall(Str8ToStr16(phoneNumber), dialInfo_), RETURN_VALUE_IS_ZERO);
826 if (CallInfoManager::HasActiveStatus()) {
827 EXPECT_NE(CallManagerGtest::clientPtr_->CombineConference(g_newCallId), RETURN_VALUE_IS_ZERO);
828 }
829 sleep(WAIT_TIME);
830 if (clientPtr_->GetCallState() == static_cast<int>(CallStateToApp::CALL_STATE_OFFHOOK)) {
831 HangUpCall();
832 }
833 }
834
835 /***************************************** Test SeparateConference() ********************************************/
836 /**
837 * @tc.number Telephony_CallManager_SeparateConference_0100
838 * @tc.name Import callId " -100", test SeparateConference(), return non 0
839 * @tc.desc Function test
840 */
841 HWTEST_F(CallManagerGtest, Telephony_CallManager_SeparateConference_0100, Function | MediumTest | Level2)
842 {
843 AccessToken token;
844 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
845 return;
846 }
847 int32_t callId = INVALID_NEGATIVE_ID;
848 EXPECT_NE(CallManagerGtest::clientPtr_->SeparateConference(callId), RETURN_VALUE_IS_ZERO);
849 }
850
851 /**
852 * @tc.number Telephony_CallManager_SeparateConference_0200
853 * @tc.name Import callId "100", test SeparateConference(), return non 0
854 * @tc.desc Function test
855 */
856 HWTEST_F(CallManagerGtest, Telephony_CallManager_SeparateConference_0200, Function | MediumTest | Level2)
857 {
858 AccessToken token;
859 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
860 return;
861 }
862 int32_t callId = INVALID_POSITIVE_ID;
863 EXPECT_NE(CallManagerGtest::clientPtr_->SeparateConference(callId), RETURN_VALUE_IS_ZERO);
864 }
865
866 /**
867 * @tc.number Telephony_CallManager_SeparateConference_0300
868 * @tc.name Import callId " -100", test SeparateConference(), return non 0
869 * @tc.desc Function test
870 */
871 HWTEST_F(CallManagerGtest, Telephony_CallManager_SeparateConference_0300, Function | MediumTest | Level2)
872 {
873 AccessToken token;
874 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
875 return;
876 }
877 EXPECT_NE(bluetoothCallClient.SeparateConference(), RETURN_VALUE_IS_ZERO);
878 }
879
880 /**
881 * @tc.number Telephony_CallManager_SeparateConference_0400
882 * @tc.name Import callId normal, test SeparateConference(), return non 0
883 * @tc.desc Function test
884 */
885 HWTEST_F(CallManagerGtest, Telephony_CallManager_SeparateConference_0400, Function | MediumTest | Level2)
886 {
887 AccessToken token;
888 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
889 return;
890 }
891
892 InitDialInfo(
893 0, (int32_t)VideoStateType::TYPE_VOICE, (int32_t)DialScene::CALL_NORMAL, (int32_t)DialType::DIAL_CARRIER_TYPE);
894 EXPECT_GE(CallManagerGtest::clientPtr_->DialCall(Str8ToStr16("10086"), dialInfo_), RETURN_VALUE_IS_ZERO);
895 if (CallInfoManager::HasActiveStatus()) {
896 EXPECT_NE(CallManagerGtest::clientPtr_->SeparateConference(g_newCallId), RETURN_VALUE_IS_ZERO);
897 }
898 sleep(WAIT_TIME);
899 if (clientPtr_->GetCallState() == static_cast<int>(CallStateToApp::CALL_STATE_OFFHOOK)) {
900 HangUpCall();
901 }
902 }
903
904 /***************************************** Test KickOutFromConference() ********************************************/
905 /**
906 * @tc.number Telephony_CallManager_KickOutFromConference_0100
907 * @tc.name Import callId " -100", test KickOutFromConference(), return non 0
908 * @tc.desc Function test
909 */
910 HWTEST_F(CallManagerGtest, Telephony_CallManager_KickOutFromConference_0100, Function | MediumTest | Level2)
911 {
912 AccessToken token;
913 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
914 return;
915 }
916 int32_t callId = INVALID_NEGATIVE_ID;
917 EXPECT_NE(CallManagerGtest::clientPtr_->KickOutFromConference(callId), RETURN_VALUE_IS_ZERO);
918 }
919
920 /**
921 * @tc.number Telephony_CallManager_KickOutFromConference_0200
922 * @tc.name Import callId "100", test KickOutFromConference(), return non 0
923 * @tc.desc Function test
924 */
925 HWTEST_F(CallManagerGtest, Telephony_CallManager_KickOutFromConference_0200, Function | MediumTest | Level2)
926 {
927 AccessToken token;
928 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
929 return;
930 }
931 int32_t callId = INVALID_POSITIVE_ID;
932 EXPECT_NE(CallManagerGtest::clientPtr_->KickOutFromConference(callId), RETURN_VALUE_IS_ZERO);
933 }
934
935 /**
936 * @tc.number Telephony_CallManager_KickOutFromConference_0300
937 * @tc.name Import callId " -100", test KickOutFromConference(), return non 0
938 * @tc.desc Function test
939 */
940 HWTEST_F(CallManagerGtest, Telephony_CallManager_KickOutFromConference_0300, Function | MediumTest | Level2)
941 {
942 AccessToken token;
943 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
944 return;
945 }
946 EXPECT_NE(bluetoothCallClient.KickOutFromConference(), RETURN_VALUE_IS_ZERO);
947 }
948 } // namespace Telephony
949 } // namespace OHOS
950