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