1 /*
2 * Copyright (c) 2024 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 "audio_errors.h"
17 #include "audio_service_log.h"
18 #include "audio_info.h"
19 #include "audio_ring_cache.h"
20 #include "audio_process_config.h"
21 #include "linear_pos_time_model.h"
22 #include "oh_audio_buffer.h"
23 #include <gtest/gtest.h>
24 #include "audio_endpoint.h"
25 #include "sink/i_audio_render_sink.h"
26 #include "common/hdi_adapter_info.h"
27 #include "manager/hdi_adapter_manager.h"
28 #include "audio_process_in_server.h"
29 #include "audio_endpoint.h"
30 #include "audio_service.h"
31
32 using namespace testing::ext;
33 namespace OHOS {
34 namespace AudioStandard {
35 constexpr int32_t DEFAULT_STREAM_ID = 10;
36
InitProcessConfig()37 static AudioProcessConfig InitProcessConfig()
38 {
39 AudioProcessConfig config;
40 config.appInfo.appUid = DEFAULT_STREAM_ID;
41 config.appInfo.appPid = DEFAULT_STREAM_ID;
42 config.streamInfo.format = SAMPLE_S32LE;
43 config.streamInfo.samplingRate = SAMPLE_RATE_48000;
44 config.streamInfo.channels = STEREO;
45 config.streamInfo.channelLayout = AudioChannelLayout::CH_LAYOUT_STEREO;
46 config.audioMode = AudioMode::AUDIO_MODE_RECORD;
47 config.streamType = AudioStreamType::STREAM_MUSIC;
48 config.deviceType = DEVICE_TYPE_USB_HEADSET;
49 return config;
50 }
51
52 class AudioEndpointSeparateUnitTest : public testing::Test {
53 public:
54 static void SetUpTestCase(void);
55 static void TearDownTestCase(void);
56 void SetUp();
57 void TearDown();
58 };
59
SetUpTestCase(void)60 void AudioEndpointSeparateUnitTest::SetUpTestCase(void)
61 {
62 // input testsuit setup step,setup invoked before all testcases
63 }
64
TearDownTestCase(void)65 void AudioEndpointSeparateUnitTest::TearDownTestCase(void)
66 {
67 // input testsuit teardown step,teardown invoked after all testcases
68 }
69
SetUp(void)70 void AudioEndpointSeparateUnitTest::SetUp(void)
71 {
72 // input testcase setup step,setup invoked before each testcases
73 }
74
TearDown(void)75 void AudioEndpointSeparateUnitTest::TearDown(void)
76 {
77 // input testcase teardown step,teardown invoked after each testcases
78 }
79
80 /**
81 * @tc.name : Test AudioEndpointSeparate API
82 * @tc.type : FUNC
83 * @tc.number: AudioEndpointSeparate_001
84 * @tc.desc : Test AudioEndpointSeparate::SetVolume
85 */
86 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_001, TestSize.Level1)
87 {
88 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
89 uint64_t id = 0;
90 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
91 float volume = 0.0f;
92 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
93 ptr->fastRenderId_ = HdiAdapterManager::GetInstance().GetId(HDI_ID_BASE_RENDER, HDI_ID_TYPE_FAST,
94 "endpoint_sep_test", true);
95 auto ret = ptr->SetVolume(streamType, volume);
96 HdiAdapterManager::GetInstance().ReleaseId(ptr->fastRenderId_);
97 EXPECT_EQ(ret, ERR_INVALID_HANDLE);
98 }
99
100 /**
101 * @tc.name : Test AudioEndpointSeparate API
102 * @tc.type : FUNC
103 * @tc.number: AudioEndpointSeparate_002
104 * @tc.desc : Test AudioEndpointSeparate::SetVolume
105 */
106 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_002, TestSize.Level1)
107 {
108 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
109 uint64_t id = 0;
110 AudioStreamType streamType = AudioStreamType::STREAM_VOICE_CALL;
111 float volume = 0.0f;
112 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
113 ptr->fastRenderId_ = HdiAdapterManager::GetInstance().GetId(HDI_ID_BASE_RENDER, HDI_ID_TYPE_FAST,
114 "endpoint_sep_test", true);
115 streamType = AudioStreamType::STREAM_VOICE_CALL;
116 ptr->streamType_ = STREAM_DEFAULT;
117 auto ret = ptr->SetVolume(streamType, volume);
118 EXPECT_EQ(ret, SUCCESS);
119 HdiAdapterManager::GetInstance().ReleaseId(ptr->fastRenderId_);
120 }
121
122 /**
123 * @tc.name : Test AudioEndpointSeparate API
124 * @tc.type : FUNC
125 * @tc.number: AudioEndpointSeparate_003
126 * @tc.desc : Test AudioEndpointSeparate::ResolveBuffer
127 */
128 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_003, TestSize.Level1)
129 {
130 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
131 uint64_t id = 0;
132 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
133 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
134 ptr->isInited_ = false;
135 std::shared_ptr<OHAudioBuffer> buffer;
136 auto ret = ptr->ResolveBuffer(buffer);
137 EXPECT_EQ(ret, ERR_ILLEGAL_STATE);
138 }
139
140 /**
141 * @tc.name : Test AudioEndpointSeparate API
142 * @tc.type : FUNC
143 * @tc.number: AudioEndpointSeparate_004
144 * @tc.desc : Test AudioEndpointSeparate::ResolveBuffer
145 */
146 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_004, TestSize.Level1)
147 {
148 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
149 uint64_t id = 0;
150 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
151 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
152 ptr->isInited_ = true;
153 std::shared_ptr<OHAudioBuffer> buffer;
154 auto ret = ptr->ResolveBuffer(buffer);
155 EXPECT_EQ(ret, ERR_ILLEGAL_STATE);
156 AudioBufferHolder bufferHolder = AudioBufferHolder::AUDIO_CLIENT;
157 uint32_t totalSizeInFrame = 0;
158 uint32_t spanSizeInFrame = 0;
159 uint32_t byteSizePerFrame = 0;
160 ptr->dstAudioBuffer_ = std::make_shared<OHAudioBuffer>(bufferHolder, totalSizeInFrame,
161 spanSizeInFrame, byteSizePerFrame);
162 ptr->isInited_ = true;
163 ret = ptr->ResolveBuffer(buffer);
164 EXPECT_EQ(ret, SUCCESS);
165 }
166
167 /**
168 * @tc.name : Test AudioEndpointSeparate API
169 * @tc.type : FUNC
170 * @tc.number: AudioEndpointSeparate_005
171 * @tc.desc : Test AudioEndpointSeparate::Release
172 */
173 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_005, TestSize.Level1)
174 {
175 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
176 uint64_t id = 0;
177 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
178 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
179 ptr->isInited_ = false;
180 ptr->Release();
181 }
182
183 /**
184 * @tc.name : Test AudioEndpointSeparate API
185 * @tc.type : FUNC
186 * @tc.number: AudioEndpointSeparate_006
187 * @tc.desc : Test AudioEndpointSeparate::Release
188 */
189 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_006, TestSize.Level1)
190 {
191 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
192 uint64_t id = 0;
193 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
194 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
195 ptr->isInited_ = true;
196 ptr->fastRenderId_ = HdiAdapterManager::GetInstance().GetId(HDI_ID_BASE_RENDER, HDI_ID_TYPE_FAST,
197 "endpoint_sep_test", true);
198 ptr->Release();
199 }
200
201 /**
202 * @tc.name : Test AudioEndpointSeparate API
203 * @tc.type : FUNC
204 * @tc.number: AudioEndpointSeparate_007
205 * @tc.desc : Test AudioEndpointSeparate::Release
206 */
207 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_007, TestSize.Level1)
208 {
209 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
210 uint64_t id = 0;
211 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
212 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
213 ptr->isInited_ = true;
214 ptr->fastRenderId_ = HDI_INVALID_ID;
215 AudioBufferHolder bufferHolder = AudioBufferHolder::AUDIO_CLIENT;
216 uint32_t totalSizeInFrame = 0;
217 uint32_t spanSizeInFrame = 0;
218 uint32_t byteSizePerFrame = 0;
219 ptr->dstAudioBuffer_ = std::make_shared<OHAudioBuffer>(bufferHolder, totalSizeInFrame,
220 spanSizeInFrame, byteSizePerFrame);
221 ptr->Release();
222 ptr->isInited_ = true;
223 ptr->fastRenderId_ = HDI_INVALID_ID;
224 ptr->dstAudioBuffer_ = nullptr;
225 ptr->Release();
226 }
227
228 /**
229 * @tc.name : Test AudioEndpointSeparate API
230 * @tc.type : FUNC
231 * @tc.number: AudioEndpointSeparate_008
232 * @tc.desc : Test AudioEndpointSeparate::~AudioEndpointSeparate
233 */
234 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_008, TestSize.Level1)
235 {
236 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
237 uint64_t id = 0;
238 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
239 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
240 ptr->isInited_ = true;
241 }
242
243 /**
244 * @tc.name : Test AudioEndpointSeparate API
245 * @tc.type : FUNC
246 * @tc.number: AudioEndpointSeparate_009
247 * @tc.desc : Test AudioEndpointSeparate::Config
248 */
249 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_009, TestSize.Level1)
250 {
251 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
252 uint64_t id = 0;
253 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
254 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
255 std::shared_ptr<AudioDeviceDescriptor> ptr2 =
256 std::make_shared<AudioDeviceDescriptor>(AudioDeviceDescriptor::DEVICE_INFO);
257 ptr2->deviceRole_ = INPUT_DEVICE;
258 ptr2->networkId_ = REMOTE_NETWORK_ID;
259 auto ret = ptr->Config(*ptr2);
260 EXPECT_EQ(ret, false);
261 ptr2->deviceRole_ = INPUT_DEVICE;
262 ptr2->networkId_ = LOCAL_NETWORK_ID;
263 ret = ptr->Config(*ptr2);
264 EXPECT_EQ(ret, false);
265 ptr2->deviceRole_ = OUTPUT_DEVICE;
266 ptr2->networkId_ = REMOTE_NETWORK_ID;
267 ret = ptr->Config(*ptr2);
268 EXPECT_EQ(ret, false);
269 }
270
271 /**
272 * @tc.name : Test AudioEndpointSeparate API
273 * @tc.type : FUNC
274 * @tc.number: AudioEndpointSeparate_010
275 * @tc.desc : Test AudioEndpointSeparate::GetAdapterBufferInfo
276 */
277 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_010, TestSize.Level1)
278 {
279 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
280 uint64_t id = 0;
281 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
282 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
283 std::shared_ptr<AudioDeviceDescriptor> ptr2 =
284 std::make_shared<AudioDeviceDescriptor>(AudioDeviceDescriptor::DEVICE_INFO);
285 auto ret = ptr->GetAdapterBufferInfo(*ptr2);
286 EXPECT_EQ(ret, ERR_INVALID_HANDLE);
287 ptr->dstBufferFd_ = 0;
288 ptr->dstTotalSizeInframe_ = 1;
289 ptr->dstSpanSizeInframe_ = 1;
290 ptr->dstBufferFd_ = 1;
291 ptr->fastRenderId_ = HdiAdapterManager::GetInstance().GetId(HDI_ID_BASE_RENDER, HDI_ID_TYPE_FAST,
292 "endpoint_sep_test", true);
293 ret = ptr->GetAdapterBufferInfo(*ptr2);
294 EXPECT_EQ(ret, ERR_INVALID_HANDLE);
295 HdiAdapterManager::GetInstance().ReleaseId(ptr->fastRenderId_);
296 }
297
298 /**
299 * @tc.name : Test AudioEndpointSeparate API
300 * @tc.type : FUNC
301 * @tc.number: AudioEndpointSeparate_011
302 * @tc.desc : Test AudioEndpointSeparate::GetAdapterBufferInfo
303 */
304 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_011, TestSize.Level1)
305 {
306 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
307 uint64_t id = 0;
308 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
309 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
310 std::shared_ptr<AudioDeviceDescriptor> ptr2 =
311 std::make_shared<AudioDeviceDescriptor>(AudioDeviceDescriptor::DEVICE_INFO);
312 ptr->fastRenderId_ = HdiAdapterManager::GetInstance().GetId(HDI_ID_BASE_RENDER, HDI_ID_TYPE_FAST,
313 "endpoint_sep_test", true);
314 ptr->dstBufferFd_ = -1;
315 ptr->dstTotalSizeInframe_ = 1;
316 ptr->dstSpanSizeInframe_ = 1;
317 ptr->dstBufferFd_ = 1;
318 auto ret = ptr->GetAdapterBufferInfo(*ptr2);
319 EXPECT_EQ(ret, ERR_INVALID_HANDLE);
320 ptr->dstBufferFd_ = 0;
321 ptr->dstTotalSizeInframe_ = 0;
322 ptr->dstSpanSizeInframe_ = 1;
323 ptr->dstBufferFd_ = 1;
324 ret = ptr->GetAdapterBufferInfo(*ptr2);
325 EXPECT_EQ(ret, ERR_INVALID_HANDLE);
326 ptr->dstBufferFd_ = 0;
327 ptr->dstTotalSizeInframe_ = 1;
328 ptr->dstSpanSizeInframe_ = 0;
329 ptr->dstBufferFd_ = 1;
330 ret = ptr->GetAdapterBufferInfo(*ptr2);
331 EXPECT_EQ(ret, ERR_INVALID_HANDLE);
332 ptr->dstBufferFd_ = 0;
333 ptr->dstTotalSizeInframe_ = 1;
334 ptr->dstSpanSizeInframe_ = 1;
335 ptr->dstBufferFd_ = 0;
336 ret = ptr->GetAdapterBufferInfo(*ptr2);
337 EXPECT_EQ(ret, ERR_INVALID_HANDLE);
338 HdiAdapterManager::GetInstance().ReleaseId(ptr->fastRenderId_);
339 }
340
341 /**
342 * @tc.name : Test AudioEndpointSeparate API
343 * @tc.type : FUNC
344 * @tc.number: AudioEndpointSeparate_012
345 * @tc.desc : Test AudioEndpointSeparate::PrepareDeviceBuffer
346 */
347 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_012, TestSize.Level1)
348 {
349 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
350 uint64_t id = 0;
351 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
352 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
353 std::shared_ptr<AudioDeviceDescriptor> ptr2 =
354 std::make_shared<AudioDeviceDescriptor>(AudioDeviceDescriptor::DEVICE_INFO);
355 AudioBufferHolder bufferHolder = AudioBufferHolder::AUDIO_CLIENT;
356 uint32_t totalSizeInFrame = 0;
357 uint32_t spanSizeInFrame = 0;
358 uint32_t byteSizePerFrame = 0;
359 ptr->dstAudioBuffer_ = std::make_shared<OHAudioBuffer>(bufferHolder, totalSizeInFrame,
360 spanSizeInFrame, byteSizePerFrame);
361 auto ret = ptr->PrepareDeviceBuffer(*ptr2);
362 EXPECT_EQ(ret, SUCCESS);
363 }
364
365 /**
366 * @tc.name : Test AudioEndpointSeparate API
367 * @tc.type : FUNC
368 * @tc.number: AudioEndpointSeparate_013
369 * @tc.desc : Test AudioEndpointSeparate::PrepareDeviceBuffer
370 */
371 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_013, TestSize.Level1)
372 {
373 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
374 uint64_t id = 0;
375 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
376 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
377 std::shared_ptr<AudioDeviceDescriptor> ptr2 =
378 std::make_shared<AudioDeviceDescriptor>(AudioDeviceDescriptor::DEVICE_INFO);
379 ptr->dstAudioBuffer_ = nullptr;
380 ptr->PrepareDeviceBuffer(*ptr2);
381 }
382
383 /**
384 * @tc.name : Test AudioEndpointSeparate API
385 * @tc.type : FUNC
386 * @tc.number: AudioEndpointSeparate_014
387 * @tc.desc : Test AudioEndpointSeparate::InitAudiobuffer
388 */
389 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_014, TestSize.Level1)
390 {
391 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
392 uint64_t id = 0;
393 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
394 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
395 bool resetReadWritePos = true;
396 ptr->InitAudiobuffer(resetReadWritePos);
397 resetReadWritePos = false;
398 ptr->InitAudiobuffer(resetReadWritePos);
399 ptr->deviceInfo_.deviceRole_ = INPUT_DEVICE;
400 ptr->InitAudiobuffer(resetReadWritePos);
401 ptr->deviceInfo_.deviceRole_ = OUTPUT_DEVICE;
402 ptr->InitAudiobuffer(resetReadWritePos);
403 }
404
405 /**
406 * @tc.name : Test AudioEndpointSeparate API
407 * @tc.type : FUNC
408 * @tc.number: AudioEndpointSeparate_015
409 * @tc.desc : Test AudioEndpointSeparate::IsAnyProcessRunning
410 */
411 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_015, TestSize.Level1)
412 {
413 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
414 uint64_t id = 0;
415 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
416 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
417 ptr->processBufferList_.clear();
418 auto ret = ptr->IsAnyProcessRunning();
419 EXPECT_EQ(ret, false);
420 AudioBufferHolder bufferHolder = AudioBufferHolder::AUDIO_CLIENT;
421 uint32_t totalSizeInFrame = 0;
422 uint32_t spanSizeInFrame = 0;
423 uint32_t byteSizePerFrame = 0;
424 std::shared_ptr<OHAudioBuffer> processBuffer = std::make_shared<OHAudioBuffer>(bufferHolder, totalSizeInFrame,
425 spanSizeInFrame, byteSizePerFrame);
426 ptr->processBufferList_.push_back(processBuffer);
427 ret = ptr->IsAnyProcessRunning();
428 EXPECT_EQ(ret, false);
429 }
430
431 /**
432 * @tc.name : Test AudioEndpointSeparate API
433 * @tc.type : FUNC
434 * @tc.number: AudioEndpointSeparate_016
435 * @tc.desc : Test AudioEndpointSeparate::ResyncPosition
436 */
437 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_016, TestSize.Level1)
438 {
439 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
440 uint64_t id = 0;
441 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
442 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
443 ptr->ResyncPosition();
444 }
445
446 /**
447 * @tc.name : Test AudioEndpointSeparate API
448 * @tc.type : FUNC
449 * @tc.number: AudioEndpointSeparate_017
450 * @tc.desc : Test AudioEndpointSeparate::StartDevice
451 */
452 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_017, TestSize.Level1)
453 {
454 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
455 uint64_t id = 0;
456 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
457 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
458 ptr->endpointStatus_.store(AudioEndpoint::EndpointStatus::INVALID);
459 auto ret = ptr->StartDevice();
460 EXPECT_EQ(ret, false);
461 }
462
463 /**
464 * @tc.name : Test AudioEndpointSeparate API
465 * @tc.type : FUNC
466 * @tc.number: AudioEndpointSeparate_018
467 * @tc.desc : Test AudioEndpointSeparate::StartDevice
468 */
469 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_018, TestSize.Level1)
470 {
471 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
472 uint64_t id = 0;
473 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
474 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
475 ptr->endpointStatus_.store(AudioEndpoint::EndpointStatus::IDEL);
476 ptr->fastRenderId_ = HDI_INVALID_ID;
477 auto ret = ptr->StartDevice();
478 EXPECT_EQ(ret, false);
479 }
480
481 /**
482 * @tc.name : Test AudioEndpointSeparate API
483 * @tc.type : FUNC
484 * @tc.number: AudioEndpointSeparate_019
485 * @tc.desc : Test AudioEndpointSeparate::StopDevice
486 */
487 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_019, TestSize.Level1)
488 {
489 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
490 uint64_t id = 0;
491 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
492 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
493 AudioBufferHolder bufferHolder = AudioBufferHolder::AUDIO_CLIENT;
494 uint32_t totalSizeInFrame = 0;
495 uint32_t spanSizeInFrame = 0;
496 uint32_t byteSizePerFrame = 0;
497 ptr->dstAudioBuffer_ = std::make_shared<OHAudioBuffer>(bufferHolder, totalSizeInFrame,
498 spanSizeInFrame, byteSizePerFrame);
499 ptr->StopDevice();
500 ptr->dstAudioBuffer_ = nullptr;
501 ptr->StopDevice();
502 }
503
504 /**
505 * @tc.name : Test AudioEndpointSeparate API
506 * @tc.type : FUNC
507 * @tc.number: AudioEndpointSeparate_020
508 * @tc.desc : Test AudioEndpointSeparate::OnStart
509 */
510 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_020, TestSize.Level1)
511 {
512 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
513 uint64_t id = 0;
514 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
515 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
516 IAudioProcessStream *processStream = nullptr;
517 ptr->endpointStatus_.store(AudioEndpoint::EndpointStatus::RUNNING);
518 auto ret = ptr->OnStart(processStream);
519 EXPECT_EQ(ret, SUCCESS);
520 ptr->endpointStatus_.store(AudioEndpoint::EndpointStatus::IDEL);
521 ptr->isDeviceRunningInIdel_ = false;
522 ret = ptr->OnStart(processStream);
523 EXPECT_EQ(ret, SUCCESS);
524 ptr->endpointStatus_.store(AudioEndpoint::EndpointStatus::IDEL);
525 ptr->isDeviceRunningInIdel_ = true;
526 ret = ptr->OnStart(processStream);
527 EXPECT_EQ(ret, SUCCESS);
528 ptr->endpointStatus_.store(AudioEndpoint::EndpointStatus::STOPPING);
529 ret = ptr->OnStart(processStream);
530 EXPECT_EQ(ret, SUCCESS);
531 }
532
533 /**
534 * @tc.name : Test AudioEndpointSeparate API
535 * @tc.type : FUNC
536 * @tc.number: AudioEndpointSeparate_021
537 * @tc.desc : Test AudioEndpointSeparate::OnPause
538 */
539 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_021, TestSize.Level1)
540 {
541 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
542 uint64_t id = 0;
543 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
544 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
545 IAudioProcessStream *processStream = nullptr;
546 ptr->endpointStatus_.store(AudioEndpoint::EndpointStatus::RUNNING);
547 auto ret = ptr->OnPause(processStream);
548 EXPECT_EQ(ret, SUCCESS);
549 ptr->endpointStatus_.store(AudioEndpoint::EndpointStatus::IDEL);
550 ptr->isDeviceRunningInIdel_ = false;
551 ret = ptr->OnPause(processStream);
552 EXPECT_EQ(ret, SUCCESS);
553 ptr->endpointStatus_.store(AudioEndpoint::EndpointStatus::IDEL);
554 ptr->isDeviceRunningInIdel_ = true;
555 ret = ptr->OnPause(processStream);
556 EXPECT_EQ(ret, SUCCESS);
557 ptr->endpointStatus_.store(AudioEndpoint::EndpointStatus::STOPPING);
558 ret = ptr->OnPause(processStream);
559 EXPECT_EQ(ret, SUCCESS);
560 }
561
562 /**
563 * @tc.name : Test AudioEndpointSeparate API
564 * @tc.type : FUNC
565 * @tc.number: AudioEndpointSeparate_022
566 * @tc.desc : Test AudioEndpointSeparate::OnUpdateHandleInfo
567 */
568 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_022, TestSize.Level1)
569 {
570 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
571 uint64_t id = 0;
572 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
573 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
574 IAudioProcessStream *processStream = nullptr;
575 ptr->OnUpdateHandleInfo(processStream);
576 }
577
578 /**
579 * @tc.name : Test AudioEndpointSeparate API
580 * @tc.type : FUNC
581 * @tc.number: AudioEndpointSeparate_023
582 * @tc.desc : Test AudioEndpointSeparate::ProcessData
583 */
584 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_023, TestSize.Level1)
585 {
586 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
587 uint64_t id = 0;
588 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
589 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
590 std::vector<AudioStreamData> srcDataList;
591 AudioStreamData dstData;
592 ptr->ProcessData(srcDataList, dstData);
593 }
594
595 /**
596 * @tc.name : Test AudioEndpointSeparate API
597 * @tc.type : FUNC
598 * @tc.number: AudioEndpointSeparate_024
599 * @tc.desc : Test AudioEndpointSeparate::GetDeviceHandleInfo
600 */
601 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_024, TestSize.Level1)
602 {
603 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
604 uint64_t id = 0;
605 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
606 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
607 uint64_t frames = 0;
608 int64_t nanoTime = 0;
609 ptr->fastRenderId_ = HDI_INVALID_ID;
610 auto ret = ptr->GetDeviceHandleInfo(frames, nanoTime);
611 EXPECT_EQ(ret, false);
612 ptr->GetDeviceHandleInfo(frames, nanoTime);
613 }
614
615 /**
616 * @tc.name : Test AudioEndpointSeparate API
617 * @tc.type : FUNC
618 * @tc.number: AudioEndpointSeparate_025
619 * @tc.desc : Test AudioEndpointSeparate::GetStatusStr
620 */
621 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_025, TestSize.Level1)
622 {
623 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
624 uint64_t id = 0;
625 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
626 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
627 enum AudioEndpoint::EndpointStatus status = AudioEndpoint::EndpointStatus::INVALID;
628 auto ret = ptr->GetStatusStr(status);
629 EXPECT_EQ(ret, "INVALID");
630 status = AudioEndpoint::EndpointStatus::UNLINKED;
631 ret = ptr->GetStatusStr(status);
632 EXPECT_EQ(ret, "UNLINKED");
633 status = AudioEndpoint::EndpointStatus::IDEL;
634 ret = ptr->GetStatusStr(status);
635 EXPECT_EQ(ret, "IDEL");
636 status = AudioEndpoint::EndpointStatus::STARTING;
637 ret = ptr->GetStatusStr(status);
638 EXPECT_EQ(ret, "STARTING");
639 status = AudioEndpoint::EndpointStatus::RUNNING;
640 ret = ptr->GetStatusStr(status);
641 EXPECT_EQ(ret, "RUNNING");
642 status = AudioEndpoint::EndpointStatus::STOPPING;
643 ret = ptr->GetStatusStr(status);
644 EXPECT_EQ(ret, "STOPPING");
645 status = AudioEndpoint::EndpointStatus::STOPPED;
646 ret = ptr->GetStatusStr(status);
647 EXPECT_EQ(ret, "STOPPED");
648 const int noSuchStatus = 7;
649 status = static_cast<AudioEndpoint::EndpointStatus>(noSuchStatus);
650 ret = ptr->GetStatusStr(status);
651 EXPECT_EQ(ret, "NO_SUCH_STATUS");
652 }
653
654 /**
655 * @tc.name : Test AudioEndpointSeparate API
656 * @tc.type : FUNC
657 * @tc.number: AudioEndpointSeparate_026
658 * @tc.desc : Test AudioEndpointSeparate::WriteToProcessBuffers
659 */
660 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_026, TestSize.Level1)
661 {
662 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
663 uint64_t id = 0;
664 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
665 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
666 struct BufferDesc readBuf;
667 ptr->WriteToProcessBuffers(readBuf);
668 }
669
670 /**
671 * @tc.name : Test AudioEndpointSeparate API
672 * @tc.type : FUNC
673 * @tc.number: AudioEndpointSeparate_027
674 * @tc.desc : Test static enum AudioSampleFormat ConvertToHdiAdapterFormat
675 */
676 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_027, TestSize.Level1)
677 {
678 AudioSampleFormat format = SAMPLE_U8;
679 auto ret = ConvertToHdiAdapterFormat(format);
680 EXPECT_EQ(ret, SAMPLE_U8);
681 format = SAMPLE_S16LE;
682 ret = ConvertToHdiAdapterFormat(format);
683 EXPECT_EQ(ret, SAMPLE_S16LE);
684 format = SAMPLE_S24LE;
685 ret = ConvertToHdiAdapterFormat(format);
686 EXPECT_EQ(ret, SAMPLE_S24LE);
687 format = SAMPLE_S32LE;
688 ret = ConvertToHdiAdapterFormat(format);
689 EXPECT_EQ(ret, SAMPLE_S32LE);
690 format = SAMPLE_F32LE;
691 ret = ConvertToHdiAdapterFormat(format);
692 EXPECT_EQ(ret, SAMPLE_F32LE);
693 format = INVALID_WIDTH;
694 ret = ConvertToHdiAdapterFormat(format);
695 EXPECT_EQ(ret, INVALID_WIDTH);
696 }
697
698 /**
699 * @tc.name : Test AudioEndpointSeparate API
700 * @tc.type : FUNC
701 * @tc.number: AudioEndpointSeparate_028
702 * @tc.desc : Test AudioEndpointSeparate::Config
703 */
704 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_028, TestSize.Level1)
705 {
706 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
707 uint64_t id = 0;
708 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
709 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
710
711 std::shared_ptr<AudioDeviceDescriptor> ptr2 =
712 std::make_shared<AudioDeviceDescriptor>(AudioDeviceDescriptor::DEVICE_INFO);
713 ptr2->deviceRole_ = OUTPUT_DEVICE;
714 ptr2->networkId_ = LOCAL_NETWORK_ID;
715 ptr->Config(*ptr2);
716 }
717
718 /**
719 * @tc.name : Test AudioEndpointSeparate API
720 * @tc.type : FUNC
721 * @tc.number: AudioEndpointSeparate_029
722 * @tc.desc : Test AudioEndpointSeparate::InitAudiobuffer
723 */
724 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_029, TestSize.Level1)
725 {
726 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
727 uint64_t id = 0;
728 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
729 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
730
731 AudioBufferHolder bufferHolder = AudioBufferHolder::AUDIO_CLIENT;
732 uint32_t totalSizeInFrame = 0;
733 uint32_t spanSizeInFrame = 0;
734 uint32_t byteSizePerFrame = 0;
735 ptr->dstAudioBuffer_ = std::make_shared<OHAudioBuffer>(bufferHolder, totalSizeInFrame,
736 spanSizeInFrame, byteSizePerFrame);
737
738 bool resetReadWritePos = true;
739 ptr->InitAudiobuffer(resetReadWritePos);
740 resetReadWritePos = false;
741 ptr->InitAudiobuffer(resetReadWritePos);
742 ptr->deviceInfo_.deviceRole_ = INPUT_DEVICE;
743 ptr->InitAudiobuffer(resetReadWritePos);
744 ptr->deviceInfo_.deviceRole_ = OUTPUT_DEVICE;
745 ptr->InitAudiobuffer(resetReadWritePos);
746 }
747
748 /**
749 * @tc.name : Test AudioEndpointSeparate API
750 * @tc.type : FUNC
751 * @tc.number: AudioEndpointSeparate_040
752 * @tc.desc : Test AudioEndpointSeparate::ProcessData
753 */
754 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_030, TestSize.Level1)
755 {
756 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
757 uint64_t id = 0;
758 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
759 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
760
761 AudioStreamInfo streamInfo;
762 streamInfo.format = AudioSampleFormat::SAMPLE_S16LE;
763 streamInfo.channels = AudioChannel::STEREO;
764 BufferDesc bufferDesc = {nullptr, 0, 0};
765 int32_t volumeStart = 0;
766 int32_t volumeEnd = 0;
767 std::unordered_map<int32_t, bool> isInnerCaped;
768
769 AudioStreamData tddData = {streamInfo, bufferDesc, volumeStart, volumeEnd, isInnerCaped};
770 std::vector<AudioStreamData> srcDataList;
771 srcDataList.push_back(tddData);
772
773 BufferDesc bufferDesc_2 = {nullptr, 0, 1};
774 AudioStreamData dstData = {streamInfo, bufferDesc_2, volumeStart, volumeEnd, isInnerCaped};
775
776 ptr->ProcessData(srcDataList, dstData);
777 }
778
779 /**
780 * @tc.name : Test AudioEndpointSeparate API
781 * @tc.type : FUNC
782 * @tc.number: AudioEndpointSeparate_031
783 * @tc.desc : Test AudioEndpointSeparate::StartDevice
784 */
785 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_031, TestSize.Level1)
786 {
787 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
788 uint64_t id = 0;
789 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
790 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
791
792 ptr->endpointStatus_.store(AudioEndpoint::EndpointStatus::IDEL);
793 ptr->fastRenderId_ = HdiAdapterManager::GetInstance().GetId(HDI_ID_BASE_RENDER, HDI_ID_TYPE_FAST,
794 "endpoint_sep_test", true);
795 auto ret = ptr->StartDevice();
796 EXPECT_EQ(ret, false);
797 HdiAdapterManager::GetInstance().ReleaseId(ptr->fastRenderId_);
798 }
799
800 /**
801 * @tc.name : Test AudioEndpointSeparate API
802 * @tc.type : FUNC
803 * @tc.number: AudioEndpointSeparate_032
804 * @tc.desc : Test AudioEndpointSeparate::ProcessData
805 */
806 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_032, TestSize.Level1)
807 {
808 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
809 uint64_t id = 0;
810 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
811 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
812
813 AudioStreamInfo streamInfo;
814 streamInfo.format = AudioSampleFormat::INVALID_WIDTH;
815 BufferDesc bufferDesc;
816 int32_t volumeStart = 0;
817 int32_t volumeEnd = 0;
818 std::unordered_map<int32_t, bool> isInnerCaped;
819
820 AudioStreamData tddData = {streamInfo, bufferDesc, volumeStart, volumeEnd, isInnerCaped};
821
822 std::vector<AudioStreamData> srcDataList;
823 srcDataList.push_back(tddData);
824 AudioStreamData dstData = tddData;
825
826 ptr->ProcessData(srcDataList, dstData);
827 }
828
829 /**
830 * @tc.name : Test AudioEndpointSeparate API
831 * @tc.type : FUNC
832 * @tc.number: AudioEndpointSeparate_033
833 * @tc.desc : Test AudioEndpointSeparate::ProcessData
834 */
835 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_033, TestSize.Level1)
836 {
837 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
838 uint64_t id = 0;
839 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
840 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
841
842 AudioStreamInfo streamInfo;
843 streamInfo.format = AudioSampleFormat::SAMPLE_S16LE;
844 streamInfo.channels = AudioChannel::STEREO;
845 BufferDesc bufferDesc;
846 int32_t volumeStart = 0;
847 int32_t volumeEnd = 0;
848 std::unordered_map<int32_t, bool> isInnerCaped;
849
850 AudioStreamData tddData = {streamInfo, bufferDesc, volumeStart, volumeEnd, isInnerCaped};
851 std::vector<AudioStreamData> srcDataList;
852 srcDataList.push_back(tddData);
853
854 AudioStreamInfo streamInfo_2;
855 streamInfo_2.format = AudioSampleFormat::SAMPLE_S16LE;
856 streamInfo_2.channels = AudioChannel::STEREO;
857 AudioStreamData dstData = {streamInfo_2, bufferDesc, volumeStart, volumeEnd, isInnerCaped};
858
859 ptr->ProcessData(srcDataList, dstData);
860 }
861
862 /**
863 * @tc.name : Test AudioEndpointSeparate API
864 * @tc.type : FUNC
865 * @tc.number: AudioEndpointSeparate_034
866 * @tc.desc : Test AudioEndpointSeparate::ProcessData
867 */
868 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_034, TestSize.Level1)
869 {
870 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
871 uint64_t id = 0;
872 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
873 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
874
875 AudioStreamInfo streamInfo;
876 streamInfo.format = AudioSampleFormat::SAMPLE_S16LE;
877 streamInfo.channels = AudioChannel::STEREO;
878 BufferDesc bufferDesc = {nullptr, 0, 0};
879 int32_t volumeStart = 0;
880 int32_t volumeEnd = 0;
881 std::unordered_map<int32_t, bool> isInnerCaped;
882
883 AudioStreamData tddData = {streamInfo, bufferDesc, volumeStart, volumeEnd, isInnerCaped};
884 std::vector<AudioStreamData> srcDataList;
885 srcDataList.push_back(tddData);
886
887 BufferDesc bufferDesc_2 = {nullptr, 1, 0};
888 AudioStreamData dstData = {streamInfo, bufferDesc_2, volumeStart, volumeEnd, isInnerCaped};
889
890 ptr->ProcessData(srcDataList, dstData);
891 }
892
893 /**
894 * @tc.name : Test AudioEndpointSeparate API
895 * @tc.type : FUNC
896 * @tc.number: AudioEndpointSeparate_035
897 * @tc.desc : Test AudioEndpointSeparate::ProcessData
898 */
899 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_035, TestSize.Level1)
900 {
901 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
902 uint64_t id = 0;
903 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
904 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
905
906 AudioStreamInfo streamInfo;
907 streamInfo.format = AudioSampleFormat::SAMPLE_S16LE;
908 streamInfo.channels = AudioChannel::MONO;
909 BufferDesc bufferDesc;
910 int32_t volumeStart = 0;
911 int32_t volumeEnd = 0;
912 std::unordered_map<int32_t, bool> isInnerCaped;
913
914 AudioStreamData tddData = {streamInfo, bufferDesc, volumeStart, volumeEnd, isInnerCaped};
915
916 std::vector<AudioStreamData> srcDataList;
917 srcDataList.push_back(tddData);
918 AudioStreamData dstData = tddData;
919
920 ptr->ProcessData(srcDataList, dstData);
921 }
922
923 /**
924 * @tc.name : Test AudioEndpointSeparate API
925 * @tc.type : FUNC
926 * @tc.number: AudioEndpointSeparate_036
927 * @tc.desc : Test AudioEndpointSeparate::ProcessData
928 */
929 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_036, TestSize.Level1)
930 {
931 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
932 uint64_t id = 0;
933 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
934 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
935
936 AudioStreamInfo streamInfo;
937 streamInfo.format = AudioSampleFormat::SAMPLE_S16LE;
938 streamInfo.channels = AudioChannel::STEREO;
939 BufferDesc bufferDesc;
940 int32_t volumeStart = 0;
941 int32_t volumeEnd = 0;
942 std::unordered_map<int32_t, bool> isInnerCaped;
943
944 AudioStreamData tddData = {streamInfo, bufferDesc, volumeStart, volumeEnd, isInnerCaped};
945 std::vector<AudioStreamData> srcDataList;
946 srcDataList.push_back(tddData);
947
948 AudioStreamInfo streamInfo_2;
949 streamInfo_2.format = AudioSampleFormat::INVALID_WIDTH;
950 AudioStreamData dstData = {streamInfo_2, bufferDesc, volumeStart, volumeEnd, isInnerCaped};
951
952 ptr->ProcessData(srcDataList, dstData);
953 }
954
955 /**
956 * @tc.name : Test AudioEndpointSeparate API
957 * @tc.type : FUNC
958 * @tc.number: AudioEndpointSeparate_037
959 * @tc.desc : Test AudioEndpointSeparate::ProcessData
960 */
961 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_037, TestSize.Level1)
962 {
963 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
964 uint64_t id = 0;
965 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
966 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
967
968 AudioStreamInfo streamInfo;
969 streamInfo.format = AudioSampleFormat::SAMPLE_S16LE;
970 streamInfo.channels = AudioChannel::STEREO;
971 BufferDesc bufferDesc;
972 int32_t volumeStart = 0;
973 int32_t volumeEnd = 0;
974 std::unordered_map<int32_t, bool> isInnerCaped;
975
976 AudioStreamData tddData = {streamInfo, bufferDesc, volumeStart, volumeEnd, isInnerCaped};
977 std::vector<AudioStreamData> srcDataList;
978 srcDataList.push_back(tddData);
979
980 AudioStreamInfo streamInfo_2;
981 streamInfo_2.format = AudioSampleFormat::SAMPLE_S16LE;
982 streamInfo_2.channels = AudioChannel::MONO;
983 AudioStreamData dstData = {streamInfo_2, bufferDesc, volumeStart, volumeEnd, isInnerCaped};
984
985 ptr->ProcessData(srcDataList, dstData);
986 }
987
988 /**
989 * @tc.name : Test AudioEndpointSeparate API
990 * @tc.type : FUNC
991 * @tc.number: AudioEndpointSeparate_038
992 * @tc.desc : Test AudioEndpointSeparate::IsAnyProcessRunning
993 */
994 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_038, TestSize.Level1)
995 {
996 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
997 uint64_t id = 0;
998 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
999 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
1000
1001 ptr->processBufferList_.clear();
1002 auto ret = ptr->IsAnyProcessRunning();
1003 EXPECT_EQ(ret, false);
1004
1005 AudioBufferHolder bufferHolder = AudioBufferHolder::AUDIO_CLIENT;
1006 uint32_t totalSizeInFrame = 0;
1007 uint32_t spanSizeInFrame = 0;
1008 uint32_t byteSizePerFrame = 0;
1009 std::shared_ptr<OHAudioBuffer> processBuffer = std::make_shared<OHAudioBuffer>(bufferHolder, totalSizeInFrame,
1010 spanSizeInFrame, byteSizePerFrame);
1011 processBuffer->basicBufferInfo_ = std::make_shared<BasicBufferInfo>().get();
1012 processBuffer->basicBufferInfo_->streamStatus.store(StreamStatus::STREAM_STARTING);
1013 ptr->processBufferList_.push_back(processBuffer);
1014 ret = ptr->IsAnyProcessRunning();
1015 EXPECT_EQ(ret, false);
1016
1017 ptr->processBufferList_.clear();
1018 processBuffer->basicBufferInfo_->streamStatus.store(StreamStatus::STREAM_RUNNING);
1019 ptr->processBufferList_.push_back(processBuffer);
1020 ret = ptr->IsAnyProcessRunning();
1021 EXPECT_EQ(ret, true);
1022 }
1023
1024 /**
1025 * @tc.name : Test AudioEndpointSeparate API
1026 * @tc.type : FUNC
1027 * @tc.number: AudioEndpointSeparate_039
1028 * @tc.desc : Test AudioEndpointSeparate::OnUpdateHandleInfo
1029 */
1030 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_039, TestSize.Level1)
1031 {
1032 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
1033 uint64_t id = 0;
1034 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
1035 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
1036
1037 AudioProcessConfig config = InitProcessConfig();
1038 AudioService *g_audioServicePtr = AudioService::GetInstance();
1039 sptr<AudioProcessInServer> processStream = AudioProcessInServer::Create(config, g_audioServicePtr);
1040
1041 AudioBufferHolder bufferHolder = AudioBufferHolder::AUDIO_CLIENT;
1042 uint32_t totalSizeInFrame = 0;
1043 uint32_t spanSizeInFrame = 0;
1044 uint32_t byteSizePerFrame = 0;
1045
1046 processStream->isBufferConfiged_ = true;
1047 processStream->processBuffer_ = std::make_shared<OHAudioBuffer>(bufferHolder, totalSizeInFrame,
1048 spanSizeInFrame, byteSizePerFrame);
1049
1050 ptr->processList_.push_back(processStream);
1051 auto ret = ptr->OnUpdateHandleInfo(processStream);
1052 EXPECT_EQ(ret, SUCCESS);
1053 }
1054
1055 /**
1056 * @tc.name : Test AudioEndpointSeparate API
1057 * @tc.type : FUNC
1058 * @tc.number: AudioEndpointSeparate_040
1059 * @tc.desc : Test AudioEndpointSeparate::WriteToProcessBuffers
1060 */
1061 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_040, TestSize.Level1)
1062 {
1063 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
1064 uint64_t id = 0;
1065 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
1066 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
1067
1068 AudioBufferHolder bufferHolder = AudioBufferHolder::AUDIO_CLIENT;
1069 uint32_t totalSizeInFrame = 0;
1070 uint32_t spanSizeInFrame = 0;
1071 uint32_t byteSizePerFrame = 0;
1072 std::shared_ptr<OHAudioBuffer> processBuffer = std::make_shared<OHAudioBuffer>(bufferHolder, totalSizeInFrame,
1073 spanSizeInFrame, byteSizePerFrame);
1074 processBuffer->basicBufferInfo_ = std::make_shared<BasicBufferInfo>().get();
1075 processBuffer->basicBufferInfo_->streamStatus.store(StreamStatus::STREAM_RUNNING);
1076 ptr->processBufferList_.push_back(processBuffer);
1077
1078 struct BufferDesc readBuf;
1079 ptr->WriteToProcessBuffers(readBuf);
1080 }
1081
1082 /**
1083 * @tc.name : Test AudioEndpointSeparate API
1084 * @tc.type : FUNC
1085 * @tc.number: AudioEndpointSeparate_041
1086 * @tc.desc : Test AudioEndpointSeparate::WriteToProcessBuffers
1087 */
1088 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_041, TestSize.Level1)
1089 {
1090 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
1091 uint64_t id = 0;
1092 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
1093 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
1094
1095 AudioBufferHolder bufferHolder = AudioBufferHolder::AUDIO_CLIENT;
1096 uint32_t totalSizeInFrame = 0;
1097 uint32_t spanSizeInFrame = 0;
1098 uint32_t byteSizePerFrame = 0;
1099 std::shared_ptr<OHAudioBuffer> processBuffer = std::make_shared<OHAudioBuffer>(bufferHolder, totalSizeInFrame,
1100 spanSizeInFrame, byteSizePerFrame);
1101 processBuffer->basicBufferInfo_ = std::make_shared<BasicBufferInfo>().get();
1102 processBuffer->basicBufferInfo_->streamStatus.store(StreamStatus::STREAM_STARTING);
1103 ptr->processBufferList_.push_back(processBuffer);
1104
1105 struct BufferDesc readBuf;
1106 ptr->WriteToProcessBuffers(readBuf);
1107 }
1108
1109 /**
1110 * @tc.name : Test AudioEndpointSeparate API
1111 * @tc.type : FUNC
1112 * @tc.number: AudioEndpointSeparate_042
1113 * @tc.desc : Test AudioEndpointSeparate::WriteToProcessBuffers
1114 */
1115 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_042, TestSize.Level1)
1116 {
1117 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
1118 uint64_t id = 0;
1119 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
1120 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
1121
1122 std::shared_ptr<OHAudioBuffer> processBuffer = nullptr;
1123 ptr->processBufferList_.push_back(processBuffer);
1124
1125 struct BufferDesc readBuf;
1126 ptr->WriteToProcessBuffers(readBuf);
1127 }
1128
1129 /**
1130 * @tc.name : Test AudioEndpointSeparate API
1131 * @tc.type : FUNC
1132 * @tc.number: AudioEndpointSeparate_043
1133 * @tc.desc : Test AudioEndpointSeparate::WriteToProcessBuffers
1134 */
1135 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_043, TestSize.Level1)
1136 {
1137 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
1138 uint64_t id = 0;
1139 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
1140 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
1141
1142 AudioBufferHolder bufferHolder = AudioBufferHolder::AUDIO_CLIENT;
1143 uint32_t totalSizeInFrame = 0;
1144 uint32_t spanSizeInFrame = 0;
1145 uint32_t byteSizePerFrame = 0;
1146 std::shared_ptr<OHAudioBuffer> processBuffer = std::make_shared<OHAudioBuffer>(bufferHolder, totalSizeInFrame,
1147 spanSizeInFrame, byteSizePerFrame);
1148
1149 ptr->processBufferList_.push_back(processBuffer);
1150
1151 struct BufferDesc readBuf;
1152 ptr->WriteToProcessBuffers(readBuf);
1153 }
1154
1155 /**
1156 * @tc.name : Test AudioEndpointSeparate API
1157 * @tc.type : FUNC
1158 * @tc.number: AudioEndpointSeparate_044
1159 * @tc.desc : Test AudioEndpointSeparate::GetDeviceHandleInfo
1160 */
1161 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_044, TestSize.Level1)
1162 {
1163 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
1164 uint64_t id = 0;
1165 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
1166 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
1167 uint64_t frames = 0;
1168 int64_t nanoTime = 0;
1169 ptr->fastRenderId_ = HdiAdapterManager::GetInstance().GetId(HDI_ID_BASE_RENDER, HDI_ID_TYPE_FAST,
1170 "endpoint_sep_test", true);
1171 ptr->GetDeviceHandleInfo(frames, nanoTime);
1172 HdiAdapterManager::GetInstance().ReleaseId(ptr->fastRenderId_);
1173 }
1174
1175 /**
1176 * @tc.name : Test AudioEndpointSeparate API
1177 * @tc.type : FUNC
1178 * @tc.number: AudioEndpointSeparate_045
1179 * @tc.desc : Test AudioEndpointSeparate::ShouldInnerCap
1180 */
1181 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_045, TestSize.Level1)
1182 {
1183 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
1184 uint64_t id = 0;
1185 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
1186 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
1187 int32_t innerCapId = 0;
1188 bool ret = true;
1189
1190 ret = ptr->ShouldInnerCap(innerCapId);
1191 EXPECT_EQ(ret, false);
1192 }
1193
1194 /**
1195 * @tc.name : Test AudioEndpointSeparate API
1196 * @tc.type : FUNC
1197 * @tc.number: AudioEndpointSeparate_046
1198 * @tc.desc : Test AudioEndpointSeparate::EnableFastInnerCap
1199 */
1200 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_046, TestSize.Level1)
1201 {
1202 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
1203 uint64_t id = 0;
1204 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
1205 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
1206 int32_t innerCapId = 0;
1207 int32_t ret = 0;
1208
1209 ret = ptr->EnableFastInnerCap(innerCapId);
1210 EXPECT_EQ(ret, ERR_INVALID_OPERATION);
1211 }
1212
1213 /**
1214 * @tc.name : Test AudioEndpointSeparate API
1215 * @tc.type : FUNC
1216 * @tc.number: AudioEndpointSeparate_047
1217 * @tc.desc : Test AudioEndpointSeparate::GetBuffer
1218 */
1219 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_047, TestSize.Level1)
1220 {
1221 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
1222 uint64_t id = 0;
1223 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
1224 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
1225 std::shared_ptr<OHAudioBuffer> ret;
1226
1227 ret = ptr->GetBuffer();
1228 EXPECT_EQ(ret, nullptr);
1229 }
1230
1231 /**
1232 * @tc.name : Test AudioEndpointSeparate API
1233 * @tc.type : FUNC
1234 * @tc.number: AudioEndpointSeparate_048
1235 * @tc.desc : Test AudioEndpointSeparate::GetPreferBufferInfo
1236 */
1237 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_048, TestSize.Level1)
1238 {
1239 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
1240 uint64_t id = 0;
1241 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
1242 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
1243 uint32_t totalSizeInframe = 0;
1244 uint32_t spanSizeInframe = 0;
1245 int32_t ret = 0;
1246
1247 ret = ptr->GetPreferBufferInfo(totalSizeInframe, spanSizeInframe);
1248 EXPECT_EQ(ret, SUCCESS);
1249 }
1250
1251 /**
1252 * @tc.name : Test AudioEndpointSeparate API
1253 * @tc.type : FUNC
1254 * @tc.number: AudioEndpointSeparate_049
1255 * @tc.desc : Test AudioEndpointSeparate::GetMaxAmplitude
1256 */
1257 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_049, TestSize.Level1)
1258 {
1259 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
1260 uint64_t id = 0;
1261 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
1262 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
1263 float ret;
1264
1265 ret = ptr->GetMaxAmplitude();
1266 EXPECT_EQ(ret, 0);
1267 }
1268
1269 /**
1270 * @tc.name : Test AudioEndpointSeparate API
1271 * @tc.type : FUNC
1272 * @tc.number: AudioEndpointSeparate_050
1273 * @tc.desc : Test AudioEndpointSeparate::GetLinkedProcessCount
1274 */
1275 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_050, TestSize.Level1)
1276 {
1277 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
1278 uint64_t id = 0;
1279 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
1280 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
1281 uint32_t ret;
1282
1283 ret = ptr->GetLinkedProcessCount();
1284 EXPECT_EQ(ret, 0);
1285 }
1286
1287 /**
1288 * @tc.name : Test AudioEndpointSeparate API
1289 * @tc.type : FUNC
1290 * @tc.number: AudioEndpointSeparate_051
1291 * @tc.desc : Test AudioEndpointSeparate::GetAudioMode
1292 */
1293 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_051, TestSize.Level1)
1294 {
1295 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
1296 uint64_t id = 0;
1297 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
1298 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
1299 AudioMode ret;
1300
1301 ret = ptr->GetAudioMode();
1302 EXPECT_EQ(ret, AUDIO_MODE_PLAYBACK);
1303 }
1304
1305 /**
1306 * @tc.name : Test AudioEndpointSeparate API
1307 * @tc.type : FUNC
1308 * @tc.number: AudioEndpointSeparate_052
1309 * @tc.desc : Test AudioEndpointSeparate::GetProcLastWriteDoneInfo
1310 */
1311 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_052, TestSize.Level1)
1312 {
1313 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
1314 uint64_t id = 0;
1315 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
1316 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
1317 int32_t ret;
1318 AudioBufferHolder bufferHolder = AudioBufferHolder::AUDIO_SERVER_SHARED;
1319 uint32_t totalSizeInFrame = 96;
1320 uint32_t spanSizeInFrame = 16;
1321 uint32_t byteSizePerFrame = 4;
1322 std::shared_ptr<OHAudioBuffer> processBuffer = std::make_shared<OHAudioBuffer>(bufferHolder, totalSizeInFrame,
1323 spanSizeInFrame, byteSizePerFrame);
1324 uint64_t curWriteFrame = 0;
1325 uint64_t proHandleFrame = 0;
1326 int64_t proHandleTime = 0;
1327 int dataFd = INVALID_FD;
1328 int infoFd = AUDIO_SERVER_SHARED;
1329
1330 ret = processBuffer->Init(dataFd, infoFd);
1331 EXPECT_EQ(ret, SUCCESS);
1332
1333 ptr->dstSpanSizeInframe_ = 4;
1334 ret = ptr->GetProcLastWriteDoneInfo(processBuffer, curWriteFrame, proHandleFrame, proHandleTime);
1335 EXPECT_EQ(ret, SUCCESS);
1336
1337 curWriteFrame = 5;
1338 ret = ptr->GetProcLastWriteDoneInfo(processBuffer, curWriteFrame, proHandleFrame, proHandleTime);
1339 EXPECT_EQ(ret, SUCCESS);
1340 }
1341
1342 /**
1343 * @tc.name : Test AudioEndpointSeparate API
1344 * @tc.type : FUNC
1345 * @tc.number: AudioEndpointSeparate_053
1346 * @tc.desc : Test AudioEndpointSeparate::LinkProcessStream
1347 */
1348 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_053, TestSize.Level1)
1349 {
1350 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
1351 uint64_t id = 0;
1352 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
1353 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
1354
1355 AudioProcessConfig config = InitProcessConfig();
1356 AudioService *g_audioServicePtr = AudioService::GetInstance();
1357 sptr<AudioProcessInServer> processStream = AudioProcessInServer::Create(config, g_audioServicePtr);
1358 bool startWhenLinking = false;
1359 int32_t ret = 0;
1360 AudioBufferHolder bufferHolder = AudioBufferHolder::AUDIO_CLIENT;
1361 uint32_t totalSizeInFrame = 0;
1362 uint32_t spanSizeInFrame = 0;
1363 uint32_t byteSizePerFrame = 0;
1364 std::shared_ptr<OHAudioBuffer> processBuffer = std::make_shared<OHAudioBuffer>(bufferHolder, totalSizeInFrame,
1365 spanSizeInFrame, byteSizePerFrame);
1366
1367 processBuffer->basicBufferInfo_ = std::make_shared<BasicBufferInfo>().get();
1368 processBuffer->basicBufferInfo_->streamStatus.store(StreamStatus::STREAM_STARTING);
1369 processStream->isBufferConfiged_ = true;
1370 processStream->processBuffer_ = processBuffer;
1371 ptr->processList_.push_back(processStream);
1372
1373 ptr->endpointStatus_ = AudioEndpoint::EndpointStatus::RUNNING;
1374 ret = ptr->LinkProcessStream(processStream, startWhenLinking);
1375 EXPECT_EQ(ret, SUCCESS);
1376
1377 ptr->endpointStatus_ = AudioEndpoint::EndpointStatus::UNLINKED;
1378 ret = ptr->LinkProcessStream(processStream, startWhenLinking);
1379 EXPECT_EQ(ret, SUCCESS);
1380
1381 processBuffer->basicBufferInfo_->streamStatus.store(StreamStatus::STREAM_RUNNING);
1382 ptr->isDeviceRunningInIdel_ = true;
1383 ptr->endpointStatus_ = AudioEndpoint::EndpointStatus::UNLINKED;
1384 ret = ptr->LinkProcessStream(processStream, startWhenLinking);
1385 EXPECT_EQ(ret, SUCCESS);
1386
1387 processBuffer->basicBufferInfo_->streamStatus.store(StreamStatus::STREAM_RUNNING);
1388 ptr->isDeviceRunningInIdel_ = false;
1389 ptr->endpointStatus_ = AudioEndpoint::EndpointStatus::UNLINKED;
1390 ret = ptr->LinkProcessStream(processStream, startWhenLinking);
1391 EXPECT_EQ(ret, SUCCESS);
1392
1393 processBuffer->basicBufferInfo_->streamStatus.store(StreamStatus::STREAM_RUNNING);
1394 ptr->isDeviceRunningInIdel_ = false;
1395 ptr->endpointStatus_ = AudioEndpoint::EndpointStatus::INVALID;
1396 ret = ptr->LinkProcessStream(processStream, startWhenLinking);
1397 EXPECT_EQ(ret, SUCCESS);
1398 }
1399
1400 /**
1401 * @tc.name : Test AudioEndpointSeparate API
1402 * @tc.type : FUNC
1403 * @tc.number: AudioEndpointSeparate_054
1404 * @tc.desc : Test AudioEndpointSeparate::UnlinkProcessStream
1405 */
1406 HWTEST(AudioEndpointSeparateUnitTest, AudioEndpointSeparate_054, TestSize.Level1)
1407 {
1408 AudioEndpoint::EndpointType type = AudioEndpoint::EndpointType::TYPE_MMAP;
1409 uint64_t id = 0;
1410 AudioStreamType streamType = AudioStreamType::STREAM_DEFAULT;
1411 std::shared_ptr<AudioEndpointSeparate> ptr = std::make_shared<AudioEndpointSeparate>(type, id, streamType);
1412
1413 AudioProcessConfig config = InitProcessConfig();
1414 AudioService *g_audioServicePtr = AudioService::GetInstance();
1415 sptr<AudioProcessInServer> processStream = AudioProcessInServer::Create(config, g_audioServicePtr);
1416 int32_t ret = 0;
1417 AudioBufferHolder bufferHolder = AudioBufferHolder::AUDIO_CLIENT;
1418 uint32_t totalSizeInFrame = 0;
1419 uint32_t spanSizeInFrame = 0;
1420 uint32_t byteSizePerFrame = 0;
1421 std::shared_ptr<OHAudioBuffer> processBuffer = std::make_shared<OHAudioBuffer>(bufferHolder, totalSizeInFrame,
1422 spanSizeInFrame, byteSizePerFrame);
1423
1424 processBuffer->basicBufferInfo_ = std::make_shared<BasicBufferInfo>().get();
1425 processBuffer->basicBufferInfo_->streamStatus.store(StreamStatus::STREAM_STARTING);
1426 processStream->isBufferConfiged_ = true;
1427 processStream->processBuffer_ = processBuffer;
1428 ptr->processList_.push_back(processStream);
1429 ptr->processBufferList_.push_back(processBuffer);
1430
1431 ptr->endpointStatus_ = AudioEndpoint::EndpointStatus::RUNNING;
1432 ret = ptr->UnlinkProcessStream(processStream);
1433 EXPECT_EQ(ret, SUCCESS);
1434 }
1435 } // namespace AudioStandard
1436 } // namespace OHOS
1437