• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 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 #include <gtest/gtest.h>
17 
18 #include "audio_device_manager.h"
19 #include "avsession_log.h"
20 #include "migrate_avsession_server.h"
21 
22 using namespace testing::ext;
23 using namespace OHOS::AVSession;
24 
25 class AudioDeviceManagerTest : public testing::Test {
26 public:
27     static void SetUpTestCase(void);
28     static void TearDownTestCase(void);
29     void SetUp();
30     void TearDown();
31 };
32 
SetUpTestCase()33 void AudioDeviceManagerTest::SetUpTestCase() {}
34 
TearDownTestCase()35 void AudioDeviceManagerTest::TearDownTestCase() {}
36 
SetUp()37 void AudioDeviceManagerTest::SetUp() {}
38 
TearDown()39 void AudioDeviceManagerTest::TearDown() {}
40 
41 /**
42  * @tc.name: InitAudioStateCallback001
43  * @tc.desc: fail to init callback
44  * @tc.type: FUNC
45  */
46 static HWTEST(AudioDeviceManagerTest, InitAudioStateCallback001, TestSize.Level0)
47 {
48     SLOGI("InitAudioStateCallback001 begin!");
49     AudioDeviceManager::GetInstance().isRegistered_ = true;
50     std::shared_ptr<MigrateAVSessionServer> migrateAVSession = nullptr;
51     std::string deviceId = "test";
52     AudioDeviceManager::GetInstance().InitAudioStateCallback(migrateAVSession, deviceId);
53     EXPECT_TRUE(AudioDeviceManager::GetInstance().migrateSession_ == nullptr);
54 }
55 
56 /**
57  * @tc.name: RegisterPreferedOutputDeviceChangeCallback001
58  * @tc.desc: audioPreferedOutputDeviceChangeCallback_ have registered
59  * @tc.type: FUNC
60  */
61 static HWTEST(AudioDeviceManagerTest, RegisterPreferedOutputDeviceChangeCallback001, TestSize.Level0)
62 {
63     SLOGI("RegisterPreferedOutputDeviceChangeCallback001 begin!");
64     AudioDeviceManager::GetInstance().audioPreferedOutputDeviceChangeCallback_
65         = std::make_shared<OutputDeviceChangeCallback>();
66     AudioDeviceManager::GetInstance().RegisterPreferedOutputDeviceChangeCallback();
67     EXPECT_TRUE(AudioDeviceManager::GetInstance().audioPreferedOutputDeviceChangeCallback_ != nullptr);
68 }
69 
70 /**
71  * @tc.name: RegisterAudioDeviceChangeCallback001
72  * @tc.desc: audioDeviceChangeCallback_ have registered
73  * @tc.type: FUNC
74  */
75 static HWTEST(AudioDeviceManagerTest, RegisterAudioDeviceChangeCallback001, TestSize.Level1)
76 {
77     SLOGI("RegisterAudioDeviceChangeCallback001 begin!");
78     AudioDeviceManager::GetInstance().audioDeviceChangeCallback_
79         = std::make_shared<DeviceChangeCallback>();
80     AudioDeviceManager::GetInstance().RegisterAudioDeviceChangeCallback();
81     EXPECT_TRUE(AudioDeviceManager::GetInstance().audioDeviceChangeCallback_ != nullptr);
82 }
83 
84 /**
85  * @tc.name: RegisterAudioDeviceChangeCallback002
86  * @tc.desc: audioDeviceChangeCallback_ have registered
87  * @tc.type: FUNC
88  */
89 static HWTEST(AudioDeviceManagerTest, RegisterAudioDeviceChangeCallback002, TestSize.Level1)
90 {
91     SLOGI("RegisterAudioDeviceChangeCallback002 begin!");
92     AudioDeviceManager::GetInstance().audioDeviceChangeCallback_
93         = nullptr;
94     AudioDeviceManager::GetInstance().RegisterAudioDeviceChangeCallback();
95     EXPECT_TRUE(AudioDeviceManager::GetInstance().audioDeviceChangeCallback_ != nullptr);
96 }
97 
98 /**
99  * @tc.name: UnRegisterAudioDeviceChangeCallback001
100  * @tc.desc: audioDeviceChangeCallback_ have registered
101  * @tc.type: FUNC
102  */
103 static HWTEST(AudioDeviceManagerTest, UnRegisterAudioDeviceChangeCallback001, TestSize.Level1)
104 {
105     SLOGI("UnRegisterAudioDeviceChangeCallback001 begin!");
106     AudioDeviceManager::GetInstance().audioDeviceChangeCallback_
107         = std::make_shared<DeviceChangeCallback>();
108     AudioDeviceManager::GetInstance().RegisterAudioDeviceChangeCallback();
109     AudioDeviceManager::GetInstance().UnRegisterAudioDeviceChangeCallback();
110     EXPECT_TRUE(AudioDeviceManager::GetInstance().audioDeviceChangeCallback_ == nullptr);
111 }
112 
113 /**
114  * @tc.name: SendRemoteAvSessionInfo001
115  * @tc.desc: fail to send
116  * @tc.type: FUNC
117  */
118 static HWTEST(AudioDeviceManagerTest, SendRemoteAvSessionInfo001, TestSize.Level0)
119 {
120     SLOGI("SendRemoteAvSessionInfo001 begin!");
121     AudioDeviceManager::GetInstance().migrateSession_ = nullptr;
122     std::string deviceId = "test";
123     AudioDeviceManager::GetInstance().SendRemoteAvSessionInfo(deviceId);
124     EXPECT_TRUE(AudioDeviceManager::GetInstance().migrateSession_ == nullptr);
125 }
126 
127 /**
128  * @tc.name: SendRemoteAvSessionInfo002
129  * @tc.desc: success to send
130  * @tc.type: FUNC
131  */
132 static HWTEST(AudioDeviceManagerTest, SendRemoteAvSessionInfo002, TestSize.Level0)
133 {
134     SLOGI("SendRemoteAvSessionInfo002 begin!");
135     std::shared_ptr<MigrateAVSessionServer> migrateAVSession = std::make_shared<MigrateAVSessionServer>();
136     std::string deviceId = "test";
137     AudioDeviceManager::GetInstance().InitAudioStateCallback(migrateAVSession, deviceId);
138     AudioDeviceManager::GetInstance().SendRemoteAvSessionInfo(deviceId);
139     EXPECT_TRUE(AudioDeviceManager::GetInstance().migrateSession_ == nullptr);
140 }
141 
142 /**
143  * @tc.name: ClearRemoteAvSessionInfo001
144  * @tc.desc: test ClearRemoteAvSessionInfo
145  * @tc.type: FUNC
146  */
147 static HWTEST(AudioDeviceManagerTest, ClearRemoteAvSessionInfo001, TestSize.Level0)
148 {
149     SLOGI("ClearRemoteAvSessionInfo001 begin!");
150     std::shared_ptr<MigrateAVSessionServer> migrateAVSession = std::make_shared<MigrateAVSessionServer>();
151     AudioDeviceManager::GetInstance().migrateSession_ = migrateAVSession;
152     std::string deviceId = "test";
153     AudioDeviceManager::GetInstance().ClearRemoteAvSessionInfo(deviceId);
154     EXPECT_TRUE(AudioDeviceManager::GetInstance().migrateSession_ != nullptr);
155 }
156 
157 /**
158  * @tc.name: OnDeviceChange001
159  * @tc.desc:
160  * @tc.type: FUNC
161  */
162 static HWTEST(AudioDeviceManagerTest, OnDeviceChange001, TestSize.Level1)
163 {
164     SLOGI("OnDeviceChange001 begin!");
165     OHOS::AudioStandard::DeviceChangeAction deviceChangeAction;
166     AudioDeviceManager::GetInstance().RegisterAudioDeviceChangeCallback();
167     AudioDeviceManager::GetInstance().audioDeviceChangeCallback_->OnDeviceChange(deviceChangeAction);
168 }
169 
170 /**
171  * @tc.name  : OnDeviceChange002
172  * @tc.number:
173  * @tc.desc  : 测试当设备描述符列表为空时,函数应打印错误日志并返回
174  */
175 static HWTEST(AudioDeviceManagerTest, OnDeviceChange002, TestSize.Level0) {
176     SLOGI("OnDeviceChange002 begin!");
177     OHOS::AudioStandard::DeviceChangeAction deviceChangeAction;
178     deviceChangeAction.deviceDescriptors = {};
179     EXPECT_EQ(deviceChangeAction.deviceDescriptors.size(), 0);
180     AudioDeviceManager::GetInstance().RegisterAudioDeviceChangeCallback();
181     AudioDeviceManager::GetInstance().audioDeviceChangeCallback_->OnDeviceChange(deviceChangeAction);
182 }
183 
184 /**
185  * @tc.name  : OnDeviceChange003
186  * @tc.number: OnDeviceChangeTest_003
187  * @tc.desc  : 测试当第一个设备描述符为空时,函数应打印错误日志并返回
188  */
189 static HWTEST(AudioDeviceManagerTest, OnDeviceChange003, TestSize.Level0) {
190     SLOGI("OnDeviceChange003 begin!");
191     OHOS::AudioStandard::DeviceChangeAction deviceChangeAction;
192     deviceChangeAction.deviceDescriptors = {nullptr};
193     EXPECT_EQ(deviceChangeAction.deviceDescriptors[0], nullptr);
194     AudioDeviceManager::GetInstance().RegisterAudioDeviceChangeCallback();
195     AudioDeviceManager::GetInstance().audioDeviceChangeCallback_->OnDeviceChange(deviceChangeAction);
196 }
197 
198 /**
199  * @tc.name  : OnDeviceChange004
200  * @tc.number: OnDeviceChangeTest_004
201  * @tc.desc  : 测试当设备连接状态为VIRTUAL_CONNECTED时,函数应打印信息并返回
202  */
203 static HWTEST(AudioDeviceManagerTest, OnDeviceChange004, TestSize.Level0) {
204     SLOGI("OnDeviceChange004 begin!");
205     OHOS::AudioStandard::DeviceChangeAction deviceChangeAction;
206     auto desc = std::make_shared<OHOS::AudioStandard::AudioDeviceDescriptor>();
207     desc->connectState_ = OHOS::AudioStandard::ConnectState::VIRTUAL_CONNECTED;
208     deviceChangeAction.deviceDescriptors = {desc};
209     EXPECT_EQ(deviceChangeAction.deviceDescriptors[0]->connectState_,
210               OHOS::AudioStandard::ConnectState::VIRTUAL_CONNECTED);
211     AudioDeviceManager::GetInstance().RegisterAudioDeviceChangeCallback();
212     AudioDeviceManager::GetInstance().audioDeviceChangeCallback_->OnDeviceChange(deviceChangeAction);
213 }
214 
215 /**
216  * @tc.name  : OnDeviceChange005
217  * @tc.number: OnDeviceChangeTest_005
218  * @tc.desc  : 测试当设备类型为DEVICE_TYPE_BLUETOOTH_A2DP且设备分类为BT_CAR时,函数应发送远程音频会话信息
219  */
220 static HWTEST(AudioDeviceManagerTest, OnDeviceChange005, TestSize.Level0) {
221     SLOGI("OnDeviceChange005 begin!");
222     OHOS::AudioStandard::DeviceChangeAction deviceChangeAction;
223     auto desc = std::make_shared<OHOS::AudioStandard::AudioDeviceDescriptor>();
224     desc->connectState_ = OHOS::AudioStandard::ConnectState::CONNECTED;
225     desc->deviceType_ = OHOS::AudioStandard::DeviceType::DEVICE_TYPE_BLUETOOTH_A2DP;
226     desc->deviceCategory_ = OHOS::AudioStandard::DeviceCategory::BT_CAR;
227     deviceChangeAction.deviceDescriptors = {desc};
228     deviceChangeAction.type = OHOS::AudioStandard::DeviceChangeType::DISCONNECT;
229     EXPECT_EQ(deviceChangeAction.deviceDescriptors[0]->deviceType_,
230               OHOS::AudioStandard::DeviceType::DEVICE_TYPE_BLUETOOTH_A2DP);
231     EXPECT_EQ(deviceChangeAction.deviceDescriptors[0]->deviceCategory_,
232               OHOS::AudioStandard::DeviceCategory::BT_CAR);
233     AudioDeviceManager::GetInstance().migrateSession_ = nullptr;
234     AudioDeviceManager::GetInstance().deviceId_ = "test";
235     AudioDeviceManager::GetInstance().RegisterAudioDeviceChangeCallback();
236     AudioDeviceManager::GetInstance().audioDeviceChangeCallback_->OnDeviceChange(deviceChangeAction);
237 }
238 
239 /**
240  * @tc.name  : OnDeviceChange006
241  * @tc.number: OnDeviceChangeTest_006
242  * @tc.desc  : DEVICE_TYPE_BLUETOOTH_SCO
243  */
244 static HWTEST(AudioDeviceManagerTest, OnDeviceChange006, TestSize.Level0) {
245     SLOGI("OnDeviceChange006 begin!");
246     OHOS::AudioStandard::DeviceChangeAction deviceChangeAction;
247     auto desc = std::make_shared<OHOS::AudioStandard::AudioDeviceDescriptor>();
248     desc->connectState_ = OHOS::AudioStandard::ConnectState::CONNECTED;
249     desc->deviceType_ = OHOS::AudioStandard::DeviceType::DEVICE_TYPE_BLUETOOTH_A2DP;
250     desc->deviceCategory_ = OHOS::AudioStandard::DeviceCategory::BT_CAR;
251     deviceChangeAction.deviceDescriptors = {desc};
252     deviceChangeAction.type = OHOS::AudioStandard::DeviceChangeType::CONNECT;
253 
254     EXPECT_EQ(deviceChangeAction.deviceDescriptors[0]->deviceType_,
255               OHOS::AudioStandard::DeviceType::DEVICE_TYPE_BLUETOOTH_A2DP);
256     EXPECT_EQ(deviceChangeAction.deviceDescriptors[0]->deviceCategory_,
257               OHOS::AudioStandard::DeviceCategory::BT_CAR);
258     AudioDeviceManager::GetInstance().migrateSession_ = nullptr;
259     AudioDeviceManager::GetInstance().deviceId_ = "test";
260     AudioDeviceManager::GetInstance().RegisterAudioDeviceChangeCallback();
261     AudioDeviceManager::GetInstance().audioDeviceChangeCallback_->OnDeviceChange(deviceChangeAction);
262 }
263 
264 /**
265  * @tc.name  : OnDeviceChange007
266  * @tc.number: OnDeviceChangeTest_007
267  * @tc.desc  : DEVICE_TYPE_BLUETOOTH_SCO
268  */
269 static HWTEST(AudioDeviceManagerTest, OnDeviceChange007, TestSize.Level0) {
270     SLOGI("OnDeviceChange007 begin!");
271     OHOS::AudioStandard::DeviceChangeAction deviceChangeAction;
272     auto desc = std::make_shared<OHOS::AudioStandard::AudioDeviceDescriptor>();
273     desc->connectState_ = OHOS::AudioStandard::ConnectState::CONNECTED;
274     desc->deviceType_ = OHOS::AudioStandard::DeviceType::DEVICE_TYPE_BLUETOOTH_SCO;
275     desc->deviceCategory_ = OHOS::AudioStandard::DeviceCategory::BT_CAR;
276     deviceChangeAction.deviceDescriptors = {desc};
277     deviceChangeAction.type = OHOS::AudioStandard::DeviceChangeType::DISCONNECT;
278 
279     EXPECT_EQ(deviceChangeAction.deviceDescriptors[0]->deviceType_,
280               OHOS::AudioStandard::DeviceType::DEVICE_TYPE_BLUETOOTH_SCO);
281     EXPECT_EQ(deviceChangeAction.deviceDescriptors[0]->deviceCategory_,
282               OHOS::AudioStandard::DeviceCategory::BT_CAR);
283     AudioDeviceManager::GetInstance().migrateSession_ = nullptr;
284     AudioDeviceManager::GetInstance().deviceId_ = "test";
285     AudioDeviceManager::GetInstance().RegisterAudioDeviceChangeCallback();
286     AudioDeviceManager::GetInstance().audioDeviceChangeCallback_->OnDeviceChange(deviceChangeAction);
287 }