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 #include "audio_usb_manager.h"
18 #include "audio_policy_service.h"
19 #include "audio_usb_manager_unit_test.h"
20
21 using namespace testing::ext;
22
23 namespace OHOS {
24 namespace AudioStandard {
25
26 class DeviceStatusObserver : public IDeviceStatusObserver {
27 public:
OnDeviceStatusUpdated(DeviceType devType,bool isConnected,const std::string & macAddress,const std::string & deviceName,const AudioStreamInfo & streamInfo,DeviceRole role=DEVICE_ROLE_NONE,bool hasPair=false)28 void OnDeviceStatusUpdated(DeviceType devType, bool isConnected,
29 const std::string &macAddress, const std::string &deviceName,
30 const AudioStreamInfo &streamInfo, DeviceRole role = DEVICE_ROLE_NONE, bool hasPair = false) override {};
OnMicrophoneBlockedUpdate(DeviceType devType,DeviceBlockStatus status)31 void OnMicrophoneBlockedUpdate(DeviceType devType, DeviceBlockStatus status) override {};
OnPnpDeviceStatusUpdated(AudioDeviceDescriptor & desc,bool isConnected)32 void OnPnpDeviceStatusUpdated(AudioDeviceDescriptor &desc, bool isConnected) override {};
OnDeviceConfigurationChanged(DeviceType deviceType,const std::string & macAddress,const std::string & deviceName,const AudioStreamInfo & streamInfo)33 void OnDeviceConfigurationChanged(DeviceType deviceType,
34 const std::string &macAddress, const std::string &deviceName,
35 const AudioStreamInfo &streamInfo) override {};
OnDeviceStatusUpdated(DStatusInfo statusInfo,bool isStop=false)36 void OnDeviceStatusUpdated(DStatusInfo statusInfo, bool isStop = false) override {};
OnServiceConnected(AudioServiceIndex serviceIndex)37 void OnServiceConnected(AudioServiceIndex serviceIndex) override {};
OnServiceDisconnected(AudioServiceIndex serviceIndex)38 void OnServiceDisconnected(AudioServiceIndex serviceIndex) override {};
OnForcedDeviceSelected(DeviceType devType,const std::string & macAddress)39 void OnForcedDeviceSelected(DeviceType devType, const std::string &macAddress) override {};
OnDeviceStatusUpdated(AudioDeviceDescriptor & desc,bool isConnected)40 void OnDeviceStatusUpdated(AudioDeviceDescriptor &desc, bool isConnected) override {};
OnDeviceInfoUpdated(AudioDeviceDescriptor & desc,const DeviceInfoUpdateCommand updateCommand)41 void OnDeviceInfoUpdated(AudioDeviceDescriptor &desc, const DeviceInfoUpdateCommand updateCommand) override {};
42 };
43
SetUpTestCase(void)44 void AudioUsbManagerUnitTest::SetUpTestCase(void) {}
TearDownTestCase(void)45 void AudioUsbManagerUnitTest::TearDownTestCase(void) {}
SetUp(void)46 void AudioUsbManagerUnitTest::SetUp(void) {}
TearDown(void)47 void AudioUsbManagerUnitTest::TearDown(void) {}
48
49 /**
50 * @tc.name : Test AudioUsbManager.
51 * @tc.number: AudioUsbManagerUnitTest_001.
52 * @tc.desc : Test Init.
53 */
54 HWTEST_F(AudioUsbManagerUnitTest, AudioUsbManagerUnitTest_001, TestSize.Level1)
55 {
56 auto audioUsbManager = std::make_shared<AudioUsbManager>();
57 ASSERT_TRUE(audioUsbManager != nullptr);
58
59 IDeviceStatusObserver *observer = nullptr;
60 audioUsbManager->Init(observer);
61
62 audioUsbManager->initialized_ = true;
63 audioUsbManager->Init(observer);
64 }
65
66 /**
67 * @tc.name : Test AudioUsbManager.
68 * @tc.number: AudioUsbManagerUnitTest_002.
69 * @tc.desc : Test Deinit.
70 */
71 HWTEST_F(AudioUsbManagerUnitTest, AudioUsbManagerUnitTest_002, TestSize.Level1)
72 {
73 auto audioUsbManager = std::make_shared<AudioUsbManager>();
74 ASSERT_TRUE(audioUsbManager != nullptr);
75 audioUsbManager->Deinit();
76
77 audioUsbManager->initialized_ = true;
78 audioUsbManager->Deinit();
79 }
80
81 /**
82 * @tc.name : Test AudioUsbManager.
83 * @tc.number: AudioUsbManagerUnitTest_003.
84 * @tc.desc : Test Deinit.
85 */
86 HWTEST_F(AudioUsbManagerUnitTest, AudioUsbManagerUnitTest_003, TestSize.Level1)
87 {
88 auto audioUsbManager = std::make_shared<AudioUsbManager>();
89 ASSERT_TRUE(audioUsbManager != nullptr);
90
91 EventFwk::CommonEventSubscribeInfo subscribeInfo;
92 audioUsbManager->eventSubscriber_ = std::make_shared<AudioUsbManager::EventSubscriber>(subscribeInfo);
93 audioUsbManager->initialized_ = true;
94 audioUsbManager->Deinit();
95 }
96
97 /**
98 * @tc.name : Test AudioUsbManager.
99 * @tc.number: AudioUsbManagerUnitTest_004.
100 * @tc.desc : Test RefreshUsbAudioDevices.
101 */
102 HWTEST_F(AudioUsbManagerUnitTest, AudioUsbManagerUnitTest_004, TestSize.Level1)
103 {
104 auto audioUsbManager = std::make_shared<AudioUsbManager>();
105 ASSERT_TRUE(audioUsbManager != nullptr);
106
107 audioUsbManager->RefreshUsbAudioDevices();
108 }
109
110 /**
111 * @tc.name : Test AudioUsbManager.
112 * @tc.number: AudioUsbManagerUnitTest_005.
113 * @tc.desc : Test GetPlayerDevices.
114 */
115 HWTEST_F(AudioUsbManagerUnitTest, AudioUsbManagerUnitTest_005, TestSize.Level1)
116 {
117 auto audioUsbManager = std::make_shared<AudioUsbManager>();
118 ASSERT_TRUE(audioUsbManager != nullptr);
119 audioUsbManager->initialized_ = true;
120
121 AudioUsbManager::GetInstance().GetPlayerDevices();
122 }
123
124 /**
125 * @tc.name : Test AudioUsbManager.
126 * @tc.number: AudioUsbManagerUnitTest_006.
127 * @tc.desc : Test NotifyDevice.
128 */
129 HWTEST_F(AudioUsbManagerUnitTest, AudioUsbManagerUnitTest_006, TestSize.Level1)
130 {
131 auto audioUsbManager = std::make_shared<AudioUsbManager>();
132 ASSERT_TRUE(audioUsbManager != nullptr);
133
134 IDeviceStatusObserver *observer = new DeviceStatusObserver();
135 audioUsbManager->Init(observer);
136 ASSERT_TRUE(audioUsbManager->observer_ != nullptr);
137
138 UsbAudioDevice device;
139 SoundCard soundCard;
140 soundCard.isPlayer_ = true;
141 soundCard.isCapturer_ = true;
142 audioUsbManager->soundCardMap_.insert({device.usbAddr_, soundCard});
143 audioUsbManager->NotifyDevice(device, true);
144 audioUsbManager->Deinit();
145 }
146
147 /**
148 * @tc.name : Test AudioUsbManager.
149 * @tc.number: AudioUsbManagerUnitTest_007.
150 * @tc.desc : Test NotifyDevice.
151 */
152 HWTEST_F(AudioUsbManagerUnitTest, AudioUsbManagerUnitTest_007, TestSize.Level1)
153 {
154 auto audioUsbManager = std::make_shared<AudioUsbManager>();
155 ASSERT_TRUE(audioUsbManager != nullptr);
156
157 IDeviceStatusObserver *observer = new DeviceStatusObserver();
158 audioUsbManager->Init(observer);
159 ASSERT_TRUE(audioUsbManager->observer_ != nullptr);
160
161 UsbAudioDevice device;
162 SoundCard soundCard;
163 soundCard.isPlayer_ = false;
164 soundCard.isCapturer_ = true;
165 audioUsbManager->soundCardMap_.insert({device.usbAddr_, soundCard});
166 audioUsbManager->NotifyDevice(device, true);
167 }
168
169 /**
170 * @tc.name : Test AudioUsbManager.
171 * @tc.number: AudioUsbManagerUnitTest_008.
172 * @tc.desc : Test NotifyDevice.
173 */
174 HWTEST_F(AudioUsbManagerUnitTest, AudioUsbManagerUnitTest_008, TestSize.Level1)
175 {
176 auto audioUsbManager = std::make_shared<AudioUsbManager>();
177 ASSERT_TRUE(audioUsbManager != nullptr);
178
179 IDeviceStatusObserver *observer = new DeviceStatusObserver();
180 audioUsbManager->Init(observer);
181 ASSERT_TRUE(audioUsbManager->observer_ != nullptr);
182
183 UsbAudioDevice device;
184 SoundCard soundCard;
185 soundCard.isPlayer_ = true;
186 soundCard.isCapturer_ = false;
187 audioUsbManager->soundCardMap_.insert({device.usbAddr_, soundCard});
188 audioUsbManager->NotifyDevice(device, true);
189 }
190
191 /**
192 * @tc.name : Test AudioUsbManager.
193 * @tc.number: AudioUsbManagerUnitTest_009.
194 * @tc.desc : Test GetCapturerDevices.
195 */
196 HWTEST_F(AudioUsbManagerUnitTest, AudioUsbManagerUnitTest_009, TestSize.Level1)
197 {
198 auto audioUsbManager = std::make_shared<AudioUsbManager>();
199 ASSERT_TRUE(audioUsbManager != nullptr);
200 audioUsbManager->initialized_ = true;
201
202 AudioUsbManager::GetInstance().GetCapturerDevices();
203 }
204
205 /**
206 * @tc.name : Test AudioUsbManager.
207 * @tc.number: AudioUsbManagerUnitTest_010.
208 * @tc.desc : Test GetUsbAudioDevices.
209 */
210 HWTEST_F(AudioUsbManagerUnitTest, AudioUsbManagerUnitTest_010, TestSize.Level1)
211 {
212 auto audioUsbManager = std::make_shared<AudioUsbManager>();
213 ASSERT_TRUE(audioUsbManager != nullptr);
214 audioUsbManager->initialized_ = true;
215
216 AudioUsbManager::GetInstance().GetUsbAudioDevices();
217 }
218
219 /**
220 * @tc.name : Test AudioUsbManager.
221 * @tc.number: AudioUsbManagerUnitTest_011.
222 * @tc.desc : Test HandleUsbAudioDeviceAttach.
223 */
224 HWTEST_F(AudioUsbManagerUnitTest, AudioUsbManagerUnitTest_011, TestSize.Level1)
225 {
226 auto audioUsbManager = std::make_shared<AudioUsbManager>();
227 ASSERT_TRUE(audioUsbManager != nullptr);
228
229 UsbAudioDevice device;
230 audioUsbManager->HandleUsbAudioDeviceAttach(device);
231
232 audioUsbManager->audioDevices_.push_back(device);
233 audioUsbManager->HandleUsbAudioDeviceAttach(device);
234 }
235
236 /**
237 * @tc.name : Test AudioUsbManager.
238 * @tc.number: AudioUsbManagerUnitTest_012.
239 * @tc.desc : Test HandleUsbAudioDeviceAttach.
240 */
241 HWTEST_F(AudioUsbManagerUnitTest, AudioUsbManagerUnitTest_012, TestSize.Level1)
242 {
243 auto audioUsbManager = std::make_shared<AudioUsbManager>();
244 ASSERT_TRUE(audioUsbManager != nullptr);
245
246 UsbAudioDevice device;
247 audioUsbManager->HandleUsbAudioDeviceDetach(device);
248
249 audioUsbManager->audioDevices_.push_back(device);
250 audioUsbManager->HandleUsbAudioDeviceDetach(device);
251 }
252
253 /**
254 * @tc.name : Test AudioUsbManager.
255 * @tc.number: AudioUsbManagerUnitTest_013.
256 * @tc.desc : Test GetUsbSoundCardMap.
257 */
258 HWTEST_F(AudioUsbManagerUnitTest, AudioUsbManagerUnitTest_013, TestSize.Level1)
259 {
260 auto audioUsbManager = std::make_shared<AudioUsbManager>();
261 ASSERT_TRUE(audioUsbManager != nullptr);
262 audioUsbManager->initialized_ = true;
263
264 AudioUsbManager::GetInstance().GetUsbSoundCardMap();
265 }
266
267 /**
268 * @tc.name : Test AudioUsbManager.
269 * @tc.number: AudioUsbManagerUnitTest_014.
270 * @tc.desc : Test OnReceiveEvent.
271 */
272 HWTEST_F(AudioUsbManagerUnitTest, AudioUsbManagerUnitTest_014, TestSize.Level1)
273 {
274 EventFwk::CommonEventSubscribeInfo subscribeInfo;
275 auto audioUsbManager = std::make_shared<AudioUsbManager::EventSubscriber>(subscribeInfo);
276 ASSERT_TRUE(audioUsbManager != nullptr);
277
278 EventFwk::CommonEventData data;
279 audioUsbManager->OnReceiveEvent(data);
280 }
281 } // namespace AudioStandard
282 } // namespace OHOS
283