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