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