1 /*
2 * Copyright (c) 2023 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 "oh_audio_stream_builder_unit_test.h"
17
18 using namespace testing::ext;
19
20 namespace OHOS {
21 namespace AudioStandard {
22
23 namespace {
24 const int32_t SAMPLING_RATE_44100 = 44100;
25 const int32_t SAMPLING_RATE_48000 = 48000;
26 const int32_t SAMPLING_RATE_88200 = 88200;
27 const int32_t SAMPLING_RATE_176400 = 176400;
28 const int32_t SAMPLING_RATE_192000 = 192000;
29 const int32_t SAMPLING_RATE_WRONG_NUM = -1;
30
31 const int32_t CHANNEL_COUNT_1 = 1;
32 const int32_t CHANNEL_COUNT_16 = 16;
33 const int32_t CHANNEL_COUNT_18 = 18;
34
35 FILE *g_file;
36 bool g_readEnd = false;
37 }
38
39 const int32_t SAMPLING_RATE = 48000; // 48000:SAMPLING_RATE value
40 const int32_t CHANNEL_COUNT = 2; // 2:CHANNEL_COUNT value
41 const int32_t g_latencyMode = 0;
42 const int32_t g_sampleFormat = 1;
43 const int32_t g_frameSize = 240; // 240:g_frameSize value
44
AudioRendererOnWriteDataInterrupt(OH_AudioRenderer * capturer,void * userData,void * buffer,int32_t bufferLen)45 static int32_t AudioRendererOnWriteDataInterrupt(OH_AudioRenderer* capturer,
46 void* userData,
47 void* buffer,
48 int32_t bufferLen)
49 {
50 return 0;
51 }
52
AudioRendererInterruptEvent(OH_AudioRenderer * renderer,void * userData,OH_AudioInterrupt_ForceType type,OH_AudioInterrupt_Hint hint)53 static int32_t AudioRendererInterruptEvent(OH_AudioRenderer* renderer,
54 void* userData,
55 OH_AudioInterrupt_ForceType type,
56 OH_AudioInterrupt_Hint hint)
57 {
58 printf("AudioRendererInterruptEvent type = %d, hint = %d\n", type, hint);
59 return 0;
60 }
61
AudioRendererOnWriteData(OH_AudioRenderer * capturer,void * userData,void * buffer,int32_t bufferLen)62 static int32_t AudioRendererOnWriteData(OH_AudioRenderer* capturer,
63 void* userData,
64 void* buffer,
65 int32_t bufferLen)
66 {
67 size_t readCount = fread(buffer, bufferLen, 1, g_file);
68 if (!readCount) {
69 g_readEnd = true;
70 if (ferror(g_file)) {
71 printf("Error reading myfile");
72 } else if (feof(g_file)) {
73 printf("EOF found");
74 }
75 }
76
77 return 0;
78 }
79
AudioRendererWriteDataWithMetadataCallback(OH_AudioRenderer * renderer,void * userData,void * audioData,int32_t audioDataSize,void * metadata,int32_t metadataSize)80 static int32_t AudioRendererWriteDataWithMetadataCallback(OH_AudioRenderer *renderer,
81 void *userData, void *audioData, int32_t audioDataSize, void *metadata, int32_t metadataSize)
82 {
83 size_t readCount = fread(audioData, audioDataSize, 1, g_file);
84 if (!readCount) {
85 g_readEnd = true;
86 if (ferror(g_file)) {
87 printf("Error reading myfile");
88 } else if (feof(g_file)) {
89 printf("EOF found");
90 }
91 return 0;
92 }
93 readCount = fread(metadata, metadataSize, 1, g_file);
94 if (!readCount) {
95 g_readEnd = true;
96 if (ferror(g_file)) {
97 printf("Error reading myfile");
98 } else if (feof(g_file)) {
99 printf("EOF found");
100 }
101 }
102 return 0;
103 }
104
AudioCapturerOnReadData(OH_AudioCapturer * capturer,void * userData,void * buffer,int32_t bufferLen)105 static int32_t AudioCapturerOnReadData(
106 OH_AudioCapturer* capturer,
107 void* userData,
108 void* buffer,
109 int32_t bufferLen)
110 {
111 printf("callback success\n");
112 return 0;
113 }
114
OnWriteDataCallbackWithValidData(OH_AudioRenderer * renderer,void * userData,void * buffer,int32_t bufferLen)115 static OH_AudioData_Callback_Result OnWriteDataCallbackWithValidData(OH_AudioRenderer* renderer,
116 void* userData,
117 void* buffer,
118 int32_t bufferLen)
119 {
120 return AUDIO_DATA_CALLBACK_RESULT_VALID;
121 }
122
OnWriteDataCallbackWithInvalidData(OH_AudioRenderer * renderer,void * userData,void * buffer,int32_t bufferLen)123 static OH_AudioData_Callback_Result OnWriteDataCallbackWithInvalidData(OH_AudioRenderer* renderer,
124 void* userData,
125 void* buffer,
126 int32_t bufferLen)
127 {
128 return AUDIO_DATA_CALLBACK_RESULT_INVALID;
129 }
130
131
SetUpTestCase(void)132 void OHAudioStreamBuilderUnitTest::SetUpTestCase(void) { }
133
TearDownTestCase(void)134 void OHAudioStreamBuilderUnitTest::TearDownTestCase(void) { }
135
SetUp(void)136 void OHAudioStreamBuilderUnitTest::SetUp(void) { }
137
TearDown(void)138 void OHAudioStreamBuilderUnitTest::TearDown(void) { }
139
140 /**
141 * @tc.name : Test OH_AudioStreamBuilder_Create API via legal state, AUDIOSTREAM_TYPE_RENDERER.
142 * @tc.number: OH_AudioStreamBuilder_Create_001
143 * @tc.desc : Test OH_AudioStreamBuilder_Create interface. Returns true if result is successful.
144 */
145 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_Create_001, TestSize.Level0)
146 {
147 OH_AudioStreamBuilder* builder = nullptr;
148 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
149 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
150 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
151
152 result = OH_AudioStreamBuilder_Destroy(builder);
153 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
154 }
155
156 /**
157 * @tc.name : Test OH_AudioStreamBuilder_Create API via legal state, AUDIOSTREAM_TYPE_CAPTURER.
158 * @tc.number: OH_AudioStreamBuilder_Create_001
159 * @tc.desc : Test OH_AudioStreamBuilder_Create interface. Returns true if result is successful.
160 */
161 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_Create_002, TestSize.Level0)
162 {
163 OH_AudioStreamBuilder* builder;
164 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
165 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
166 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
167
168 result = OH_AudioStreamBuilder_Destroy(builder);
169 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
170 }
171
172 /**
173 * @tc.name : Test OH_AudioStreamBuilder_Destroy API via illegal state.
174 * @tc.number: OH_AudioStreamBuilder_Destroy_001
175 * @tc.desc : Test OH_AudioStreamBuilder_Destroy interface. Returns error code, if builder pointer is nullptr.
176 */
177 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_Destroy_001, TestSize.Level0)
178 {
179 OH_AudioStreamBuilder* builder = nullptr;
180
181 OH_AudioStream_Result result = OH_AudioStreamBuilder_Destroy(builder);
182 EXPECT_TRUE(result == AUDIOSTREAM_ERROR_INVALID_PARAM);
183 }
184
185 /**
186 * @tc.name : Test OH_AudioStreamBuilder_SetSamplingRate API via legal state, samplingRate is 48000.
187 * @tc.number: OH_AudioStreamBuilder_SetParameter_001
188 * @tc.desc : Test OH_AudioStreamBuilder_SetSamplingRate interface. Returns true if result is successful.
189 */
190 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetParameter_001, TestSize.Level0)
191 {
192 OH_AudioStreamBuilder* builder;
193 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
194 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
195 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
196
197 int32_t samplingRate = SAMPLING_RATE_48000;
198 result = OH_AudioStreamBuilder_SetSamplingRate(builder, samplingRate);
199 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
200
201 result = OH_AudioStreamBuilder_Destroy(builder);
202 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
203 }
204
205 /**
206 * @tc.name : Test OH_AudioStreamBuilder_SetSamplingRate API via legal state, samplingRate is 44100.
207 * @tc.number: OH_AudioStreamBuilder_SetParameter_002
208 * @tc.desc : Test OH_AudioStreamBuilder_SetSamplingRate interface. Returns true if result is successful.
209 */
210 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetParameter_002, TestSize.Level0)
211 {
212 OH_AudioStreamBuilder* builder;
213 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
214 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
215 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
216
217 int32_t samplingRate = SAMPLING_RATE_44100;
218 result = OH_AudioStreamBuilder_SetSamplingRate(builder, samplingRate);
219 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
220
221 result = OH_AudioStreamBuilder_Destroy(builder);
222 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
223 }
224
225 /**
226 * @tc.name : Test OH_AudioStreamBuilder_SetSamplingRate API via legal state, samplingRate is 88200.
227 * @tc.number: OH_AudioStreamBuilder_SetParameter_003
228 * @tc.desc : Test OH_AudioStreamBuilder_SetSamplingRate interface. Returns true if result is successful.
229 */
230 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetParameter_003, TestSize.Level0)
231 {
232 OH_AudioStreamBuilder* builder;
233 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
234 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
235 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
236
237 int32_t samplingRate = SAMPLING_RATE_88200;
238 result = OH_AudioStreamBuilder_SetSamplingRate(builder, samplingRate);
239 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
240
241 result = OH_AudioStreamBuilder_Destroy(builder);
242 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
243 }
244
245 /**
246 * @tc.name : Test OH_AudioStreamBuilder_SetSamplingRate API via legal state, samplingRate is 176400.
247 * @tc.number: OH_AudioStreamBuilder_SetParameter_018
248 * @tc.desc : Test OH_AudioStreamBuilder_SetSamplingRate interface. Returns true if result is successful.
249 */
250 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetParameter_018, TestSize.Level0)
251 {
252 OH_AudioStreamBuilder* builder;
253 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
254 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
255 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
256
257 int32_t samplingRate = SAMPLING_RATE_176400;
258 result = OH_AudioStreamBuilder_SetSamplingRate(builder, samplingRate);
259 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
260
261 result = OH_AudioStreamBuilder_Destroy(builder);
262 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
263 }
264
265 /**
266 * @tc.name : Test OH_AudioStreamBuilder_SetSamplingRate API via legal state, samplingRate is 192000.
267 * @tc.number: OH_AudioStreamBuilder_SetParameter_019
268 * @tc.desc : Test OH_AudioStreamBuilder_SetSamplingRate interface. Returns true if result is successful.
269 */
270 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetParameter_019, TestSize.Level0)
271 {
272 OH_AudioStreamBuilder* builder;
273 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
274 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
275 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
276
277 int32_t samplingRate = SAMPLING_RATE_192000;
278 result = OH_AudioStreamBuilder_SetSamplingRate(builder, samplingRate);
279 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
280
281 result = OH_AudioStreamBuilder_Destroy(builder);
282 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
283 }
284
285 /**
286 * @tc.name : Test OH_AudioStreamBuilder_SetSamplingRate API via illegal state.
287 * @tc.number: OH_AudioStreamBuilder_SetParameter_020
288 * @tc.desc : Test OH_AudioStreamBuilder_SetSamplingRate interface. Returns error code, if samplingRate is -1.
289 */
290 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetParameter_020, TestSize.Level0)
291 {
292 OH_AudioStreamBuilder* builder;
293 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
294 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
295 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
296
297 int32_t samplingRate = SAMPLING_RATE_WRONG_NUM;
298 result = OH_AudioStreamBuilder_SetSamplingRate(builder, samplingRate);
299 EXPECT_TRUE(result == AUDIOSTREAM_ERROR_INVALID_PARAM);
300
301 result = OH_AudioStreamBuilder_Destroy(builder);
302 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
303 }
304
305 /**
306 * @tc.name : Test OH_AudioStreamBuilder_SetChannelCount API via legal state, channelCount is 1.
307 * @tc.number: OH_AudioStreamBuilder_SetParameter_004
308 * @tc.desc : Test OH_AudioStreamBuilder_SetChannelCount interface. Returns true if result is successful.
309 */
310 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetParameter_004, TestSize.Level0)
311 {
312 OH_AudioStreamBuilder* builder;
313 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
314 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
315 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
316
317 int32_t channelCount = CHANNEL_COUNT_1;
318 result = OH_AudioStreamBuilder_SetChannelCount(builder, channelCount);
319 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
320
321 result = OH_AudioStreamBuilder_Destroy(builder);
322 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
323 }
324
325 /**
326 * @tc.name : Test OH_AudioStreamBuilder_SetChannelCount API via legal state, channelCount is 16.
327 * @tc.number: OH_AudioStreamBuilder_SetParameter_005
328 * @tc.desc : Test OH_AudioStreamBuilder_SetChannelCount interface. Returns true if result is successful.
329 */
330 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetParameter_005, TestSize.Level0)
331 {
332 OH_AudioStreamBuilder* builder;
333 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
334 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
335 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
336
337 int32_t channelCount = CHANNEL_COUNT_16;
338 result = OH_AudioStreamBuilder_SetChannelCount(builder, channelCount);
339 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
340
341 result = OH_AudioStreamBuilder_Destroy(builder);
342 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
343 }
344
345 /**
346 * @tc.name : Test OH_AudioStreamBuilder_SetChannelCount API via illegal state.
347 * @tc.number: OH_AudioStreamBuilder_SetParameter_006
348 * @tc.desc : Test OH_AudioStreamBuilder_SetChannelCount interface. Returns error code, if channelCount is 8.
349 */
350 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetParameter_006, TestSize.Level0)
351 {
352 OH_AudioStreamBuilder* builder;
353 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
354 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
355 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
356
357 int32_t channelCount = CHANNEL_COUNT_18;
358 result = OH_AudioStreamBuilder_SetChannelCount(builder, channelCount);
359 EXPECT_TRUE(result == AUDIOSTREAM_ERROR_INVALID_PARAM);
360
361 result = OH_AudioStreamBuilder_Destroy(builder);
362 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
363 }
364
365 /**
366 * @tc.name : Test OH_AudioStreamBuilder_SetEncodingType API via legal state, AUDIOSTREAM_ENCODING_TYPE_RAW.
367 * @tc.number: OH_AudioStreamBuilder_SetParameter_007
368 * @tc.desc : Test OH_AudioStreamBuilder_SetEncodingType interface. Returns true if result is successful.
369 */
370 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetParameter_007, TestSize.Level0)
371 {
372 OH_AudioStreamBuilder* builder;
373 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
374 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
375 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
376
377 OH_AudioStream_EncodingType encodingType = AUDIOSTREAM_ENCODING_TYPE_RAW;
378 result = OH_AudioStreamBuilder_SetEncodingType(builder, encodingType);
379 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
380
381 result = OH_AudioStreamBuilder_Destroy(builder);
382 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
383 }
384
385 /**
386 * @tc.name : Test OH_AudioStreamBuilder_SetRendererInfo API via illegal state.
387 * @tc.number: OH_AudioStreamBuilder_SetParameter_008
388 * @tc.desc : Test OH_AudioStreamBuilder_SetRendererInfo interface. Returns error code, if stream type is
389 * AUDIOSTREAM_TYPE_CAPTURER.
390 */
391 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetParameter_008, TestSize.Level0)
392 {
393 OH_AudioStreamBuilder* builder;
394 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
395 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
396 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
397
398 OH_AudioStream_Usage usage = AUDIOSTREAM_USAGE_MUSIC;
399 result = OH_AudioStreamBuilder_SetRendererInfo(builder, usage);
400 EXPECT_TRUE(result == AUDIOSTREAM_ERROR_INVALID_PARAM);
401
402 result = OH_AudioStreamBuilder_Destroy(builder);
403 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
404 }
405
406 /**
407 * @tc.name : Test OH_AudioStreamBuilder_SetRendererInfo API via legal state.
408 * @tc.number: OH_AudioStreamBuilder_SetParameter_009
409 * @tc.desc : Test OH_AudioStreamBuilder_SetRendererInfo interface. Returns true if result is successful.
410 */
411 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetParameter_009, TestSize.Level0)
412 {
413 OH_AudioStreamBuilder* builder;
414 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
415 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
416 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
417
418 OH_AudioStream_Usage usage = AUDIOSTREAM_USAGE_VOICE_COMMUNICATION;
419 result = OH_AudioStreamBuilder_SetRendererInfo(builder, usage);
420 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
421
422 result = OH_AudioStreamBuilder_Destroy(builder);
423 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
424 }
425
426 /**
427 * @tc.name : Test OH_AudioStreamBuilder_SetRendererInfo API via illegal state.
428 * @tc.number: OH_AudioStreamBuilder_SetParameter_010
429 * @tc.desc : Test OH_AudioStreamBuilder_SetRendererInfo interface. Returns error code, if builder type
430 * is AUDIOSTREAM_TYPE_CAPTURER.
431 */
432 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetParameter_010, TestSize.Level0)
433 {
434 OH_AudioStreamBuilder* builder;
435 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
436 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
437 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
438
439 OH_AudioStream_Usage usage = AUDIOSTREAM_USAGE_VOICE_COMMUNICATION;
440 result = OH_AudioStreamBuilder_SetRendererInfo(builder, usage);
441 EXPECT_TRUE(result == AUDIOSTREAM_ERROR_INVALID_PARAM);
442
443 result = OH_AudioStreamBuilder_Destroy(builder);
444 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
445 }
446
447 /**
448 * @tc.name : Test OH_AudioStreamBuilder_SetRendererCallback API via legal state.
449 * @tc.number: OH_AudioStreamBuilder_SetParameter_011
450 * @tc.desc : Test OH_AudioStreamBuilder_SetRendererCallback interface. Returns true if result is successful.
451 */
452 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetParameter_011, TestSize.Level0)
453 {
454 OH_AudioStreamBuilder* builder;
455 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
456 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
457 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
458
459 OH_AudioRenderer_Callbacks callbacks;
460 callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteData;
461 result = OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, NULL);
462 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
463
464 result = OH_AudioStreamBuilder_Destroy(builder);
465 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
466 }
467
468 /**
469 * @tc.name : Test OH_AudioStreamBuilder_SetRendererCallback API via illegal state.
470 * @tc.number: OH_AudioStreamBuilder_SetParameter_012
471 * @tc.desc : Test OH_AudioStreamBuilder_SetRendererCallback interface. Returns error code, builder type
472 * is AUDIOSTREAM_TYPE_CAPTURER.
473 */
474 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetParameter_012, TestSize.Level0)
475 {
476 OH_AudioStreamBuilder* builder;
477 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
478 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
479 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
480
481 OH_AudioRenderer_Callbacks callbacks;
482 callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteData;
483 result = OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, NULL);
484 EXPECT_TRUE(result == AUDIOSTREAM_ERROR_INVALID_PARAM);
485
486 result = OH_AudioStreamBuilder_Destroy(builder);
487 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
488 }
489
490 /**
491 * @tc.name : Test OH_AudioStreamBuilder_SetRendererPrivacy API.
492 * @tc.number: OH_AudioStreamBuilder_SetRendererPrivacy_001
493 * @tc.desc : Test OH_AudioStreamBuilder_SetRendererPrivacy interface via illegal stream type.
494 */
495 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetRendererPrivacy_001, TestSize.Level0)
496 {
497 OH_AudioStreamBuilder* builder;
498 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
499 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
500 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
501
502 result = OH_AudioStreamBuilder_SetRendererPrivacy(builder, AUDIO_STREAM_PRIVACY_TYPE_PUBLIC);
503 EXPECT_EQ(result, AUDIOSTREAM_ERROR_INVALID_PARAM);
504
505 result = OH_AudioStreamBuilder_Destroy(builder);
506 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
507 }
508
509 /**
510 * @tc.name : Test OH_AudioStreamBuilder_SetRendererPrivacy API.
511 * @tc.number: OH_AudioStreamBuilder_SetRendererPrivacy_002
512 * @tc.desc : Test OH_AudioStreamBuilder_SetRendererPrivacy interface via public privacy.
513 */
514 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetRendererPrivacy_002, TestSize.Level0)
515 {
516 OH_AudioStreamBuilder* builder;
517 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
518 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
519 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
520
521 result = OH_AudioStreamBuilder_SetRendererPrivacy(builder, AUDIO_STREAM_PRIVACY_TYPE_PUBLIC);
522 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
523
524 result = OH_AudioStreamBuilder_Destroy(builder);
525 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
526 }
527
528 /**
529 * @tc.name : Test OH_AudioStreamBuilder_SetRendererPrivacy API.
530 * @tc.number: OH_AudioStreamBuilder_SetRendererPrivacy_003
531 * @tc.desc : Test OH_AudioStreamBuilder_SetRendererPrivacy interface via private privacy.
532 */
533 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetRendererPrivacy_003, TestSize.Level0)
534 {
535 OH_AudioStreamBuilder* builder;
536 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
537 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
538 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
539
540 result = OH_AudioStreamBuilder_SetRendererPrivacy(builder, AUDIO_STREAM_PRIVACY_TYPE_PRIVATE);
541 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
542
543 result = OH_AudioStreamBuilder_Destroy(builder);
544 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
545 }
546
547 /**
548 * @tc.name : Test OH_AudioStreamBuilder_SetCapturerInfo API via legal state,
549 * sourceType is AUDIOSTREAM_SOURCE_TYPE_MIC.
550 * @tc.number: OH_AudioStreamBuilder_SetParameter_013
551 * @tc.desc : Test OH_AudioStreamBuilder_SetCapturerInfo interface. Returns true if result is successful.
552 */
553 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetParameter_013, TestSize.Level0)
554 {
555 OH_AudioStreamBuilder* builder;
556 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
557 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
558 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
559
560 OH_AudioStream_SourceType sourceType = AUDIOSTREAM_SOURCE_TYPE_MIC;
561 result = OH_AudioStreamBuilder_SetCapturerInfo(builder, sourceType);
562 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
563
564 result = OH_AudioStreamBuilder_Destroy(builder);
565 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
566 }
567
568 /**
569 * @tc.name : Test OH_AudioStreamBuilder_SetCapturerInfo API via legal state,
570 * sourceType is AUDIOSTREAM_SOURCE_TYPE_VOICE_RECOGNITION.
571 * @tc.number: OH_AudioStreamBuilder_SetParameter_014
572 * @tc.desc : Test OH_AudioStreamBuilder_SetCapturerInfo interface. Returns true if result is successful.
573 */
574 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetParameter_014, TestSize.Level0)
575 {
576 OH_AudioStreamBuilder* builder;
577 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
578 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
579 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
580
581 OH_AudioStream_SourceType sourceType = AUDIOSTREAM_SOURCE_TYPE_VOICE_RECOGNITION ;
582 result = OH_AudioStreamBuilder_SetCapturerInfo(builder, sourceType);
583 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
584
585 result = OH_AudioStreamBuilder_Destroy(builder);
586 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
587 }
588
589 /**
590 * @tc.name : Test OH_AudioStreamBuilder_SetCapturerInfo API via illegal state.
591 * @tc.number: OH_AudioStreamBuilder_SetParameter_015
592 * @tc.desc : Test OH_AudioStreamBuilder_SetCapturerInfo interface. Returns error code, if the builder type is
593 * AUDIOSTREAM_TYPE_RENDERER.
594 */
595 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetParameter_015, TestSize.Level0)
596 {
597 OH_AudioStreamBuilder* builder;
598 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
599 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
600 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
601
602 OH_AudioStream_SourceType sourceType = AUDIOSTREAM_SOURCE_TYPE_VOICE_RECOGNITION ;
603 result = OH_AudioStreamBuilder_SetCapturerInfo(builder, sourceType);
604 EXPECT_TRUE(result == AUDIOSTREAM_ERROR_INVALID_PARAM);
605
606 result = OH_AudioStreamBuilder_Destroy(builder);
607 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
608 }
609
610 /**
611 * @tc.name : Test OH_AudioStreamBuilder_SetCapturerCallback API via legal state.
612 * @tc.number: OH_AudioStreamBuilder_SetParameter_016
613 * @tc.desc : Test OH_AudioStreamBuilder_SetCapturerCallback interface. Returns true if result is successful.
614 */
615 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetParameter_016, TestSize.Level0)
616 {
617 OH_AudioStreamBuilder* builder;
618 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
619 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
620 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
621
622 OH_AudioCapturer_Callbacks callbacks;
623 callbacks.OH_AudioCapturer_OnReadData = AudioCapturerOnReadData;
624 result = OH_AudioStreamBuilder_SetCapturerCallback(builder, callbacks, NULL);
625 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
626
627 result = OH_AudioStreamBuilder_Destroy(builder);
628 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
629 }
630
631 /**
632 * @tc.name : Test OH_AudioStreamBuilder_SetCapturerCallback API via illegal state.
633 * @tc.number: OH_AudioStreamBuilder_SetParameter_017
634 * @tc.desc : Test OH_AudioStreamBuilder_SetCapturerCallback interface. Returns error code, if the builder type is
635 * AUDIOSTREAM_TYPE_RENDERER.
636 */
637 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetParameter_017, TestSize.Level0)
638 {
639 OH_AudioStreamBuilder* builder;
640 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
641 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
642 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
643
644 OH_AudioCapturer_Callbacks callbacks;
645 callbacks.OH_AudioCapturer_OnReadData = AudioCapturerOnReadData;
646 result = OH_AudioStreamBuilder_SetCapturerCallback(builder, callbacks, NULL);
647 EXPECT_TRUE(result == AUDIOSTREAM_ERROR_INVALID_PARAM);
648
649 result = OH_AudioStreamBuilder_Destroy(builder);
650 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
651 }
652
653 /**
654 * @tc.name : Test OH_AudioStreamBuilder_SetSampleFormat API via legal state. Test value is AUDIOSTREAM_SAMPLE_U8.
655 * @tc.number: OH_AudioStreamBuilder_SetSampleFormat_001
656 * @tc.desc : Test OH_AudioStreamBuilder_SetSampleFormat interface. Returns true if result is successful.
657 */
658 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetSampleFormat_001, TestSize.Level0)
659 {
660 OH_AudioStreamBuilder* builder;
661 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
662 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
663 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
664
665 OH_AudioStream_SampleFormat format = AUDIOSTREAM_SAMPLE_U8;
666 result = OH_AudioStreamBuilder_SetSampleFormat(builder, format);
667 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
668
669 result = OH_AudioStreamBuilder_Destroy(builder);
670 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
671 }
672
673 /**
674 * @tc.name : Test OH_AudioStreamBuilder_SetSampleFormat API via legal state. Test value is AUDIOSTREAM_SAMPLE_S16LE.
675 * @tc.number: OH_AudioStreamBuilder_SetSampleFormat_002
676 * @tc.desc : Test OH_AudioStreamBuilder_SetSampleFormat interface. Returns true if result is successful.
677 */
678 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetSampleFormat_002, TestSize.Level0)
679 {
680 OH_AudioStreamBuilder* builder;
681 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
682 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
683 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
684
685 OH_AudioStream_SampleFormat format = AUDIOSTREAM_SAMPLE_S16LE;
686 result = OH_AudioStreamBuilder_SetSampleFormat(builder, format);
687 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
688
689 result = OH_AudioStreamBuilder_Destroy(builder);
690 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
691 }
692
693 /**
694 * @tc.name : Test OH_AudioStreamBuilder_SetSampleFormat API via legal state. Test value is AUDIOSTREAM_SAMPLE_S24LE.
695 * @tc.number: OH_AudioStreamBuilder_SetSampleFormat_003
696 * @tc.desc : Test OH_AudioStreamBuilder_SetSampleFormat interface. Returns true if result is successful.
697 */
698 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetSampleFormat_003, TestSize.Level0)
699 {
700 OH_AudioStreamBuilder* builder;
701 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
702 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
703 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
704
705 OH_AudioStream_SampleFormat format = AUDIOSTREAM_SAMPLE_S24LE;
706 result = OH_AudioStreamBuilder_SetSampleFormat(builder, format);
707 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
708
709 result = OH_AudioStreamBuilder_Destroy(builder);
710 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
711 }
712
713 /**
714 * @tc.name : Test OH_AudioStreamBuilder_SetSampleFormat API via legal state. Test value is AUDIOSTREAM_SAMPLE_S32LE.
715 * @tc.number: OH_AudioStreamBuilder_SetSampleFormat_004
716 * @tc.desc : Test OH_AudioStreamBuilder_SetSampleFormat interface. Returns true if result is successful.
717 */
718 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetSampleFormat_004, TestSize.Level0)
719 {
720 OH_AudioStreamBuilder* builder;
721 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
722 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
723 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
724
725 OH_AudioStream_SampleFormat format = AUDIOSTREAM_SAMPLE_S32LE;
726 result = OH_AudioStreamBuilder_SetSampleFormat(builder, format);
727 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
728
729 result = OH_AudioStreamBuilder_Destroy(builder);
730 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
731 }
732
733 /**
734 * @tc.name : Test OH_AudioStreamBuilder_SetSampleFormat API via legal state. Test value is AUDIOSTREAM_SAMPLE_F32LE.
735 * @tc.number: OH_AudioStreamBuilder_SetSampleFormat_005
736 * @tc.desc : Test OH_AudioStreamBuilder_SetSampleFormat interface. Returns true if result is successful.
737 */
738 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetSampleFormat_005, TestSize.Level0)
739 {
740 OH_AudioStreamBuilder* builder;
741 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
742 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
743 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
744
745 OH_AudioStream_SampleFormat format = AUDIOSTREAM_SAMPLE_S32LE;
746 result = OH_AudioStreamBuilder_SetSampleFormat(builder, format);
747 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
748
749 result = OH_AudioStreamBuilder_Destroy(builder);
750 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
751 }
752
753 /**
754 * @tc.name : Test OH_AudioStreamBuilder_SetLatencyMode API via legal state, AUDIOSTREAM_LATENCY_MODE_NORMAL.
755 * @tc.number: OH_AudioStreamBuilder_SetLatencyMode_001
756 * @tc.desc : Test OH_AudioStreamBuilder_SetLatencyMode interface. Returns true if result is successful.
757 */
758 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetLatencyMode_001, TestSize.Level0)
759 {
760 OH_AudioStreamBuilder* builder;
761 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
762 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
763 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
764
765 OH_AudioStream_LatencyMode latencyMode = AUDIOSTREAM_LATENCY_MODE_NORMAL;
766 result = OH_AudioStreamBuilder_SetLatencyMode(builder, latencyMode);
767 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
768
769 result = OH_AudioStreamBuilder_Destroy(builder);
770 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
771 }
772
773 /**
774 * @tc.name : Test OH_AudioStreamBuilder_SetCapturerInfo API via illegal state,
775 * sourceType is AUDIOSTREAM_SOURCE_TYPE_INVALID.
776 * @tc.number: OH_AudioStreamBuilder_SetCapturerInfo_001
777 * @tc.desc : Test OH_AudioStreamBuilder_SetCapturerInfo interface. Returns error code, if source type is
778 * AUDIOSTREAM_SOURCE_TYPE_INVALID.
779 */
780 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetCapturerInfo_001, TestSize.Level0)
781 {
782 OH_AudioStreamBuilder* builder;
783 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
784 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
785 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
786
787 OH_AudioStream_SourceType sourceType = AUDIOSTREAM_SOURCE_TYPE_INVALID;
788 result = OH_AudioStreamBuilder_SetCapturerInfo(builder, sourceType);
789 EXPECT_TRUE(result == AUDIOSTREAM_ERROR_INVALID_PARAM);
790
791 result = OH_AudioStreamBuilder_Destroy(builder);
792 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
793 }
794
795 /**
796 * @tc.name : Test OH_AudioStreamBuilder_SetCapturerInfo API via legal state,
797 * sourceType is AUDIOSTREAM_SOURCE_TYPE_VOICE_COMMUNICATION.
798 * @tc.number: OH_AudioStreamBuilder_SetCapturerInfo_002
799 * @tc.desc : Test OH_AudioStreamBuilder_SetCapturerInfo interface. Returns true if result is successful.
800 */
801 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetCapturerInfo_002, TestSize.Level0)
802 {
803 OH_AudioStreamBuilder* builder;
804 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
805 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
806 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
807
808 OH_AudioStream_SourceType sourceType = AUDIOSTREAM_SOURCE_TYPE_VOICE_COMMUNICATION;
809 result = OH_AudioStreamBuilder_SetCapturerInfo(builder, sourceType);
810 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
811
812 result = OH_AudioStreamBuilder_Destroy(builder);
813 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
814 }
815
816 /**
817 * @tc.name : Test OH_AudioStreamBuilder_SetRendererInfo API via illegal state.
818 * @tc.number: OH_AudioStreamBuilder_SetRendererInfo_001
819 * @tc.desc : Test OH_AudioStreamBuilder_SetRendererInfo interface. Returns error code, if usage type is
820 * AUDIOSTREAM_USAGE_UNKNOWN.
821 */
822 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetRendererInfo_001, TestSize.Level0)
823 {
824 OH_AudioStreamBuilder* builder;
825 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
826 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
827 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
828
829 OH_AudioStream_Usage usage = AUDIOSTREAM_USAGE_UNKNOWN;
830 result = OH_AudioStreamBuilder_SetRendererInfo(builder, usage);
831 EXPECT_TRUE(result == AUDIOSTREAM_ERROR_INVALID_PARAM);
832
833 result = OH_AudioStreamBuilder_Destroy(builder);
834 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
835 }
836
837 /**
838 * @tc.name : Test OH_AudioStreamBuilder_SetRendererInfo API via illegal state.
839 * @tc.number: OH_AudioStreamBuilder_SetRendererInfo_002
840 * @tc.desc : Test OH_AudioStreamBuilder_SetRendererInfo interface. Returns error code, if content type is
841 * AUDIOSTREAM_CONTENT_TYPE_UNKNOWN.
842 */
843 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetRendererInfo_002, TestSize.Level0)
844 {
845 OH_AudioStreamBuilder* builder;
846 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
847 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
848 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
849
850 OH_AudioStream_Usage usage = AUDIOSTREAM_USAGE_MUSIC;
851 result = OH_AudioStreamBuilder_SetRendererInfo(builder, usage);
852 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
853
854 result = OH_AudioStreamBuilder_Destroy(builder);
855 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
856 }
857
858 /**
859 * @tc.name : Test OH_AudioStreamBuilder_SetRendererInfo API via legal state.
860 * @tc.number: OH_AudioStreamBuilder_SetRendererInfo_003
861 * @tc.desc : Test OH_AudioStreamBuilder_SetRendererInfo interface. Returns true if result is successful.
862 */
863 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetRendererInfo_003, TestSize.Level0)
864 {
865 OH_AudioStreamBuilder* builder;
866 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
867 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
868 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
869
870 OH_AudioStream_Usage usage = AUDIOSTREAM_USAGE_MUSIC;
871 result = OH_AudioStreamBuilder_SetRendererInfo(builder, usage);
872 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
873
874 result = OH_AudioStreamBuilder_Destroy(builder);
875 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
876 }
877
878 /**
879 * @tc.name : Test OH_AudioStreamBuilder_SetChannelLayout API via legal state, AUDIOSTREAM_LATENCY_MODE_NORMAL.
880 * @tc.number: OH_AudioStreamBuilder_SetChannelLayout_001
881 * @tc.desc : Test OH_AudioStreamBuilder_SetChannelLayout interface. Returns true if result is successful.
882 */
883 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetChannelLayout_001, TestSize.Level0)
884 {
885 OH_AudioStreamBuilder *builder;
886 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
887 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
888 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
889
890 OH_AudioChannelLayout channelLayout = CH_LAYOUT_UNKNOWN;
891 result = OH_AudioStreamBuilder_SetChannelLayout(builder, channelLayout);
892 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
893
894 result = OH_AudioStreamBuilder_Destroy(builder);
895 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
896 }
897
898 /**
899 * @tc.name : Test OH_AudioStreamBuilder_SetWriteDataWithMetadataCallback API via legal state.
900 * @tc.number: OH_AudioStreamBuilder_SetWriteDataWithMetadataCallback_001
901 * @tc.desc : Test OH_AudioStreamBuilder_SetWriteDataWithMetadataCallback interface.
902 * Returns true if result is successful.
903 */
904 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetWriteDataWithMetadataCallback_001, TestSize.Level0)
905 {
906 OH_AudioStreamBuilder *builder;
907 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
908 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
909 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
910
911 OH_AudioRenderer_WriteDataWithMetadataCallback callback = AudioRendererWriteDataWithMetadataCallback;
912 result = OH_AudioStreamBuilder_SetWriteDataWithMetadataCallback(builder, callback, nullptr);
913 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
914
915 result = OH_AudioStreamBuilder_Destroy(builder);
916 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
917 }
918
919 /**
920 * @tc.name : Test OH_AudioStreamBuilder_SetRendererInterruptMode API via illegal state.
921 * @tc.number: OH_AudioStreamBuilder_SetRendererInterruptMode_001
922 * @tc.desc : Test OH_AudioStreamBuilder_SetRendererInterruptMode interface with nullptr builder.
923 */
924 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetInterruptMode_001, TestSize.Level0)
925 {
926 OH_AudioStreamBuilder* builder = nullptr;
927
928 OH_AudioInterrupt_Mode mode = AUDIOSTREAM_INTERRUPT_MODE_SHARE;
929 OH_AudioStream_Result result = OH_AudioStreamBuilder_SetRendererInterruptMode(builder, mode);
930 EXPECT_TRUE(result == AUDIOSTREAM_ERROR_INVALID_PARAM);
931 }
932
933 /**
934 * @tc.name : Test OH_AudioStreamBuilder_SetRendererInterruptMode API via legal state.
935 * @tc.number: OH_AudioStreamBuilder_SetRendererInterruptMode_002
936 * @tc.desc : Test OH_AudioStreamBuilder_SetRendererInterruptMode interface with share mode.
937 */
938 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetInterruptMode_002, TestSize.Level0)
939 {
940 // 1. create builder1 builder2
941 OH_AudioStreamBuilder* builder1;
942 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
943 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder1, type);
944 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
945
946 // 2. set builder1 builder2 params
947 OH_AudioStreamBuilder_SetSamplingRate(builder1, SAMPLING_RATE);
948 OH_AudioStreamBuilder_SetChannelCount(builder1, CHANNEL_COUNT);
949 OH_AudioStreamBuilder_SetLatencyMode(builder1, (OH_AudioStream_LatencyMode)g_latencyMode);
950 OH_AudioStreamBuilder_SetSampleFormat(builder1, (OH_AudioStream_SampleFormat)g_sampleFormat);
951 OH_AudioRenderer_Callbacks callbacks;
952 callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteDataInterrupt;
953 callbacks.OH_AudioRenderer_OnInterruptEvent = AudioRendererInterruptEvent;
954 result = OH_AudioStreamBuilder_SetRendererCallback(builder1, callbacks, nullptr);
955 result = OH_AudioStreamBuilder_SetFrameSizeInCallback(builder1, g_frameSize);
956
957 OH_AudioInterrupt_Mode mode = AUDIOSTREAM_INTERRUPT_MODE_SHARE;
958 result = OH_AudioStreamBuilder_SetRendererInterruptMode(builder1, mode);
959 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
960 result = OH_AudioStreamBuilder_SetRendererInterruptMode(builder1, mode);
961 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
962
963 // 3. create audioRenderer1 audioRenderer2
964 OH_AudioRenderer* audioRenderer1;
965 result = OH_AudioStreamBuilder_GenerateRenderer(builder1, &audioRenderer1);
966
967 OH_AudioRenderer* audioRenderer2;
968 result = OH_AudioStreamBuilder_GenerateRenderer(builder1, &audioRenderer2);
969
970 // 4. start
971 result = OH_AudioRenderer_Start(audioRenderer1);
972 if (result != AUDIOSTREAM_SUCCESS) {
973 return ;
974 }
975 sleep(1);
976 result = OH_AudioRenderer_Start(audioRenderer2);
977 if (result != AUDIOSTREAM_SUCCESS) {
978 return ;
979 }
980
981
982 // 5. stop and release client
983 OH_AudioRenderer_Stop(audioRenderer2);
984 OH_AudioRenderer_Release(audioRenderer2);
985
986 OH_AudioRenderer_Stop(audioRenderer1);
987 OH_AudioRenderer_Release(audioRenderer1);
988
989 result = OH_AudioStreamBuilder_Destroy(builder1);
990 EXPECT_TRUE(result == AUDIOSTREAM_SUCCESS || result == AUDIOSTREAM_ERROR_INVALID_PARAM);
991 }
992
993 /**
994 * @tc.name : Test OH_AudioStreamBuilder_SetRendererInterruptMode API via legal state.
995 * @tc.number: OH_AudioStreamBuilder_SetRendererInterruptMode_003
996 * @tc.desc : Test OH_AudioStreamBuilder_SetRendererInterruptMode interface with independent mode.
997 */
998 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetInterruptMode_003, TestSize.Level0)
999 {
1000 // 1. create builder
1001 OH_AudioStreamBuilder* builder1;
1002 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
1003 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder1, type);
1004 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
1005
1006 // 2. set builder params
1007 OH_AudioStreamBuilder_SetSamplingRate(builder1, SAMPLING_RATE);
1008 OH_AudioStreamBuilder_SetChannelCount(builder1, CHANNEL_COUNT);
1009 OH_AudioStreamBuilder_SetLatencyMode(builder1, (OH_AudioStream_LatencyMode)g_latencyMode);
1010 OH_AudioStreamBuilder_SetSampleFormat(builder1, (OH_AudioStream_SampleFormat)g_sampleFormat);
1011
1012 OH_AudioRenderer_Callbacks callbacks;
1013 callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteDataInterrupt;
1014 callbacks.OH_AudioRenderer_OnInterruptEvent = AudioRendererInterruptEvent;
1015 result = OH_AudioStreamBuilder_SetRendererCallback(builder1, callbacks, nullptr);
1016 result = OH_AudioStreamBuilder_SetFrameSizeInCallback(builder1, g_frameSize);
1017
1018 OH_AudioInterrupt_Mode mode = AUDIOSTREAM_INTERRUPT_MODE_INDEPENDENT;
1019 result = OH_AudioStreamBuilder_SetRendererInterruptMode(builder1, mode);
1020 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
1021 result = OH_AudioStreamBuilder_SetRendererInterruptMode(builder1, mode);
1022 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
1023
1024 // 3. create audioRenderer1 audioRenderer2
1025 OH_AudioRenderer* audioRenderer1;
1026 result = OH_AudioStreamBuilder_GenerateRenderer(builder1, &audioRenderer1);
1027
1028 OH_AudioRenderer* audioRenderer2;
1029 result = OH_AudioStreamBuilder_GenerateRenderer(builder1, &audioRenderer2);
1030
1031 // 4. start
1032 result = OH_AudioRenderer_Start(audioRenderer1);
1033 if (result != AUDIOSTREAM_SUCCESS) {
1034 return ;
1035 }
1036 sleep(1);
1037 result = OH_AudioRenderer_Start(audioRenderer2);
1038 if (result != AUDIOSTREAM_SUCCESS) {
1039 return ;
1040 }
1041 sleep(2);
1042
1043 // 5. stop and release client
1044 OH_AudioRenderer_Stop(audioRenderer2);
1045 OH_AudioRenderer_Release(audioRenderer2);
1046
1047 OH_AudioRenderer_Stop(audioRenderer1);
1048 OH_AudioRenderer_Release(audioRenderer1);
1049
1050 result = OH_AudioStreamBuilder_Destroy(builder1);
1051 EXPECT_TRUE(result == AUDIOSTREAM_SUCCESS || result == AUDIOSTREAM_ERROR_INVALID_PARAM);
1052 }
1053
1054 /**
1055 * @tc.name : Test OH_AudioStreamBuilder_SetRendererInterruptMode API via legal state.
1056 * @tc.number: OH_AudioStreamBuilder_SetRendererInterruptMode_004
1057 * @tc.desc : Test OH_AudioStreamBuilder_SetRendererInterruptMode interface with independent mode and share mode.
1058 */
1059 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetRendererInterruptMode_004, TestSize.Level0)
1060 {
1061 // 1. create builder1 builder2
1062 OH_AudioStreamBuilder* builder1;
1063 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
1064 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder1, type);
1065 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
1066
1067 OH_AudioStreamBuilder* builder2;
1068 result = OH_AudioStreamBuilder_Create(&builder2, type);
1069 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
1070
1071 // 2. set builder1 builder2 params
1072 OH_AudioStreamBuilder_SetSamplingRate(builder1, SAMPLING_RATE);
1073 OH_AudioStreamBuilder_SetChannelCount(builder1, CHANNEL_COUNT);
1074 OH_AudioStreamBuilder_SetLatencyMode(builder1, (OH_AudioStream_LatencyMode)g_latencyMode);
1075 OH_AudioStreamBuilder_SetSampleFormat(builder1, (OH_AudioStream_SampleFormat)g_sampleFormat);
1076
1077 OH_AudioRenderer_Callbacks callbacks;
1078 callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteDataInterrupt;
1079 callbacks.OH_AudioRenderer_OnInterruptEvent = AudioRendererInterruptEvent;
1080 result = OH_AudioStreamBuilder_SetRendererCallback(builder1, callbacks, nullptr);
1081 result = OH_AudioStreamBuilder_SetFrameSizeInCallback(builder1, g_frameSize);
1082
1083 OH_AudioStreamBuilder_SetSamplingRate(builder2, SAMPLING_RATE);
1084 OH_AudioStreamBuilder_SetChannelCount(builder2, CHANNEL_COUNT);
1085 OH_AudioStreamBuilder_SetLatencyMode(builder2, (OH_AudioStream_LatencyMode)g_latencyMode);
1086 OH_AudioStreamBuilder_SetSampleFormat(builder2, (OH_AudioStream_SampleFormat)g_sampleFormat);
1087 result = OH_AudioStreamBuilder_SetRendererCallback(builder2, callbacks, nullptr);
1088 result = OH_AudioStreamBuilder_SetFrameSizeInCallback(builder2, g_frameSize);
1089
1090 OH_AudioInterrupt_Mode mode = AUDIOSTREAM_INTERRUPT_MODE_INDEPENDENT;
1091 result = OH_AudioStreamBuilder_SetRendererInterruptMode(builder1, mode);
1092 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
1093 mode = AUDIOSTREAM_INTERRUPT_MODE_SHARE;
1094 result = OH_AudioStreamBuilder_SetRendererInterruptMode(builder2, mode);
1095 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
1096
1097 // 3. create audioRenderer1 audioRenderer2
1098 OH_AudioRenderer* audioRenderer1;
1099 result = OH_AudioStreamBuilder_GenerateRenderer(builder1, &audioRenderer1);
1100
1101 OH_AudioRenderer* audioRenderer2;
1102 result = OH_AudioStreamBuilder_GenerateRenderer(builder2, &audioRenderer2);
1103
1104 // 4. start
1105 result = OH_AudioRenderer_Start(audioRenderer1);
1106 if (result != AUDIOSTREAM_SUCCESS) { return ;}
1107 sleep(1);
1108 result = OH_AudioRenderer_Start(audioRenderer2);
1109 if (result != AUDIOSTREAM_SUCCESS) { return ;}
1110 sleep(2);
1111
1112 // 5. stop and release client
1113 OH_AudioRenderer_Stop(audioRenderer2);
1114 OH_AudioRenderer_Release(audioRenderer2);
1115
1116 OH_AudioRenderer_Stop(audioRenderer1);
1117 OH_AudioRenderer_Release(audioRenderer1);
1118
1119 result = OH_AudioStreamBuilder_Destroy(builder2);
1120 result = OH_AudioStreamBuilder_Destroy(builder1);
1121 EXPECT_TRUE(result == AUDIOSTREAM_SUCCESS || result == AUDIOSTREAM_ERROR_INVALID_PARAM);
1122 }
1123
1124 /**
1125 * @tc.name : Test OH_AudioStreamBuilder_SetRendererInterruptMode API via legal state.
1126 * @tc.number: OH_AudioStreamBuilder_SetRendererInterruptMode_005
1127 * @tc.desc : Test OH_AudioStreamBuilder_SetRendererInterruptMode interface with independent mode and share mode.
1128 */
1129 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetRendererInterruptMode_005, TestSize.Level0)
1130 {
1131 // 1. create builder1
1132 OH_AudioStreamBuilder* builder1;
1133 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
1134 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder1, type);
1135 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
1136
1137 // 2. set builder1 params
1138 OH_AudioStreamBuilder_SetSamplingRate(builder1, SAMPLING_RATE);
1139 OH_AudioStreamBuilder_SetChannelCount(builder1, CHANNEL_COUNT);
1140 OH_AudioStreamBuilder_SetLatencyMode(builder1, (OH_AudioStream_LatencyMode)g_latencyMode);
1141 OH_AudioStreamBuilder_SetSampleFormat(builder1, (OH_AudioStream_SampleFormat)g_sampleFormat);
1142
1143 OH_AudioRenderer_Callbacks callbacks;
1144 callbacks.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteDataInterrupt;
1145 callbacks.OH_AudioRenderer_OnInterruptEvent = AudioRendererInterruptEvent;
1146 result = OH_AudioStreamBuilder_SetRendererCallback(builder1, callbacks, nullptr);
1147 result = OH_AudioStreamBuilder_SetFrameSizeInCallback(builder1, g_frameSize);
1148
1149 OH_AudioRenderer_Callbacks callbacks2;
1150 callbacks2.OH_AudioRenderer_OnWriteData = AudioRendererOnWriteDataInterrupt;
1151 result = OH_AudioStreamBuilder_SetRendererCallback(builder1, callbacks2, nullptr);
1152
1153 OH_AudioInterrupt_Mode mode = AUDIOSTREAM_INTERRUPT_MODE_SHARE;
1154 result = OH_AudioStreamBuilder_SetRendererInterruptMode(builder1, mode);
1155 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
1156 mode = AUDIOSTREAM_INTERRUPT_MODE_INDEPENDENT;
1157 result = OH_AudioStreamBuilder_SetRendererInterruptMode(builder1, mode);
1158 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
1159
1160 // 3. create audioRenderer1 audioRenderer2
1161 OH_AudioRenderer* audioRenderer1;
1162 result = OH_AudioStreamBuilder_GenerateRenderer(builder1, &audioRenderer1);
1163
1164 OH_AudioRenderer* audioRenderer2;
1165 result = OH_AudioStreamBuilder_GenerateRenderer(builder1, &audioRenderer2);
1166
1167 // 4. start
1168 result = OH_AudioRenderer_Start(audioRenderer1);
1169 if (result != AUDIOSTREAM_SUCCESS) {
1170 return ;
1171 }
1172 sleep(1);
1173 result = OH_AudioRenderer_Start(audioRenderer2);
1174 if (result != AUDIOSTREAM_SUCCESS) {
1175 return ;
1176 }
1177 sleep(2);
1178
1179 // 5. stop and release client
1180 OH_AudioRenderer_Stop(audioRenderer2);
1181 OH_AudioRenderer_Release(audioRenderer2);
1182
1183 OH_AudioRenderer_Stop(audioRenderer1);
1184 OH_AudioRenderer_Release(audioRenderer1);
1185
1186 result = OH_AudioStreamBuilder_Destroy(builder1);
1187 EXPECT_TRUE(result == AUDIOSTREAM_SUCCESS || result == AUDIOSTREAM_ERROR_INVALID_PARAM);
1188 }
1189
1190 /**
1191 * @tc.name : Test OH_AudioStreamBuilder_SetRendererInterruptMode API via illegal state.
1192 * @tc.number: OH_AudioStreamBuilder_SetInterruptMode_006
1193 * @tc.desc : Test OH_AudioStreamBuilder_SetRendererInterruptMode interface with invalid interrupt mode.
1194 */
1195 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetInterruptMode_006, TestSize.Level0)
1196 {
1197 OH_AudioStreamBuilder* builder = nullptr;
1198 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
1199 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
1200 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
1201 OH_AudioInterrupt_Mode mode = (OH_AudioInterrupt_Mode)(-2);
1202 result = OH_AudioStreamBuilder_SetRendererInterruptMode(builder, mode);
1203 EXPECT_TRUE(result == AUDIOSTREAM_ERROR_INVALID_PARAM);
1204 }
1205
1206 /**
1207 * @tc.name : Test OH_AudioStreamBuilder_SetRendererWriteDataCallback API via legal state.
1208 * @tc.number: OH_AudioStreamBuilder_SetRendererWriteDataCallback_001
1209 * @tc.desc : Test OH_AudioStreamBuilder_SetRendererWriteDataCallback interface with VALID result.
1210 * Returns true if result is successful.
1211 */
1212 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetRendererWriteDataCallback_001, TestSize.Level0)
1213 {
1214 OH_AudioStreamBuilder *builder;
1215 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
1216 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
1217 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
1218
1219 OH_AudioRenderer_OnWriteDataCallback callback = OnWriteDataCallbackWithValidData;
1220 result = OH_AudioStreamBuilder_SetRendererWriteDataCallback(builder, callback, nullptr);
1221 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
1222
1223 result = OH_AudioStreamBuilder_Destroy(builder);
1224 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
1225 }
1226
1227 /**
1228 * @tc.name : Test OH_AudioStreamBuilder_SetRendererWriteDataCallback API via legal state.
1229 * @tc.number: OH_AudioStreamBuilder_SetRendererWriteDataCallback_002
1230 * @tc.desc : Test OH_AudioStreamBuilder_SetRendererWriteDataCallback interface with INVALID result.
1231 * Returns true if result is successful.
1232 */
1233 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetRendererWriteDataCallback_002, TestSize.Level0)
1234 {
1235 OH_AudioStreamBuilder *builder;
1236 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_RENDERER;
1237 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
1238 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
1239
1240 OH_AudioRenderer_OnWriteDataCallback callback = OnWriteDataCallbackWithInvalidData;
1241 result = OH_AudioStreamBuilder_SetRendererWriteDataCallback(builder, callback, nullptr);
1242 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
1243
1244 result = OH_AudioStreamBuilder_Destroy(builder);
1245 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
1246 }
1247
1248 /**
1249 * @tc.name : Test OH_AudioStreamBuilder_SetRendererWriteDataCallback API via illegal state.
1250 * @tc.number: OH_AudioStreamBuilder_SetRendererWriteDataCallback_003
1251 * @tc.desc : Test OH_AudioStreamBuilder_SetRendererWriteDataCallback interface with VALID result.
1252 * Returns error code, if stream type is AUDIOSTREAM_TYPE_CAPTURER
1253 */
1254 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetRendererWriteDataCallback_003, TestSize.Level0)
1255 {
1256 OH_AudioStreamBuilder *builder;
1257 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
1258 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
1259 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
1260
1261 OH_AudioRenderer_OnWriteDataCallback callback = OnWriteDataCallbackWithValidData;
1262 result = OH_AudioStreamBuilder_SetRendererWriteDataCallback(builder, callback, nullptr);
1263 EXPECT_EQ(result, AUDIOSTREAM_ERROR_INVALID_PARAM);
1264
1265 result = OH_AudioStreamBuilder_Destroy(builder);
1266 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
1267 }
1268
1269 /**
1270 * @tc.name : Test OH_AudioStreamBuilder_SetRendererWriteDataCallback API via illegal state.
1271 * @tc.number: OH_AudioStreamBuilder_SetRendererWriteDataCallback_004
1272 * @tc.desc : Test OH_AudioStreamBuilder_SetRendererWriteDataCallback interface with INVALID result.
1273 * Returns error code, if stream type is AUDIOSTREAM_TYPE_CAPTURER.
1274 */
1275 HWTEST(OHAudioStreamBuilderUnitTest, OH_AudioStreamBuilder_SetRendererWriteDataCallback_004, TestSize.Level0)
1276 {
1277 OH_AudioStreamBuilder *builder;
1278 OH_AudioStream_Type type = AUDIOSTREAM_TYPE_CAPTURER;
1279 OH_AudioStream_Result result = OH_AudioStreamBuilder_Create(&builder, type);
1280 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
1281
1282 OH_AudioRenderer_OnWriteDataCallback callback = OnWriteDataCallbackWithInvalidData;
1283 result = OH_AudioStreamBuilder_SetRendererWriteDataCallback(builder, callback, nullptr);
1284 EXPECT_EQ(result, AUDIOSTREAM_ERROR_INVALID_PARAM);
1285
1286 result = OH_AudioStreamBuilder_Destroy(builder);
1287 EXPECT_EQ(result, AUDIOSTREAM_SUCCESS);
1288 }
1289 } // namespace AudioStandard
1290 } // namespace OHOS
1291