• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/**
2 * Copyright (c) 2022 Shenzhen Kaihong Digital Industry Development 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
16import media from '@ohos.multimedia.media'
17import * as mediaTestBase from './MediaTestBase.js';
18
19export function resourceName(){
20    let timestamp = Date.now();
21    let filename = `avRecorder_${timestamp}.m4a`;
22    return filename;
23}
24
25export async function idleCallback(avRecorder, avConfig, done) {
26    console.info('case idleCallback called');
27    media.createAVRecorder((error, recorder) => {
28        if (recorder != null) {
29            avRecorder = recorder;
30            console.info('createAVRecorder idleCallback success');
31            avRecorder.prepare(avConfig)
32            releaseDone(avRecorder, done)
33        } else {
34            console.info(`createAVRecorder idleCallback fail, error:${error}`);
35        }
36    });
37}
38
39export async function idle(avRecorder) {
40    console.info('case createAVRecorder called');
41    await media.createAVRecorder().then((recorder) => {
42        if (recorder != null) {
43            avRecorder = recorder;
44            console.info('createAVRecorder success');
45        } else {
46            console.info('createAVRecorder fail');
47        }
48    }).catch((error) => {
49        console.info(`createAVRecorder catchCallback, error:${error}`);
50    });
51    return avRecorder;
52}
53
54export const AV_RECORDER_STATE = {
55    IDLE : 'idle',
56    PREPARED : 'prepared',
57    STARTED : 'started',
58    PAUSED : 'paused',
59    STOPPED : 'stopped',
60    RELEASED : 'released',
61    ERROR : 'error',
62}
63
64export function prepareCallback(avRecorder, avConfig) {
65    if (typeof(avRecorder) == 'undefined') {
66        return;
67    }
68    avRecorder.prepare(avConfig, (err) => {
69        console.info('case prepare called' + err);
70        if (err == null) {
71            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
72            console.info('prepare success');
73        } else {
74            console.error(`case prepare error, errMessage is ${err.message}`);
75        }
76    })
77}
78
79export async function preparePromise(avRecorder, avConfig) {
80    if (typeof(avRecorder) == 'undefined') {
81        return;
82    }
83    await avRecorder.prepare(avConfig).then(() => {
84        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
85        console.info('prepare success');
86    }).catch((err) => {
87        console.info('prepare failed and catch error is ' + err.message);
88    });
89}
90
91export async function getInputSurfacePromise(avRecorder) {
92    let surfaceID = null;
93    if (typeof(avRecorder) == 'undefined') {
94        return;
95    }
96    await avRecorder.getInputSurface().then((surfaceId) => {
97        console.info('getInputSurface success');
98        surfaceID = surfaceId;
99    }).catch((err) => {
100        console.info('getInputSurface failed and catch error is ' + err.message);
101    });
102}
103
104export function getInputSurfaceCallback(avRecorder) {
105    if (typeof(avRecorder) == 'undefined') {
106        return;
107    }
108    let surfaceID = null;
109    avRecorder.getInputSurface((err, surfaceId) => {
110        if (err == null) {
111            console.info('getInputSurface success');
112            surfaceID = surfaceId;
113        } else {
114            console.info('getInputSurface failed and error is ' + err.message);
115        }
116    });
117}
118
119export function startCallback(avRecorder, recorderTime) {
120    if (typeof(avRecorder) == 'undefined') {
121        return;
122    }
123    avRecorder.start((err) => {
124        console.info('case start called');
125        if (err == null) {
126            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.STARTED);
127            console.info('start AVRecorder success');
128            sleep(recorderTime);
129        } else {
130            console.info('start AVRecorder failed and error is ' + err.message);
131        }
132    })
133}
134
135export async function startPromise(avRecorder, recorderTime) {
136    if (typeof(avRecorder) == 'undefined') {
137        return;
138    }
139    await avRecorder.start().then(() => {
140        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.STARTED);
141        console.info('start success');
142        if (recorderTime != undefined) {
143            sleep(recorderTime);
144        }
145    }).catch((err) => {
146        console.info('start failed and catch error is ' + err.message);
147    });
148    if (recorderTime != undefined) {
149        await sleep(recorderTime);
150    }
151}
152
153export function pauseCallback(avRecorder) {
154    if (typeof(avRecorder) == 'undefined') {
155        return;
156    }
157    avRecorder.pause((err) => {
158        console.info('case pause called');
159        if (err == null) {
160            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PAUSED);
161            console.info('pause AVRecorder success');
162        } else {
163            console.info('pause AVRecorder failed and error is ' + err.message);
164        }
165    })
166}
167
168export async function pausePromise(avRecorder) {
169    if (typeof(avRecorder) == 'undefined') {
170        return;
171    }
172    await avRecorder.pause().then(() => {
173        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PAUSED);
174        console.info('pause success');
175    }).catch((err) => {
176        console.info('pause failed and catch error is ' + err.message);
177    });
178}
179
180export function resumeCallback(avRecorder) {
181    if (typeof(avRecorder) == 'undefined') {
182        return;
183    }
184    avRecorder.resume((err) => {
185        console.info('case resume called');
186        if (err == null) {
187            console.info('resume AVRecorder success');
188        } else {
189            console.info('resume AVRecorder failed and error is ' + err.message);
190        }
191    })
192}
193
194export async function resumePromise(avRecorder) {
195    if (typeof(avRecorder) == 'undefined') {
196        return;
197    }
198    await avRecorder.resume().then(() => {
199        console.info('resume success');
200    }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
201}
202
203export function stopCallback(avRecorder) {
204    if (typeof(avRecorder) == 'undefined') {
205        return;
206    }
207    avRecorder.stop((err) => {
208        console.info('case stop called');
209        if (err == null) {
210            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.STOPPED);
211            console.info('stop AVRecorder success');
212        } else {
213            console.info('stop AVRecorder failed and error is ' + err.message);
214        }
215    })
216}
217
218export async function stopPromise(avRecorder) {
219    if (typeof(avRecorder) == 'undefined') {
220        return;
221    }
222    await avRecorder.stop().then(() => {
223        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.STOPPED);
224        console.info('stop success');
225    }).catch((err) => {
226        console.info('stop failed and catch error is ' + err.message);
227    });
228}
229
230export function resetCallback(avRecorder) {
231    if (typeof(avRecorder) == 'undefined') {
232        return;
233    }
234    avRecorder.reset((err) => {
235        console.info('case reset called');
236        if (err == null) {
237            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
238            console.info('reset AVRecorder success');
239        } else {
240            console.info('reset AVRecorder failed and error is ' + err.message);
241        }
242    })
243}
244
245export async function resetPromise(avRecorder) {
246    if (typeof(avRecorder) == 'undefined') {
247        return;
248    }
249    await avRecorder.reset().then(() => {
250        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
251    }).catch((err) => {
252        console.info('reset AVRecorder failed and catch error is ' + err.message);
253    });
254}
255
256export function releaseCallback(avRecorder) {
257    if (typeof(avRecorder) == 'undefined') {
258        return;
259    }
260    avRecorder.release((err) => {
261        console.info('case release called');
262        if (err == null) {
263            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
264            console.info('release AVRecorder success');
265        } else {
266            console.info('release AVRecorder failed and error is ' + err.message);
267        }
268    })
269}
270
271export async function releasePromise(avRecorder) {
272    if (typeof(avRecorder) == 'undefined') {
273        return;
274    }
275    await avRecorder.release().then(() => {
276        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
277    }).catch((err) => {
278        console.info('release AVRecorder failed and catch error is ' + err.message);
279    });
280}
281
282async function releaseDone(avRecorder, done){
283    await avRecorder.release().then(() => {
284        console.info('releaseDone avRecorder.state is ' + avRecorder.state);
285        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
286        done();
287    }).catch((err) => {
288        console.info('release releaseDone failed and catch error is ' + err.message);
289    });
290}
291
292export function sleep(ms) {
293    return new Promise(resolve => setTimeout(resolve, ms));
294}
295
296export function offCallback(avRecorder, typeArr)
297{
298    if (avRecorder == null) {
299        return;
300    }
301    for (let i = 0; i < typeArr.length; i++) {
302        switch (typeArr[i]) {
303            case 'stateChange':
304                avRecorder.off('stateChange');
305                break;
306            case 'error':
307                avRecorder.off('error');
308                break;
309            default:
310                break;
311        }
312    }
313}
314
315export async function setOnCallback(avConfig, avRecorder, recorderTime, done) {
316    console.info(`case setOnCallback in`);
317    avRecorder.on('stateChange', async (state, reason) => {
318        console.info('case state has changed, new state is :' + state);
319        switch (state) {
320            case AV_RECORDER_STATE.IDLE:
321                console.info(`case avRecorderWithCallBack is idle`);
322                expect(avRecorder.state).assertEqual("idle");
323                // start->stop->release
324                prepareCallback(avRecorder, avConfig);
325                break;
326            case AV_RECORDER_STATE.PREPARED:
327                console.info(`case avRecorderWithCallBack is prepared`);
328                expect(avRecorder.state).assertEqual('prepared');
329                startCallback(avRecorder);
330                break;
331            case AV_RECORDER_STATE.STARTED:
332                console.info(`case avRecorderWithCallBack is started`)
333                expect(avRecorder.state).assertEqual('started');
334                await sleep(recorderTime);
335                stopCallback(avRecorder);
336                break;
337            case AV_RECORDER_STATE.PAUSED:
338                console.info(`case avRecorderWithCallBackis paused`)
339                expect(avRecorder.state).assertEqual('paused');
340                break;
341            case AV_RECORDER_STATE.STOPPED:
342                console.info(`case avRecorderWithCallBack is stopped`)
343                expect(avRecorder.state).assertEqual('stopped');
344                releasePromise(avRecorder)
345                break;
346            case AV_RECORDER_STATE.RELEASED:
347                console.info(`case avRecorderWithCallBack is released`);
348                expect(avRecorder.state).assertEqual('released');
349                done();
350                break;
351            case AV_RECORDER_STATE.ERROR:
352                console.info(`case avRecorderWithCallBack is error`)
353                expect(avRecorder.state).assertEqual('error');
354                break;
355            default:
356                console.info('case state is unknown');
357        }
358    });
359
360    avRecorder.on('error', (err) => {
361        console.info('case avRecorder.on(error) called, errMessage is ' + err.message);
362    });
363}
364
365export async function setPrepareOnCallback(avConfig, avRecorder, recorderTime, done) {
366    console.info(`case setOnCallback in`);
367    avRecorder.on('stateChange', async (state, reason) => {
368        console.info('case state has changed, new state is :' + state);
369        switch (state) {
370            case AV_RECORDER_STATE.PREPARED:
371                console.info(`case AV_RECORDER_STATE.PREPARED`);
372                expect(avRecorder.state).assertEqual('prepared');
373                releaseCallback(avRecorder);
374                break;
375            case AV_RECORDER_STATE.RELEASED:
376                console.info(`case setPrepareOnCallback is released`);
377                expect(avRecorder.state).assertEqual('released');
378                done();
379                break;
380            case AV_RECORDER_STATE.ERROR:
381                console.info(`case AV_RECORDER_STATE.ERROR`)
382                expect(avRecorder.state).assertEqual('error');
383                break;
384            default:
385                console.info('case state is unknown');
386        }
387    });
388}
389
390export async function avRecorderWithCallBack(avConfig, avRecorder, recorderTime, done) {
391    avRecorder = await idle(avRecorder)
392    setOnCallback(avConfig, avRecorder, recorderTime, done);
393    await avRecorder.prepare(avConfig)
394}
395
396export async function avRecorderWithCallBack2(avConfig, avRecorder, recorderTime, done) {
397    avRecorder = await idle(avRecorder);
398    console.info('case avConfig.url is ' + avConfig.url);
399    await preparePromise(avRecorder, avConfig);
400    await startPromise(avRecorder, recorderTime);
401    await pausePromise(avRecorder);
402    await stopPromise(avRecorder);
403    await avRecorder.reset().then(() => {
404        console.info('reset avRecorderWithCallBack2 success');
405        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
406    }).catch((err) => {
407        console.info('reset avRecorderWithCallBack2 failed and catch error is ' + err.message);
408    });
409    await releaseDone(avRecorder, done)
410}
411
412export async function avRecorderWithCallBack3(avConfig, avRecorder, recorderTime, done) {
413    avRecorder = await idle(avRecorder);
414    console.info('case avConfig.url is ' + avConfig.url);
415    await preparePromise(avRecorder, avConfig);
416    await startPromise(avRecorder, recorderTime);
417    await pausePromise(avRecorder);
418    await resumePromise(avRecorder);
419    await stopPromise(avRecorder);
420    await avRecorder.reset().then(() => {
421        console.info('reset avRecorderWithCallBack3 success');
422        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
423    }).catch((err) => {
424        console.info('reset avRecorderWithCallBack3 failed and catch error is ' + err.message);
425    });
426    await releaseDone(avRecorder, done)
427}
428
429export async function avRecorderWithCallBack4(avConfig, avRecorder, recorderTime, done) {
430    avRecorder = await idle(avRecorder);
431    console.info('case avConfig.url is ' + avConfig.url);
432    await preparePromise(avRecorder, avConfig);
433    await startPromise(avRecorder, recorderTime);
434    await stopPromise(avRecorder);
435    await avRecorder.reset().then(() => {
436        console.info('reset avRecorderWithCallBack4 success');
437        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
438    }).catch((err) => {
439        console.info('reset avRecorderWithCallBack4 failed and catch error is ' + err.message);
440    });
441    await releaseDone(avRecorder, done)
442}
443
444export async function avRecorderWithCallBack5(avConfig, avRecorder, recorderTime, done) {
445    avRecorder = await idle(avRecorder);
446    console.info('case avConfig.url is ' + avConfig.url);
447    await preparePromise(avRecorder, avConfig);
448    await startPromise(avRecorder, recorderTime);
449    await pausePromise(avRecorder);
450    await resumePromise(avRecorder);
451    await avRecorder.reset().then(() => {
452        console.info('reset avRecorderWithCallBack5 success');
453        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
454    }).catch((err) => {
455        console.info('reset avRecorderWithCallBack5 failed and catch error is ' + err.message);
456    });
457    await releaseDone(avRecorder, done)
458}
459
460export async function avRecorderWithCallBack6(avConfig, avRecorder, recorderTime, done) {
461    avRecorder = await idle(avRecorder);
462    console.info('case avConfig.url is ' + avConfig.url);
463    await preparePromise(avRecorder, avConfig);
464    await startPromise(avRecorder, recorderTime);
465    await pausePromise(avRecorder);
466    await startPromise(avRecorder, recorderTime);
467    await avRecorder.reset().then(() => {
468        console.info('reset avRecorderWithCallBack6 success');
469        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
470    }).catch((err) => {
471        console.info('reset avRecorderWithCallBack6 failed and catch error is ' + err.message);
472    });
473    await releaseDone(avRecorder, done)
474}
475
476export async function avRecorderWithCallBack7(avConfig, avRecorder, recorderTime, done) {
477    avRecorder = await idle(avRecorder);
478    console.info('case avConfig.url is ' + avConfig.url);
479    await preparePromise(avRecorder, avConfig);
480    await startPromise(avRecorder, recorderTime);
481    await pausePromise(avRecorder);
482    await resumePromise(avRecorder);
483    await pausePromise(avRecorder);
484    await avRecorder.reset().then(() => {
485        console.info('reset avRecorderWithCallBack7 success');
486        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
487    }).catch((err) => {
488        console.info('reset avRecorderWithCallBack7 failed and catch error is ' + err.message);
489    });
490    await releaseDone(avRecorder, done)
491}
492
493export async function avRecorderWithCallBack8(avConfig, avRecorder, recorderTime, done) {
494    avRecorder = await idle(avRecorder);
495    console.info('case avConfig.url is ' + avConfig.url);
496    await preparePromise(avRecorder, avConfig);
497    await startPromise(avRecorder, recorderTime);
498    await pausePromise(avRecorder);
499    await stopPromise(avRecorder);
500    await startPromise(avRecorder, recorderTime);
501    await pausePromise(avRecorder);
502    await avRecorder.reset().then(() => {
503        console.info('reset avRecorderWithCallBack8 success');
504        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
505    }).catch((err) => {
506        console.info('reset avRecorderWithCallBack8 failed and catch error is ' + err.message);
507    });
508    await releaseDone(avRecorder, done)
509}
510
511export async function avRecorderWithCallBack9(avConfig, avRecorder, recorderTime, done) {
512    avRecorder = await idle(avRecorder);
513    console.info('case avConfig.url is ' + avConfig.url);
514    await preparePromise(avRecorder, avConfig);
515    await startPromise(avRecorder, recorderTime);
516    await stopPromise(avRecorder);
517    await avRecorder.reset().then(() => {
518        console.info('reset avRecorderWithCallBack9 success');
519        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
520    }).catch((err) => {
521        console.info('reset avRecorderWithCallBack9 failed and catch error is ' + err.message);
522    });
523    await releaseDone(avRecorder, done)
524}
525
526export async function avRecorderWithCallBack10(avConfig, avRecorder, recorderTime, done) {
527    avRecorder = await idle(avRecorder);
528    console.info('case avConfig.url is ' + avConfig.url);
529    await preparePromise(avRecorder, avConfig);
530    await startPromise(avRecorder, recorderTime);
531    await stopPromise(avRecorder);
532    await pausePromise(avRecorder);
533    await avRecorder.reset().then(() => {
534        console.info('reset AVRecorder success');
535        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
536    }).catch((err) => {
537        console.info('reset AVRecorder failed and catch error is ' + err.message);
538    });
539    await releaseDone(avRecorder, done)
540}
541
542export async function avRecorderWithCallBack11(avConfig, avRecorder, recorderTime, done) {
543    avRecorder = await idle(avRecorder);
544    console.info('case avConfig.url is ' + avConfig.url);
545    await preparePromise(avRecorder, avConfig);
546    await startPromise(avRecorder, recorderTime);
547    await pausePromise(avRecorder);
548    await avRecorder.reset().then(() => {
549        console.info('avRecorderWithCallBack11 reset AVRecorder success');
550        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
551    }).catch((err) => {
552        console.info('avRecorderWithCallBack11 reset AVRecorder failed and catch error is ' + err.message);
553    });
554    await releaseDone(avRecorder, done)
555}
556
557export async function avRecorderWithCallBack13(avConfig, avRecorder, recorderTime, done) {
558    avRecorder = await idle(avRecorder);
559    console.info('case avConfig.url is ' + avConfig.url);
560    await preparePromise(avRecorder, avConfig);
561    await startPromise(avRecorder, recorderTime);
562    await pausePromise(avRecorder);
563    await resumePromise(avRecorder);
564    await sleep(recorderTime);
565    await stopPromise(avRecorder);
566    await avRecorder.release().then(() => {
567        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
568        console.info('release success');
569        done();
570    }).catch((err) => {
571        console.info('release failed and catch error is ' + err.message);
572    });
573}
574
575export async function setPrepareOnPromise(avRecorder, avConfig, loopTimes, done) {
576    console.info(`case setOnCallback in`);
577    avRecorder.on('stateChange', async (state, reason) => {
578        console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
579        switch (state) {
580            case AV_RECORDER_STATE.IDLE:
581                console.info(`case avRecorderWithPreparePromise is idled`)
582                expect(avRecorder.state).assertEqual('idle');
583                while (loopTimes > 0) {
584                    avRecorder.prepare(avConfig).then(() => {
585                        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
586                        loopTimes--;
587                        console.info('prepare success');
588                    }).catch((err) => {
589                        console.info('prepare failed and catch error is ' + err.message);
590                    });
591                }
592            case AV_RECORDER_STATE.PREPARED:
593                console.info(`case avRecorderWithPreparePromise is prepared`)
594                expect(avRecorder.state).assertEqual('prepared');
595                if (loopTimes <= 0) {
596                    releasePromise(avRecorder);
597                }
598            case AV_RECORDER_STATE.RELEASED:
599                console.info(`case setPrepareOnCallback is released`);
600                expect(avRecorder.state).assertEqual('released');
601                offCallback(avRecorder, ['stateChange', 'error']);
602                done();
603                break;
604            case AV_RECORDER_STATE.ERROR:
605                console.info(`case AV_RECORDER_STATE.ERROR`)
606                expect(avRecorder.state).assertEqual('error');
607                break;
608            default:
609                console.info('case state is unknown');
610        }
611    });
612}
613
614export async function avRecorderWithPreparePromise(avConfig, avRecorder, loopTimes, done) {
615    avRecorder = await idle(avRecorder);
616    console.info('case avConfig.url is ' + avConfig.url);
617    await preparePromise(avRecorder, avConfig);
618    await resetPromise(avRecorder);
619    setPrepareOnPromise(avRecorder, avConfig, loopTimes, done);
620}
621
622export async function setStartOnPromise(avRecorder, loopTimes, done) {
623    console.info(`case setOnCallback in`);
624    avRecorder.on('stateChange', async (state, reason) => {
625        console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
626        switch (state) {
627            case AV_RECORDER_STATE.PREPARED:
628                console.info(`case avRecorderWithStartPromise is prepared`)
629                expect(avRecorder.state).assertEqual('prepared');
630                while (loopTimes > 0) {
631                    avRecorder.start().then(() => {
632                        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.STARTED);
633                        loopTimes--;
634                        console.info('start success');
635                    }).catch((err) => {
636                        console.info('start failed and catch error is ' + err.message);
637                    });
638                }
639            case AV_RECORDER_STATE.STARTED:
640                console.info(`case avRecorderWithStartPromise is started`)
641                expect(avRecorder.state).assertEqual('started');
642                if (loopTimes <= 0) {
643                    releasePromise(avRecorder);
644                }
645            case AV_RECORDER_STATE.RELEASED:
646                console.info(`case setPrepareOnCallback is released`);
647                expect(avRecorder.state).assertEqual('released');
648                offCallback(avRecorder, ['stateChange', 'error']);
649                done();
650                break;
651            case AV_RECORDER_STATE.ERROR:
652                console.info(`case AV_RECORDER_STATE.ERROR`)
653                expect(avRecorder.state).assertEqual('error');
654                break;
655            default:
656                console.info('case state is unknown');
657        }
658    });
659}
660
661export async function avRecorderWithStartPromise(avConfig, avRecorder, loopTimes, done) {
662    avRecorder = await idle(avRecorder);
663    console.info('case avConfig.url is ' + avConfig.url);
664    await preparePromise(avRecorder, avConfig);
665    setStartOnPromise(avRecorder, loopTimes, done);
666}
667
668export async function setPauseOnPromise(avRecorder, loopTimes, done) {
669    console.info(`case setOnCallback in`);
670    avRecorder.on('stateChange', async (state, reason) => {
671        console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
672        switch (state) {
673            case AV_RECORDER_STATE.STARTED:
674                console.info(`case avRecorderWithPausePromise is started`)
675                expect(avRecorder.state).assertEqual('started');
676                while (loopTimes > 0) {
677                    avRecorder.pause().then(() => {
678                        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PAUSED);
679                        loopTimes--;
680                        console.info('pause success');
681                    }).catch((err) => {
682                        console.info('pause failed and catch error is ' + err.message);
683                    });
684                }
685            case AV_RECORDER_STATE.PAUSED:
686                console.info(`case avRecorderWithPausePromise is paused`)
687                expect(avRecorder.state).assertEqual('paused');
688                if (loopTimes <= 0) {
689                    releasePromise(avRecorder);
690                }
691            case AV_RECORDER_STATE.RELEASED:
692                console.info(`case setPrepareOnCallback is released`);
693                expect(avRecorder.state).assertEqual('released');
694                offCallback(avRecorder, ['stateChange', 'error']);
695                done();
696                break;
697            case AV_RECORDER_STATE.ERROR:
698                console.info(`case AV_RECORDER_STATE.ERROR`)
699                expect(avRecorder.state).assertEqual('error');
700                break;
701            default:
702                console.info('case state is unknown');
703        }
704    });
705}
706
707export async function avRecorderWithPausePromise(avConfig, avRecorder, recorderTime, loopTimes, done) {
708    avRecorder = await idle(avRecorder);
709    console.info('case avConfig.url is ' + avConfig.url);
710    await preparePromise(avRecorder, avConfig);
711    await startPromise(avRecorder, recorderTime);
712    setPauseOnPromise(avRecorder, loopTimes, done);
713}
714
715export async function setResumeOnPromise(avRecorder, loopTimes, done) {
716    console.info(`case setOnCallback in`);
717    avRecorder.on('stateChange', async (state, reason) => {
718        console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
719        switch (state) {
720            case AV_RECORDER_STATE.PAUSED:
721                console.info(`case avRecorderWithResumePromise is paused`)
722                expect(avRecorder.state).assertEqual('paused');
723                while (loopTimes > 0) {
724                    avRecorder.resume().then(() => {
725                        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PAUSED);
726                        loopTimes--;
727                        console.info('resume success');
728                    }).catch((err) => {
729                        console.info('resume failed and catch error is ' + err.message);
730                    });
731                }
732
733            case AV_RECORDER_STATE.STARTED:
734                console.info(`case avRecorderWithResumePromise is resumed`)
735                expect(avRecorder.state).assertEqual('started');
736                if (loopTimes <= 0) {
737                    releasePromise(avRecorder);
738                }
739            case AV_RECORDER_STATE.RELEASED:
740                console.info(`case setPrepareOnCallback is released`);
741                expect(avRecorder.state).assertEqual('released');
742                offCallback(avRecorder, ['stateChange', 'error']);
743                done();
744                break;
745            case AV_RECORDER_STATE.ERROR:
746                console.info(`case AV_RECORDER_STATE.ERROR`)
747                expect(avRecorder.state).assertEqual('error');
748                break;
749            default:
750                console.info('case state is unknown');
751        }
752    });
753}
754
755export async function avRecorderWithResumePromise(avConfig, avRecorder, recorderTime, loopTimes, done) {
756    avRecorder = await idle(avRecorder);
757    console.info('case avConfig.url is ' + avConfig.url);
758    await preparePromise(avRecorder, avConfig);
759    await startPromise(avRecorder, recorderTime);
760    await pausePromise(avRecorder);
761    setResumeOnPromise(avRecorder, loopTimes, done);
762}
763
764export async function setStopOnPromise(avRecorder, loopTimes, done) {
765    console.info(`case setOnCallback in`);
766    avRecorder.on('stateChange', async (state, reason) => {
767        console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
768        switch (state) {
769            case AV_RECORDER_STATE.STARTED:
770                console.info(`case avRecorderWithStopPromise is started`)
771                expect(avRecorder.state).assertEqual('started');
772                while (loopTimes > 0) {
773                    avRecorder.stop().then(() => {
774                        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.STOPPED);
775                        loopTimes--;
776                        console.info('stop success');
777                    }).catch((err) => {
778                        console.info('stop failed and catch error is ' + err.message);
779                    });
780                }
781            case AV_RECORDER_STATE.STOPPED:
782                console.info(`case avRecorderWithStopPromise is stopped`)
783                expect(avRecorder.state).assertEqual('stopped');
784                if (loopTimes <= 0) {
785                    releasePromise(avRecorder);
786                }
787            case AV_RECORDER_STATE.RELEASED:
788                console.info(`case setPrepareOnCallback is released`);
789                expect(avRecorder.state).assertEqual('released');
790                offCallback(avRecorder, ['stateChange', 'error']);
791                done();
792                break;
793            case AV_RECORDER_STATE.ERROR:
794                console.info(`case AV_RECORDER_STATE.ERROR`)
795                expect(avRecorder.state).assertEqual('error');
796                break;
797            default:
798                console.info('case state is unknown');
799        }
800    });
801}
802
803export async function avRecorderWithStopPromise(avConfig, avRecorder, recorderTime, loopTimes, done) {
804    avRecorder = await idle(avRecorder);
805    console.info('case avConfig.url is ' + avConfig.url);
806    await preparePromise(avRecorder, avConfig);
807    await startPromise(avRecorder, recorderTime);
808    setStopOnPromise(avRecorder, loopTimes, done);
809}
810
811export async function setResetOnPromise(avRecorder, loopTimes, done) {
812    console.info(`case setOnCallback in`);
813    avRecorder.on('stateChange', async (state, reason) => {
814        console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
815        switch (state) {
816            case AV_RECORDER_STATE.STARTED:
817                console.info(`case avRecorderWithResetPromise is started`)
818                expect(avRecorder.state).assertEqual('started');
819                while (loopTimes > 0) {
820                    avRecorder.reset().then(() => {
821                        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
822                        loopTimes--;
823                        console.info('reset success');
824                    }).catch((err) => {
825                        console.info('reset failed and catch error is ' + err.message);
826                    });
827                }
828            case AV_RECORDER_STATE.IDLE:
829                console.info(`case avRecorderWithResetPromise is reseted`)
830                expect(avRecorder.state).assertEqual('idle');
831                if (loopTimes <= 0) {
832                    releasePromise(avRecorder);
833                }
834            case AV_RECORDER_STATE.RELEASED:
835                console.info(`case setPrepareOnCallback is released`);
836                expect(avRecorder.state).assertEqual('released');
837                offCallback(avRecorder, ['stateChange', 'error']);
838                done();
839                break;
840            case AV_RECORDER_STATE.ERROR:
841                console.info(`case AV_RECORDER_STATE.ERROR`)
842                expect(avRecorder.state).assertEqual('error');
843                break;
844            default:
845                console.info('case state is unknown');
846        }
847    });
848}
849
850export async function avRecorderWithResetPromise(avConfig, avRecorder, recorderTime, loopTimes, done) {
851    avRecorder = await idle(avRecorder);
852    console.info('case avConfig.url is ' + avConfig.url);
853    await preparePromise(avRecorder, avConfig);
854    await startPromise(avRecorder, recorderTime);
855    setResetOnPromise(avRecorder, loopTimes, done);
856}
857
858export async function setReleaseOnPromise(avRecorder, loopTimes, done) {
859    console.info(`case setOnCallback in`);
860    avRecorder.on('stateChange', async (state, reason) => {
861        console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
862        switch (state) {
863            case AV_RECORDER_STATE.STARTED:
864                console.info(`case avRecorderWithReleasePromise is started`)
865                expect(avRecorder.state).assertEqual('started');
866                while (loopTimes > 0) {
867                    avRecorder.release().then(() => {
868                        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
869                        loopTimes--;
870                        console.info('release success');
871                    }).catch((err) => {
872                        console.info('release failed and catch error is ' + err.message);
873                    });
874                }
875            case AV_RECORDER_STATE.RELEASED:
876                console.info(`case avRecorderWithReleasePromise is released`)
877                expect(avRecorder.state).assertEqual('released');
878                if (loopTimes <= 0) {
879                    offCallback(avRecorder, ['stateChange', 'error']);
880                    done();
881                }
882            case AV_RECORDER_STATE.ERROR:
883                console.info(`case AV_RECORDER_STATE.ERROR`)
884                expect(avRecorder.state).assertEqual('error');
885                break;
886            default:
887                console.info('case state is unknown');
888        }
889    });
890}
891
892export async function avRecorderWithReleasePromise(avConfig, avRecorder, recorderTime, loopTimes, done) {
893    avRecorder = await idle(avRecorder);
894    console.info('case avConfig.url is ' + avConfig.url);
895    await preparePromise(avRecorder, avConfig);
896    await startPromise(avRecorder, recorderTime);
897    setReleaseOnPromise(avRecorder, loopTimes, done);
898}
899
900export async function avRecorderWithPrepareCallback(avConfig, avRecorder, loopTimes, done) {
901    avRecorder = await idle(avRecorder);
902    console.info('case avConfig.url is ' + avConfig.url);
903    while (loopTimes > 0) {
904        prepareCallback(avRecorder, avConfig);
905        loopTimes--;
906    }
907    await avRecorder.release().then(() => {
908        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
909        done();
910    }).catch((err) => {
911        console.info('release AVRecorder failed and catch error is ' + err.message);
912    });
913}
914
915export async function avRecorderWithStartCallback(avConfig, avRecorder, loopTimes, done) {
916    avRecorder = await idle(avRecorder);
917    console.info('case avConfig.url is ' + avConfig.url);
918    await preparePromise(avRecorder, avConfig);
919    while (loopTimes > 0) {
920        avRecorder.start((err) => {
921            console.info('case start called');
922            if (err == null) {
923                expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.STARTED);
924                console.info('start AVRecorder success');
925            } else {
926                console.info('start AVRecorder failed and error is ' + err.message);
927            }
928        })
929        loopTimes--;
930    }
931    await avRecorder.release().then(() => {
932        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
933        done();
934    }).catch((err) => {
935        console.info('release AVRecorder failed and catch error is ' + err.message);
936    });
937}
938
939export async function avRecorderWithPauseCallback(avConfig, avRecorder, recorderTime, loopTimes, done) {
940    avRecorder = await idle(avRecorder);
941    console.info('case avConfig.url is ' + avConfig.url);
942    await preparePromise(avRecorder, avConfig);
943    await startPromise(avRecorder, recorderTime);
944    while (loopTimes > 0) {
945        pauseCallback(avRecorder, avConfig);
946        loopTimes--;
947    }
948    await avRecorder.release().then(() => {
949        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
950        done();
951    }).catch((err) => {
952        console.info('release AVRecorder failed and catch error is ' + err.message);
953    });
954}
955
956export async function avRecorderWithResumeCallback(avConfig, avRecorder, recorderTime, loopTimes, done) {
957    avRecorder = await idle(avRecorder);
958    console.info('case avConfig.url is ' + avConfig.url);
959    await preparePromise(avRecorder, avConfig);
960    await startPromise(avRecorder, recorderTime);
961    await pausePromise(avRecorder);
962    while (loopTimes > 0) {
963        resumeCallback(avRecorder, avConfig);
964        loopTimes--;
965    }
966    await avRecorder.release().then(() => {
967        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
968        done();
969    }).catch((err) => {
970        console.info('release AVRecorder failed and catch error is ' + err.message);
971    });
972}
973
974export async function avRecorderWithStopCallback(avConfig, avRecorder, recorderTime, loopTimes, done) {
975    avRecorder = await idle(avRecorder);
976    console.info('case avConfig.url is ' + avConfig.url);
977    await preparePromise(avRecorder, avConfig);
978    await startPromise(avRecorder, recorderTime);
979    while (loopTimes > 0) {
980        stopCallback(avRecorder, avConfig);
981        loopTimes--;
982    }
983    await avRecorder.release().then(() => {
984        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
985        done();
986    }).catch((err) => {
987        console.info('release AVRecorder failed and catch error is ' + err.message);
988    });
989}
990
991export async function avRecorderWithResetCallback(avConfig, avRecorder, recorderTime, loopTimes, done) {
992    avRecorder = await idle(avRecorder);
993    console.info('case avConfig.url is ' + avConfig.url);
994    await preparePromise(avRecorder, avConfig);
995    await startPromise(avRecorder, recorderTime);
996    while (loopTimes > 0) {
997        resetCallback(avRecorder, avConfig);
998        loopTimes--;
999    }
1000    await avRecorder.release().then(() => {
1001        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
1002        done();
1003    }).catch((err) => {
1004        console.info('release AVRecorder failed and catch error is ' + err.message);
1005    });
1006}
1007
1008export async function avRecorderWithReleaseCallback(avConfig, avRecorder, recorderTime, loopTimes, done) {
1009    avRecorder = await idle(avRecorder);
1010    console.info('case avConfig.url is ' + avConfig.url);
1011    await preparePromise(avRecorder, avConfig);
1012    await startPromise(avRecorder, recorderTime);
1013    while (loopTimes > 0) {
1014        releaseCallback(avRecorder, avConfig);
1015        loopTimes--;
1016    }
1017    done();
1018}
1019
1020export async function avRecorderWithLongRun(avConfig, avRecorder, recorderTime, done) {
1021    avRecorder = await idle(avRecorder);
1022    console.info('case avConfig.url is ' + avConfig.url);
1023    await preparePromise(avRecorder, avConfig);
1024    await startPromise(avRecorder, recorderTime);
1025    await stopPromise(avRecorder);
1026    await avRecorder.release().then(() => {
1027        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
1028        done();
1029    }).catch((err) => {
1030        console.info('release AVRecorder failed and catch error is ' + err.message);
1031    });
1032}
1033
1034export async function avRecorderLoopPrepare2Reset(avConfig, avRecorder, loopTimes, done) {
1035    avRecorder = await idle(avRecorder);
1036    console.info('case avConfig.url is ' + avConfig.url);
1037    while (loopTimes > 0) {
1038        prepareCallback(avRecorder, avConfig);
1039        startCallback(avRecorder);
1040        resetCallback(avRecorder);
1041        loopTimes--;
1042    }
1043    await avRecorder.release().then(() => {
1044        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
1045        done();
1046    }).catch((err) => {
1047        console.info('release AVRecorder failed and catch error is ' + err.message);
1048    });
1049}
1050
1051export async function avRecorderLoopCreate2Release(avConfig, avRecorder, loopTimes, done) {
1052    while (loopTimes > 0) {
1053        avRecorder = await idle(avRecorder);
1054        console.info('case avConfig.url is ' + avConfig.url);
1055        prepareCallback(avRecorder, avConfig);
1056        startCallback(avRecorder);
1057        resetCallback(avRecorder);
1058        releaseCallback(avRecorder);
1059        loopTimes--;
1060    }
1061    done();
1062}
1063
1064export async function avRecorderLoopPrepare2Stop(avConfig, avRecorder, loopTimes, done) {
1065    avRecorder = await idle(avRecorder);
1066    console.info('case avConfig.url is ' + avConfig.url);
1067    while (loopTimes > 0) {
1068        prepareCallback(avRecorder, avConfig);
1069        startCallback(avRecorder);
1070        stopCallback(avRecorder);
1071        loopTimes--;
1072    }
1073    await avRecorder.release().then(() => {
1074        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
1075        done();
1076    }).catch((err) => {
1077        console.info('release AVRecorder failed and catch error is ' + err.message);
1078    });
1079}
1080
1081export async function avRecorderLoopPause2Resume(avConfig, avRecorder, loopTimes, done) {
1082    avRecorder = await idle(avRecorder);
1083    console.info('case avConfig.url is ' + avConfig.url);
1084    await preparePromise(avRecorder, avConfig);
1085    await startPromise(avRecorder);
1086    while (loopTimes > 0) {
1087        pauseCallback(avRecorder);
1088        resumeCallback(avRecorder);
1089        loopTimes--;
1090    }
1091    await avRecorder.release().then(() => {
1092        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
1093        done();
1094    }).catch((err) => {
1095        console.info('release AVRecorder failed and catch error is ' + err.message);
1096    });
1097}
1098
1099export async function avRecorderLoopCreate2Release2(avConfig, avRecorder, loopTimes, done) {
1100    while (loopTimes > 0) {
1101        avRecorder = await idle(avRecorder);
1102        console.info('case avConfig.url is ' + avConfig.url);
1103        releaseCallback(avRecorder);
1104        loopTimes--;
1105    }
1106    done();
1107}
1108
1109export async function setPrepare2ResetOnCallback(avConfig, avRecorder, done) {
1110    console.info(`case setOnCallback in`);
1111    let count = 0;
1112    avRecorder.on('stateChange', async (state, reason) => {
1113        console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
1114        switch (state) {
1115            case AV_RECORDER_STATE.IDLE:
1116                console.info(`case AV_RECORDER_STATE.IDLE`);
1117                expect(avRecorder.state).assertEqual('idle');
1118                count++;
1119                if (count == 1001) {
1120                    releasePromise(avRecorder);
1121                } else {
1122                    avRecorder.prepare(avConfig).then(() => {
1123                        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
1124                        console.info(`case avRecorderLoopPrepare2ResetWithCallback is prepared`);
1125                        avRecorder.start().then(() => {
1126                            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.STARTED);
1127                            console.info(`case avRecorderLoopPrepare2ResetWithCallback is started`);
1128                            avRecorder.reset().then(() => {
1129                                expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
1130                                console.info(`case avRecorderLoopPrepare2ResetWithCallback is reset`);
1131                            }).catch((err1) => {
1132                                console.info('reset failed and catch error is ' + err1.message);
1133                            });
1134                        }).catch((err2) => {
1135                            console.info('start failed and catch error is ' + err2.message);
1136                        });
1137                    }).catch((err3) => {
1138                        console.info('prepare failed and catch error is ' + err3.message);
1139                    });
1140                }
1141            case AV_RECORDER_STATE.RELEASED:
1142                console.info(`case AV_RECORDER_STATE.RELEASED`)
1143                expect(avRecorder.state).assertEqual('released');
1144                offCallback(avRecorder, ['stateChange', 'error']);
1145                done();
1146                break;
1147            case AV_RECORDER_STATE.ERROR:
1148                console.info(`case AV_RECORDER_STATE.ERROR`)
1149                expect(avRecorder.state).assertEqual('error');
1150                break;
1151            default:
1152                console.info('case state is unknown');
1153        }
1154    });
1155}
1156
1157export async function avRecorderLoopPrepare2ResetWithCallback(avConfig, avRecorder, done) {
1158    avRecorder = await idle(avRecorder);
1159    await preparePromise(avRecorder, avConfig);
1160    await resetPromise(avRecorder);
1161    setPrepare2ResetOnCallback(avConfig, avRecorder, done);
1162}
1163
1164export async function setCreate2ReleaseOnCallback(avRecorder, avConfig, loopTimes, done) {
1165    console.info(`case setOnCallback in`);
1166    avRecorder.on('stateChange', async (state, reason) => {
1167        console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
1168        switch (state) {
1169            case AV_RECORDER_STATE.IDLE:
1170                console.info(`case AV_RECORDER_STATE.IDLE`);
1171                expect(avRecorder.state).assertEqual('idle');
1172                await releasePromise(avRecorder);
1173            case AV_RECORDER_STATE.PREPARED:
1174                console.info(`case AV_RECORDER_STATE.PREPARED`);
1175                expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
1176                await startPromise(avRecorder);
1177                break;
1178            case AV_RECORDER_STATE.STARTED:
1179                console.info(`case AV_RECORDER_STATE.STARTED`)
1180                expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.STARTED);
1181                await resetPromise(avRecorder);
1182                break;
1183            case AV_RECORDER_STATE.RELEASED:
1184                console.info(`case AV_RECORDER_STATE.RELEASED`);
1185                expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
1186                loopTimes--;
1187                if (loopTimes <= 0) {
1188                    done();
1189                } else {
1190                    avRecorderLoopCreate2ReleaseWithCallback(avRecorder, avConfig, loopTimes, done);
1191                }
1192                break;
1193            case AV_RECORDER_STATE.ERROR:
1194                console.info(`case AV_RECORDER_STATE.ERROR`)
1195                expect(avRecorder.state).assertEqual('error');
1196                break;
1197            default:
1198                console.info('case state is unknown');
1199        }
1200    });
1201}
1202
1203export async function avRecorderLoopCreate2ReleaseWithCallback(avRecorder, avConfig, loopTimes, done) {
1204    avRecorder = await idle(avRecorder);
1205    await preparePromise(avRecorder, avConfig);
1206    setCreate2ReleaseOnCallback(avRecorder, loopTimes, done)
1207}
1208
1209export async function setPrepare2StopOnCallback(avRecorder, done) {
1210    console.info(`case setOnCallback in`);
1211    let count = 0;
1212    avRecorder.on('stateChange', async (state, reason) => {
1213        console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
1214        switch (state) {
1215            case AV_RECORDER_STATE.PREPARED:
1216                console.info(`case AV_RECORDER_STATE.PREPARED`);
1217                expect(avRecorder.state).assertEqual('prepared');
1218                while (count < 1001) {
1219                    avRecorder.start().then(() => {
1220                        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.STARTED);
1221                        console.info(`case avRecorderLoopPrepare2StopWithCallback is started`);
1222                        avRecorder.stop().then(() => {
1223                            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.STOPPED);
1224                            console.info(`case avRecorderLoopPrepare2StopWithCallback is stopped`);
1225                            count++;
1226                        }).catch((err1) => {
1227                            console.info('stop failed and catch error is ' + err1.message);
1228                        });
1229                    }).catch((err2) => {
1230                        console.info('start failed and catch error is ' + err2.message);
1231                    });
1232                }
1233                offCallback(avRecorder, ['stateChange', 'error']);
1234                done();
1235            case AV_RECORDER_STATE.STOPPED:
1236                console.info(`case AV_RECORDER_STATE.STOPPED`)
1237                expect(avRecorder.state).assertEqual('stopped');
1238                if (count == 1001) {
1239                    await releasePromise(avRecorder);
1240                }
1241                break;
1242            case AV_RECORDER_STATE.RELEASED:
1243                console.info(`case AV_RECORDER_STATE.RELEASED`)
1244                expect(avRecorder.state).assertEqual('released');
1245                done();
1246                break;
1247            case AV_RECORDER_STATE.ERROR:
1248                console.info(`case AV_RECORDER_STATE.ERROR`)
1249                expect(avRecorder.state).assertEqual('error');
1250                break;
1251            default:
1252                console.info('case state is unknown');
1253        }
1254    });
1255}
1256
1257export async function avRecorderLoopPrepare2StopWithCallback(avConfig, avRecorder, done) {
1258    avRecorder = await idle(avRecorder);
1259    console.info('case avConfig.url is ' + avConfig.url);
1260    await preparePromise(avRecorder, avConfig);
1261    setPrepare2StopOnCallback(avRecorder, done)
1262}
1263
1264export async function setPause2ResumeOnCallback(avRecorder, done) {
1265    console.info(`case setOnCallback in`);
1266    let count = 0;
1267    avRecorder.on('stateChange', async (state, reason) => {
1268        console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
1269        switch (state) {
1270            case AV_RECORDER_STATE.STARTED:
1271                expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.STARTED);
1272                console.info(`case avRecorderLoopPause2ResumeWithCallback is started`);
1273                count++;
1274                if (count == 1001) {
1275                    offCallback(avRecorder, ['stateChange', 'error']);
1276                    done();
1277                } else {
1278                    avRecorder.pause().then(() => {
1279                        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PAUSED);
1280                        console.info(`case avRecorderLoopPause2ResumeWithCallback is paused`);
1281                        avRecorder.reset().then(() => {
1282                            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
1283                            console.info(`case avRecorderLoopPause2ResumeWithCallback is resumed`);
1284                        }).catch((err1) => {
1285                            console.info('reset failed and catch error is ' + err1.message);
1286                        });
1287                    }).catch((err2) => {
1288                        console.info('pause failed and catch error is ' + err2.message);
1289                    });
1290                }
1291            case AV_RECORDER_STATE.IDLE:
1292                console.info(`case AV_RECORDER_STATE.IDLE`)
1293                expect(avRecorder.state).assertEqual('idle');
1294                if (count == 1001) {
1295                    await releasePromise(avRecorder);
1296                }
1297                break;
1298            case AV_RECORDER_STATE.RELEASED:
1299                console.info(`case AV_RECORDER_STATE.RELEASED`)
1300                expect(avRecorder.state).assertEqual('released');
1301                done();
1302                break;
1303            case AV_RECORDER_STATE.ERROR:
1304                console.info(`case AV_RECORDER_STATE.ERROR`)
1305                expect(avRecorder.state).assertEqual('error');
1306                break;
1307            default:
1308                console.info('case state is unknown');
1309        }
1310    });
1311}
1312
1313export async function avRecorderLoopPause2ResumeWithCallback(avConfig, avRecorder, done) {
1314    avRecorder = await idle(avRecorder);
1315    console.info('case avConfig.url is ' + avConfig.url);
1316    await preparePromise(avRecorder, avConfig);
1317    await startPromise(avRecorder);
1318    setPause2ResumeOnCallback(avRecorder, done);
1319}
1320
1321export async function setCreate2Release2OnCallback(avRecorder, loopTimes, done) {
1322    console.info(`case setOnCallback in`);
1323    avRecorder.on('stateChange', async (state, reason) => {
1324        console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
1325        switch (state) {
1326            case AV_RECORDER_STATE.IDLE:
1327                console.info(`case AV_RECORDER_STATE.IDLE`);
1328                expect(avRecorder.state).assertEqual('idle');
1329            case AV_RECORDER_STATE.RELEASED:
1330                console.info(`case AV_RECORDER_STATE.RELEASED`);
1331                expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
1332                loopTimes--;
1333                if (loopTimes <= 0) {
1334                    done();
1335                } else {
1336                    avRecorderLoopCreate2Release2WithCallback(avRecorder, loopTimes, done);
1337                }
1338                break;
1339            case AV_RECORDER_STATE.ERROR:
1340                console.info(`case AV_RECORDER_STATE.ERROR`)
1341                expect(avRecorder.state).assertEqual('error');
1342                break;
1343            default:
1344                console.info('case state is unknown');
1345        }
1346    });
1347}
1348
1349export async function avRecorderLoopCreate2Release2WithCallback(avRecorder, loopTimes, done) {
1350    avRecorder = await idle(avRecorder);
1351    await releasePromise(avRecorder);
1352    setCreate2Release2OnCallback(avRecorder, done);
1353}
1354
1355export async function avRecorderReliabilitTest01(avConfig, avRecorder, recorderTime, done) {
1356    let result = true;
1357    avRecorder = await idle(avRecorder);
1358    await avRecorder.pause((err) => {
1359        if (err == null) {
1360            console.info('pause avRecorderReliabilitTest01 success');
1361        } else {
1362            result = false
1363            expect(result).assertEqual(false);
1364            console.info('pause avRecorderReliabilitTest01 failed and error is ' + err.message);
1365
1366        }
1367    });
1368    console.info('pause avRecorderReliabilitTest01 001');
1369    await releaseDone(avRecorder, done)
1370}
1371
1372export async function avRecorderReliabilitTest02(avConfig, avRecorder, recorderTime, done) {
1373    avRecorder = await idle(avRecorder);
1374    await preparePromise(avRecorder, avConfig)
1375    await releaseDone(avRecorder, done)
1376}
1377
1378export async function avRecorderReliabilitTest03(avConfig, avRecorder, recorderTime, done) {
1379    avRecorder = await idle(avRecorder);
1380    setPrepareOnCallback(avConfig, avRecorder, recorderTime, done)
1381    await avRecorder.prepare(avConfig)
1382}
1383
1384export async function avRecorderReliabilitTest001(avConfig, avRecorder, recorderTime, done) {
1385    idleCallback(avRecorder, avConfig, done)
1386}
1387
1388export async function avRecorderReliabilitTest04(avConfig, avRecorder, recorderTime, done) {
1389    let result = true;
1390    avRecorder = await idle(avRecorder);
1391    await avRecorder.resume().then(() => {
1392        console.info('resume avRecorderReliabilitTest04 success');
1393    }).catch((err) => {
1394        console.info('resume avRecorderReliabilitTest04 failed and catch error is ' + err.message);
1395        result = false
1396    });
1397    expect(result).assertEqual(false);
1398    await preparePromise(avRecorder, avConfig)
1399    await releaseDone(avRecorder, done)
1400}
1401
1402export async function avRecorderReliabilitTest05(avConfig, avRecorder, recorderTime, done) {
1403    avRecorder = await idle(avRecorder);
1404    await prepareCallback(avRecorder, avConfig)
1405    await releaseDone(avRecorder, done)
1406}
1407
1408export async function avRecorderReliabilitTest06(avConfig, avRecorder, recorderTime, done) {
1409    avRecorder = await idle(avRecorder);
1410    await preparePromise(avRecorder, avConfig)
1411    await startPromise(avRecorder)
1412    await pausePromise(avRecorder)
1413    await startPromise(avRecorder)
1414    await releaseDone(avRecorder, done)
1415}
1416
1417export async function avRecorderReliabilitTest07(avConfig, avRecorder, recorderTime, done) {
1418    avRecorder = await idle(avRecorder);
1419    await preparePromise(avRecorder, avConfig)
1420    await startPromise(avRecorder)
1421    await resumePromise(avRecorder)
1422    await startPromise(avRecorder)
1423    await releaseDone(avRecorder, done)
1424}
1425
1426export async function avRecorderReliabilitTest08(avConfig, avRecorder, recorderTime, done) {
1427    let result = true;
1428    avRecorder = await idle(avRecorder);
1429    await avRecorder.pause().then(() => {
1430        console.info('pause avRecorderReliabilitTest08 success');
1431    }).catch((err) => {
1432        console.info('pause avRecorderReliabilitTest08 failed and catch error is ' + err.message);
1433        result = false
1434    });
1435    expect(result).assertEqual(false);
1436    await releaseDone(avRecorder, done)
1437}
1438
1439export async function avRecorderReliabilitTest09(avConfig, avRecorder, recorderTime, done) {
1440    let result = true;
1441    avRecorder = await idle(avRecorder);
1442    await preparePromise(avRecorder, avConfig)
1443    await avRecorder.pause().then(() => {
1444        console.info('pause avRecorderReliabilitTest09 success');
1445    }).catch((err) => {
1446        console.info('pause avRecorderReliabilitTest09 failed and catch error is ' + err.message);
1447        result = false
1448    });
1449    expect(result).assertEqual(false);
1450    await releaseDone(avRecorder, done)
1451}
1452
1453export async function avRecorderReliabilitTest10(avConfig, avRecorder, recorderTime, done) {
1454    avRecorder = await idle(avRecorder);
1455    await preparePromise(avRecorder, avConfig)
1456    await startPromise(avRecorder)
1457    await pausePromise(avRecorder)
1458    await releaseDone(avRecorder, done)
1459}
1460
1461export async function avRecorderReliabilitTest11(avConfig, avRecorder, recorderTime, done) {
1462    avRecorder = await idle(avRecorder);
1463    await preparePromise(avRecorder, avConfig)
1464    await startPromise(avRecorder)
1465    await resumePromise(avRecorder)
1466    await pausePromise(avRecorder)
1467    await releaseDone(avRecorder, done)
1468}
1469
1470export async function avRecorderReliabilitTest12(avConfig, avRecorder, recorderTime, done) {
1471    let result = true;
1472    avRecorder = await idle(avRecorder);
1473    await preparePromise(avRecorder, avConfig)
1474    await startPromise(avRecorder)
1475    await stopPromise(avRecorder)
1476    await avRecorder.pause().then(() => {
1477        console.info('pause avRecorderReliabilitTest12 success');
1478    }).catch((err) => {
1479        console.info('pause avRecorderReliabilitTest12 failed and catch error is ' + err.message);
1480        result = false
1481    });
1482    expect(result).assertEqual(false);
1483    await releaseDone(avRecorder, done)
1484}
1485
1486export async function avRecorderReliabilitTest13(avConfig, avRecorder, recorderTime, done) {
1487    let result = true;
1488    avRecorder = await idle(avRecorder);
1489    await preparePromise(avRecorder, avConfig)
1490    await startPromise(avRecorder)
1491    await stopPromise(avRecorder)
1492    await resetPromise(avRecorder)
1493    await avRecorder.pause().then(() => {
1494        console.info('pause avRecorderReliabilitTest13 success');
1495    }).catch((err) => {
1496        console.info('pause avRecorderReliabilitTest13 failed and catch error is ' + err.message);
1497        result = false
1498    });
1499    expect(result).assertEqual(false);
1500    await releaseDone(avRecorder, done)
1501}
1502
1503export async function avRecorderReliabilitTest14(avConfig, avRecorder, recorderTime, done) {
1504    let result1 = true;
1505    let result2 = true;
1506    let result3 = true;
1507    let result4 = true;
1508    let result5 = true;
1509
1510    avRecorder = await idle(avRecorder);
1511    await avRecorder.pause().then(() => {
1512        console.info('pause avRecorderReliabilitTest14 success');
1513    }).catch((err) => {
1514        console.info('pause avRecorderReliabilitTest14 failed and catch error is ' + err.message);
1515        result1 = false
1516    });
1517    expect(result1).assertEqual(false);
1518
1519    await preparePromise(avRecorder, avConfig)
1520    await avRecorder.pause().then(() => {
1521        console.info('pause avRecorderReliabilitTest14 success');
1522    }).catch((err) => {
1523        console.info('pause avRecorderReliabilitTest14 failed and catch error is ' + err.message);
1524        result2 = false
1525    });
1526    expect(result2).assertEqual(false);
1527
1528    await startPromise(avRecorder)
1529    await avRecorder.pause().then(() => {
1530        console.info('pause avRecorderReliabilitTest14 success');
1531    }).catch((err) => {
1532        console.info('pause avRecorderReliabilitTest14 failed and catch error is ' + err.message);
1533        result3 = false
1534    });
1535    expect(result3).assertEqual(true);
1536
1537    await stopPromise(avRecorder)
1538    await avRecorder.pause().then(() => {
1539        console.info('pause avRecorderReliabilitTest14 success');
1540    }).catch((err) => {
1541        console.info('pause avRecorderReliabilitTest14 failed and catch error is ' + err.message);
1542        result4 = false
1543    });
1544    expect(result4).assertEqual(false);
1545
1546    await resetPromise(avRecorder)
1547    await avRecorder.pause().then(() => {
1548        console.info('pause avRecorderReliabilitTest14 success');
1549    }).catch((err) => {
1550        console.info('pause avRecorderReliabilitTest14 failed and catch error is ' + err.message);
1551        result5 = false
1552    });
1553    expect(result5).assertEqual(false);
1554
1555    await releaseDone(avRecorder, done)
1556}
1557
1558export async function avRecorderReliabilitTest15(avConfig, avRecorder, recorderTime, done) {
1559    let result1 = true;
1560    let result2 = true;
1561    let result3 = true;
1562
1563    avRecorder = await idle(avRecorder);
1564    await preparePromise(avRecorder, avConfig)
1565    await startPromise(avRecorder)
1566    await avRecorder.pause().then(() => {
1567        console.info('pause avRecorderReliabilitTest15 success');
1568    }).catch((err) => {
1569        console.info('pause avRecorderReliabilitTest15 failed and catch error is ' + err.message);
1570        result1 = false
1571    });
1572    expect(result1).assertEqual(true);
1573
1574    await avRecorder.pause().then(() => {
1575        console.info('pause avRecorderReliabilitTest15 success');
1576    }).catch((err) => {
1577        console.info('pause avRecorderReliabilitTest15 failed and catch error is ' + err.message);
1578        result2 = false
1579    });
1580    expect(result2).assertEqual(true);
1581
1582    await avRecorder.pause().then(() => {
1583        console.info('pause avRecorderReliabilitTest15 success');
1584    }).catch((err) => {
1585        console.info('pause avRecorderReliabilitTest15 failed and catch error is ' + err.message);
1586        result3 = false
1587    });
1588    expect(result3).assertEqual(true);
1589
1590    await releaseDone(avRecorder, done)
1591}
1592
1593export async function avRecorderReliabilitTest16(avConfig, avRecorder, recorderTime, done) {
1594    let result = true;
1595    avRecorder = await idle(avRecorder);
1596    await avRecorder.resume().then(() => {
1597        console.info('resume AVRecorder success');
1598    }).catch((err) => {
1599        console.info('resume AVRecorder failed and catch error is ' + err.message);
1600        result = false
1601    });
1602    expect(result).assertEqual(false);
1603    await releaseDone(avRecorder, done)
1604}
1605
1606export async function avRecorderReliabilitTest17(avConfig, avRecorder, recorderTime, done) {
1607    let result = true;
1608    avRecorder = await idle(avRecorder);
1609    await preparePromise(avRecorder, avConfig)
1610    await avRecorder.resume().then(() => {
1611        console.info('resume AVRecorder success');
1612    }).catch((err) => {
1613        console.info('resume AVRecorder failed and catch error is ' + err.message);
1614        result = false
1615    });
1616    expect(result).assertEqual(false);
1617    await releaseDone(avRecorder, done)
1618}
1619
1620export async function avRecorderReliabilitTest18(avConfig, avRecorder, recorderTime, done) {
1621    let result = true;
1622    avRecorder = await idle(avRecorder);
1623    await preparePromise(avRecorder, avConfig)
1624    await startPromise(avRecorder)
1625    await avRecorder.resume().then(() => {
1626        console.info('avRecorderReliabilitTest18 resume AVRecorder success');
1627    }).catch((err) => {
1628        console.info('avRecorderReliabilitTest18 resume AVRecorder failed and catch error is ' + err.message);
1629        result = false
1630    });
1631    expect(result).assertEqual(true);
1632    await releaseDone(avRecorder, done)
1633}
1634
1635export async function avRecorderReliabilitTest19(avConfig, avRecorder, recorderTime, done) {
1636    let result = true;
1637    avRecorder = await idle(avRecorder);
1638    await preparePromise(avRecorder, avConfig)
1639    await startPromise(avRecorder)
1640    await pausePromise(avRecorder)
1641    await avRecorder.resume().then(() => {
1642        console.info('avRecorderReliabilitTest19 resume AVRecorder success');
1643    }).catch((err) => {
1644        console.info('avRecorderReliabilitTest19 resume AVRecorder failed and catch error is ' + err.message);
1645        result = false
1646    });
1647    expect(result).assertEqual(true);
1648    await releaseDone(avRecorder, done)
1649}
1650
1651export async function avRecorderReliabilitTest20(avConfig, avRecorder, recorderTime, done) {
1652    let result = true;
1653    avRecorder = await idle(avRecorder);
1654    await preparePromise(avRecorder, avConfig)
1655    await startPromise(avRecorder)
1656    await stopPromise(avRecorder)
1657    await avRecorder.resume().then(() => {
1658        console.info('avRecorderReliabilitTest20 resume AVRecorder success');
1659    }).catch((err) => {
1660        console.info('avRecorderReliabilitTest20 resume AVRecorder failed and catch error is ' + err.message);
1661        result = false
1662    });
1663    expect(result).assertEqual(false);
1664    await releaseDone(avRecorder, done)
1665}
1666
1667export async function avRecorderReliabilitTest21(avConfig, avRecorder, recorderTime, done) {
1668    let result = true;
1669    avRecorder = await idle(avRecorder);
1670    await preparePromise(avRecorder, avConfig)
1671    await startPromise(avRecorder)
1672    await pausePromise(avRecorder)
1673    await resetPromise(avRecorder)
1674    await avRecorder.resume().then(() => {
1675        console.info('avRecorderReliabilitTest20 resume AVRecorder success');
1676    }).catch((err) => {
1677        console.info('avRecorderReliabilitTest20 resume AVRecorder failed and catch error is ' + err.message);
1678        result = false
1679    });
1680    expect(result).assertEqual(false);
1681    await releaseDone(avRecorder, done)
1682}
1683
1684export async function avRecorderReliabilitTest22(avConfig, avRecorder, recorderTime, done) {
1685    let result1 = true;
1686    let result2 = true;
1687    let result3 = true;
1688    let result4 = true;
1689    let result5 = true;
1690
1691    avRecorder = await idle(avRecorder);
1692    await avRecorder.resume().then(() => {
1693        console.info('avRecorderReliabilitTest22 resume avRecorder success');
1694    }).catch((err) => {
1695        console.info('avRecorderReliabilitTest22 resume avRecorder failed and catch error is ' + err.message);
1696        result1 = false
1697    });
1698    expect(result1).assertEqual(false);
1699
1700    await preparePromise(avRecorder, avConfig)
1701    await avRecorder.resume().then(() => {
1702        console.info('avRecorderReliabilitTest22 resume avRecorder success');
1703    }).catch((err) => {
1704        console.info('avRecorderReliabilitTest22 resume avRecorder failed and catch error is ' + err.message);
1705        result2 = false
1706    });
1707    expect(result2).assertEqual(false);
1708
1709    await startPromise(avRecorder)
1710    await avRecorder.resume().then(() => {
1711        console.info('avRecorderReliabilitTest22 resume avRecorder success');
1712    }).catch((err) => {
1713        console.info('avRecorderReliabilitTest22 resume avRecorder failed and catch error is ' + err.message);
1714        result3 = false
1715    });
1716    expect(result3).assertEqual(true);
1717
1718    await pausePromise(avRecorder)
1719    await avRecorder.resume().then(() => {
1720        console.info('avRecorderReliabilitTest22 resume avRecorder success');
1721    }).catch((err) => {
1722        console.info('avRecorderReliabilitTest22 resume avRecorder failed and catch error is ' + err.message);
1723        result4 = false
1724    });
1725    expect(result4).assertEqual(true);
1726
1727    await resetPromise(avRecorder)
1728    await avRecorder.resume().then(() => {
1729        console.info('avRecorderReliabilitTest22 resume avRecorder success');
1730    }).catch((err) => {
1731        console.info('avRecorderReliabilitTest22 resume avRecorder failed and catch error is ' + err.message);
1732        result5 = false
1733    });
1734    expect(result5).assertEqual(false);
1735
1736    await releaseDone(avRecorder, done)
1737}
1738
1739export async function avRecorderReliabilitTest23(avConfig, avRecorder, recorderTime, done) {
1740    let result1 = true;
1741    let result2 = true;
1742    let result3 = true;
1743
1744    avRecorder = await idle(avRecorder);
1745    await preparePromise(avRecorder, avConfig)
1746    await startPromise(avRecorder)
1747    await pausePromise(avRecorder)
1748    await avRecorder.resume().then(() => {
1749        console.info('avRecorderReliabilitTest23 resume avRecorder success');
1750    }).catch((err) => {
1751        console.info('avRecorderReliabilitTest23 resume avRecorder failed and catch error is ' + err.message);
1752        result1 = false
1753    });
1754    expect(result1).assertEqual(true);
1755
1756    await avRecorder.resume().then(() => {
1757        console.info('avRecorderReliabilitTest23 resume avRecorder success');
1758    }).catch((err) => {
1759        console.info('avRecorderReliabilitTest23 resume avRecorder failed and catch error is ' + err.message);
1760        result2 = false
1761    });
1762    expect(result2).assertEqual(true);
1763
1764    await avRecorder.resume().then(() => {
1765        console.info('avRecorderReliabilitTest23 resume avRecorder success');
1766    }).catch((err) => {
1767        console.info('avRecorderReliabilitTest23 resume avRecorder failed and catch error is ' + err.message);
1768        result3 = false
1769    });
1770    expect(result3).assertEqual(true);
1771
1772    await releaseDone(avRecorder, done)
1773}
1774
1775export async function avRecorderReliabilitTest24(avConfig, avRecorder, recorderTime, done) {
1776    let result = true;
1777    avRecorder = await idle(avRecorder);
1778    await preparePromise(avRecorder, avConfig)
1779    await startPromise(avRecorder, recorderTime)
1780    await pausePromise(avRecorder)
1781    await avRecorder.stop().then(() => {
1782        console.info('avRecorderReliabilitTest24 stop avRecorder success');
1783    }).catch((err) => {
1784        console.info('avRecorderReliabilitTest24 stop avRecorder failed and catch error is ' + err.message);
1785        result = false
1786    });
1787    expect(result).assertEqual(true);
1788    await releaseDone(avRecorder, done)
1789}
1790
1791export async function avRecorderReliabilitTest25(avConfig, avRecorder, recorderTime, done) {
1792    let result = true;
1793    avRecorder = await idle(avRecorder);
1794    await preparePromise(avRecorder, avConfig)
1795    await startPromise(avRecorder, recorderTime)
1796    await pausePromise(avRecorder)
1797    await resumePromise(avRecorder)
1798    await avRecorder.stop().then(() => {
1799        console.info('avRecorderReliabilitTest25 stop avRecorder success');
1800    }).catch((err) => {
1801        console.info('avRecorderReliabilitTest25 stop avRecorder failed and catch error is ' + err.message);
1802        result = false
1803    });
1804    expect(result).assertEqual(true);
1805    await releaseDone(avRecorder, done)
1806}
1807
1808export async function avRecorderReliabilitTest26(avConfig, avRecorder, recorderTime, done) {
1809    let result = true;
1810    avRecorder = await idle(avRecorder);
1811    await preparePromise(avRecorder, avConfig)
1812    await startPromise(avRecorder)
1813    await pausePromise(avRecorder)
1814    await avRecorder.reset().then(() => {
1815        console.info('avRecorderReliabilitTest26 reset avRecorder success');
1816    }).catch((err) => {
1817        console.info('avRecorderReliabilitTest26 reset avRecorder failed and catch error is ' + err.message);
1818        result = false
1819    });
1820    expect(result).assertEqual(true);
1821    await releaseDone(avRecorder, done)
1822}
1823
1824export async function avRecorderReliabilitTest27(avConfig, avRecorder, recorderTime, done) {
1825    let result = true;
1826    avRecorder = await idle(avRecorder);
1827    await preparePromise(avRecorder, avConfig)
1828    await startPromise(avRecorder)
1829    await pausePromise(avRecorder)
1830    await resumePromise(avRecorder)
1831    await avRecorder.reset().then(() => {
1832        console.info('avRecorderReliabilitTest27 reset avRecorder success');
1833    }).catch((err) => {
1834        console.info('avRecorderReliabilitTest27 reset avRecorder failed and catch error is ' + err.message);
1835        result = false
1836    });
1837    expect(result).assertEqual(true);
1838    await releaseDone(avRecorder, done)
1839}
1840
1841export async function avRecorderReliabilitTest28(avConfig, avRecorder, recorderTime, done) {
1842    let result = true;
1843    avRecorder = await idle(avRecorder);
1844    await preparePromise(avRecorder, avConfig)
1845    await startPromise(avRecorder)
1846    await pausePromise(avRecorder)
1847    await avRecorder.release().then(() => {
1848        console.info('avRecorderReliabilitTest28 release avRecorder success');
1849    }).catch((err) => {
1850        console.info('avRecorderReliabilitTest28 release avRecorder failed and catch error is ' + err.message);
1851        result = false
1852    });
1853    expect(result).assertEqual(true);
1854    await releaseDone(avRecorder, done)
1855}
1856
1857export async function avRecorderReliabilitTest29(avConfig, avRecorder, recorderTime, done) {
1858    let result = true;
1859    avRecorder = await idle(avRecorder);
1860    await preparePromise(avRecorder, avConfig)
1861    await startPromise(avRecorder)
1862    await pausePromise(avRecorder)
1863    await resumePromise(avRecorder)
1864    await avRecorder.release().then(() => {
1865        console.info('avRecorderReliabilitTest29 release avRecorder success');
1866    }).catch((err) => {
1867        console.info('avRecorderReliabilitTest29 release avRecorder failed and catch error is ' + err.message);
1868        result = false
1869    });
1870    expect(result).assertEqual(true);
1871    await releaseDone(avRecorder, done)
1872}
1873
1874export async function avRecorderReliabilitTest30(avConfig, avRecorder, recorderTime, done) {
1875    let result1 = true;
1876    let result2 = true;
1877    let result3 = true;
1878
1879    avRecorder = await idle(avRecorder);
1880    await preparePromise(avRecorder, avConfig)
1881    await startPromise(avRecorder)
1882    await pausePromise(avRecorder)
1883    await avRecorder.release().then(() => {
1884        console.info('avRecorderReliabilitTest30 release avRecorder success');
1885    }).catch((err) => {
1886        console.info('avRecorderReliabilitTest30 release avRecorder failed and catch error is ' + err.message);
1887        result1 = false
1888    });
1889    expect(result1).assertEqual(true);
1890
1891    await avRecorder.release().then(() => {
1892        console.info('avRecorderReliabilitTest30 release avRecorder success');
1893    }).catch((err) => {
1894        console.info('avRecorderReliabilitTest30 release avRecorder failed and catch error is ' + err.message);
1895        result2 = false
1896    });
1897    expect(result2).assertEqual(true);
1898
1899    await avRecorder.release().then(() => {
1900        console.info('avRecorderReliabilitTest30 release avRecorder success');
1901    }).catch((err) => {
1902        console.info('avRecorderReliabilitTest30 release avRecorder failed and catch error is ' + err.message);
1903        result3 = false
1904    });
1905    expect(result3).assertEqual(true);
1906    done();
1907}
1908
1909export async function avRecorderReliabilitTest31(avConfig, avRecorder, recorderTime, done) {
1910    let surfaceID = null;
1911    let result = true;
1912    avRecorder = await idle(avRecorder);
1913    avRecorder.getInputSurface().then((surfaceId) => {
1914        console.info('avRecorderReliabilitTest31 getInputSurface success');
1915        surfaceID = surfaceId;
1916    }).catch((err) => {
1917        console.info('avRecorderReliabilitTest31 getInputSurface failed and catch error is ' + err.message);
1918        result = false
1919    });
1920    expect(result).assertEqual(true);
1921    await releaseDone(avRecorder, done)
1922}
1923
1924
1925export async function getInputSurfaceTest32(avConfig, avRecorder, recorderTime, done) {
1926    console.info(`case getInputSurfaceTest in`);
1927    avRecorder.on('stateChange', async (state, reason) => {
1928        console.info('case state has changed, new state is :' + state);
1929        switch (state) {
1930            case AV_RECORDER_STATE.PREPARED:
1931                console.info(`case getInputSurfaceTest32 state is PREPARED`);
1932                expect(avRecorder.state).assertEqual('prepared');
1933                getInputSurfacePromise(avRecorder)
1934                releasePromise(avRecorder)
1935                break;
1936            case AV_RECORDER_STATE.RELEASED:
1937                console.info(`case getInputSurfaceTest32 state is released`);
1938                expect(avRecorder.state).assertEqual('released');
1939                done();
1940                break;
1941            case AV_RECORDER_STATE.ERROR:
1942                console.info(`case getInputSurfaceTest32 state is ERROR`)
1943                expect(avRecorder.state).assertEqual('error');
1944                break;
1945            default:
1946                console.info('case state is unknown');
1947        }
1948    });
1949    avRecorder.on('error', (err) => {
1950        console.info('case getInputSurfaceTest32 avRecorder.on(error) called, errMessage is ' + err.message);
1951        done();
1952    });
1953}
1954
1955export async function avRecorderReliabilitTest32(avConfig, avRecorder, recorderTime, done) {
1956    avRecorder = await idle(avRecorder);
1957    getInputSurfaceTest32(avConfig, avRecorder, recorderTime, done)
1958    await preparePromise(avRecorder, avConfig)
1959}
1960
1961export async function getInputSurfaceTest33(avConfig, avRecorder, recorderTime, done) {
1962    console.info(`case getInputSurfaceTest33 in`);
1963    avRecorder.on('stateChange', async (state, reason) => {
1964        console.info('case state has changed, new state is :' + state);
1965        switch (state) {
1966            case AV_RECORDER_STATE.PREPARED:
1967                console.info(`case getInputSurfaceTest33 state is PREPARED`);
1968                expect(avRecorder.state).assertEqual('prepared');
1969                getInputSurfacePromise(avRecorder)
1970                startPromise(avRecorder)
1971                break;
1972            case AV_RECORDER_STATE.STARTED:
1973                console.info(`case getInputSurfaceTest33 state is started`)
1974                expect(avRecorder.state).assertEqual('started');
1975                await sleep(recorderTime);
1976                console.info(`case getInputSurfaceTest33 111`)
1977                getInputSurfacePromise(avRecorder)
1978                console.info(`case getInputSurfaceTest33 222`)
1979                releasePromise(avRecorder)
1980                break;
1981            case AV_RECORDER_STATE.RELEASED:
1982                console.info(`case getInputSurfaceTest33 state is released`);
1983                expect(avRecorder.state).assertEqual('released');
1984                done();
1985                break;
1986            case AV_RECORDER_STATE.ERROR:
1987                console.info(`case getInputSurfaceTest33 state is ERROR`)
1988                expect(avRecorder.state).assertEqual('error');
1989                break;
1990            default:
1991                console.info('case state is unknown');
1992        }
1993    });
1994    avRecorder.on('error', (err) => {
1995        console.info('case avRecorder.on(error) called, errMessage is ' + err.message);
1996        done();
1997    });
1998}
1999
2000export async function avRecorderReliabilitTest33(avConfig, avRecorder, recorderTime, done) {
2001    avRecorder = await idle(avRecorder);
2002    getInputSurfaceTest33(avConfig, avRecorder, recorderTime, done)
2003    await preparePromise(avRecorder, avConfig)
2004}
2005
2006export async function getInputSurfaceTest34(avConfig, avRecorder, recorderTime, done) {
2007    console.info(`case getInputSurfaceTest34 in`);
2008    avRecorder.on('stateChange', async (state, reason) => {
2009        console.info('case state has changed, new state is :' + state);
2010        switch (state) {
2011            case AV_RECORDER_STATE.PREPARED:
2012                console.info(`case getInputSurfaceTest34 state is PREPARED`);
2013                expect(avRecorder.state).assertEqual('prepared');
2014                getInputSurfacePromise(avRecorder)
2015                startPromise(avRecorder)
2016                break;
2017            case AV_RECORDER_STATE.STARTED:
2018                console.info(`case getInputSurfaceTest34 state is started`)
2019                expect(avRecorder.state).assertEqual('started');
2020                await sleep(recorderTime);
2021                pausePromise(avRecorder)
2022                break;
2023            case AV_RECORDER_STATE.PAUSED:
2024                console.info(`case getInputSurfaceTest34 state is paused`)
2025                expect(avRecorder.state).assertEqual('paused');
2026                getInputSurfacePromise(avRecorder)
2027                releasePromise(avRecorder)
2028                break;
2029            case AV_RECORDER_STATE.RELEASED:
2030                console.info(`case getInputSurfaceTest34 state is released`);
2031                expect(avRecorder.state).assertEqual('released');
2032                done();
2033                break;
2034            case AV_RECORDER_STATE.ERROR:
2035                console.info(`case getInputSurfaceTest34 state is ERROR`)
2036                expect(avRecorder.state).assertEqual('error');
2037                break;
2038            default:
2039                console.info('case state is unknown');
2040        }
2041    });
2042    avRecorder.on('error', (err) => {
2043        console.info('case avRecorder.on(error) called, errMessage is ' + err.message);
2044        done();
2045    });
2046}
2047
2048export async function avRecorderReliabilitTest34(avConfig, avRecorder, recorderTime, done) {
2049    avRecorder = await idle(avRecorder);
2050    getInputSurfaceTest34(avConfig, avRecorder, recorderTime, done)
2051    await preparePromise(avRecorder, avConfig)
2052}
2053
2054export async function getInputSurfaceTest35(avConfig, avRecorder, recorderTime, done) {
2055    console.info(`case getInputSurfaceTest35 in`);
2056    avRecorder.on('stateChange', async (state, reason) => {
2057        console.info('case state has changed, new state is :' + state);
2058        switch (state) {
2059            case AV_RECORDER_STATE.PREPARED:
2060                console.info(`case getInputSurfaceTest35 state is PREPARED`);
2061                expect(avRecorder.state).assertEqual('prepared');
2062                getInputSurfacePromise(avRecorder)
2063                startPromise(avRecorder)
2064                break;
2065            case AV_RECORDER_STATE.STARTED:
2066                console.info(`case getInputSurfaceTest35 state is started`)
2067                expect(avRecorder.state).assertEqual('started');
2068                await sleep(recorderTime);
2069                pausePromise(avRecorder)
2070                break;
2071            case AV_RECORDER_STATE.PAUSED:
2072                console.info(`case getInputSurfaceTest35 state is paused`)
2073                expect(avRecorder.state).assertEqual('paused');
2074                resumePromise(avRecorder)
2075                getInputSurfacePromise(avRecorder)
2076                releasePromise(avRecorder)
2077                break;
2078            case AV_RECORDER_STATE.RELEASED:
2079                console.info(`case getInputSurfaceTest35 state is released`);
2080                expect(avRecorder.state).assertEqual('released');
2081                done();
2082                break;
2083            case AV_RECORDER_STATE.ERROR:
2084                console.info(`case getInputSurfaceTest35 state is ERROR`)
2085                expect(avRecorder.state).assertEqual('error');
2086                break;
2087            default:
2088                console.info('case state is unknown');
2089        }
2090    });
2091    avRecorder.on('error', (err) => {
2092        console.info('case avRecorder.on(error) called, errMessage is ' + err.message);
2093        done();
2094    });
2095}
2096
2097export async function avRecorderReliabilitTest35(avConfig, avRecorder, recorderTime, done) {
2098    avRecorder = await idle(avRecorder);
2099    getInputSurfaceTest35(avConfig, avRecorder, recorderTime, done)
2100    await preparePromise(avRecorder, avConfig)
2101}
2102
2103export async function getInputSurfaceTest36(avConfig, avRecorder, recorderTime, done) {
2104    console.info(`case getInputSurfaceTest36 in`);
2105    avRecorder.on('stateChange', async (state, reason) => {
2106        console.info('case state has changed, new state is :' + state);
2107        switch (state) {
2108            case AV_RECORDER_STATE.PREPARED:
2109                console.info(`case getInputSurfaceTest36 state is PREPARED`);
2110                expect(avRecorder.state).assertEqual('prepared');
2111                getInputSurfacePromise(avRecorder)
2112                startPromise(avRecorder)
2113                break;
2114            case AV_RECORDER_STATE.STARTED:
2115                console.info(`case getInputSurfaceTest36 state is started`)
2116                expect(avRecorder.state).assertEqual('started');
2117                await sleep(recorderTime);
2118                stopPromise(avRecorder)
2119                break;
2120            case AV_RECORDER_STATE.STOPPED:
2121                console.info(`case getInputSurfaceTest36 state is stopped`)
2122                expect(avRecorder.state).assertEqual('stopped');
2123                getInputSurfacePromise(avRecorder)
2124                releasePromise(avRecorder)
2125                break;
2126            case AV_RECORDER_STATE.RELEASED:
2127                console.info(`case getInputSurfaceTest36 state is released`);
2128                expect(avRecorder.state).assertEqual('released');
2129                done();
2130                break;
2131            case AV_RECORDER_STATE.ERROR:
2132                console.info(`case getInputSurfaceTest36 state is ERROR`)
2133                expect(avRecorder.state).assertEqual('error');
2134                break;
2135            default:
2136                console.info('case state is unknown');
2137        }
2138    });
2139    avRecorder.on('error', (err) => {
2140        console.info('case avRecorder.on(error) called, errMessage is ' + err.message);
2141        done();
2142    });
2143}
2144
2145export async function avRecorderReliabilitTest36(avConfig, avRecorder, recorderTime, done) {
2146    avRecorder = await idle(avRecorder);
2147    getInputSurfaceTest36(avConfig, avRecorder, recorderTime, done)
2148    await preparePromise(avRecorder, avConfig)
2149}
2150
2151export async function getInputSurfaceTest37(avConfig, avRecorder, recorderTime, done) {
2152    console.info(`case getInputSurfaceTest37 in`);
2153    avRecorder.on('stateChange', async (state, reason) => {
2154        console.info('case state has changed, new state is :' + state);
2155        switch (state) {
2156            case AV_RECORDER_STATE.IDLE:
2157                console.info(`case getInputSurfaceTest37 state is idle`);
2158                expect(avRecorder.state).assertEqual("idle");
2159                getInputSurfacePromise(avRecorder)
2160                releasePromise(avRecorder)
2161                break;
2162            case AV_RECORDER_STATE.PREPARED:
2163                console.info(`case getInputSurfaceTest37 state isPREPARED`);
2164                expect(avRecorder.state).assertEqual('prepared');
2165                getInputSurfacePromise(avRecorder)
2166                startPromise(avRecorder)
2167                break;
2168            case AV_RECORDER_STATE.STARTED:
2169                console.info(`case getInputSurfaceTest37 state isstarted`)
2170                expect(avRecorder.state).assertEqual('started');
2171                await sleep(recorderTime);
2172                resetPromise(avRecorder)
2173                break;
2174            case AV_RECORDER_STATE.RELEASED:
2175                console.info(`case getInputSurfaceTest37 state is released`);
2176                expect(avRecorder.state).assertEqual('released');
2177                done();
2178                break;
2179            case AV_RECORDER_STATE.ERROR:
2180                console.info(`case getInputSurfaceTest37 state is ERROR`)
2181                expect(avRecorder.state).assertEqual('error');
2182                break;
2183            default:
2184                console.info('case state is unknown');
2185        }
2186    });
2187    avRecorder.on('error', (err) => {
2188        console.info('case avRecorder.on(error) called, errMessage is ' + err.message);
2189        done();
2190    });
2191}
2192
2193export async function avRecorderReliabilitTest37(avConfig, avRecorder, recorderTime, done) {
2194    avRecorder = await idle(avRecorder);
2195    getInputSurfaceTest37(avConfig, avRecorder, recorderTime, done)
2196    await preparePromise(avRecorder, avConfig)
2197}
2198
2199export async function getInputSurfaceTest38(avConfig, avRecorder, recorderTime, done) {
2200    let result1 = true;
2201    let result2 = true;
2202    let result3 = true;
2203    let surfaceID = null;
2204    console.info(`case getInputSurfaceTest38 in`);
2205    avRecorder.on('stateChange', async (state, reason) => {
2206        console.info('case state has changed, new state is :' + state);
2207        switch (state) {
2208            case AV_RECORDER_STATE.PREPARED:
2209                console.info(`case getInputSurfaceTest38 state is PREPARED`);
2210                expect(avRecorder.state).assertEqual('prepared');
2211
2212                avRecorder.getInputSurface().then((surfaceId) => {
2213                    console.info('getInputSurfaceTest38 getInputSurface success');
2214                    surfaceID = surfaceId;
2215                }).catch((err) => {
2216                    console.info('getInputSurfaceTest38 getInputSurface failed and catch error is ' + err.message);
2217                    result1 = false
2218                });
2219                expect(result1).assertEqual(true);
2220
2221                avRecorder.getInputSurface().then((surfaceId) => {
2222                    console.info('getInputSurfaceTest38 getInputSurface success');
2223                    surfaceID = surfaceId;
2224                }).catch((err) => {
2225                    console.info('getInputSurfaceTest38 getInputSurface failed and catch error is ' + err.message);
2226                    result2 = false
2227                });
2228                expect(result2).assertEqual(true);
2229
2230                avRecorder.getInputSurface().then((surfaceId) => {
2231                    console.info('getInputSurfaceTest38 getInputSurface success');
2232                    surfaceID = surfaceId;
2233                }).catch((err) => {
2234                    console.info('getInputSurfaceTest38 getInputSurface failed and catch error is ' + err.message);
2235                    result3 = false
2236                });
2237                expect(result3).assertEqual(true);
2238                releasePromise(avRecorder)
2239                break;
2240            case AV_RECORDER_STATE.RELEASED:
2241                console.info(`case getInputSurfaceTest38 state is released`);
2242                expect(avRecorder.state).assertEqual('released');
2243                done();
2244                break;
2245            case AV_RECORDER_STATE.ERROR:
2246                console.info(`case getInputSurfaceTest38 state is ERROR`)
2247                expect(avRecorder.state).assertEqual('error');
2248                break;
2249            default:
2250                console.info('case state is unknown');
2251        }
2252    });
2253    avRecorder.on('error', (err) => {
2254        console.info('case avRecorder.on(error) called, errMessage is ' + err.message);
2255        done();
2256    });
2257}
2258
2259export async function avRecorderReliabilitTest38(avConfig, avRecorder, recorderTime, done) {
2260    avRecorder = await idle(avRecorder);
2261    getInputSurfaceTest38(avConfig, avRecorder, recorderTime, done)
2262    await preparePromise(avRecorder, avConfig)
2263}
2264
2265export async function createTimeTestCallback(avConfig, avRecorder, recorderTime, done) {
2266    let totalTime = 0;
2267    for(var i = 0;i < 10;i++){
2268        let start = Date.now();
2269        console.info(`createTimeTestCallback start time is : ${start}`)
2270        avRecorder = await idle(avRecorder);
2271        let end = Date.now()
2272        let execution = parseInt(end - start)
2273        console.info("createTimeTestCallback execution time  is :" + execution)
2274        totalTime = totalTime + execution;
2275        await avRecorder.release().then(() => {
2276            console.info('createTimeTestCallback avPlayer is release')
2277            console.info(`createTimeTestCallback avRecorder.state is : ${avRecorder.state}`)
2278            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2279            if(i == 9){
2280                let avg = totalTime/10;
2281                console.info("createTimeTest avg time  is :" + avg)
2282                done();
2283            }
2284        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2285    }
2286}
2287
2288export async function prepareTimeCallback(avConfig, avRecorder, recorderTime, done) {
2289    let totalTime = 0;
2290    for(var i = 0;i < 10;i++){
2291        avRecorder = await idle(avRecorder);
2292        await sleep(20)
2293        let start = Date.now();
2294        console.info(`prepareTimeWithoutCallback start time is : ${start}`)
2295        let end;
2296        await avRecorder.prepare(avConfig, (err) => {
2297            if (err == null) {
2298                expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2299                console.info('prepareTimeWithoutCallback avPlayer state is prepared')
2300                end = Date.now()
2301                console.info(`prepareTimeWithoutCallback end time is : ${end}`)
2302            } else {
2303                console.info('prepare failed and error is ' + err.message);
2304            }
2305        })
2306        let execution = parseInt(end - start)
2307        console.info("prepareTimeWithoutCallback execution time  is :" + execution)
2308        totalTime = totalTime + execution;
2309        await avRecorder.release().then(() => {
2310            console.info('prepareTimeWithoutCallback avPlayer is release')
2311            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2312        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2313    }
2314    let avg = totalTime/10;
2315    console.info("prepareTimeWithoutCallback avg time  is :" + avg)
2316    done();
2317}
2318
2319export async function getInputSurfaceTimeTestCallback(avConfig, avRecorder, recorderTime, done) {
2320    let totalTime = 0;
2321    let surfaceID = null;
2322    for(var i = 0;i < 10;i++){
2323        avRecorder = await idle(avRecorder);
2324        await sleep(20)
2325        let end;
2326        await avRecorder.prepare(avConfig).then(() => {
2327            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2328            console.info('getInputSurfaceTimeTestCallback avPlayer state is prepared')
2329        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2330
2331        let start = Date.now();
2332        console.info(`getInputSurfaceTimeTestCallback start time is : ${start}`)
2333        await avRecorder.getInputSurface((err, surfaceId) => {
2334            if (err == null) {
2335                console.info('getInputSurfaceTimeTestCallback success');
2336                surfaceID = surfaceId;
2337                end = Date.now()
2338                console.info(`getInputSurfaceTimeTestCallback end time is : ${end}`)
2339                let execution = parseInt(end - start)
2340                console.info("getInputSurfaceTimeTestCallback execution time  is :" + execution)
2341                totalTime = totalTime + execution;
2342            } else {
2343                console.info('getInputSurfaceTimeTestCallback failed and error is ' + err.message);
2344            }
2345        });
2346        await avRecorder.release().then(() => {
2347            console.info('getInputSurfaceTimeTestCallback avPlayer is release')
2348            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2349        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2350    }
2351    let avg = totalTime/10;
2352    console.info("getInputSurfaceTimeTestCallback avg time  is :" + avg)
2353    done();
2354}
2355
2356export async function startTimeTestCallback(avConfig, avRecorder, recorderTime, done) {
2357    let totalTime = 0;
2358    for(var i = 0;i < 10;i++){
2359        avRecorder = await idle(avRecorder);
2360        await sleep(20)
2361        let end;
2362        await avRecorder.prepare(avConfig).then(() => {
2363            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2364            console.info('startTimeTestCallback avPlayer state is prepared')
2365        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2366        let start = Date.now();
2367        console.info(`startTimeTestCallback start time is : ${start}`)
2368        await avRecorder.start((err) => {
2369            if (err == null) {
2370                end = Date.now()
2371                console.info(`startTimeTestCallback end time is : ${end}`)
2372                console.info('startTimeTestCallback avRecorder success');
2373                let execution = parseInt(end - start)
2374                console.info("startTimeTestCallback execution time  is :" + execution)
2375                totalTime = totalTime + execution;
2376            } else {
2377                console.info('startTimeTestCallback failed and error is ' + err.message);
2378            }
2379        });
2380        await avRecorder.release().then(() => {
2381            console.info('startTimeTestCallback avPlayer is release')
2382            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2383        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2384    }
2385    let avg = totalTime/10;
2386    console.info("startTimeTestCallback avg time  is :" + avg)
2387    done();
2388}
2389
2390export async function pauseTimeTestCallback(avConfig, avRecorder, recorderTime, done) {
2391    let totalTime = 0;
2392    for(var i = 0;i < 10;i++){
2393        avRecorder = await idle(avRecorder);
2394        await sleep(20)
2395        await avRecorder.prepare(avConfig).then(() => {
2396            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2397            console.info('pauseTimeTestCallback avPlayer state is prepared')
2398        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2399
2400        await avRecorder.start().then(() => {
2401            console.info('start avRecorder success');
2402        }).catch((err) => {
2403            console.info('pauseTimeTestCallback start avRecorder failed and catch error is ' + err.message);
2404        });
2405        let start = Date.now();
2406        console.info(`pauseTimeTestCallback start time is : ${start}`)
2407        let end;
2408        await avRecorder.pause((err) => {
2409            if (err == null) {
2410                end = Date.now()
2411                console.info(`pauseTimeTestCallback end time is : ${end}`)
2412                console.info('pause pauseTimeTestCallback success');
2413                let execution = parseInt(end - start)
2414                console.info("pauseTimeTestCallback execution time  is :" + execution)
2415                totalTime = totalTime + execution;
2416            } else {
2417                console.info('pause pauseTimeTestCallback failed and error is ' + err.message);
2418            }
2419        });
2420        await avRecorder.release().then(() => {
2421            console.info('pauseTimeTestCallback avPlayer is release')
2422            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2423        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2424    }
2425    let avg = totalTime/10;
2426    console.info("pauseTimeTestCallback avg time  is :" + avg)
2427    done();
2428}
2429
2430export async function resumeTimeTestCallback(avConfig, avRecorder, recorderTime, done) {
2431    let totalTime = 0;
2432    for(var i = 0;i < 10;i++){
2433        avRecorder = await idle(avRecorder);
2434        await sleep(20)
2435        await avRecorder.prepare(avConfig).then(() => {
2436            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2437            console.info('resumeTimeTestCallback avPlayer state is prepared')
2438        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2439
2440        await avRecorder.start().then(() => {
2441            console.info('start resumeTimeTestCallback success');
2442        }).catch((err) => {
2443            console.info('resumeTimeTestCallback start avRecorder failed and catch error is ' + err.message);
2444        });
2445        let end;
2446        await avRecorder.pause((err) => {
2447            if (err == null) {
2448                console.info('pause resumeTimeTestCallback success');
2449            } else {
2450                console.info('pause resumeTimeTestCallback failed and error is ' + err.message);
2451            }
2452        });
2453        let start = Date.now();
2454        console.info(`resumeTimeTestCallback start time is : ${start}`)
2455        await avRecorder.resume((err) => {
2456            if (err == null) {
2457                console.info('resume resumeTimeTestCallback success');
2458                end = Date.now()
2459                console.info(`resumeTimeTestCallback end time is : ${end}`)
2460                let execution = parseInt(end - start)
2461                console.info("resumeTimeTestCallback execution time  is :" + execution)
2462                totalTime = totalTime + execution;
2463            } else {
2464                console.info('resume resumeTimeTestCallback failed and error is ' + err.message);
2465            }
2466        });
2467        await avRecorder.release().then(() => {
2468            console.info('resumeTimeTestCallback avPlayer is release')
2469            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2470        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2471    }
2472    let avg = totalTime/10;
2473    console.info("resumeTimeTestCallback avg time  is :" + avg)
2474    done();
2475}
2476
2477export async function stopTimeTestCallback(avConfig, avRecorder, recorderTime, done) {
2478    let totalTime = 0;
2479    for(var i = 0;i < 10;i++){
2480        avRecorder = await idle(avRecorder);
2481        await sleep(20)
2482        await avRecorder.prepare(avConfig).then(() => {
2483            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2484            console.info('stopTimeTestCallback avPlayer state is prepared')
2485        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2486
2487        await avRecorder.start().then(() => {
2488            console.info('start stopTimeTestCallback success');
2489        }).catch((err) => {
2490            console.info('stopTimeTestCallback start avRecorder failed and catch error is ' + err.message);
2491        });
2492        let end;
2493        let start = Date.now();
2494        console.info(`stopTimeTestCallback start time is : ${start}`)
2495        await avRecorder.stop((err) => {
2496            if (err == null) {
2497                console.info('resume stopTimeTestCallback success');
2498                end = Date.now()
2499                console.info(`stopTimeTestCallback end time is : ${end}`)
2500                let execution = parseInt(end - start)
2501                console.info("stopTimeTestCallback execution time  is :" + execution)
2502                totalTime = totalTime + execution;
2503            } else {
2504                console.info('resume stopTimeTestCallback failed and error is ' + err.message);
2505            }
2506        });
2507        await avRecorder.release().then(() => {
2508            console.info('stopTimeTestCallback avPlayer is release')
2509            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2510        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2511    }
2512    let avg = totalTime/10;
2513    console.info("stopTimeTestCallback avg time  is :" + avg)
2514    done();
2515}
2516
2517export async function resetTimeTestCallback(avConfig, avRecorder, recorderTime, done) {
2518    let totalTime = 0;
2519    for(var i = 0;i < 10;i++){
2520        avRecorder = await idle(avRecorder);
2521        await sleep(20)
2522        await avRecorder.prepare(avConfig).then(() => {
2523            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2524            console.info('resetTimeTestCallback avPlayer state is prepared')
2525        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2526
2527        await avRecorder.start().then(() => {
2528            console.info('start resetTimeTestCallback success');
2529        }).catch((err) => {
2530            console.info('resetTimeTestCallback start avRecorder failed and catch error is ' + err.message);
2531        });
2532        let end;
2533        let start = Date.now();
2534        console.info(`resetTimeTestCallback start time is : ${start}`)
2535        await avRecorder.reset((err) => {
2536            if (err == null) {
2537                console.info('resume resetTimeTestCallback success');
2538                end = Date.now()
2539                console.info(`resetTimeTestCallback end time is : ${end}`)
2540                let execution = parseInt(end - start)
2541                console.info("resetTimeTestCallback execution time  is :" + execution)
2542                totalTime = totalTime + execution;
2543            } else {
2544                console.info('resume resetTimeTestCallback failed and error is ' + err.message);
2545            }
2546        });
2547        await avRecorder.release().then(() => {
2548            console.info('resetTimeTestCallback avPlayer is release')
2549            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2550        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2551    }
2552    let avg = totalTime/10;
2553    console.info("resetTimeTestCallback avg time  is :" + avg)
2554    done();
2555}
2556
2557export async function releaseTimeTestCallback(avConfig, avRecorder, recorderTime, done) {
2558    let totalTime = 0;
2559    for(var i = 0;i < 10;i++){
2560        avRecorder = await idle(avRecorder);
2561        await sleep(20)
2562        await avRecorder.prepare(avConfig).then(() => {
2563            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2564            console.info('releaseTimeTestCallback avPlayer state is prepared')
2565        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2566
2567        await avRecorder.start().then(() => {
2568            console.info('start releaseTimeTestCallback success');
2569        }).catch((err) => {
2570            console.info('releaseTimeTestCallback start avRecorder failed and catch error is ' + err.message);
2571        });
2572        let end;
2573        let start = Date.now();
2574        console.info(`releaseTimeTestCallback start time is : ${start}`)
2575        await avRecorder.release((err) => {
2576            if (err == null) {
2577                console.info(`releaseTimeTestCallback current state is : ${avRecorder.state}`)
2578                console.info('release releaseTimeTestCallback success');
2579                end = Date.now()
2580                console.info(`releaseTimeTestCallback end time is : ${end}`)
2581                let execution = parseInt(end - start)
2582                console.info("releaseTimeTestCallback execution time  is :" + execution)
2583                totalTime = totalTime + execution;
2584            } else {
2585                console.info('resume releaseTimeTestCallback failed and error is ' + err.message);
2586            }
2587        });
2588        if(i == 9){
2589            let avg = totalTime/10;
2590            console.info("releaseTimeTestCallback avg time  is :" + avg)
2591            done();
2592        }
2593    }
2594}
2595
2596export async function createTimeTestPromise(avConfig, avRecorder, recorderTime, done) {
2597    let totalTime = 0;
2598    for(var i = 0;i < 10;i++){
2599        let start = Date.now();
2600        console.info(`createTimeTestPromise start time is : ${start}`)
2601        avRecorder = await idle(avRecorder);
2602        let end = Date.now()
2603        let execution = parseInt(end - start)
2604        console.info("createTimeTestPromise execution time  is :" + execution)
2605        totalTime = totalTime + execution;
2606        await avRecorder.release().then(() => {
2607            console.info('createTimeTestPromise avPlayer is release')
2608            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2609        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2610    }
2611    let avg = totalTime/10;
2612    console.info("createTimeTestPromise avg time  is :" + avg)
2613    done();
2614}
2615
2616export async function prepareTimePromise(avConfig, avRecorder, recorderTime, done) {
2617    let totalTime = 0;
2618    for(var i = 0;i < 10;i++){
2619        avRecorder = await idle(avRecorder);
2620        await sleep(20)
2621        let start = Date.now();
2622        console.info(`prepareTimeWithoutPromise start time is : ${start}`)
2623        let end;
2624        await avRecorder.prepare(avConfig).then(() => {
2625            console.info('prepare success');
2626            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2627            console.info('prepareTimeWithoutPromise avPlayer state is prepared')
2628            end = Date.now()
2629            console.info(`prepareTimeWithoutPromise end time is : ${end}`)
2630        }).catch((err) => {
2631            console.info('prepare failed and catch error is ' + err.message);
2632        });
2633        let execution = parseInt(end - start)
2634        console.info("prepareTimeWithoutPromise execution time  is :" + execution)
2635        totalTime = totalTime + execution;
2636        await avRecorder.release().then(() => {
2637            console.info('prepareTimeWithoutPromise avPlayer is release')
2638            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2639        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2640    }
2641    let avg = totalTime/10;
2642    console.info("prepareTimeWithoutPromise avg time  is :" + avg)
2643    done();
2644}
2645
2646export async function getInputSurfaceTimeTestPromise(avConfig, avRecorder, recorderTime, done) {
2647    let totalTime = 0;
2648    let surfaceID = null;
2649    for(var i = 0;i < 10;i++){
2650        avRecorder = await idle(avRecorder);
2651        await sleep(20)
2652        let end;
2653        await avRecorder.prepare(avConfig).then(() => {
2654            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2655            console.info('getInputSurfaceTimeTestPromise avPlayer state is prepared')
2656        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2657        let start = Date.now();
2658        console.info(`getInputSurfaceTimeTestPromise start time is : ${start}`)
2659        await avRecorder.getInputSurface().then((surfaceId) => {
2660            console.info('getInputSurfaceTimeTestPromise success');
2661            surfaceID = surfaceId;
2662            end = Date.now()
2663            console.info(`getInputSurfaceTimeTestPromise end time is : ${end}`)
2664            let execution = parseInt(end - start)
2665            console.info("getInputSurfaceTimeTestPromise execution time  is :" + execution)
2666            totalTime = totalTime + execution;
2667        }).catch((err) => {
2668            console.info('getInputSurface failed and catch error is ' + err.message);
2669        });
2670        await avRecorder.release().then(() => {
2671            console.info('getInputSurfaceTimeTestPromise avPlayer is release')
2672            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2673        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2674    }
2675    let avg = totalTime/10;
2676    console.info("getInputSurfaceTimeTestPromise avg time  is :" + avg)
2677    done();
2678}
2679
2680export async function startTimeTestPromise(avConfig, avRecorder, recorderTime, done) {
2681    let totalTime = 0;
2682    for(var i = 0;i < 10;i++){
2683        avRecorder = await idle(avRecorder);
2684        await sleep(20)
2685        let end;
2686        await avRecorder.prepare(avConfig).then(() => {
2687            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2688            console.info('startTimeTestPromise avPlayer state is prepared')
2689        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2690        let start = Date.now();
2691        console.info(`startTimeTestPromise start time is : ${start}`)
2692        await avRecorder.start().then(() => {
2693            console.info('start AVRecorder success');
2694            end = Date.now()
2695            console.info(`startTimeTestPromise end time is : ${end}`)
2696            let execution = parseInt(end - start)
2697            console.info("startTimeTestPromise execution time  is :" + execution)
2698            totalTime = totalTime + execution;
2699            console.info('startTimeTestPromise avRecorder success');
2700        }).catch((err) => {
2701            console.info('start AVRecorder failed and catch error is ' + err.message);
2702        });
2703        await avRecorder.release().then(() => {
2704            console.info('startTimeTestPromise avPlayer is release')
2705            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2706        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2707    }
2708    let avg = totalTime/10;
2709    console.info("startTimeTestPromise avg time  is :" + avg)
2710    done();
2711}
2712
2713export async function pauseTimeTestPromise(avConfig, avRecorder, recorderTime, done) {
2714    let totalTime = 0;
2715    for(var i = 0;i < 10;i++){
2716        avRecorder = await idle(avRecorder);
2717        await sleep(20)
2718        await avRecorder.prepare(avConfig).then(() => {
2719            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2720            console.info('pauseTimeTestPromise avPlayer state is prepared')
2721        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2722        await avRecorder.start().then(() => {
2723            console.info('start avRecorder success');
2724        }).catch((err) => {
2725            console.info('pauseTimeTestPromise start avRecorder failed and catch error is ' + err.message);
2726        });
2727        let start = Date.now();
2728        console.info(`pauseTimeTestPromise start time is : ${start}`)
2729        let end;
2730        await avRecorder.pause().then(() => {
2731            console.info('pause AVRecorder success');
2732            end = Date.now()
2733            console.info(`pauseTimeTestPromise end time is : ${end}`)
2734            let execution = parseInt(end - start)
2735            console.info("pauseTimeTestPromise execution time  is :" + execution)
2736            totalTime = totalTime + execution;
2737            console.info('pause pauseTimeTestPromise success');
2738        }).catch((err) => {
2739            console.info('pause AVRecorder failed and catch error is ' + err.message);
2740        });
2741        await avRecorder.release().then(() => {
2742            console.info('pauseTimeTestPromise avPlayer is release')
2743            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2744        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2745    }
2746    let avg = totalTime/10;
2747    console.info("pauseTimeTestPromise avg time  is :" + avg)
2748    done();
2749}
2750
2751export async function resumeTimeTestPromise(avConfig, avRecorder, recorderTime, done) {
2752    let totalTime = 0;
2753    for(var i = 0;i < 10;i++){
2754        avRecorder = await idle(avRecorder);
2755        await sleep(20)
2756        await avRecorder.prepare(avConfig).then(() => {
2757            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2758            console.info('resumeTimeTestPromise avPlayer state is prepared')
2759        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2760
2761        await avRecorder.start().then(() => {
2762            console.info('start resumeTimeTestPromise success');
2763        }).catch((err) => {
2764            console.info('resumeTimeTestPromise start avRecorder failed and catch error is ' + err.message);
2765        });
2766        let end;
2767        await avRecorder.pause((err) => {
2768            if (err == null) {
2769                console.info('pause resumeTimeTestPromise success');
2770            } else {
2771                console.info('pause resumeTimeTestPromise failed and error is ' + err.message);
2772            }
2773        });
2774        let start = Date.now();
2775        console.info(`resumeTimeTestPromise start time is : ${start}`)
2776        await avRecorder.resume().then(() => {
2777            console.info('resume AVRecorder success');
2778            console.info('resume resumeTimeTestPromise success');
2779            end = Date.now()
2780            console.info(`resumeTimeTestPromise end time is : ${end}`)
2781            let execution = parseInt(end - start)
2782            console.info("resumeTimeTestPromise execution time  is :" + execution)
2783            totalTime = totalTime + execution;
2784        }).catch((err) => {
2785            console.info('resume AVRecorder failed and catch error is ' + err.message);
2786        });
2787        await avRecorder.release().then(() => {
2788            console.info('resumeTimeTestPromise avPlayer is release')
2789            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2790        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2791    }
2792    let avg = totalTime/10;
2793    console.info("resumeTimeTestPromise avg time  is :" + avg)
2794    done();
2795}
2796
2797export async function stopTimeTestPromise(avConfig, avRecorder, recorderTime, done) {
2798    let totalTime = 0;
2799    for(var i = 0;i < 10;i++){
2800        avRecorder = await idle(avRecorder);
2801        await sleep(20)
2802        await avRecorder.prepare(avConfig).then(() => {
2803            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2804            console.info('stopTimeTestPromise avPlayer state is prepared')
2805        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2806
2807        await avRecorder.start().then(() => {
2808            console.info('start stopTimeTestPromise success');
2809        }).catch((err) => {
2810            console.info('stopTimeTestPromise start avRecorder failed and catch error is ' + err.message);
2811        });
2812        let end;
2813        let start = Date.now();
2814        console.info(`stopTimeTestPromise start time is : ${start}`)
2815        await avRecorder.stop().then(() => {
2816            console.info('stop AVRecorder success');
2817            console.info('resume stopTimeTestPromise success');
2818            end = Date.now()
2819            console.info(`stopTimeTestPromise end time is : ${end}`)
2820            let execution = parseInt(end - start)
2821            console.info("stopTimeTestPromise execution time  is :" + execution)
2822            totalTime = totalTime + execution;
2823        }).catch((err) => {
2824            console.info('stop AVRecorder failed and catch error is ' + err.message);
2825        });
2826        await avRecorder.release().then(() => {
2827            console.info('stopTimeTestPromise avPlayer is release')
2828            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2829        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2830    }
2831    let avg = totalTime/10;
2832    console.info("stopTimeTestPromise avg time  is :" + avg)
2833    done();
2834}
2835
2836export async function resetTimeTestPromise(avConfig, avRecorder, recorderTime, done) {
2837    let totalTime = 0;
2838    for(var i = 0;i < 10;i++){
2839        avRecorder = await idle(avRecorder);
2840        await sleep(20)
2841        await avRecorder.prepare(avConfig).then(() => {
2842            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2843            console.info('resetTimeTestPromise avPlayer state is prepared')
2844        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2845
2846        await avRecorder.start().then(() => {
2847            console.info('start resetTimeTestPromise success');
2848        }).catch((err) => {
2849            console.info('resetTimeTestPromise start avRecorder failed and catch error is ' + err.message);
2850        });
2851        let end;
2852        let start = Date.now();
2853        console.info(`resetTimeTestPromise start time is : ${start}`)
2854        await avRecorder.reset().then(() => {
2855            console.info('reset AVRecorder success');
2856            console.info('resume resetTimeTestPromise success');
2857            end = Date.now()
2858            console.info(`resetTimeTestPromise end time is : ${end}`)
2859            let execution = parseInt(end - start)
2860            console.info("resetTimeTestPromise execution time  is :" + execution)
2861            totalTime = totalTime + execution;
2862        }).catch((err) => {
2863            console.info('resume resetTimeTestPromise failed and error is ' + err.message);
2864        });
2865        await avRecorder.release().then(() => {
2866            console.info('resetTimeTestPromise avPlayer is release')
2867            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2868        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2869    }
2870    let avg = totalTime/10;
2871    console.info("resetTimeTestPromise avg time  is :" + avg)
2872    done();
2873}
2874
2875export async function releaseTimeTestPromise(avConfig, avRecorder, recorderTime, done) {
2876    let totalTime = 0;
2877    for(var i = 0;i < 10;i++){
2878        avRecorder = await idle(avRecorder);
2879        await sleep(20)
2880        await avRecorder.prepare(avConfig).then(() => {
2881            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2882            console.info('releaseTimeTestPromise avPlayer state is prepared')
2883        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2884
2885        await avRecorder.start().then(() => {
2886            console.info('start releaseTimeTestPromise success');
2887        }).catch((err) => {
2888            console.info('releaseTimeTestPromise start avRecorder failed and catch error is ' + err.message);
2889        });
2890        let end;
2891        let start = Date.now();
2892        console.info(`releaseTimeTestPromise start time is : ${start}`)
2893        await avRecorder.release().then(() => {
2894            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2895            console.info('release AVRecorder success');
2896            console.info('resume releaseTimeTestPromise success');
2897            end = Date.now()
2898            let execution = parseInt(end - start)
2899            console.info("releaseTimeTestPromise execution time  is :" + execution)
2900            totalTime = totalTime + execution;
2901            console.info(`releaseTimeTestPromise end time is : ${end}`)
2902        }).catch((err) => {
2903            console.info('resume releaseTimeTestPromise failed and error is ' + err.message);
2904        });
2905    }
2906    let avg = totalTime/10;
2907    console.info("releaseTimeTestPromise avg time  is :" + avg)
2908    done();
2909}
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925