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 #define private public 16 #define protected public 17 18 #include <map> 19 #include <mutex> 20 21 #include "call_earthquake_alarm_locator.h" 22 #include "data_ability_observer_stub.h" 23 #include "call_manager_inner_type.h" 24 #include "call_state_listener_base.h" 25 #include "call_control_manager.h" 26 #include "audio_control_manager.h" 27 #include "ring.h" 28 #include "common_type.h" 29 #include "call_base.h" 30 #include "cs_call.h" 31 #include "call_voice_assistant_manager.h" 32 #include "gtest/gtest.h" 33 34 namespace OHOS { 35 namespace Telephony { 36 using namespace testing::ext; 37 using namespace std; 38 constexpr int32_t CALL_ID_NUM = -1; 39 constexpr int32_t ACCOUNT_ID = -1; 40 class CallVoiceAssistantManagerTest : public testing::Test { 41 public: SetUpTestCase()42 static void SetUpTestCase() {}; TearDownTestCase()43 static void TearDownTestCase() {}; SetUp()44 virtual void SetUp() {}; TearDown()45 virtual void TearDown() {}; 46 }; 47 48 /** 49 * @tc.number Telephony_CallVoiceAssistantManager_001 50 * @tc.name test normal branch 51 * @tc.desc Function test 52 */ 53 HWTEST_F(CallVoiceAssistantManagerTest, Telephony_CallVoiceAssistantManager_001, Function | MediumTest | Level3) 54 { 55 std::string dialing = "dial"; 56 std::string incoming = "come"; 57 DialParaInfo paraInfo; 58 sptr<CallBase> callObjectPtr = std::make_unique<CSCall>(paraInfo).release(); 59 TelCallState priorState = TelCallState::CALL_STATUS_DIALING; 60 TelCallState nextState = TelCallState::CALL_STATUS_INCOMING; 61 std::shared_ptr<CallVoiceAssistantManager> voicePtr = CallVoiceAssistantManager::GetInstance(); 62 if (voicePtr == nullptr) { 63 TELEPHONY_LOGE("voicePtr is nullptr"); 64 return; 65 } 66 voicePtr->mInstance_ = voicePtr; 67 voicePtr->CallStateUpdated(callObjectPtr, priorState, nextState); 68 voicePtr->CallStatusDialing(CALL_ID_NUM, ACCOUNT_ID); 69 voicePtr->CallStatusIncoming(CALL_ID_NUM, ACCOUNT_ID); 70 voicePtr->CallStatusActive(CALL_ID_NUM, ACCOUNT_ID); 71 voicePtr->CallStatusDisconnected(CALL_ID_NUM, ACCOUNT_ID); 72 voicePtr->ConnectAbility(ACCOUNT_ID); 73 voicePtr->OnStartService(incoming, ACCOUNT_ID); 74 voicePtr->RegisterListenSwitchState(); 75 voicePtr->PublishCommonEvent(true, incoming); 76 voicePtr->DisconnectAbility(); 77 voicePtr->UnRegisterListenSwitchState(); 78 voicePtr->PublishCommonEvent(false, dialing); 79 voicePtr->OnStopService(); 80 voicePtr->Release(); 81 ASSERT_TRUE(voicePtr->GetInstance() != nullptr); 82 ASSERT_TRUE(voicePtr->settingsCallback_ == nullptr); 83 ASSERT_TRUE(voicePtr->connectCallback_ == nullptr); 84 ASSERT_TRUE(voicePtr->mRemoteObject == nullptr); 85 } 86 87 /** 88 * @tc.number Telephony_CallVoiceAssistantManager_002 89 * @tc.name test normal branch 90 * @tc.desc Function test 91 */ 92 HWTEST_F(CallVoiceAssistantManagerTest, Telephony_CallVoiceAssistantManager_002, Function | MediumTest | Level3) 93 { 94 std::string value = ""; 95 std::string dialing = "dial"; 96 std::string controlSwitch = "incoming_call_voice_control_switch"; 97 ContactInfo contactInfo; 98 std::shared_ptr<CallVoiceAssistantManager> voicePtr = CallVoiceAssistantManager::GetInstance(); 99 sptr<IRemoteObject> remoteObject = sptr<VoiceAssistantConnectCallback>::MakeSptr(ACCOUNT_ID); 100 if (voicePtr == nullptr) { 101 TELEPHONY_LOGE("voicePtr is nullptr"); 102 return; 103 } 104 voicePtr->mInstance_ = voicePtr; 105 voicePtr->SetIsControlSwitchOn(true); 106 voicePtr->GetIsControlSwitchOn(); 107 voicePtr->GetIsPlayRing(); 108 voicePtr->UpdateVoipCallState(ACCOUNT_ID); 109 auto infoptr = voicePtr->GetContactInfo(ACCOUNT_ID); 110 voicePtr->UpdateNumberLocation(value, ACCOUNT_ID); 111 voicePtr->UpdateContactInfo(contactInfo, ACCOUNT_ID); 112 voicePtr->UpdateRemoteObject(remoteObject, ACCOUNT_ID, nullptr); 113 voicePtr->OnStopService(); 114 voicePtr->Initial(); 115 voicePtr->QueryValue(controlSwitch, value); 116 voicePtr->IsStartVoiceBroadcast(); 117 voicePtr->IsSwitchOn(controlSwitch); 118 voicePtr->OnStartService(dialing, ACCOUNT_ID); 119 voicePtr->MuteRinger(); 120 voicePtr->UpdateReplyData(value); 121 voicePtr->GetSendString(infoptr); 122 voicePtr->SendRequest(infoptr, true); 123 voicePtr->OnStopService(); 124 voicePtr->Release(); 125 ASSERT_TRUE(voicePtr->GetInstance() != nullptr); 126 ASSERT_TRUE(voicePtr->settingsCallback_ == nullptr); 127 ASSERT_TRUE(voicePtr->connectCallback_ == nullptr); 128 ASSERT_TRUE(voicePtr->mRemoteObject == nullptr); 129 } 130 131 /** 132 * @tc.number Telephony_VoiceAssistantSwitchObserver_001 133 * @tc.name test normal branch 134 * @tc.desc Function test 135 */ 136 HWTEST_F(CallVoiceAssistantManagerTest, Telephony_VoiceAssistantSwitchObserver_001, Function | MediumTest | Level3) 137 { 138 sptr<AAFwk::IDataAbilityObserver> settingsCallback = sptr<VoiceAssistantSwitchObserver>::MakeSptr(); 139 settingsCallback->OnChange(); 140 ASSERT_TRUE(settingsCallback != nullptr); 141 } 142 143 /** 144 * @tc.number Telephony_VoiceAssistantConnectCallback_001 145 * @tc.name test normal branch 146 * @tc.desc Function test 147 */ 148 HWTEST_F(CallVoiceAssistantManagerTest, Telephony_VoiceAssistantConnectCallback_001, Function | MediumTest | Level3) 149 { 150 sptr<IRemoteObject> remoteObject = sptr<VoiceAssistantConnectCallback>::MakeSptr(ACCOUNT_ID); 151 AppExecFwk::ElementName element; 152 sptr<AAFwk::IAbilityConnection> connectCallback = sptr<VoiceAssistantConnectCallback>::MakeSptr(ACCOUNT_ID); 153 connectCallback->OnAbilityConnectDone(element, remoteObject, ACCOUNT_ID); 154 connectCallback->OnAbilityDisconnectDone(element, ACCOUNT_ID); 155 ASSERT_TRUE(connectCallback != nullptr); 156 } 157 158 /** 159 * @tc.number Telephony_VoiceAssistantRingSubscriber_001 160 * @tc.name test normal branch 161 * @tc.desc Function test 162 */ 163 HWTEST_F(CallVoiceAssistantManagerTest, Telephony_VoiceAssistantRingSubscriber_001, Function | MediumTest | Level3) 164 { 165 std::string event = "test.test.test.test"; 166 EventFwk::MatchingSkills matchingSkills; 167 matchingSkills.AddEvent(event); 168 EventFwk::CommonEventSubscribeInfo subscribeInfo(matchingSkills); 169 auto subscriber = std::make_shared<VoiceAssistantRingSubscriber>(subscribeInfo); 170 EventFwk::CommonEventData eventData; 171 AAFwk::Want want; 172 want.SetAction(event); 173 want.SetParam(event, event); 174 eventData.SetWant(want); 175 subscriber->OnReceiveEvent(eventData); 176 subscriber->Initial(); 177 subscriber->Release(); 178 ASSERT_TRUE(subscriber->subscriber_ == nullptr); 179 } 180 181 } 182 } 183