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