• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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