• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (C) 2021 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import image from "@ohos.multimedia.image";
17import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect, Level} from "@ohos/hypium";
18
19export default function imageYuv() {
20    describe("imageYuv", function () {
21        let globalpixelmap;
22        let globalImagesource;
23        let globalPacker;
24        const { NV21, NV12 } = image.PixelMapFormat;
25        const WRONG_FORMAT = 10;
26
27        beforeAll(async function () {
28            console.info("beforeAll case");
29        });
30
31        beforeEach(function () {
32            console.info("beforeEach case");
33        });
34
35        afterEach(async function () {
36            if (globalpixelmap != undefined) {
37                console.info("globalpixelmap release start");
38                try {
39                    await globalpixelmap.release();
40                } catch (error) {
41                    console.info("globalpixelmap release fail");
42                }
43            }
44            if (globalImagesource != undefined) {
45                console.info("globalpixelmap release start");
46                try {
47                    await globalImagesource.release();
48                } catch (error) {
49                    console.info("globalImagesource release fail");
50                }
51            }
52            if (globalPacker != undefined) {
53                console.info("globalPacker release start");
54                try {
55                    await globalPacker.release();
56                } catch (error) {
57                    console.info("globalPacker release fail");
58                }
59            }
60            console.info("afterEach case");
61        });
62
63        afterAll(function () {
64            console.info("afterAll case");
65        });
66
67        function createBuffer(height, width) {
68            var ySize = height * width;
69            var uvSize = ySize / 2;
70            var ySum = ySize;
71            var uvSum = uvSize / 2;
72            var bufferSize = ySize + uvSize;
73            var yBase = 0;
74            var uvBase = yBase + ySize;
75            var yuv = new ArrayBuffer(bufferSize);
76            var yuvArr = new Uint8Array(yuv);
77            for (var p = 0; p < ySum; p++) {
78                var pos = yBase + p;
79                yuvArr[pos] = 1 + p;
80            }
81            for (var p = 0; p < uvSum; p++) {
82                var pos = uvBase + p * 2;
83                yuvArr[pos + 0] = 41 + p;
84                yuvArr[pos + 1] = 71 + p;
85            }
86            return yuv;
87        }
88
89        async function yuvToJpegByPixelMapPromise(done, testNum, sourceOptions, yuvData) {
90            try {
91                let imageSource = image.createImageSource(yuvData, sourceOptions);
92                if (imageSource == undefined) {
93                    console.info(`${testNum} create ImageSource failed`);
94                    expect(false).assertTrue();
95                    done();
96                } else {
97                    globalImagesource = imageSource;
98                    imageSource
99                        .createPixelMap()
100                        .then((pixelmap) => {
101                            if (pixelmap == undefined) {
102                                expect(false).assertTrue();
103                                done();
104                            } else {
105                                globalpixelmap = pixelmap;
106                                pixelmap.getImageInfo((err, imageInfo) => {
107                                    if (err != undefined) {
108                                        expect(false).assertTrue();
109                                        done();
110                                        return;
111                                    }
112                                    expect(imageInfo != undefined).assertTrue();
113                                    expect(imageInfo.size.height == 4).assertTrue();
114                                    expect(imageInfo.size.width == 6).assertTrue();
115                                    expect(imageInfo.density == 120).assertTrue();
116                                    done();
117                                });
118                            }
119                        })
120                        .catch((error) => {
121                            console.info(`${testNum} create Pixelmap failed`);
122                            console.log(`${testNum} error:` + error);
123                            expect(false).assertTrue();
124                            done();
125                        });
126                }
127            } catch (error) {
128                logger.log(`${testNum} error:` + error);
129                expect(false).assertTrue();
130                done();
131            }
132        }
133
134        async function yuvToJpegByPixelMapPromise_Fail(done, testNum, sourceOptions, yuvData) {
135            try {
136                let imageSource = image.createImageSource(yuvData, sourceOptions);
137                if (imageSource == undefined) {
138                    console.info(`${testNum} create ImageSource failed`);
139                    expect(false).assertTrue();
140                    done();
141                } else {
142                    globalImagesource = imageSource;
143                    imageSource
144                        .createPixelMap()
145                        .then((pixelmap) => {
146                            expect(false).assertTrue();
147                            done();
148                        })
149                        .catch((error) => {
150                            console.info(`${testNum} error:` + error);
151                            done();
152                        });
153                }
154            } catch (error) {
155                logger.log(`${testNum} error:` + error);
156                expect(false).assertTrue();
157                done();
158            }
159        }
160
161        async function yuvToJpegByPixelMapCallback(done, testNum, sourceOptions, yuvData) {
162            console.info(`${testNum} test`);
163            try {
164                let imageSource = image.createImageSource(yuvData, sourceOptions);
165                if (imageSource == undefined) {
166                    console.info(`${testNum} create ImageSource failed`);
167                    expect(false).assertTrue();
168                    done();
169                } else {
170                    globalImagesource = imageSource;
171                    imageSource.createPixelMap((err, pixelmap) => {
172                        if (err != undefined || pixelmap == undefined) {
173                            console.info(`${testNum} err2: ` + err);
174                            expect(false).assertTrue();
175                            done();
176                            return;
177                        }
178                        globalpixelmap = pixelmap;
179                        pixelmap.getImageInfo((err, imageInfo) => {
180                            if (err != undefined) {
181                                console.info(`${testNum} getImageInfo fail`);
182                                expect(false).assertTrue();
183                                done();
184                                return;
185                            }
186                            expect(imageInfo != undefined).assertTrue();
187                            expect(imageInfo.size.height == 4).assertTrue();
188                            expect(imageInfo.size.width == 6).assertTrue();
189                            expect(imageInfo.density == 120).assertTrue();
190                            done();
191                        });
192                    });
193                }
194            } catch (error) {
195                logger.log(`${testNum} error:` + error);
196                expect(false).assertTrue();
197                done();
198            }
199        }
200
201        async function yuvToJpegByPixelMapCallback_Fail(done, testNum, sourceOptions, yuvData) {
202            try {
203                let imageSource = image.createImageSource(yuvData, sourceOptions);
204                if (imageSource == undefined) {
205                    console.info(`${testNum} create ImageSource failed`);
206                    expect(false).assertTrue();
207                    done();
208                } else {
209                    globalImagesource = imageSource;
210                    imageSource.createPixelMap((err, pixelmap) => {
211                        if (err != undefined || pixelmap == undefined) {
212                            console.info(`${testNum} err: ` + err);
213                            done();
214                            return;
215                        }
216                        expect(false).assertTrue();
217                        done();
218                    });
219                }
220            } catch (error) {
221                logger.log(`${testNum} error:` + error);
222                expect(false).assertTrue();
223                done();
224            }
225        }
226
227        async function yuvToJpegByImageSourcePromise(done, testNum, sourceOptions, arg, yuvData) {
228            let imageSource = image.createImageSource(yuvData, sourceOptions);
229            if (imageSource == undefined) {
230                console.info(`${testNum} create ImageSource failed`);
231                expect(false).assertTrue();
232                done();
233            } else {
234                globalImagesource = imageSource;
235                const imagePackerApi = image.createImagePacker();
236                if (imagePackerApi == undefined) {
237                    console.info(`${testNum} create ImagePacker failed`);
238                    expect(false).assertTrue();
239                    done();
240                } else {
241                    globalPacker = imagePackerApi;
242                    imagePackerApi
243                        .packing(imageSource, arg)
244                        .then((data) => {
245                            console.info(`${testNum} packed`);
246                            var dataArr = new Uint8Array(data);
247                            console.info(`${testNum} dataArr.length=` + dataArr.length);
248                            for (var i = 0; i < dataArr.length; i++) {
249                                var str = `dataArr[` + i + `]=`;
250                                for (var j = 0; j < 20 && i < dataArr.length; j++, i++) {
251                                    str = str + "," + dataArr[i];
252                                }
253                                console.info(`${testNum} ` + str);
254                                i--;
255                            }
256                            expect(data != undefined).assertTrue();
257                            done();
258                        })
259                        .catch((error) => {
260                            console.log(`${testNum} error: ` + error);
261                            expect(false).assertTrue();
262                            done();
263                        });
264                }
265            }
266        }
267
268        async function yuvToJpegByImageSourcePromise_Fail(done, testNum, sourceOptions, arg, yuvData) {
269            let imageSource = image.createImageSource(yuvData, sourceOptions);
270            if (imageSource == undefined) {
271                console.info(`${testNum} create ImageSource failed`);
272                expect(false).assertTrue();
273                done();
274            } else {
275                globalImagesource = imageSource;
276                const imagePackerApi = image.createImagePacker();
277                if (imagePackerApi == undefined) {
278                    console.info(`${testNum} create ImagePacker failed`);
279                    expect(false).assertTrue();
280                    done();
281                } else {
282                    globalPacker = imagePackerApi;
283                    imagePackerApi
284                        .packing(imageSource, arg)
285                        .then((data) => {
286                            expect(data == undefined).assertTrue();
287                            done();
288                        })
289                        .catch((error) => {
290                            console.log(`${testNum} error: ` + error);
291                            done();
292                        });
293                }
294            }
295        }
296
297        async function yuvToJpegByImageSourceCallback(done, testNum, sourceOptions, arg, yuvData) {
298            let imageSource = image.createImageSource(yuvData, sourceOptions);
299            if (imageSource == undefined) {
300                console.info(`${testNum} create ImageSource failed`);
301                expect(false).assertTrue();
302                done();
303            } else {
304                globalImagesource = imageSource;
305                const imagePackerApi = image.createImagePacker();
306                if (imagePackerApi == undefined) {
307                    console.info(`${testNum} create ImagePacker failed`);
308                    expect(false).assertTrue();
309                    done();
310                } else {
311                    globalPacker = imagePackerApi;
312                    imagePackerApi.packing(imageSource, arg, (err, data) => {
313                        if (err != undefined) {
314                            expect(false).assertTrue();
315                            done();
316                            return;
317                        }
318                        var dataArr = new Uint8Array(data);
319                        console.info(`${testNum} dataArr.length=` + dataArr.length);
320                        for (var i = 0; i < dataArr.length; i++) {
321                            var str = `dataArr[` + i + `]=`;
322                            for (var j = 0; j < 20 && i < dataArr.length; j++, i++) {
323                                str = str + "," + dataArr[i];
324                            }
325                            console.info(`${testNum} ` + str);
326                            i--;
327                        }
328                        expect(data != undefined).assertTrue();
329                        done();
330                    });
331                }
332            }
333        }
334
335        async function yuvToJpegByImageSourceCallback_Fail(done, testNum, sourceOptions, arg, yuvData) {
336            let imageSource = image.createImageSource(yuvData, sourceOptions);
337            if (imageSource == undefined) {
338                console.info(`${testNum} create ImageSource failed`);
339                expect(false).assertTrue();
340                done();
341            } else {
342                globalImagesource = imageSource;
343                const imagePackerApi = image.createImagePacker();
344                if (imagePackerApi == undefined) {
345                    console.info(`${testNum} create ImagePacker failed`);
346                    expect(false).assertTrue();
347                    done();
348                } else {
349                    globalPacker = imagePackerApi;
350                    imagePackerApi.packing(imageSource, arg, (err, data) => {
351                        expect(err != undefined || data == undefined).assertTrue();
352                        done();
353                    });
354                }
355            }
356        }
357
358        /**
359         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0100
360         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0100
361         * @tc.desc      : 1.create ImageSource
362         *                 2.create pixelmap
363         * @tc.size      : MEDIUM
364         * @tc.type      : Functional
365         * @tc.level     : level 0
366         */
367        it("SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0100", Level.LEVEL0, async function (done) {
368            let yuvData = createBuffer(4, 6);
369            let sourceOptions = { sourceDensity: 120, sourcePixelFormat: NV21, sourceSize: { height: 4, width: 6 } };
370            yuvToJpegByPixelMapPromise(done, "SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0100", sourceOptions, yuvData);
371        });
372
373        /**
374         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0200
375         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0200
376         * @tc.desc      : 1.create ImageSource
377         *                 2.create pixelmap
378         * @tc.size      : MEDIUM
379         * @tc.type      : Functional
380         * @tc.level     : level 0
381         */
382        it("SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0200", Level.LEVEL0, async function (done) {
383            let yuvData = createBuffer(4, 6);
384            let sourceOptions = { sourceDensity: 120, sourcePixelFormat: NV12, sourceSize: { height: 4, width: 6 } };
385            yuvToJpegByPixelMapPromise(done, "SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0200", sourceOptions, yuvData);
386        });
387
388        /**
389         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0300
390         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0300 - Promise - wrong buffer
391         * @tc.desc      : 1.create ImageSource
392         *                 2.create pixelmap
393         * @tc.size      : MEDIUM
394         * @tc.type      : Functional
395         * @tc.level     : level 0
396         */
397        it("SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0300", Level.LEVEL0, async function (done) {
398            let yuvData = new ArrayBuffer(5);
399            let sourceOptions = { sourceDensity: 120, sourcePixelFormat: NV21, sourceSize: { height: 4, width: 6 } };
400            yuvToJpegByPixelMapPromise(done, "SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0300", sourceOptions, yuvData);
401        });
402
403        /**
404         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0400
405         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0400 - Promise - wrong width
406         * @tc.desc      : 1.create ImageSource
407         *                 2.create pixelmap
408         * @tc.size      : MEDIUM
409         * @tc.type      : Functional
410         * @tc.level     : level 0
411         */
412        it("SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0400", Level.LEVEL0, async function (done) {
413            let yuvData = createBuffer(4, 6);
414            let sourceOptions = { sourceDensity: 120, sourcePixelFormat: NV21, sourceSize: { height: 4, width: 5 } };
415            yuvToJpegByPixelMapPromise_Fail(
416                done,
417                "SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0400",
418                sourceOptions,
419                yuvData
420            );
421        });
422
423        /**
424         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0500
425         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0500 - Promise - wrong buffer
426         * @tc.desc      : 1.create ImageSource
427         *                 2.create pixelmap
428         * @tc.size      : MEDIUM
429         * @tc.type      : Functional
430         * @tc.level     : level 0
431         */
432        it("SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0500", Level.LEVEL0, async function (done) {
433            let yuvData = new ArrayBuffer(5);
434            let sourceOptions = { sourceDensity: 120, sourcePixelFormat: NV12, sourceSize: { height: 4, width: 6 } };
435            yuvToJpegByPixelMapPromise(done, "SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0500", sourceOptions, yuvData);
436        });
437
438        /**
439         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0600
440         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0600 - Promise - wrong width
441         * @tc.desc      : 1.create ImageSource
442         *                 2.create pixelmap
443         * @tc.size      : MEDIUM
444         * @tc.type      : Functional
445         * @tc.level     : level 0
446         */
447        it("SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0600", Level.LEVEL0, async function (done) {
448            let yuvData = createBuffer(4, 6);
449            let sourceOptions = { sourceDensity: 120, sourcePixelFormat: NV12, sourceSize: { height: 4, width: 5 } };
450            yuvToJpegByPixelMapPromise_Fail(
451                done,
452                "SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0600",
453                sourceOptions,
454                yuvData
455            );
456        });
457
458        /**
459         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0700
460         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0700 - Promise - wrong format
461         * @tc.desc      : 1.create ImageSource
462         *                 2.create pixelmap
463         * @tc.size      : MEDIUM
464         * @tc.type      : Functional
465         * @tc.level     : level 0
466         */
467        it("SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0700", Level.LEVEL0, async function (done) {
468            let yuvData = createBuffer(4, 6);
469            let sourceOptions = {
470                sourceDensity: 120,
471                sourcePixelFormat: WRONG_FORMAT,
472                sourceSize: { height: 4, width: 6 },
473            };
474            yuvToJpegByPixelMapPromise_Fail(
475                done,
476                "SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0700",
477                sourceOptions,
478                yuvData
479            );
480        });
481
482        /**
483         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0800
484         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0800 - Promise - format null
485         * @tc.desc      : 1.create ImageSource
486         *                 2.create pixelmap
487         * @tc.size      : MEDIUM
488         * @tc.type      : Functional
489         * @tc.level     : level 0
490         */
491        it("SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0800", Level.LEVEL0, async function (done) {
492            let yuvData = createBuffer(4, 6);
493            let sourceOptions = { sourceDensity: 120, sourceSize: { height: 4, width: 6 } };
494            yuvToJpegByPixelMapPromise_Fail(
495                done,
496                "SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_PROMISE_0800",
497                sourceOptions,
498                yuvData
499            );
500        });
501
502        /**
503         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0100
504         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0100
505         * @tc.desc      : 1.create ImageSource
506         *                 2.create pixelmap
507         *                 3.create ImagePacker
508         *                 4.call packing
509         * @tc.size      : MEDIUM
510         * @tc.type      : Functional
511         * @tc.level     : level 0
512         */
513        it("SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0100", Level.LEVEL0, async function (done) {
514            let yuvData = createBuffer(4, 6);
515            let sourceOptions = { sourceDensity: 120, sourcePixelFormat: NV21, sourceSize: { height: 4, width: 6 } };
516            let packOpts = { format: "image/jpeg", quality: 99 };
517            yuvToJpegByImageSourcePromise(
518                done,
519                "SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0100",
520                sourceOptions,
521                packOpts,
522                yuvData
523            );
524        });
525
526        /**
527         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0200
528         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0200
529         * @tc.desc      : 1.create ImageSource
530         *                 2.create pixelmap
531         *                 3.create ImagePacker
532         *                 4.call packing
533         * @tc.size      : MEDIUM
534         * @tc.type      : Functional
535         * @tc.level     : level 0
536         */
537        it("SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0200", Level.LEVEL0, async function (done) {
538            let yuvData = createBuffer(4, 6);
539            let sourceOptions = { sourceDensity: 120, sourcePixelFormat: NV12, sourceSize: { height: 4, width: 6 } };
540            let packOpts = { format: "image/jpeg", quality: 99 };
541            yuvToJpegByImageSourcePromise(
542                done,
543                "SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0200",
544                sourceOptions,
545                packOpts,
546                yuvData
547            );
548        });
549
550        /**
551         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0300
552         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0300 - Promise - wrong buffer
553         * @tc.desc      : 1.create ImageSource
554         *                 2.create pixelmap
555         *                 3.create ImagePacker
556         *                 4.call packing
557         * @tc.size      : MEDIUM
558         * @tc.type      : Functional
559         * @tc.level     : level 0
560         */
561        it("SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0300", Level.LEVEL0, async function (done) {
562            let yuvData = new ArrayBuffer(5);
563            let sourceOptions = { sourceDensity: 120, sourcePixelFormat: NV21, sourceSize: { height: 4, width: 6 } };
564            let packOpts = { format: "image/jpeg", quality: 99 };
565            yuvToJpegByImageSourcePromise(
566                done,
567                "SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0300",
568                sourceOptions,
569                packOpts,
570                yuvData
571            );
572        });
573
574        /**
575         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0400
576         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0400 - Promise - wrong width
577         * @tc.desc      : 1.create ImageSource
578         *                 2.create pixelmap
579         *                 3.create ImagePacker
580         *                 4.call packing
581         * @tc.size      : MEDIUM
582         * @tc.type      : Functional
583         * @tc.level     : level 0
584         */
585        it("SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0400", Level.LEVEL0, async function (done) {
586            let yuvData = createBuffer(4, 6);
587            let sourceOptions = { sourceDensity: 120, sourcePixelFormat: NV21, sourceSize: { height: 4, width: 5 } };
588            let packOpts = { format: "image/jpeg", quality: 99 };
589            yuvToJpegByImageSourcePromise_Fail(
590                done,
591                "SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0400",
592                sourceOptions,
593                packOpts,
594                yuvData
595            );
596        });
597
598        /**
599         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0500
600         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0500 - Promise - wrong buffer
601         * @tc.desc      : 1.create ImageSource
602         *                 2.create pixelmap
603         *                 3.create ImagePacker
604         *                 4.call packing
605         * @tc.size      : MEDIUM
606         * @tc.type      : Functional
607         * @tc.level     : level 0
608         */
609        it("SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0500", Level.LEVEL0, async function (done) {
610            let yuvData = new ArrayBuffer(5);
611            let sourceOptions = { sourceDensity: 120, sourcePixelFormat: NV12, sourceSize: { height: 4, width: 6 } };
612            let packOpts = { format: "image/jpeg", quality: 99 };
613            yuvToJpegByImageSourcePromise(
614                done,
615                "SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0500",
616                sourceOptions,
617                packOpts,
618                yuvData
619            );
620        });
621
622        /**
623         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0600
624         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0600 - Promise - wrong width
625         * @tc.desc      : 1.create ImageSource
626         *                 2.create pixelmap
627         *                 3.create ImagePacker
628         *                 4.call packing
629         * @tc.size      : MEDIUM
630         * @tc.type      : Functional
631         * @tc.level     : level 0
632         */
633        it("SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0600", Level.LEVEL0, async function (done) {
634            let yuvData = createBuffer(4, 6);
635            let sourceOptions = { sourceDensity: 120, sourcePixelFormat: NV12, sourceSize: { height: 4, width: 5 } };
636            let packOpts = { format: "image/jpeg", quality: 99 };
637            yuvToJpegByImageSourcePromise_Fail(
638                done,
639                "SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0600",
640                sourceOptions,
641                packOpts,
642                yuvData
643            );
644        });
645
646        /**
647         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0700
648         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0700 - Promise - wrong format
649         * @tc.desc      : 1.create ImageSource
650         *                 2.create pixelmap
651         *                 3.create ImagePacker
652         *                 4.call packing
653         * @tc.size      : MEDIUM
654         * @tc.type      : Functional
655         * @tc.level     : level 0
656         */
657        it("SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0700", Level.LEVEL0, async function (done) {
658            let yuvData = createBuffer(4, 6);
659            let sourceOptions = {
660                sourceDensity: 120,
661                sourcePixelFormat: WRONG_FORMAT,
662                sourceSize: { height: 4, width: 6 },
663            };
664            let packOpts = { format: "image/jpeg", quality: 99 };
665            yuvToJpegByImageSourcePromise_Fail(
666                done,
667                "SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0700",
668                sourceOptions,
669                packOpts,
670                yuvData
671            );
672        });
673
674        /**
675         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0800
676         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0800 - Promise - format null
677         * @tc.desc      : 1.create ImageSource
678         *                 2.create pixelmap
679         *                 3.create ImagePacker
680         *                 4.call packing
681         * @tc.size      : MEDIUM
682         * @tc.type      : Functional
683         * @tc.level     : level 0
684         */
685        it("SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0800", Level.LEVEL0, async function (done) {
686            let yuvData = createBuffer(4, 6);
687            let sourceOptions = { sourceDensity: 120, sourceSize: { height: 4, width: 6 } };
688            let packOpts = { format: "image/jpeg", quality: 99 };
689            yuvToJpegByImageSourcePromise_Fail(
690                done,
691                "SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_PROMISE_0800",
692                sourceOptions,
693                packOpts,
694                yuvData
695            );
696        });
697
698        /**
699         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0100
700         * @tc.name      : SUB_IMAGE_yuv_pixelmap_CB_001
701         * @tc.desc      : 1.create ImageSource
702         *                 2.create pixelmap
703         * @tc.size      : MEDIUM
704         * @tc.type      : Functional
705         * @tc.level     : level 0
706         */
707        it("SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0100", Level.LEVEL0, async function (done) {
708            let yuvData = createBuffer(4, 6);
709            let sourceOptions = { sourceDensity: 120, sourcePixelFormat: NV21, sourceSize: { height: 4, width: 6 } };
710            yuvToJpegByPixelMapCallback(done, "SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0100", sourceOptions, yuvData);
711        });
712
713        /**
714         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0200
715         * @tc.name      : SUB_IMAGE_yuv_pixelmap_CB_002
716         * @tc.desc      : 1.create ImageSource
717         *                 2.create pixelmap
718         * @tc.size      : MEDIUM
719         * @tc.type      : Functional
720         * @tc.level     : level 0
721         */
722        it("SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0200", Level.LEVEL0, async function (done) {
723            let yuvData = createBuffer(4, 6);
724            let sourceOptions = { sourceDensity: 120, sourcePixelFormat: NV12, sourceSize: { height: 4, width: 6 } };
725            yuvToJpegByPixelMapCallback(done, "SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0200", sourceOptions, yuvData);
726        });
727
728        /**
729         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0300
730         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0300 - Promise - wrong buffer
731         * @tc.desc      : 1.create ImageSource
732         *                 2.create pixelmap
733         * @tc.size      : MEDIUM
734         * @tc.type      : Functional
735         * @tc.level     : level 0
736         */
737        it("SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0300", Level.LEVEL0, async function (done) {
738            let yuvData = new ArrayBuffer(5);
739            let sourceOptions = { sourceDensity: 120, sourcePixelFormat: NV21, sourceSize: { height: 4, width: 6 } };
740            yuvToJpegByPixelMapCallback(done, "SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0300", sourceOptions, yuvData);
741        });
742
743        /**
744         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0400
745         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0400 - Promise - wrong width
746         * @tc.desc      : 1.create ImageSource
747         *                 2.create pixelmap
748         * @tc.size      : MEDIUM
749         * @tc.type      : Functional
750         * @tc.level     : level 0
751         */
752        it("SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0400", Level.LEVEL0, async function (done) {
753            let yuvData = createBuffer(4, 6);
754            let sourceOptions = { sourceDensity: 120, sourcePixelFormat: NV21, sourceSize: { height: 4, width: 5 } };
755            yuvToJpegByPixelMapCallback_Fail(done, "SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0400", sourceOptions, yuvData);
756        });
757
758        /**
759         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0500
760         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0500 - Promise - wrong buffer
761         * @tc.desc      : 1.create ImageSource
762         *                 2.create pixelmap
763         * @tc.size      : MEDIUM
764         * @tc.type      : Functional
765         * @tc.level     : level 0
766         */
767        it("SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0500", Level.LEVEL0, async function (done) {
768            let yuvData = new ArrayBuffer(5);
769            let sourceOptions = { sourceDensity: 120, sourcePixelFormat: NV12, sourceSize: { height: 4, width: 6 } };
770            yuvToJpegByPixelMapCallback(done, "SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0500", sourceOptions, yuvData);
771        });
772
773        /**
774         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0600
775         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0600 - Promise - wrong width
776         * @tc.desc      : 1.create ImageSource
777         *                 2.create pixelmap
778         * @tc.size      : MEDIUM
779         * @tc.type      : Functional
780         * @tc.level     : level 0
781         */
782        it("SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0600", Level.LEVEL0, async function (done) {
783            let yuvData = createBuffer(4, 6);
784            let sourceOptions = { sourceDensity: 120, sourcePixelFormat: NV12, sourceSize: { height: 4, width: 5 } };
785            yuvToJpegByPixelMapCallback_Fail(done, "SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0600", sourceOptions, yuvData);
786        });
787
788        /**
789         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0700
790         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0700 - Promise - wrong format
791         * @tc.desc      : 1.create ImageSource
792         *                 2.create pixelmap
793         * @tc.size      : MEDIUM
794         * @tc.type      : Functional
795         * @tc.level     : level 0
796         */
797        it("SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0700", Level.LEVEL0, async function (done) {
798            let yuvData = createBuffer(4, 6);
799            let sourceOptions = {
800                sourceDensity: 120,
801                sourcePixelFormat: WRONG_FORMAT,
802                sourceSize: { height: 4, width: 6 },
803            };
804            yuvToJpegByPixelMapCallback_Fail(done, "SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0700", sourceOptions, yuvData);
805        });
806
807        /**
808         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0800
809         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0800 - Promise - format null
810         * @tc.desc      : 1.create ImageSource
811         *                 2.create pixelmap
812         * @tc.size      : MEDIUM
813         * @tc.type      : Functional
814         * @tc.level     : level 0
815         */
816        it("SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0800", Level.LEVEL0, async function (done) {
817            let yuvData = createBuffer(4, 6);
818            let sourceOptions = { sourceDensity: 120, sourceSize: { height: 4, width: 6 } };
819            yuvToJpegByPixelMapCallback_Fail(done, "SUB_MULTIMEDIA_IMAGE_YUV_PIXELMAP_CB_0800", sourceOptions, yuvData);
820        });
821
822        /**
823         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0100
824         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0100
825         * @tc.desc      : 1.create ImageSource
826         *                 2.create pixelmap
827         *                 3.create ImagePacker
828         *                 4.call packing
829         * @tc.size      : MEDIUM
830         * @tc.type      : Functional
831         * @tc.level     : level 0
832         */
833        it("SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0100", Level.LEVEL0, async function (done) {
834            let yuvData = createBuffer(4, 6);
835            let sourceOptions = { sourceDensity: 120, sourcePixelFormat: NV21, sourceSize: { height: 4, width: 6 } };
836            let packOpts = { format: "image/jpeg", quality: 99 };
837            yuvToJpegByImageSourceCallback(
838                done,
839                "SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0100",
840                sourceOptions,
841                packOpts,
842                yuvData
843            );
844        });
845
846        /**
847         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0200
848         * @tc.name      : SUB_IMAGE_yuv_imagesource_CB_002
849         * @tc.desc      : 1.create ImageSource
850         *                 2.create pixelmap
851         *                 3.create ImagePacker
852         *                 4.call packing
853         * @tc.size      : MEDIUM
854         * @tc.type      : Functional
855         * @tc.level     : level 0
856         */
857        it("SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0200", Level.LEVEL0, async function (done) {
858            let yuvData = createBuffer(4, 6);
859            let sourceOptions = { sourceDensity: 120, sourcePixelFormat: NV12, sourceSize: { height: 4, width: 6 } };
860            let packOpts = { format: "image/jpeg", quality: 99 };
861            yuvToJpegByImageSourceCallback(
862                done,
863                "SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0200",
864                sourceOptions,
865                packOpts,
866                yuvData
867            );
868        });
869
870        /**
871         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0300
872         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0300 - Promise - wrong buffer
873         * @tc.desc      : 1.create ImageSource
874         *                 2.create pixelmap
875         *                 3.create ImagePacker
876         *                 4.call packing
877         * @tc.size      : MEDIUM
878         * @tc.type      : Functional
879         * @tc.level     : level 0
880         */
881        it("SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0300", Level.LEVEL0, async function (done) {
882            let yuvData = new ArrayBuffer(5);
883            let sourceOptions = { sourceDensity: 120, sourcePixelFormat: NV21, sourceSize: { height: 4, width: 6 } };
884            let packOpts = { format: "image/jpeg", quality: 99 };
885            yuvToJpegByImageSourceCallback(
886                done,
887                "SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0300",
888                sourceOptions,
889                packOpts,
890                yuvData
891            );
892        });
893
894        /**
895         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0400
896         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0400 - Promise - wrong width
897         * @tc.desc      : 1.create ImageSource
898         *                 2.create pixelmap
899         *                 3.create ImagePacker
900         *                 4.call packing
901         * @tc.size      : MEDIUM
902         * @tc.type      : Functional
903         * @tc.level     : level 0
904         */
905        it("SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0400", Level.LEVEL0, async function (done) {
906            let yuvData = createBuffer(4, 6);
907            let sourceOptions = { sourceDensity: 120, sourcePixelFormat: NV21, sourceSize: { height: 4, width: 5 } };
908            let packOpts = { format: "image/jpeg", quality: 99 };
909            yuvToJpegByImageSourceCallback_Fail(
910                done,
911                "SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0400",
912                sourceOptions,
913                packOpts,
914                yuvData
915            );
916        });
917
918        /**
919         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0500
920         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0500 - Promise - wrong buffer
921         * @tc.desc      : 1.create ImageSource
922         *                 2.create pixelmap
923         *                 3.create ImagePacker
924         *                 4.call packing
925         * @tc.size      : MEDIUM
926         * @tc.type      : Functional
927         * @tc.level     : level 0
928         */
929        it("SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0500", Level.LEVEL0, async function (done) {
930            let yuvData = new ArrayBuffer(5);
931            let sourceOptions = { sourceDensity: 120, sourcePixelFormat: NV12, sourceSize: { height: 4, width: 6 } };
932            let packOpts = { format: "image/jpeg", quality: 99 };
933            yuvToJpegByImageSourceCallback(
934                done,
935                "SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0500",
936                sourceOptions,
937                packOpts,
938                yuvData
939            );
940        });
941
942        /**
943         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0600
944         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0600 - Promise - wrong width
945         * @tc.desc      : 1.create ImageSource
946         *                 2.create pixelmap
947         *                 3.create ImagePacker
948         *                 4.call packing
949         * @tc.size      : MEDIUM
950         * @tc.type      : Functional
951         * @tc.level     : level 0
952         */
953        it("SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0600", Level.LEVEL0, async function (done) {
954            let yuvData = createBuffer(4, 6);
955            let sourceOptions = { sourceDensity: 120, sourcePixelFormat: NV12, sourceSize: { height: 4, width: 5 } };
956            let packOpts = { format: "image/jpeg", quality: 99 };
957            yuvToJpegByImageSourceCallback_Fail(
958                done,
959                "SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0600",
960                sourceOptions,
961                packOpts,
962                yuvData
963            );
964        });
965
966        /**
967         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0700
968         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0700 - Promise - wrong format
969         * @tc.desc      : 1.create ImageSource
970         *                 2.create pixelmap
971         *                 3.create ImagePacker
972         *                 4.call packing
973         * @tc.size      : MEDIUM
974         * @tc.type      : Functional
975         * @tc.level     : level 0
976         */
977        it("SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0700", Level.LEVEL0, async function (done) {
978            let yuvData = createBuffer(4, 6);
979            let sourceOptions = {
980                sourceDensity: 120,
981                sourcePixelFormat: WRONG_FORMAT,
982                sourceSize: { height: 4, width: 6 },
983            };
984            let packOpts = { format: "image/jpeg", quality: 99 };
985            yuvToJpegByImageSourceCallback_Fail(
986                done,
987                "SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0700",
988                sourceOptions,
989                packOpts,
990                yuvData
991            );
992        });
993
994        /**
995         * @tc.number    : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0800
996         * @tc.name      : SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0800 - Promise - format null
997         * @tc.desc      : 1.create ImageSource
998         *                 2.create pixelmap
999         *                 3.create ImagePacker
1000         *                 4.call packing
1001         * @tc.size      : MEDIUM
1002         * @tc.type      : Functional
1003         * @tc.level     : level 0
1004         */
1005        it("SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0800", Level.LEVEL0, async function (done) {
1006            let yuvData = createBuffer(4, 6);
1007            let sourceOptions = { sourceDensity: 120, sourceSize: { height: 4, width: 6 } };
1008            let packOpts = { format: "image/jpeg", quality: 99 };
1009            yuvToJpegByImageSourceCallback_Fail(
1010                done,
1011                "SUB_MULTIMEDIA_IMAGE_YUV_IMAGESOURCE_CB_0800",
1012                sourceOptions,
1013                packOpts,
1014                yuvData
1015            );
1016        });
1017    });
1018}
1019