• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (C) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import hilog from '@ohos.hilog';
17import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium';
18
19import {checkError, createProgram, getColorUint8Array} from './WebGL1';
20
21
22export default function webgl1_common() {
23
24	describe('webgl1_common', function () {
25        let gl = global.gl;
26        // Defines a test suite. Two parameters are supported: test suite name and test suite function.
27        beforeAll(function () {
28            hilog.info(0x0000, 'testTag', '%{public}s', 'webgl1_test_01 start');
29            // Presets an action, which is performed only once before all test cases of the test suite start.
30            // This API supports only one parameter: preset action function.
31        })
32        beforeEach(function () {
33            // Presets an action, which is performed before each unit test case starts.
34            // The number of execution times is the same as the number of test cases defined by **it**.
35            // This API supports only one parameter: preset action function.
36            checkError(gl);
37        })
38        afterEach(function () {
39            // Presets a clear action, which is performed after each unit test case ends.
40            // The number of execution times is the same as the number of test cases defined by **it**.
41            // This API supports only one parameter: clear action function.
42            checkError(gl);
43        })
44        afterAll(function () {
45            // Presets a clear action, which is performed after all test cases of the test suite end.
46            // This API supports only one parameter: clear action function.
47            hilog.info(0x0000, 'testTag', '%{public}s', 'webgl1_test_01 end');
48        })
49
50        function createProgram(gl, vSource, fSource) {
51            let createShader = (gl, type, source) => {
52                let shader = gl.createShader(type); // 创建顶点着色器
53                if (shader == null) {
54                    console.log('unable to create shader');
55                    return null;
56                }
57                gl.shaderSource(shader, source); // 设置着色器代码
58                gl.compileShader(shader); // 编译
59                let shaderParameter = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
60                if (!shaderParameter) { // 如果编译失败
61                    let error = gl.getShaderInfoLog(shader);
62                    console.log('failed to compile shader: ' + error);
63                    gl.deleteShader(shader); // 删除着色器
64                    return null;
65                }
66                return shader;
67            }
68            let vertexShader = createShader(gl, gl.VERTEX_SHADER, vSource);
69            let fragmentShader = createShader(gl, gl.FRAGMENT_SHADER, fSource);
70            if (!vertexShader || !fragmentShader) {
71                console.log('failed to link program');
72                return null;
73            }
74            let program = gl.createProgram();
75            if (!program) {
76                console.log('failed to link program');
77                return null;
78            }
79            gl.attachShader(program, vertexShader);
80            gl.attachShader(program, fragmentShader);
81            gl.linkProgram(program);
82            let linked = gl.getProgramParameter(program, gl.LINK_STATUS);
83            if (!linked) {
84                let error = gl.getProgramInfoLog(program);
85                console.log('failed to link program: ' + error);
86                gl.deleteProgram(program);
87                gl.deleteShader(fragmentShader);
88                gl.deleteShader(vertexShader);
89                return null;
90            }
91            gl.useProgram(program);
92            gl.program = program;
93            return {
94                program, vertexShader, fragmentShader
95            };
96        }
97
98        /**
99         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0001
100         * @tc.name webgl_test_finish
101         * @tc.desc Test finish.
102         */
103        it('webgl_test_finish', 0, async function (done) {
104            console.info("webgltest [webgl_test_finish] finish");
105            gl.finish();
106            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
107            checkError(gl);
108            done();
109        });
110
111        /**
112         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0002
113         * @tc.name webgl_test_flush
114         * @tc.desc Test flush.
115         */
116        it('webgl_test_flush', 0, async function (done) {
117            console.info("webgltest [webgl_test_flush] flush");
118            gl.flush();
119            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
120            checkError(gl);
121            done();
122        });
123
124        /**
125         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0003
126         * @tc.name webgl_test_getError
127         * @tc.desc Test getError.
128         */
129        it('webgl_test_getError', 0, async function (done) {
130            console.info("webgltest [webgl_test_getError] getError");
131            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
132            let vShader = gl.createShader(1);
133            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM);
134            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
135            checkError(gl);
136            done();
137        })
138
139        /**
140         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0004
141         * @tc.name webgl_test_isContextLost
142         * @tc.desc Test isContextLost.
143         */
144        it('webgl_test_isContextLost', 0, async function (done) {
145            console.info("webgltest [webgl_test_isContextLost] isContextLost");
146            let isContextLost = gl.isContextLost();
147            console.info("webgltest isContextLost:", isContextLost);
148            expect(isContextLost).assertEqual(false);
149            checkError(gl);
150            done();
151        })
152
153        /**
154         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0005
155         * @tc.name webgl_test_isEnabled
156         * @tc.desc Test isEnabled.
157         */
158        it('webgl_test_isEnabled', 0, async function (done) {
159            let srcEnable = gl.isEnabled(gl.DEPTH_TEST);
160            console.info("webgltest [webgl_test_isEnabled] isEnabled");
161            gl.disable(gl.DEPTH_TEST);
162            expect(gl.isEnabled(gl.DEPTH_TEST)).assertEqual(false);
163            gl.enable(gl.DEPTH_TEST);
164            console.log("webgltest DEPTH_TEST:", gl.isEnabled(gl.DEPTH_TEST));
165            expect(gl.isEnabled(gl.DEPTH_TEST)).assertEqual(true);
166            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
167            console.log("webgltest RASTERIZER_DISCARD:", gl.isEnabled(gl.RASTERIZER_DISCARD));
168            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM);
169            if (srcEnable) {
170                gl.enable(gl.DEPTH_TEST);
171            } else {
172                gl.disable(gl.DEPTH_TEST);
173            }
174            checkError(gl);
175            done();
176        })
177
178
179        /**
180         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0006
181         * @tc.name webgl_test_isEnabled_1
182         * @tc.desc Test isEnabled.
183         */
184        it('webgl_test_isEnabled_1', 0, async function (done) {
185            console.info("webgltest [webgl_test_isEnabled] isEnabled1");
186            const isEnabled = gl.isEnabled(gl.BLEND)
187            console.log("webgltest gl.isEnabled(gl.BLEND):", isEnabled);
188            console.log("webgltest gl.enable(gl.BLEND)");
189            gl.enable(gl.BLEND)
190            console.log("webgltest gl.isEnabled(gl.BLEND):", gl.isEnabled(gl.BLEND));
191            expect(gl.isEnabled(gl.BLEND)).assertEqual(true)
192            if (isEnabled) {
193                gl.enable(gl.BLEND)
194            } else {
195                gl.disable(gl.BLEND)
196            }
197            checkError(gl);
198            done();
199        })
200
201
202        /**
203         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0007
204         * @tc.name webgl_test_isEnabled_2
205         * @tc.desc Test isEnabled.
206         */
207        it('webgl_test_isEnabled_2', 0, async function (done) {
208            console.info("webgltest [webgl_test_isEnabled] isEnabled2");
209            const isEnabled = gl.isEnabled(gl.CULL_FACE)
210            console.log("webgltest gl.isEnabled(gl.CULL_FACE):", isEnabled);
211            console.log("webgltest gl.enable(gl.CULL_FACE)");
212            gl.enable(gl.CULL_FACE)
213            console.log("webgltest gl.isEnabled(gl.CULL_FACE):", gl.isEnabled(gl.CULL_FACE));
214            expect(gl.isEnabled(gl.CULL_FACE)).assertEqual(true)
215            if (isEnabled) {
216                gl.enable(gl.CULL_FACE)
217            } else {
218                gl.disable(gl.CULL_FACE)
219            }
220            checkError(gl);
221            done();
222        })
223
224
225        /**
226         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0008
227         * @tc.name webgl_test_isEnabled_3
228         * @tc.desc Test isEnabled.
229         */
230        it('webgl_test_isEnabled_3', 0, async function (done) {
231            console.info("webgltest [webgl_test_isEnabled] isEnabled3");
232            const isEnabled = gl.isEnabled(gl.DEPTH_TEST)
233            console.log("webgltest gl.isEnabled(gl.DEPTH_TEST):", isEnabled);
234            console.log("webgltest gl.enable(gl.DEPTH_TEST)");
235            gl.enable(gl.DEPTH_TEST)
236            console.log("webgltest gl.isEnabled(gl.DEPTH_TEST):", gl.isEnabled(gl.DEPTH_TEST));
237            expect(gl.isEnabled(gl.DEPTH_TEST)).assertEqual(true)
238            if (isEnabled) {
239                gl.enable(gl.DEPTH_TEST)
240            } else {
241                gl.disable(gl.DEPTH_TEST)
242            }
243            checkError(gl);
244            done();
245        })
246
247
248        /**
249         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0009
250         * @tc.name webgl_test_isEnabled_4
251         * @tc.desc Test isEnabled.
252         */
253        it('webgl_test_isEnabled_4', 0, async function (done) {
254            console.info("webgltest [webgl_test_isEnabled] isEnabled4");
255            const isEnabled = gl.isEnabled(gl.DITHER)
256            console.log("webgltest gl.isEnabled(gl.DITHER):", isEnabled);
257            expect(isEnabled).assertEqual(true)
258            console.log("webgltest gl.enable(gl.DITHER)");
259            gl.disable(gl.DITHER)
260            console.log("webgltest gl.isEnabled(gl.DITHER):", gl.isEnabled(gl.DITHER));
261            expect(gl.isEnabled(gl.DITHER)).assertEqual(false)
262            if (isEnabled) {
263                gl.enable(gl.DITHER)
264            } else {
265                gl.disable(gl.DITHER)
266            }
267            checkError(gl);
268            done();
269        })
270
271
272        /**
273         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0010
274         * @tc.name webgl_test_isEnabled_5
275         * @tc.desc Test isEnabled.
276         */
277        it('webgl_test_isEnabled_5', 0, async function (done) {
278            console.info("webgltest [webgl_test_isEnabled] isEnabled5");
279            const isEnabled = gl.isEnabled(gl.POLYGON_OFFSET_FILL)
280            console.log("webgltest gl.isEnabled(gl.POLYGON_OFFSET_FILL):", isEnabled);
281            console.log("webgltest gl.enable(gl.POLYGON_OFFSET_FILL)");
282            gl.enable(gl.POLYGON_OFFSET_FILL)
283            console.log("webgltest gl.isEnabled(gl.POLYGON_OFFSET_FILL):", gl.isEnabled(gl.POLYGON_OFFSET_FILL));
284            expect(gl.isEnabled(gl.POLYGON_OFFSET_FILL)).assertEqual(true)
285            if (isEnabled) {
286                gl.enable(gl.POLYGON_OFFSET_FILL)
287            } else {
288                gl.disable(gl.POLYGON_OFFSET_FILL)
289            }
290            checkError(gl);
291            done();
292        })
293
294
295        /**
296         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0011
297         * @tc.name webgl_test_isEnabled_6
298         * @tc.desc Test isEnabled.
299         */
300        it('webgl_test_isEnabled_6', 0, async function (done) {
301            console.info("webgltest [webgl_test_isEnabled] isEnabled6");
302            const isEnabled = gl.isEnabled(gl.SAMPLE_ALPHA_TO_COVERAGE)
303            console.log("webgltest gl.isEnabled(gl.SAMPLE_ALPHA_TO_COVERAGE):", isEnabled);
304            console.log("webgltest gl.enable(gl.SAMPLE_ALPHA_TO_COVERAGE)");
305            gl.enable(gl.SAMPLE_ALPHA_TO_COVERAGE)
306            console.log("webgltest gl.isEnabled(gl.SAMPLE_ALPHA_TO_COVERAGE):", gl.isEnabled(gl.SAMPLE_ALPHA_TO_COVERAGE));
307            expect(gl.isEnabled(gl.SAMPLE_ALPHA_TO_COVERAGE)).assertEqual(true)
308            if (isEnabled) {
309                gl.enable(gl.SAMPLE_ALPHA_TO_COVERAGE)
310            } else {
311                gl.disable(gl.SAMPLE_ALPHA_TO_COVERAGE)
312            }
313            done();
314        })
315
316
317        /**
318         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0012
319         * @tc.name webgl_test_isEnabled_7
320         * @tc.desc Test isEnabled.
321         */
322        it('webgl_test_isEnabled_7', 0, async function (done) {
323            console.info("webgltest [webgl_test_isEnabled] isEnabled7");
324            const isEnabled = gl.isEnabled(gl.SAMPLE_COVERAGE)
325            console.log("webgltest gl.isEnabled(gl.SAMPLE_COVERAGE):", isEnabled);
326            console.log("webgltest gl.enable(gl.SAMPLE_COVERAGE)");
327            gl.enable(gl.SAMPLE_COVERAGE)
328            console.log("webgltest gl.isEnabled(gl.SAMPLE_COVERAGE):", gl.isEnabled(gl.SAMPLE_COVERAGE));
329            expect(gl.isEnabled(gl.SAMPLE_COVERAGE)).assertEqual(true)
330            if (isEnabled) {
331                gl.enable(gl.SAMPLE_COVERAGE)
332            } else {
333                gl.disable(gl.SAMPLE_COVERAGE)
334            }
335            done();
336        })
337
338
339        /**
340         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0013
341         * @tc.name webgl_test_isEnabled_8
342         * @tc.desc Test isEnabled.
343         */
344        it('webgl_test_isEnabled_8', 0, async function (done) {
345            console.info("webgltest [webgl_test_isEnabled] isEnabled8");
346            const isEnabled = gl.isEnabled(gl.SCISSOR_TEST)
347            console.log("webgltest gl.isEnabled(gl.SCISSOR_TEST):", isEnabled);
348            console.log("webgltest gl.enable(gl.SCISSOR_TEST)");
349            gl.enable(gl.SCISSOR_TEST)
350            console.log("webgltest gl.isEnabled(gl.SCISSOR_TEST):", gl.isEnabled(gl.SCISSOR_TEST));
351            expect(gl.isEnabled(gl.SCISSOR_TEST)).assertEqual(true)
352            if (isEnabled) {
353                gl.enable(gl.SCISSOR_TEST)
354            } else {
355                gl.disable(gl.SCISSOR_TEST)
356            }
357            done();
358        })
359
360
361        /**
362         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0014
363         * @tc.name webgl_test_isEnabled_9
364         * @tc.desc Test isEnabled.
365         */
366        it('webgl_test_isEnabled_9', 0, async function (done) {
367            console.info("webgltest [webgl_test_isEnabled] isEnabled9");
368            const isEnabled = gl.isEnabled(gl.STENCIL_TEST)
369            console.log("webgltest gl.isEnabled(gl.STENCIL_TEST):", isEnabled);
370            console.log("webgltest gl.enable(gl.STENCIL_TEST)");
371            gl.enable(gl.STENCIL_TEST)
372            console.log("webgltest gl.isEnabled(gl.STENCIL_TEST):", gl.isEnabled(gl.STENCIL_TEST));
373            expect(gl.isEnabled(gl.STENCIL_TEST)).assertEqual(true)
374            if (isEnabled) {
375                gl.enable(gl.STENCIL_TEST)
376            } else {
377                gl.disable(gl.STENCIL_TEST)
378            }
379            done();
380        })
381
382
383        /**
384         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0015
385         * @tc.name webgl_test_isEnabled_Error
386         * @tc.desc Test isEnabled.
387         */
388        it('webgl_test_isEnabled_Error', 0, async function (done) {
389            console.info("webgltest [webgl_test_isEnabled] isEnabled Error");
390            expect(gl.isEnabled(undefined)).assertEqual(false);
391            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM);
392            expect(gl.isEnabled(null)).assertEqual(false);
393            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM);
394            expect(gl.isEnabled(-1)).assertEqual(false);
395            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM);
396            expect(gl.isEnabled(200)).assertEqual(false);
397            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM);
398            done();
399        })
400
401        const checkEnable = (cap) => {
402            console.info(`webgltest [webgl_test_enable] enable(${cap})`);
403            const defaultValue = gl.isEnabled(cap)
404            console.log("webgltest DEPTH_TEST defaultValue enable:", defaultValue);
405            gl.enable(cap)
406            console.log("webgltest DEPTH_TEST currentValue enable:", gl.isEnabled(cap));
407            if (!defaultValue) {
408                gl.disable(cap)
409            }
410        }
411
412        /**
413         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0016
414         * @tc.name webgl_test_enable
415         * @tc.desc Test enable.
416         */
417        it('webgl_test_enable', 0, async function (done) {
418            console.info("webgltest [webgl_test_enable] enable");
419            console.info("webgltest disable DEPTH_TEST");
420            gl.disable(gl.DEPTH_TEST);
421            console.log("webgltest DEPTH_TEST:", gl.isEnabled(gl.DEPTH_TEST));
422            expect(gl.isEnabled(gl.DEPTH_TEST)).assertEqual(false);
423
424            console.info("webgltest enable DEPTH_TEST");
425            gl.enable(gl.DEPTH_TEST);
426            console.log("webgltest DEPTH_TEST:", gl.isEnabled(gl.DEPTH_TEST));
427            expect(gl.isEnabled(gl.DEPTH_TEST)).assertTrue();
428            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
429            gl.disable(gl.DEPTH_TEST);
430            done();
431        })
432
433
434        /**
435         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0017
436         * @tc.name webgl_test_enable_1
437         * @tc.desc Test enable.
438         */
439        it('webgl_test_enable_1', 0, async function (done) {
440            checkEnable(gl.BLEND)
441            done()
442        })
443
444
445        /**
446         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0018
447         * @tc.name webgl_test_enable_2
448         * @tc.desc Test enable.
449         */
450        it('webgl_test_enable_2', 0, async function (done) {
451            checkEnable(gl.CULL_FACE)
452            done()
453        })
454
455
456        /**
457         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0019
458         * @tc.name webgl_test_enable_3
459         * @tc.desc Test enable.
460         */
461        it('webgl_test_enable_3', 0, async function (done) {
462            checkEnable(gl.DITHER)
463            done()
464        })
465
466
467        /**
468         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0020
469         * @tc.name webgl_test_enable_4
470         * @tc.desc Test enable.
471         */
472        it('webgl_test_enable_4', 0, async function (done) {
473            checkEnable(gl.POLYGON_OFFSET_FILL)
474            done()
475        })
476
477
478        /**
479         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0021
480         * @tc.name webgl_test_enable_5
481         * @tc.desc Test enable.
482         */
483        it('webgl_test_enable_5', 0, async function (done) {
484            checkEnable(gl.SAMPLE_ALPHA_TO_COVERAGE)
485            done()
486        })
487
488
489        /**
490         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0022
491         * @tc.name webgl_test_enable_6
492         * @tc.desc Test enable.
493         */
494        it('webgl_test_enable_6', 0, async function (done) {
495            checkEnable(gl.SAMPLE_COVERAGE)
496            done()
497        })
498
499
500        /**
501         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0023
502         * @tc.name webgl_test_enable_7
503         * @tc.desc Test enable.
504         */
505        it('webgl_test_enable_7', 0, async function (done) {
506            checkEnable(gl.SCISSOR_TEST)
507            done()
508        })
509
510
511        /**
512         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0024
513         * @tc.name webgl_test_enable_8
514         * @tc.desc Test enable.
515         */
516        it('webgl_test_enable_8', 0, async function (done) {
517            checkEnable(gl.STENCIL_TEST)
518            done()
519        })
520
521
522        /**
523         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0025
524         * @tc.name webgl_test_enable_Error
525         * @tc.desc Test enable.
526         */
527        it('webgl_test_enable_Error', 0, async function (done) {
528            console.info("webgltest [webgl_test_enable] enable Error");
529            console.info("webgltest enable undefined");
530            gl.enable(undefined)
531            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM);
532            console.info("webgltest enable null");
533            gl.enable(null)
534            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM);
535            console.info("webgltest enable -1");
536            gl.enable(-1)
537            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM);
538            console.info("webgltest enable 200");
539            gl.enable(200)
540            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM);
541            done();
542        })
543
544        const checkDisable = (cap) => {
545            console.info(`webgltest [webgl_test_disable] disable(${cap})`);
546            const defaultValue = gl.isEnabled(cap)
547            console.log("webgltest DEPTH_TEST defaultValue disable:", defaultValue);
548            gl.disable(cap)
549            console.log("webgltest DEPTH_TEST currentValue disable:", gl.isEnabled(cap));
550            if (defaultValue) {
551                gl.enable(cap)
552            }
553        }
554
555        /**
556         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0026
557         * @tc.name webgl_test_disable
558         * @tc.desc Test disable.
559         */
560        it('webgl_test_disable', 0, async function (done) {
561            console.info("webgltest [webgl_test_disable] disable");
562            console.info("webgltest enable DEPTH_TEST");
563            gl.enable(gl.DEPTH_TEST);
564            console.log("webgltest DEPTH_TEST:", gl.isEnabled(gl.DEPTH_TEST));
565            expect(gl.isEnabled(gl.DEPTH_TEST)).assertTrue();
566
567            console.info("webgltest disable DEPTH_TEST");
568            gl.disable(gl.DEPTH_TEST);
569            console.log("webgltest DEPTH_TEST:", gl.isEnabled(gl.DEPTH_TEST));
570            expect(gl.isEnabled(gl.DEPTH_TEST)).assertEqual(false);
571            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
572            done();
573        })
574
575
576        /**
577         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0027
578         * @tc.name webgl_test_disable_1
579         * @tc.desc Test disable.
580         */
581        it('webgl_test_disable_1', 0, async function (done) {
582            checkDisable(gl.BLEND)
583            done()
584        })
585
586
587        /**
588         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0028
589         * @tc.name webgl_test_disable_2
590         * @tc.desc Test disable.
591         */
592        it('webgl_test_disable_2', 0, async function (done) {
593            checkDisable(gl.CULL_FACE)
594            done()
595        })
596
597
598        /**
599         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0029
600         * @tc.name webgl_test_disable_3
601         * @tc.desc Test disable.
602         */
603        it('webgl_test_disable_3', 0, async function (done) {
604            checkDisable(gl.DITHER)
605            done()
606        })
607
608
609        /**
610         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0030
611         * @tc.name webgl_test_disable_4
612         * @tc.desc Test disable.
613         */
614        it('webgl_test_disable_4', 0, async function (done) {
615            checkDisable(gl.POLYGON_OFFSET_FILL)
616            done()
617        })
618
619
620        /**
621         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0031
622         * @tc.name webgl_test_disable_5
623         * @tc.desc Test disable.
624         */
625        it('webgl_test_disable_5', 0, async function (done) {
626            checkDisable(gl.SAMPLE_ALPHA_TO_COVERAGE)
627            done()
628        })
629
630
631        /**
632         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0032
633         * @tc.name webgl_test_disable_6
634         * @tc.desc Test disable.
635         */
636        it('webgl_test_disable_6', 0, async function (done) {
637            checkDisable(gl.SAMPLE_COVERAGE)
638            done()
639        })
640
641
642        /**
643         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0033
644         * @tc.name webgl_test_disable_7
645         * @tc.desc Test disable.
646         */
647        it('webgl_test_disable_7', 0, async function (done) {
648            checkDisable(gl.SCISSOR_TEST)
649            done()
650        })
651
652
653        /**
654         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0034
655         * @tc.name webgl_test_disable_8
656         * @tc.desc Test disable.
657         */
658        it('webgl_test_disable_8', 0, async function (done) {
659            checkDisable(gl.STENCIL_TEST)
660            done()
661        })
662
663
664        /**
665         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0035
666         * @tc.name webgl_test_disable_Error
667         * @tc.desc Test disable.
668         */
669        it('webgl_test_disable_Error', 0, async function (done) {
670            console.info("webgltest [webgl_test_enable] disable Error");
671            console.info("webgltest disable undefined");
672            gl.disable(undefined)
673            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM);
674            console.info("webgltest disable null");
675            gl.disable(null)
676            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM);
677            console.info("webgltest disable -1");
678            gl.disable(-1)
679            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM);
680            console.info("webgltest disable 200");
681            gl.disable(200)
682            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM);
683            done();
684        })
685
686        /**
687         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0036
688         * @tc.name webgl_test_getContextAttributes
689         * @tc.desc Test getContextAttributes.
690         */
691        it('webgl_test_getContextAttributes', 0, async function (done) {
692            console.info("webgltest [webgl_test_getContextAttributes] getContextAttributes");
693            const value = gl.getContextAttributes();
694            console.info("webgltest getContextAttributes: ", value);
695            if (value) {
696                expect(typeof (value["alpha"])).assertEqual("boolean");
697                expect(typeof (value["depth"])).assertEqual("boolean");
698                expect(typeof (value["stencil"])).assertEqual("boolean");
699                expect(typeof (value["antialias"])).assertEqual("boolean");
700                expect(typeof (value["premultipliedAlpha"])).assertEqual("boolean");
701                expect(typeof (value["preserveDrawingBuffer"])).assertEqual("boolean");
702                expect(typeof (value["failIfMajorPerformanceCaveat"])).assertEqual("boolean");
703                expect(typeof (value["desynchronized"])).assertEqual("boolean");
704                expect(typeof (value["powerPreference"])).assertEqual("string");
705                expect(value["powerPreference"]).assertEqual("default" || "low-power" || "high-performance");
706            } else {
707                expect(value).assertEqual(null);
708            }
709            done();
710        })
711
712
713        /**
714         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0037
715         * @tc.name webgl_test_getContextAttributes_Error
716         * @tc.desc Test getContextAttributes.
717         */
718        it('webgl_test_getContextAttributes_Error', 0, async function (done) {
719            console.info("webgltest [webgl_test_getContextAttributesError] getContextAttributesError");
720            console.info("webgltest getContextAttributes(null)", null);
721            const value = gl.getContextAttributes(null);
722            console.info("webgltest getContextAttributes: ", value);
723            expect(typeof value).assertEqual("object");
724            done();
725        })
726
727        /**
728         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0038
729         * @tc.name webgl_test_isContextLost
730         * @tc.desc Test isContextLost.
731         */
732        it('webgl_test_isContextLost', 0, async function (done) {
733            console.info("webgltest [webgl_test_isContextLost] isContextLost");
734            const isContextLostValue = gl.isContextLost();
735            console.info("webgltest isContextLost: " + isContextLostValue);
736            expect(isContextLostValue).assertEqual(false);
737            done();
738        })
739
740        /**
741         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0039
742         * @tc.name webgl_test_clearColor
743         * @tc.desc Test clearColor.
744         */
745        it('webgl_test_clearColor', 0, async function (done) {
746            console.info("webgltest [webgl_test_clearColor] clearColor");
747            gl.clearColor(0.5, 0.5, 0.5, 1.0);
748            console.info('set clearColor:', 0.5, 0.5, 0.5, 1.0);
749            let value = gl.getParameter(gl.COLOR_CLEAR_VALUE);
750            console.info('COLOR_CLEAR_VALUE:', value);
751            expect(value[0]).assertEqual(0.5);
752            expect(value[1]).assertEqual(0.5);
753            expect(value[2]).assertEqual(0.5);
754            expect(value[3]).assertEqual(1.0);
755            gl.clearColor(0, 0, 0, 0);
756            done();
757        })
758
759
760        /**
761         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0040
762         * @tc.name webgl_test_clearColor_Error
763         * @tc.desc Test clearColor.
764         */
765        it('webgl_test_clearColor_Error', 0, async function (done) {
766            console.info("webgltest [webgl_test_clearColor] clearColor error");
767            console.info("webgltest [webgl_test_clearColor] clearColor string");
768            gl.clearColor('1', '1', '1', '1');
769            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
770            console.info("webgltest [webgl_test_clearColor] clearColor undefined");
771            gl.clearColor(undefined, undefined, undefined, undefined);
772            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
773            console.info("webgltest [webgl_test_clearColor] clearColor null");
774            gl.clearColor(null, null, null, null);
775            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
776            done();
777        })
778
779        /**
780         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0041
781         * @tc.name webgl_test_clearDepth
782         * @tc.desc Test clearDepth.
783         */
784        it('webgl_test_clearDepth', 0, async function (done) {
785            console.info("webgltest [webgl_test_clearDepth] clearDepth");
786            gl.clearDepth(0.5)
787            console.info('set clearDepth:', 0.5);
788            let value = gl.getParameter(gl.DEPTH_CLEAR_VALUE);
789            console.info('COLOR_CLEAR_VALUE:', value);
790            expect(value).assertEqual(0.5);
791            gl.clearDepth(1)
792            done();
793        })
794
795
796        /**
797         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0042
798         * @tc.name webgl_test_clearDepth_Error
799         * @tc.desc Test clearDepth.
800         */
801        it('webgl_test_clearDepth_Error', 0, async function (done) {
802            console.info("webgltest [webgl_test_clearDepth] clearDepth Error");
803            console.info("webgltest [webgl_test_clearDepth] clearDepth big than 1");
804            gl.clearDepth(2)
805            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
806            console.info("webgltest [webgl_test_clearDepth] clearDepth string");
807            gl.clearDepth('')
808            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
809            console.info("webgltest [webgl_test_clearDepth] clearDepth small than 0");
810            gl.clearDepth(-1)
811            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
812            console.info("webgltest [webgl_test_clearDepth] clearDepth undefined");
813            gl.clearDepth(undefined)
814            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
815            console.info("webgltest [webgl_test_clearDepth] clearDepth null");
816            gl.clearDepth(null)
817            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
818            done();
819        })
820
821        /**
822         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0043
823         * @tc.name webgl_test_clear
824         * @tc.desc Test clear.
825         */
826        it('webgl_test_clear', 0, async function (done) {
827            console.info("webgltest [webgl_test_clear] clear");
828            gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT | gl.STENCIL_BUFFER_BIT);
829            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
830            gl.clear(-1);
831            expect(checkError(gl)).assertEqual(gl.INVALID_VALUE);
832            done();
833        })
834
835        /**
836         * WebGL API 的方法返回传递的参数名称的值。
837         */
838        const checkGetParameter = (pname, typeName, length) => {
839            console.info("webgltest [webgl_test_getParameter] getParameter");
840            console.info(`webgltest [webgl_test_getParameter] getParameter(${pname}) type is ${typeName}`);
841            expect(gl.getParameter(pname) !== undefined).assertEqual(true);
842            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
843            if (length !== undefined) {
844                console.info(`webgltest [webgl_test_getParameter] getParameter(${pname}) type is ${typeName} and length is ${length}`);
845                expect(gl.getParameter(pname).length).assertEqual(length);
846            }
847        }
848
849
850        /**
851         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0044
852         * @tc.name webgl_test_getParameter
853         * @tc.desc Test getParameter.
854         */
855        it('webgl_test_getParameter', 0, async function (done) {
856            console.info("webgltest [webgl_test_getParameter] getParameter");
857            console.info("webgltest ACTIVE_TEXTURE:", gl.getParameter(gl.ACTIVE_TEXTURE));
858            gl.activeTexture(gl.TEXTURE0);
859            expect(gl.getParameter(gl.ACTIVE_TEXTURE)).assertEqual(gl.TEXTURE0);
860            console.info("webgltest  gl.activeTexture(gl.TEXTURE12);");
861            gl.activeTexture(gl.TEXTURE12);
862            console.info("webgltest ACTIVE_TEXTURE:", gl.getParameter(gl.ACTIVE_TEXTURE));
863            expect(gl.getParameter(gl.ACTIVE_TEXTURE)).assertEqual(gl.TEXTURE12);
864            gl.activeTexture(gl.TEXTURE0);
865            done();
866        })
867
868
869        /**
870         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0045
871         * @tc.name webgl_test_getParameter_1
872         * @tc.desc Test getParameter.
873         */
874        it('webgl_test_getParameter_1', 0, async function (done) {
875            checkGetParameter(gl.ALIASED_LINE_WIDTH_RANGE, 'Float32Array', 2)
876            done()
877        })
878
879
880        /**
881         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0046
882         * @tc.name webgl_test_getParameter_2
883         * @tc.desc Test getParameter.
884         */
885        it('webgl_test_getParameter_2', 0, async function (done) {
886            checkGetParameter(gl.ALIASED_POINT_SIZE_RANGE, 'Float32Array', 2)
887            done()
888        })
889
890
891        /**
892         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0047
893         * @tc.name webgl_test_getParameter_3
894         * @tc.desc Test getParameter.
895         */
896        it('webgl_test_getParameter_3', 0, async function (done) {
897            checkGetParameter(gl.ALPHA_BITS, 'Number')
898            done()
899        })
900
901
902        /**
903         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0048
904         * @tc.name webgl_test_getParameter_4
905         * @tc.desc Test getParameter.
906         */
907        it('webgl_test_getParameter_4', 0, async function (done) {
908            let webGLBuffer = gl.createBuffer();
909            gl.bindBuffer(gl.ARRAY_BUFFER, webGLBuffer)
910            checkGetParameter(gl.ARRAY_BUFFER_BINDING, 'WebGLBuffer')
911            gl.deleteBuffer(webGLBuffer)
912            done()
913        })
914
915
916        /**
917         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0049
918         * @tc.name webgl_test_getParameter_5
919         * @tc.desc Test getParameter.
920         */
921        it('webgl_test_getParameter_5', 0, async function (done) {
922            checkGetParameter(gl.BLEND, 'Boolean')
923            done()
924        })
925
926
927        /**
928         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0050
929         * @tc.name webgl_test_getParameter_6
930         * @tc.desc Test getParameter.
931         */
932        it('webgl_test_getParameter_6', 0, async function (done) {
933            checkGetParameter(gl.BLEND_COLOR, 'Float32Array', 4)
934            done()
935        })
936
937
938        /**
939         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0051
940         * @tc.name webgl_test_getParameter_7
941         * @tc.desc Test getParameter.
942         */
943        it('webgl_test_getParameter_7', 0, async function (done) {
944            checkGetParameter(gl.BLEND_DST_ALPHA, 'Number')
945            done()
946        })
947
948
949        /**
950         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0052
951         * @tc.name webgl_test_getParameter_8
952         * @tc.desc Test getParameter.
953         */
954        it('webgl_test_getParameter_8', 0, async function (done) {
955            checkGetParameter(gl.BLEND_DST_RGB, 'Number')
956            done()
957        })
958
959
960        /**
961         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0053
962         * @tc.name webgl_test_getParameter_9
963         * @tc.desc Test getParameter.
964         */
965        it('webgl_test_getParameter_9', 0, async function (done) {
966            checkGetParameter(gl.BLEND_EQUATION, 'Number')
967            done()
968        })
969
970
971        /**
972         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0054
973         * @tc.name webgl_test_getParameter_10
974         * @tc.desc Test getParameter.
975         */
976        it('webgl_test_getParameter_10', 0, async function (done) {
977            checkGetParameter(gl.BLEND_EQUATION_ALPHA, 'Number')
978            done()
979        })
980
981
982        /**
983         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0055
984         * @tc.name webgl_test_getParameter_11
985         * @tc.desc Test getParameter.
986         */
987        it('webgl_test_getParameter_11', 0, async function (done) {
988            checkGetParameter(gl.BLEND_EQUATION_RGB, 'Number')
989            done()
990        })
991
992
993        /**
994         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0056
995         * @tc.name webgl_test_getParameter_12
996         * @tc.desc Test getParameter.
997         */
998        it('webgl_test_getParameter_12', 0, async function (done) {
999            checkGetParameter(gl.BLEND_SRC_ALPHA, 'Number')
1000            done()
1001        })
1002
1003
1004        /**
1005         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0057
1006         * @tc.name webgl_test_getParameter_13
1007         * @tc.desc Test getParameter.
1008         */
1009        it('webgl_test_getParameter_13', 0, async function (done) {
1010            checkGetParameter(gl.BLEND_SRC_RGB, 'Number')
1011            done()
1012        })
1013
1014
1015        /**
1016         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0058
1017         * @tc.name webgl_test_getParameter_14
1018         * @tc.desc Test getParameter.
1019         */
1020        it('webgl_test_getParameter_14', 0, async function (done) {
1021            checkGetParameter(gl.BLUE_BITS, 'Number')
1022            done()
1023        })
1024
1025
1026        /**
1027         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0059
1028         * @tc.name webgl_test_getParameter_15
1029         * @tc.desc Test getParameter.
1030         */
1031        it('webgl_test_getParameter_15', 0, async function (done) {
1032            checkGetParameter(gl.COLOR_CLEAR_VALUE, 'Float32Array', 4)
1033            done()
1034        })
1035
1036
1037        /**
1038         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0060
1039         * @tc.name webgl_test_getParameter_16
1040         * @tc.desc Test getParameter.
1041         */
1042        it('webgl_test_getParameter_16', 0, async function (done) {
1043            checkGetParameter(gl.COLOR_WRITEMASK, 'Array', 4)
1044            done()
1045        })
1046
1047
1048        /**
1049         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0061
1050         * @tc.name webgl_test_getParameter_17
1051         * @tc.desc Test getParameter.
1052         */
1053        it('webgl_test_getParameter_17', 0, async function (done) {
1054            checkGetParameter(gl.COMPRESSED_TEXTURE_FORMATS, 'Uint32Array')
1055            done()
1056        })
1057
1058
1059        /**
1060         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0062
1061         * @tc.name webgl_test_getParameter_18
1062         * @tc.desc Test getParameter.
1063         */
1064        it('webgl_test_getParameter_18', 0, async function (done) {
1065            checkGetParameter(gl.CULL_FACE, 'Boolean')
1066            done()
1067        })
1068
1069
1070        /**
1071         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0063
1072         * @tc.name webgl_test_getParameter_19
1073         * @tc.desc Test getParameter.
1074         */
1075        it('webgl_test_getParameter_19', 0, async function (done) {
1076            checkGetParameter(gl.CULL_FACE_MODE, 'Number')
1077            done()
1078        })
1079
1080
1081        /**
1082         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0064
1083         * @tc.name webgl_test_getParameter_20
1084         * @tc.desc Test getParameter.
1085         */
1086        it('webgl_test_getParameter_20', 0, async function (done) {
1087            let {program} = createProgram(gl, `
1088                attribute vec4 a_Position;
1089                attribute vec2 a_TexCoord;
1090                varying vec2 v_TexCoord;
1091                void main(){
1092                    gl_Position = a_Position;
1093                    v_TexCoord = a_TexCoord;
1094                }
1095            `, `
1096                precision mediump float;
1097                precision highp sampler2D;
1098                uniform sampler2D u_Sampler;
1099                varying vec2 v_TexCoord;
1100                void main(){
1101                    gl_FragColor = texture2D(u_Sampler, v_TexCoord);
1102                }
1103            `);
1104            checkGetParameter(gl.CURRENT_PROGRAM, 'WebGLProgram')
1105            gl.deleteProgram(program)
1106            done()
1107        })
1108
1109
1110        /**
1111         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0065
1112         * @tc.name webgl_test_getParameter_21
1113         * @tc.desc Test getParameter.
1114         */
1115        it('webgl_test_getParameter_21', 0, async function (done) {
1116            checkGetParameter(gl.DEPTH_BITS, 'Number')
1117            done()
1118        })
1119
1120
1121        /**
1122         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0066
1123         * @tc.name webgl_test_getParameter_22
1124         * @tc.desc Test getParameter.
1125         */
1126        it('webgl_test_getParameter_22', 0, async function (done) {
1127            checkGetParameter(gl.DEPTH_CLEAR_VALUE, 'Number')
1128            done()
1129        })
1130
1131
1132        /**
1133         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0067
1134         * @tc.name webgl_test_getParameter_23
1135         * @tc.desc Test getParameter.
1136         */
1137        it('webgl_test_getParameter_23', 0, async function (done) {
1138            checkGetParameter(gl.DEPTH_FUNC, 'Number')
1139            done()
1140        })
1141
1142
1143        /**
1144         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0068
1145         * @tc.name webgl_test_getParameter_24
1146         * @tc.desc Test getParameter.
1147         */
1148        it('webgl_test_getParameter_24', 0, async function (done) {
1149            checkGetParameter(gl.DEPTH_RANGE, 'Float32Array', 2)
1150            done()
1151        })
1152
1153
1154        /**
1155         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0069
1156         * @tc.name webgl_test_getParameter_25
1157         * @tc.desc Test getParameter.
1158         */
1159        it('webgl_test_getParameter_25', 0, async function (done) {
1160            checkGetParameter(gl.DEPTH_TEST, 'Boolean')
1161            done()
1162        })
1163
1164
1165        /**
1166         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0070
1167         * @tc.name webgl_test_getParameter_26
1168         * @tc.desc Test getParameter.
1169         */
1170        it('webgl_test_getParameter_26', 0, async function (done) {
1171            checkGetParameter(gl.DEPTH_WRITEMASK, 'Boolean')
1172            done()
1173        })
1174
1175
1176        /**
1177         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0071
1178         * @tc.name webgl_test_getParameter_27
1179         * @tc.desc Test getParameter.
1180         */
1181        it('webgl_test_getParameter_27', 0, async function (done) {
1182            checkGetParameter(gl.DITHER, 'Boolean')
1183            done()
1184        })
1185
1186
1187        /**
1188         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0072
1189         * @tc.name webgl_test_getParameter_28
1190         * @tc.desc Test getParameter.
1191         */
1192        it('webgl_test_getParameter_28', 0, async function (done) {
1193            let webGLBuffer = gl.createBuffer();
1194            gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, webGLBuffer)
1195            checkGetParameter(gl.ELEMENT_ARRAY_BUFFER_BINDING, 'WebGLBuffer')
1196            gl.deleteBuffer(webGLBuffer)
1197            done()
1198        })
1199
1200
1201        /**
1202         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0073
1203         * @tc.name webgl_test_getParameter_30
1204         * @tc.desc Test getParameter.
1205         */
1206        it('webgl_test_getParameter_30', 0, async function (done) {
1207            checkGetParameter(gl.FRONT_FACE, 'Number')
1208            done()
1209        })
1210
1211
1212        /**
1213         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0074
1214         * @tc.name webgl_test_getParameter_31
1215         * @tc.desc Test getParameter.
1216         */
1217        it('webgl_test_getParameter_31', 0, async function (done) {
1218            checkGetParameter(gl.GENERATE_MIPMAP_HINT, 'Number')
1219            done()
1220        })
1221
1222
1223        /**
1224         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0075
1225         * @tc.name webgl_test_getParameter_32
1226         * @tc.desc Test getParameter.
1227         */
1228        it('webgl_test_getParameter_32', 0, async function (done) {
1229            checkGetParameter(gl.GREEN_BITS, 'Number')
1230            done()
1231        })
1232
1233
1234        /**
1235         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0076
1236         * @tc.name webgl_test_getParameter_33
1237         * @tc.desc Test getParameter.
1238         */
1239        it('webgl_test_getParameter_33', 0, async function (done) {
1240            checkGetParameter(gl.IMPLEMENTATION_COLOR_READ_FORMAT, 'Number')
1241            done()
1242        })
1243
1244
1245        /**
1246         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0077
1247         * @tc.name webgl_test_getParameter_34
1248         * @tc.desc Test getParameter.
1249         */
1250        it('webgl_test_getParameter_34', 0, async function (done) {
1251            checkGetParameter(gl.IMPLEMENTATION_COLOR_READ_TYPE, 'Number')
1252            done()
1253        })
1254
1255
1256        /**
1257         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0078
1258         * @tc.name webgl_test_getParameter_35
1259         * @tc.desc Test getParameter.
1260         */
1261        it('webgl_test_getParameter_35', 0, async function (done) {
1262            checkGetParameter(gl.LINE_WIDTH, 'Number')
1263            done()
1264        })
1265
1266
1267        /**
1268         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0079
1269         * @tc.name webgl_test_getParameter_36
1270         * @tc.desc Test getParameter.
1271         */
1272        it('webgl_test_getParameter_36', 0, async function (done) {
1273            checkGetParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS, 'Number')
1274            done()
1275        })
1276
1277
1278        /**
1279         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0080
1280         * @tc.name webgl_test_getParameter_37
1281         * @tc.desc Test getParameter.
1282         */
1283        it('webgl_test_getParameter_37', 0, async function (done) {
1284            checkGetParameter(gl.MAX_TEXTURE_SIZE, 'Number')
1285            done()
1286        })
1287
1288
1289        /**
1290         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0081
1291         * @tc.name webgl_test_getParameter_38
1292         * @tc.desc Test getParameter.
1293         */
1294        it('webgl_test_getParameter_38', 0, async function (done) {
1295            checkGetParameter(gl.MAX_VARYING_VECTORS, 'Number')
1296            done()
1297        })
1298
1299
1300        /**
1301         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0082
1302         * @tc.name webgl_test_getParameter_39
1303         * @tc.desc Test getParameter.
1304         */
1305        it('webgl_test_getParameter_39', 0, async function (done) {
1306            checkGetParameter(gl.MAX_VERTEX_ATTRIBS, 'Number')
1307            done()
1308        })
1309
1310
1311        /**
1312         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0083
1313         * @tc.name webgl_test_getParameter_40
1314         * @tc.desc Test getParameter.
1315         */
1316        it('webgl_test_getParameter_40', 0, async function (done) {
1317            checkGetParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS, 'Number')
1318            done()
1319        })
1320
1321
1322        /**
1323         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0084
1324         * @tc.name webgl_test_getParameter_41
1325         * @tc.desc Test getParameter.
1326         */
1327        it('webgl_test_getParameter_41', 0, async function (done) {
1328            checkGetParameter(gl.MAX_VERTEX_UNIFORM_VECTORS, 'Number')
1329            done()
1330        })
1331
1332
1333        /**
1334         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0085
1335         * @tc.name webgl_test_getParameter_42
1336         * @tc.desc Test getParameter.
1337         */
1338        it('webgl_test_getParameter_42', 0, async function (done) {
1339            checkGetParameter(gl.MAX_VIEWPORT_DIMS, 'Int32Array', 2)
1340            done()
1341        })
1342
1343
1344        /**
1345         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0086
1346         * @tc.name webgl_test_getParameter_43
1347         * @tc.desc Test getParameter.
1348         */
1349        it('webgl_test_getParameter_43', 0, async function (done) {
1350            checkGetParameter(gl.PACK_ALIGNMENT, 'Number')
1351            done()
1352        })
1353
1354
1355        /**
1356         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0087
1357         * @tc.name webgl_test_getParameter_44
1358         * @tc.desc Test getParameter.
1359         */
1360        it('webgl_test_getParameter_44', 0, async function (done) {
1361            checkGetParameter(gl.POLYGON_OFFSET_FACTOR, 'Number')
1362            done()
1363        })
1364
1365
1366        /**
1367         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0088
1368         * @tc.name webgl_test_getParameter_45
1369         * @tc.desc Test getParameter.
1370         */
1371        it('webgl_test_getParameter_45', 0, async function (done) {
1372            checkGetParameter(gl.POLYGON_OFFSET_FILL, 'Boolean')
1373            done()
1374        })
1375
1376
1377        /**
1378         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0089
1379         * @tc.name webgl_test_getParameter_46
1380         * @tc.desc Test getParameter.
1381         */
1382        it('webgl_test_getParameter_46', 0, async function (done) {
1383            checkGetParameter(gl.POLYGON_OFFSET_UNITS, 'Number')
1384            done()
1385        })
1386
1387
1388        /**
1389         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0090
1390         * @tc.name webgl_test_getParameter_47
1391         * @tc.desc Test getParameter.
1392         */
1393        it('webgl_test_getParameter_47', 0, async function (done) {
1394            checkGetParameter(gl.RED_BITS, 'Number')
1395            done()
1396        })
1397
1398
1399        /**
1400         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0091
1401         * @tc.name webgl_test_getParameter_49
1402         * @tc.desc Test getParameter.
1403         */
1404        it('webgl_test_getParameter_49', 0, async function (done) {
1405            checkGetParameter(gl.RENDERER, 'String')
1406            done()
1407        })
1408
1409
1410        /**
1411         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0092
1412         * @tc.name webgl_test_getParameter_50
1413         * @tc.desc Test getParameter.
1414         */
1415        it('webgl_test_getParameter_50', 0, async function (done) {
1416            checkGetParameter(gl.SAMPLE_BUFFERS, 'Number')
1417            done()
1418        })
1419
1420
1421        /**
1422         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0093
1423         * @tc.name webgl_test_getParameter_51
1424         * @tc.desc Test getParameter.
1425         */
1426        it('webgl_test_getParameter_51', 0, async function (done) {
1427            checkGetParameter(gl.SAMPLE_COVERAGE_INVERT, 'Boolean')
1428            done()
1429        })
1430
1431
1432        /**
1433         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0094
1434         * @tc.name webgl_test_getParameter_52
1435         * @tc.desc Test getParameter.
1436         */
1437        it('webgl_test_getParameter_52', 0, async function (done) {
1438            checkGetParameter(gl.SAMPLE_COVERAGE_VALUE, 'Number')
1439            done()
1440        })
1441
1442
1443        /**
1444         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0095
1445         * @tc.name webgl_test_getParameter_53
1446         * @tc.desc Test getParameter.
1447         */
1448        it('webgl_test_getParameter_53', 0, async function (done) {
1449            checkGetParameter(gl.SAMPLES, 'Number')
1450            done()
1451        })
1452
1453
1454        /**
1455         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0096
1456         * @tc.name webgl_test_getParameter_54
1457         * @tc.desc Test getParameter.
1458         */
1459        it('webgl_test_getParameter_54', 0, async function (done) {
1460            checkGetParameter(gl.SCISSOR_BOX, 'Int32Array', 4)
1461            done()
1462        })
1463
1464
1465        /**
1466         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0097
1467         * @tc.name webgl_test_getParameter_55
1468         * @tc.desc Test getParameter.
1469         */
1470        it('webgl_test_getParameter_55', 0, async function (done) {
1471            checkGetParameter(gl.SCISSOR_TEST, 'Boolean')
1472            done()
1473        })
1474
1475
1476        /**
1477         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0098
1478         * @tc.name webgl_test_getParameter_56
1479         * @tc.desc Test getParameter.
1480         */
1481        it('webgl_test_getParameter_56', 0, async function (done) {
1482            checkGetParameter(gl.SHADING_LANGUAGE_VERSION, 'String')
1483            done()
1484        })
1485
1486
1487        /**
1488         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0099
1489         * @tc.name webgl_test_getParameter_57
1490         * @tc.desc Test getParameter.
1491         */
1492        it('webgl_test_getParameter_57', 0, async function (done) {
1493            checkGetParameter(gl.STENCIL_BACK_FAIL, 'Number')
1494            done()
1495        })
1496
1497
1498        /**
1499         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0100
1500         * @tc.name webgl_test_getParameter_58
1501         * @tc.desc Test getParameter.
1502         */
1503        it('webgl_test_getParameter_58', 0, async function (done) {
1504            checkGetParameter(gl.STENCIL_BACK_FUNC, 'Number')
1505            done()
1506        })
1507
1508
1509        /**
1510         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0101
1511         * @tc.name webgl_test_getParameter_59
1512         * @tc.desc Test getParameter.
1513         */
1514        it('webgl_test_getParameter_59', 0, async function (done) {
1515            checkGetParameter(gl.STENCIL_BACK_PASS_DEPTH_FAIL, 'Number')
1516            done()
1517        })
1518
1519
1520        /**
1521         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0102
1522         * @tc.name webgl_test_getParameter_60
1523         * @tc.desc Test getParameter.
1524         */
1525        it('webgl_test_getParameter_60', 0, async function (done) {
1526            checkGetParameter(gl.STENCIL_BACK_PASS_DEPTH_PASS, 'Number')
1527            done()
1528        })
1529
1530
1531        /**
1532         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0103
1533         * @tc.name webgl_test_getParameter_61
1534         * @tc.desc Test getParameter.
1535         */
1536        it('webgl_test_getParameter_61', 0, async function (done) {
1537            checkGetParameter(gl.STENCIL_BACK_REF, 'Number')
1538            done()
1539        })
1540
1541
1542        /**
1543         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0104
1544         * @tc.name webgl_test_getParameter_62
1545         * @tc.desc Test getParameter.
1546         */
1547        it('webgl_test_getParameter_62', 0, async function (done) {
1548            checkGetParameter(gl.STENCIL_BACK_VALUE_MASK, 'Number')
1549            done()
1550        })
1551
1552
1553        /**
1554         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0105
1555         * @tc.name webgl_test_getParameter_63
1556         * @tc.desc Test getParameter.
1557         */
1558        it('webgl_test_getParameter_63', 0, async function (done) {
1559            checkGetParameter(gl.STENCIL_BACK_WRITEMASK, 'Number')
1560            done()
1561        })
1562
1563
1564        /**
1565         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0106
1566         * @tc.name webgl_test_getParameter_64
1567         * @tc.desc Test getParameter.
1568         */
1569        it('webgl_test_getParameter_64', 0, async function (done) {
1570            checkGetParameter(gl.STENCIL_BITS, 'Number')
1571            done()
1572        })
1573
1574
1575        /**
1576         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0107
1577         * @tc.name webgl_test_getParameter_65
1578         * @tc.desc Test getParameter.
1579         */
1580        it('webgl_test_getParameter_65', 0, async function (done) {
1581            checkGetParameter(gl.STENCIL_CLEAR_VALUE, 'Number')
1582            done()
1583        })
1584
1585
1586        /**
1587         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0108
1588         * @tc.name webgl_test_getParameter_66
1589         * @tc.desc Test getParameter.
1590         */
1591        it('webgl_test_getParameter_66', 0, async function (done) {
1592            checkGetParameter(gl.STENCIL_FAIL, 'Number')
1593            done()
1594        })
1595
1596
1597        /**
1598         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0109
1599         * @tc.name webgl_test_getParameter_67
1600         * @tc.desc Test getParameter.
1601         */
1602        it('webgl_test_getParameter_67', 0, async function (done) {
1603            checkGetParameter(gl.STENCIL_FUNC, 'Number')
1604            done()
1605        })
1606
1607
1608        /**
1609         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0110
1610         * @tc.name webgl_test_getParameter_68
1611         * @tc.desc Test getParameter.
1612         */
1613        it('webgl_test_getParameter_68', 0, async function (done) {
1614            checkGetParameter(gl.STENCIL_PASS_DEPTH_FAIL, 'Number')
1615            done()
1616        })
1617
1618
1619        /**
1620         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0111
1621         * @tc.name webgl_test_getParameter_69
1622         * @tc.desc Test getParameter.
1623         */
1624        it('webgl_test_getParameter_69', 0, async function (done) {
1625            checkGetParameter(gl.STENCIL_PASS_DEPTH_PASS, 'Number')
1626            done()
1627        })
1628
1629
1630        /**
1631         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0112
1632         * @tc.name webgl_test_getParameter_70
1633         * @tc.desc Test getParameter.
1634         */
1635        it('webgl_test_getParameter_70', 0, async function (done) {
1636            checkGetParameter(gl.STENCIL_REF, 'Number')
1637            done()
1638        })
1639
1640
1641        /**
1642         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0113
1643         * @tc.name webgl_test_getParameter_71
1644         * @tc.desc Test getParameter.
1645         */
1646        it('webgl_test_getParameter_71', 0, async function (done) {
1647            checkGetParameter(gl.STENCIL_TEST, 'Boolean')
1648            done()
1649        })
1650
1651
1652        /**
1653         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0114
1654         * @tc.name webgl_test_getParameter_72
1655         * @tc.desc Test getParameter.
1656         */
1657        it('webgl_test_getParameter_72', 0, async function (done) {
1658            checkGetParameter(gl.STENCIL_VALUE_MASK, 'Number')
1659            done()
1660        })
1661
1662
1663        /**
1664         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0115
1665         * @tc.name webgl_test_getParameter_73
1666         * @tc.desc Test getParameter.
1667         */
1668        it('webgl_test_getParameter_73', 0, async function (done) {
1669            checkGetParameter(gl.STENCIL_WRITEMASK, 'Number')
1670            done()
1671        })
1672
1673
1674        /**
1675         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0116
1676         * @tc.name webgl_test_getParameter_74
1677         * @tc.desc Test getParameter.
1678         */
1679        it('webgl_test_getParameter_74', 0, async function (done) {
1680            checkGetParameter(gl.SUBPIXEL_BITS, 'Number')
1681            done()
1682        })
1683
1684
1685        /**
1686         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0117
1687         * @tc.name webgl_test_getParameter_75
1688         * @tc.desc Test getParameter.
1689         */
1690        it('webgl_test_getParameter_75', 0, async function (done) {
1691            let texture = gl.createTexture();
1692            gl.bindTexture(gl.TEXTURE_2D, texture);
1693            checkGetParameter(gl.TEXTURE_BINDING_2D, 'WebGLTexture')
1694            gl.deleteTexture(texture)
1695            done()
1696        })
1697
1698
1699        /**
1700         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0118
1701         * @tc.name webgl_test_getParameter_76
1702         * @tc.desc Test getParameter.
1703         */
1704        it('webgl_test_getParameter_76', 0, async function (done) {
1705            let texture = gl.createTexture();
1706            gl.bindTexture(gl.TEXTURE_CUBE_MAP, texture);
1707            checkGetParameter(gl.TEXTURE_BINDING_CUBE_MAP, 'WebGLTexture')
1708            gl.deleteTexture(texture)
1709            done()
1710        })
1711
1712
1713        /**
1714         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0119
1715         * @tc.name webgl_test_getParameter_77
1716         * @tc.desc Test getParameter.
1717         */
1718        it('webgl_test_getParameter_77', 0, async function (done) {
1719            checkGetParameter(gl.UNPACK_ALIGNMENT, 'Number')
1720            done()
1721        })
1722
1723
1724        /**
1725         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0120
1726         * @tc.name webgl_test_getParameter_78
1727         * @tc.desc Test getParameter.
1728         */
1729        it('webgl_test_getParameter_78', 0, async function (done) {
1730            checkGetParameter(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, 'Number')
1731            done()
1732        })
1733
1734
1735        /**
1736         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0121
1737         * @tc.name webgl_test_getParameter_79
1738         * @tc.desc Test getParameter.
1739         */
1740        it('webgl_test_getParameter_79', 0, async function (done) {
1741            checkGetParameter(gl.UNPACK_FLIP_Y_WEBGL, 'Boolean')
1742            done()
1743        })
1744
1745
1746        /**
1747         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0122
1748         * @tc.name webgl_test_getParameter_80
1749         * @tc.desc Test getParameter.
1750         */
1751        it('webgl_test_getParameter_80', 0, async function (done) {
1752            checkGetParameter(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 'Boolean')
1753            done()
1754        })
1755
1756
1757        /**
1758         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0123
1759         * @tc.name webgl_test_getParameter_81
1760         * @tc.desc Test getParameter.
1761         */
1762        it('webgl_test_getParameter_81', 0, async function (done) {
1763            checkGetParameter(gl.VENDOR, 'String')
1764            done()
1765        })
1766
1767
1768        /**
1769         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0124
1770         * @tc.name webgl_test_getParameter_82
1771         * @tc.desc Test getParameter.
1772         */
1773        it('webgl_test_getParameter_82', 0, async function (done) {
1774            checkGetParameter(gl.VERSION, 'String')
1775            done()
1776        })
1777
1778
1779        /**
1780         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0125
1781         * @tc.name webgl_test_getParameter_83
1782         * @tc.desc Test getParameter.
1783         */
1784        it('webgl_test_getParameter_83', 0, async function (done) {
1785            checkGetParameter(gl.VIEWPORT, 'Int32Array', 4)
1786            done()
1787        })
1788
1789
1790        /**
1791         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0126
1792         * @tc.name webgl_test_getParameter_Error
1793         * @tc.desc Test getParameter.
1794         */
1795        it('webgl_test_getParameter_Error', 0, async function (done) {
1796            console.info("webgltest [webgl_test_getParameterError] getParameter");
1797            console.info("webgltest ACTIVE_TEXTURE:undefined");
1798            expect(gl.getParameter(undefined)).assertEqual(null);
1799            console.info("webgltest ACTIVE_TEXTURE:null");
1800            expect(gl.getParameter(null)).assertEqual(null);
1801            done();
1802        })
1803
1804        /**
1805         * getExtension(name) 方法启用 WebGL 扩展。
1806         * @param name 要启用的 WebGL 扩展的名称的字符串。
1807         */
1808
1809        /**
1810         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0127
1811         * @tc.name webgl_test_getExtension
1812         * @tc.desc Test getExtension.
1813         */
1814        it('webgl_test_getExtension', 0, async function (done) {
1815            console.info("webgltest [webgl_test_getExtension] getExtension");
1816            console.info("webgltest getExtension('');", gl.getExtension(''));
1817            expect(gl.getExtension('')).assertEqual(null);
1818            console.info("webgltest gl.getExtension('WEBGL_lose_context');", gl.getExtension('WEBGL_lose_context'));
1819            expect(gl.getExtension('WEBGL_lose_context') != null).assertTrue();
1820            let extension = gl.getExtension("WEBGL_lose_context");
1821            console.info("webgltest loseContext(): ", extension['loseContext']);
1822            expect(extension['loseContext'] != null).assertTrue();
1823            done();
1824        })
1825
1826
1827        /**
1828         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0128
1829         * @tc.name webgl_test_getExtension_Error
1830         * @tc.desc Test getExtension.
1831         */
1832        it('webgl_test_getExtension_Error', 0, async function (done) {
1833            console.info("webgltest [webgl_test_getExtensionError] getExtensionError");
1834            console.info("webgltest getExtension(undefined);", gl.getExtension(undefined));
1835            expect(gl.getExtension(undefined)).assertEqual(null);
1836            console.info("webgltest gl.getExtension('null');", gl.getExtension('null'));
1837            expect(gl.getExtension(null)).assertEqual(null);
1838            console.info("webgltest gl.getExtension('-1');", gl.getExtension(-1));
1839            let extension = gl.getExtension(-1);
1840            expect(extension).assertEqual(null);
1841            done();
1842        })
1843
1844        /**
1845         *  返回所有受支持的 WebGL 扩展的列表。
1846         */
1847
1848        /**
1849         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0129
1850         * @tc.name webgl_test_getSupportedExtensions
1851         * @tc.desc Test getSupportedExtensions.
1852         */
1853        it('webgl_test_getSupportedExtensions', 0, async function (done) {
1854            console.info("webgltest [webgl_test_getSupportedExtensions] getSupportedExtensions");
1855            let supportedExtensions = gl.getSupportedExtensions();
1856            console.info("webgltest getSupportedExtensions();", supportedExtensions);
1857            expect(supportedExtensions != null).assertTrue();
1858            expect(supportedExtensions.length > 0).assertTrue();
1859            done();
1860        })
1861
1862        /**
1863         *WebGL API的方法设置视口,它指定x和y从标准化设备坐标到窗口坐标的仿射变换。
1864         */
1865
1866        /**
1867         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0130
1868         * @tc.name webgl_test_viewport
1869         * @tc.desc Test viewport.
1870         */
1871        it('webgl_test_viewport', 0, async function (done) {
1872            console.info("webgltest [webgl_test_viewport] viewport");
1873            let defaultViewPort = gl.getParameter(gl.VIEWPORT);
1874            console.info("webgltest viewPort:", defaultViewPort);
1875            console.info("webgltest gl.viewport(0, 0, 600, 400);");
1876            gl.viewport(0, 0, 600, 400);
1877            let viewPort = gl.getParameter(gl.VIEWPORT);
1878            console.info("webgltest viewPort:", viewPort);
1879            expect(viewPort[0]).assertEqual(0);
1880            expect(viewPort[1]).assertEqual(0);
1881            expect(viewPort[2]).assertEqual(600);
1882            expect(viewPort[3]).assertEqual(400);
1883            gl.viewport(defaultViewPort.x, defaultViewPort.y, defaultViewPort, defaultViewPort.height);
1884            done();
1885        })
1886
1887
1888        /**
1889         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0131
1890         * @tc.name webgl_test_viewport_Error
1891         * @tc.desc Test viewport.
1892         */
1893        it('webgl_test_viewport_Error', 0, async function (done) {
1894            console.info("webgltest [webgl_test_viewportError] viewportError");
1895            console.info("webgltest [webgl_test_viewportError] viewport(x=undefined) ");
1896            let srcViewport = gl.getParameter(gl.VIEWPORT);
1897            gl.viewport(undefined, 0, 600, 400);
1898            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
1899            console.info("webgltest [webgl_test_viewportError] viewport(y=undefined) ");
1900            gl.viewport(0, undefined, 600, 400);
1901            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
1902            console.info("webgltest [webgl_test_viewportError] viewport(width=undefined) ");
1903            gl.viewport(0, 0, undefined, 400);
1904            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
1905            console.info("webgltest [webgl_test_viewportError] viewport(height=undefined) ");
1906            gl.viewport(0, 0, 600, undefined);
1907            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
1908            console.info("webgltest [webgl_test_viewportError] viewport(x=undefined,y=undefined,width=undefined,height=undefined) ");
1909            gl.viewport(undefined, undefined, undefined, undefined);
1910            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
1911            gl.viewport(srcViewport[0],srcViewport[1],srcViewport[2],srcViewport[3]);
1912            done();
1913        })
1914
1915        /**
1916         *WebGL API的方法指定了某些行为的提示。这些提示的解释取决于实现。
1917         */
1918
1919        /**
1920         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0132
1921         * @tc.name webgl_test_hint
1922         * @tc.desc Test hint.
1923         */
1924        it('webgl_test_hint', 0, async function (done) {
1925            console.info("webgltest [webgl_test_hint] hint");
1926            let check = () => {
1927                let generateMipMapHint = gl.getParameter(gl.GENERATE_MIPMAP_HINT);
1928                switch (generateMipMapHint) {
1929                    case gl.FASTEST:
1930                        console.info("webgltest GENERATE_MIPMAP_HINT gl.FASTEST");
1931                        break;
1932                    case gl.NICEST:
1933                        console.info("webgltest GENERATE_MIPMAP_HINT gl.NICEST");
1934                        break;
1935                    case gl.DONT_CARE:
1936                        console.info("webgltest GENERATE_MIPMAP_HINT gl.DONT_CARE");
1937                        break;
1938                }
1939                return generateMipMapHint;
1940            }
1941            let defaultGenerateMipMapHint = check();
1942            console.info("webgltest gl.hint(gl.GENERATE_MIPMAP_HINT, gl.FASTEST);");
1943            gl.hint(gl.GENERATE_MIPMAP_HINT, gl.FASTEST);
1944            let generateMipMapHint = check();
1945            expect(generateMipMapHint).assertEqual(gl.FASTEST);
1946            console.info("webgltest reset config");
1947            gl.hint(gl.GENERATE_MIPMAP_HINT, defaultGenerateMipMapHint);
1948            check();
1949            done();
1950        })
1951
1952
1953        /**
1954         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0133
1955         * @tc.name webgl_test_hint_Error
1956         * @tc.desc Test hint.
1957         */
1958        it('webgl_test_hint_Error', 0, async function (done) {
1959            console.info("webgltest [webgl_test_hintError] webgl_test_hint");
1960            console.info("webgltest [webgl_test_hintError] hint(target=undefined) ");
1961            gl.hint(undefined, gl.FASTEST);
1962            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
1963            console.info("webgltest [webgl_test_hintError] hint(mode=undefined) ");
1964            gl.hint(gl.GENERATE_MIPMAP_HINT, undefined);
1965            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
1966            console.info("webgltest [webgl_test_hintError] hint(target=undefined,mode=undefined) ");
1967            gl.hint(undefined, undefined);
1968            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
1969            console.info("webgltest [webgl_test_hintError] hint(target=-1,mode=undefined) ");
1970            gl.hint(-1, undefined);
1971            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
1972            console.info("webgltest [webgl_test_hintError] hint(target=undefined,mode=-1) ");
1973            gl.hint(undefined, -1);
1974            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
1975            console.info("webgltest [webgl_test_hintError] hint(target=-1,mode=-1) ");
1976            gl.hint(-1, -1);
1977            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
1978            done();
1979        })
1980
1981        /**
1982         * WebGL API 的 WebGLRenderingContext.lineWidth() 方法设置栅格化线的线宽。
1983         */
1984
1985        /**
1986         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0134
1987         * @tc.name webgl_test_lineWidth
1988         * @tc.desc Test lineWidth.
1989         */
1990        it('webgl_test_lineWidth', 0, async function (done) {
1991            console.info("webgltest [webgl_test_lineWidth] lineWidth");
1992            let defaultLineWidth = gl.getParameter(gl.LINE_WIDTH);
1993            console.info("webgltest LINE_WIDTH:", defaultLineWidth);
1994            console.info("webgltest gl.lineWidth(10);");
1995            gl.lineWidth(10);
1996            let lineWidth = gl.getParameter(gl.LINE_WIDTH);
1997            console.info("webgltest LINE_WIDTH:", lineWidth);
1998            expect(lineWidth).assertEqual(10);
1999            gl.lineWidth(defaultLineWidth);
2000            console.info("webgltest rest LINE_WIDTH");
2001            console.info("webgltest LINE_WIDTH:", gl.getParameter(gl.LINE_WIDTH));
2002            done();
2003        })
2004
2005
2006        /**
2007         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0135
2008         * @tc.name webgl_test_lineWidth_Error
2009         * @tc.desc Test lineWidth.
2010         */
2011        it('webgl_test_lineWidth_Error', 0, async function (done) {
2012            let defaultLineWidth = gl.getParameter(gl.LINE_WIDTH);
2013            console.info("webgltest [webgl_test_lineWidthError] webgl_test_lineWidthError");
2014            console.info("webgltest [webgl_test_lineWidthError] lineWidth(width=undefined) ");
2015            gl.lineWidth(undefined);
2016            expect(checkError(gl)).assertEqual(gl.INVALID_VALUE)
2017            console.info("webgltest [webgl_test_lineWidthError] lineWidth(width=null) ");
2018            gl.lineWidth(null);
2019            expect(checkError(gl)).assertEqual(gl.INVALID_VALUE)
2020            console.info("webgltest [webgl_test_lineWidthError] lineWidth(width=-1) ");
2021            gl.lineWidth(-1);
2022            expect(checkError(gl)).assertEqual(gl.INVALID_VALUE)
2023            gl.lineWidth(defaultLineWidth);
2024            done();
2025        })
2026
2027        /**
2028         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0136
2029         * @tc.name webgl_test_readPixels
2030         * @tc.desc Test readPixels.
2031         */
2032        it('webgl_test_readPixels', 0, async function (done) {
2033            console.info("webgltest [webgl_test_readPixels] readPixels");
2034            console.info("webgltest gl.clearColor(1.0, 0.0, 0.0, 1);");
2035            gl.clearColor(1.0, 0.0, 0.0, 1);
2036            gl.clear(gl.COLOR_BUFFER_BIT);
2037            console.info("webgltest gl.drawingBufferWidth :", gl.drawingBufferWidth, "gl.drawingBufferHeight", gl.drawingBufferHeight);
2038            const pixels = new Uint8Array(gl.drawingBufferWidth * gl.drawingBufferHeight * 4);
2039            console.info("gl.readPixels(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight, gl.RGBA, gl.UNSIGNED_BYTE, pixels);");
2040            gl.readPixels(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight, gl.RGBA, gl.UNSIGNED_BYTE, pixels);
2041            console.info("webgltest gl.readPixels ", pixels);
2042            expect(pixels[0]).assertEqual(255);
2043            expect(pixels[1]).assertEqual(0);
2044            expect(pixels[2]).assertEqual(0);
2045            expect(pixels[3]).assertEqual(255);
2046            gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT | gl.STENCIL_BUFFER_BIT);
2047            done();
2048        })
2049
2050
2051        /**
2052         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0137
2053         * @tc.name webgl_test_readPixels_Error
2054         * @tc.desc Test readPixels.
2055         */
2056        it('webgl_test_readPixels_Error', 0, async function (done) {
2057            const pixels = new Uint8Array(gl.drawingBufferWidth * gl.drawingBufferHeight * 4);
2058            console.info("webgltest [webgl_test_readPixelsError] webgl_test_readPixelsError");
2059            console.info("webgltest [webgl_test_lineWidthError] readPixels(x=undefined) ");
2060            gl.readPixels(undefined, 0, gl.drawingBufferWidth, gl.drawingBufferHeight, gl.RGBA, gl.UNSIGNED_BYTE, pixels);
2061            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2062            console.info("webgltest [webgl_test_lineWidthError] readPixels(y=undefined) ");
2063            gl.readPixels(0, undefined, gl.drawingBufferWidth, gl.drawingBufferHeight, gl.RGBA, gl.UNSIGNED_BYTE, pixels);
2064            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2065            console.info("webgltest [webgl_test_lineWidthError] readPixels(width=undefined) ");
2066            gl.readPixels(0, 0, undefined, gl.drawingBufferHeight, gl.RGBA, gl.UNSIGNED_BYTE, pixels);
2067            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2068            console.info("webgltest [webgl_test_lineWidthError] readPixels(height=undefined) ");
2069            gl.readPixels(0, 0, gl.drawingBufferWidth, undefined, gl.RGBA, gl.UNSIGNED_BYTE, pixels);
2070            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2071            console.info("webgltest [webgl_test_lineWidthError] readPixels(format=undefined) ");
2072            gl.readPixels(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight, undefined, gl.UNSIGNED_BYTE, pixels);
2073            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
2074            console.info("webgltest [webgl_test_lineWidthError] readPixels(type=undefined) ");
2075            gl.readPixels(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight, gl.RGBA, undefined, pixels);
2076            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
2077            console.info("webgltest [webgl_test_lineWidthError] readPixels(type=undefined) ");
2078            gl.readPixels(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight, gl.RGBA, gl.UNSIGNED_BYTE, undefined);
2079            expect(checkError(gl)).assertEqual(gl.INVALID_VALUE)
2080            gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT | gl.STENCIL_BUFFER_BIT);
2081            done();
2082        })
2083
2084        /**
2085         * 用于设置源和目标混合因子
2086         */
2087
2088        /**
2089         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0138
2090         * @tc.name webgl_test_blendColor
2091         * @tc.desc Test blendColor.
2092         */
2093        it('webgl_test_blendColor', 0, async function (done) {
2094            console.info("webgltest [webgl_test_blendColor] blendColor");
2095            let src = gl.getParameter(gl.BLEND_COLOR);
2096            console.info("webgltest gl.blendColor(1.0, 0.5, 1, 1);");
2097            gl.blendColor(1.0, 0.5, 1, 1);
2098            let blendColor = gl.getParameter(gl.BLEND_COLOR);
2099            console.info("webgltest blendColor:", blendColor);
2100            expect(blendColor[0]).assertEqual(1.0);
2101            expect(blendColor[1]).assertEqual(0.5);
2102            expect(blendColor[2]).assertEqual(1.0);
2103            expect(blendColor[3]).assertEqual(1.0);
2104            gl.blendColor(src[0], src[1], src[2], src[3]);
2105            done();
2106        })
2107
2108
2109        /**
2110         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0139
2111         * @tc.name webgl_test_blendColor_Error
2112         * @tc.desc Test blendColor.
2113         */
2114        it('webgl_test_blendColor_Error', 0, async function (done) {
2115            console.info("webgltest [webgl_test_blendColorError] blendColorError");
2116            let src = gl.getParameter(gl.BLEND_COLOR);
2117            console.info("webgltest [webgl_test_lineWidthError] blendColor(red=undefined) ");
2118            gl.blendColor(undefined, 0.5, 1, 1);
2119            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2120            console.info("webgltest [webgl_test_lineWidthError] blendColor(green=undefined) ");
2121            gl.blendColor(0.5, undefined, 1, 1);
2122            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2123            console.info("webgltest [webgl_test_lineWidthError] blendColor(blue=undefined) ");
2124            gl.blendColor(0.5, 0.5, undefined, 1);
2125            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2126            console.info("webgltest [webgl_test_lineWidthError] blendColor(alpha=undefined) ");
2127            gl.blendColor(0.5, 0.5, 1, undefined);
2128            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2129            console.info("webgltest [webgl_test_lineWidthError] blendColor(alpha=undefined) ");
2130            gl.blendColor(-1, -1, -1, -1);
2131            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2132            gl.blendColor(src[0], src[1], src[2], src[3]);
2133            done();
2134        })
2135
2136        /**
2137         * WebGL API 的 WebGLRenderingContext.blendEquation() 方法用于将 RGB 混合方程和 alpha 混合方程设置为单个方程。
2138         * gl.FUNC_ADD: source + destination (default value)
2139         * gl.FUNC_SUBTRACT: source - destination
2140         * gl.FUNC_REVERSE_SUBTRACT: destination - source
2141         */
2142
2143        /**
2144         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0140
2145         * @tc.name webgl_test_blendEquation
2146         * @tc.desc Test blendEquation.
2147         */
2148        it('webgl_test_blendEquation', 0, async function (done) {
2149            console.info("webgltest [webgl_test_blendEquation] blendEquation");
2150            console.info("webgltest default value");
2151            let srcRgb = gl.getParameter(gl.BLEND_EQUATION_RGB);
2152            let srcAlpha = gl.getParameter(gl.BLEND_EQUATION_ALPHA);
2153            console.info("webgltest BLEND_EQUATION_RGB ", gl.getParameter(gl.BLEND_EQUATION_RGB));
2154            console.info("webgltest BLEND_EQUATION_ALPHA ", gl.getParameter(gl.BLEND_EQUATION_ALPHA));
2155            console.info("webgltest gl.blendEquation(gl.FUNC_SUBTRACT);", gl.FUNC_SUBTRACT);
2156            gl.blendEquation(gl.FUNC_SUBTRACT);
2157            console.info("webgltest BLEND_EQUATION_RGB ", gl.getParameter(gl.BLEND_EQUATION_RGB));
2158            console.info("webgltest BLEND_EQUATION_ALPHA ", gl.getParameter(gl.BLEND_EQUATION_ALPHA));
2159            expect(gl.getParameter(gl.BLEND_EQUATION_RGB)).assertEqual(gl.FUNC_SUBTRACT);
2160            expect(gl.getParameter(gl.BLEND_EQUATION_ALPHA)).assertEqual(gl.FUNC_SUBTRACT);
2161            console.info("webgltest gl.blendEquation(gl.FUNC_ADD);", gl.FUNC_ADD);
2162            gl.blendEquation(gl.FUNC_ADD);
2163            console.info("webgltest BLEND_EQUATION_RGB ", gl.getParameter(gl.BLEND_EQUATION_RGB));
2164            console.info("webgltest BLEND_EQUATION_ALPHA ", gl.getParameter(gl.BLEND_EQUATION_ALPHA));
2165            expect(gl.getParameter(gl.BLEND_EQUATION_RGB)).assertEqual(gl.FUNC_ADD);
2166            expect(gl.getParameter(gl.BLEND_EQUATION_ALPHA)).assertEqual(gl.FUNC_ADD);
2167            console.info("webgltest gl.blendEquation(gl.FUNC_REVERSE_SUBTRACT);", gl.FUNC_REVERSE_SUBTRACT);
2168            gl.blendEquation(gl.FUNC_REVERSE_SUBTRACT);
2169            console.info("webgltest BLEND_EQUATION_RGB ", gl.getParameter(gl.BLEND_EQUATION_RGB));
2170            console.info("webgltest BLEND_EQUATION_ALPHA ", gl.getParameter(gl.BLEND_EQUATION_ALPHA));
2171            expect(gl.getParameter(gl.BLEND_EQUATION_RGB)).assertEqual(gl.FUNC_REVERSE_SUBTRACT);
2172            expect(gl.getParameter(gl.BLEND_EQUATION_ALPHA)).assertEqual(gl.FUNC_REVERSE_SUBTRACT);
2173            gl.blendEquation(srcRgb);
2174            done();
2175        })
2176
2177
2178        /**
2179         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0141
2180         * @tc.name webgl_test_blendEquation_Error
2181         * @tc.desc Test blendEquation.
2182         */
2183        it('webgl_test_blendEquation_Error', 0, async function (done) {
2184            console.info("webgltest [webgl_test_blendEquationError] blendEquationError");
2185            let srcRgb = gl.getParameter(gl.BLEND_EQUATION_RGB);
2186            console.info("webgltest [webgl_test_lineWidthError] blendEquation(undefined) ");
2187            gl.blendEquation(undefined);
2188            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
2189            console.info("webgltest [webgl_test_lineWidthError] blendEquation(null) ");
2190            gl.blendEquation(null);
2191            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
2192            console.info("webgltest [webgl_test_lineWidthError] blendEquation(-1) ");
2193            gl.blendEquation(-1);
2194            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
2195            gl.blendEquation(srcRgb);
2196            done();
2197        })
2198
2199        /**
2200         * WebGL API 的 WebGLRenderingContext.blendEquationSeparate() 方法用于分别设置 RGB 混合方程和 alpha 混合方程。
2201         *
2202         */
2203
2204        /**
2205         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0142
2206         * @tc.name webgl_test_blendEquationSeparate
2207         * @tc.desc Test blendEquationSeparate.
2208         */
2209        it('webgl_test_blendEquationSeparate', 0, async function (done) {
2210            console.info("webgltest [webgl_test_blendEquationSeparate] blendEquationSeparate");
2211            console.info("webgltest default value");
2212            let srcRgb = gl.getParameter(gl.BLEND_EQUATION_RGB);
2213            let srcAlpha = gl.getParameter(gl.BLEND_EQUATION_ALPHA);
2214            console.info("webgltest BLEND_EQUATION_RGB ", gl.getParameter(gl.BLEND_EQUATION_RGB));
2215            console.info("webgltest BLEND_EQUATION_ALPHA ", gl.getParameter(gl.BLEND_EQUATION_ALPHA));
2216            console.info("webgltest gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_SUBTRACT);", gl.FUNC_ADD, gl.FUNC_SUBTRACT);
2217            gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_SUBTRACT);
2218            console.info("webgltest BLEND_EQUATION_RGB ", gl.getParameter(gl.BLEND_EQUATION_RGB));
2219            console.info("webgltest BLEND_EQUATION_ALPHA ", gl.getParameter(gl.BLEND_EQUATION_ALPHA));
2220            expect(gl.getParameter(gl.BLEND_EQUATION_RGB)).assertEqual(gl.FUNC_ADD);
2221            expect(gl.getParameter(gl.BLEND_EQUATION_ALPHA)).assertEqual(gl.FUNC_SUBTRACT);
2222            console.info("webgltest gl.blendEquationSeparate(gl.FUNC_SUBTRACT, gl.FUNC_REVERSE_SUBTRACT);", gl.FUNC_SUBTRACT, gl.FUNC_REVERSE_SUBTRACT);
2223            gl.blendEquationSeparate(gl.FUNC_SUBTRACT, gl.FUNC_REVERSE_SUBTRACT);
2224            console.info("webgltest BLEND_EQUATION_RGB ", gl.getParameter(gl.BLEND_EQUATION_RGB));
2225            console.info("webgltest BLEND_EQUATION_ALPHA ", gl.getParameter(gl.BLEND_EQUATION_ALPHA));
2226            expect(gl.getParameter(gl.BLEND_EQUATION_RGB)).assertEqual(gl.FUNC_SUBTRACT);
2227            expect(gl.getParameter(gl.BLEND_EQUATION_ALPHA)).assertEqual(gl.FUNC_REVERSE_SUBTRACT);
2228            gl.blendEquationSeparate(srcRgb, srcAlpha);
2229            done();
2230        })
2231
2232
2233        /**
2234         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0143
2235         * @tc.name webgl_test_blendEquationSeparate_Error
2236         * @tc.desc Test blendEquationSeparate.
2237         */
2238        it('webgl_test_blendEquationSeparate_Error', 0, async function (done) {
2239            console.info("webgltest [webgl_test_blendEquationSeparateError] blendEquationSeparateError");
2240            console.info("webgltest default value");
2241            let srcRgb = gl.getParameter(gl.BLEND_EQUATION_RGB);
2242            let srcAlpha = gl.getParameter(gl.BLEND_EQUATION_ALPHA);
2243            console.info("webgltest [webgl_test_blendEquationSeparateError] blendEquationSeparate(modeRgb = undefined) ");
2244            gl.blendEquationSeparate(undefined, gl.FUNC_SUBTRACT);
2245            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
2246            console.info("webgltest [webgl_test_blendEquationSeparateError] blendEquationSeparate(modeAlpha = undefined) ");
2247            gl.blendEquationSeparate(gl.FUNC_SUBTRACT, undefined);
2248            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
2249            gl.blendEquationSeparate(srcRgb, srcAlpha);
2250            done();
2251        })
2252
2253        /**
2254         * WebGL API 的 WebGLRenderingContext.blendFunc() 方法定义了用于混合像素计算的函数。
2255         */
2256
2257        /**
2258         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0144
2259         * @tc.name webgl_test_blendFunc
2260         * @tc.desc Test blendFunc.
2261         */
2262        it('webgl_test_blendFunc', 0, async function (done) {
2263            console.info("webgltest [webgl_test_blendFunc] blendFunc");
2264            console.info("webgltest default value");
2265            let isEnable = gl.isEnabled(gl.BLEND);
2266            let src = gl.getParameter(gl.BLEND_SRC_RGB);
2267            let dst = gl.getParameter(gl.BLEND_DST_RGB);
2268            gl.enable(gl.BLEND);
2269            console.info("webgltest gl.getParameter(gl.BLEND_SRC_RGB) ", gl.getParameter(gl.BLEND_SRC_RGB));
2270            console.info("webgltest gl.getParameter(gl.BLEND_DST_RGB) ", gl.getParameter(gl.BLEND_DST_RGB));
2271            console.info("webgltest gl.blendFunc(gl.SRC_COLOR, gl.DST_COLOR);", gl.SRC_COLOR, gl.DST_COLOR);
2272            gl.blendFunc(gl.SRC_COLOR, gl.DST_COLOR);
2273            console.info("webgltest gl.getParameter(gl.BLEND_SRC_RGB) ", gl.getParameter(gl.BLEND_SRC_RGB));
2274            console.info("webgltest gl.getParameter(gl.BLEND_DST_RGB) ", gl.getParameter(gl.BLEND_DST_RGB));
2275            expect(gl.getParameter(gl.BLEND_SRC_RGB)).assertEqual(gl.SRC_COLOR);
2276            expect(gl.getParameter(gl.BLEND_DST_RGB)).assertEqual(gl.DST_COLOR);
2277            console.info("webgltest reset");
2278            gl.blendFunc(src, dst);
2279            console.info("webgltest gl.getParameter(gl.BLEND_SRC_RGB) ", gl.getParameter(gl.BLEND_SRC_RGB));
2280            console.info("webgltest gl.getParameter(gl.BLEND_DST_RGB) ", gl.getParameter(gl.BLEND_DST_RGB));
2281            if (isEnable) {
2282                gl.enable(gl.BLEND);
2283            } else {
2284                gl.disable(gl.BLEND);
2285            }
2286            done();
2287        })
2288
2289
2290        /**
2291         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0145
2292         * @tc.name webgl_test_blendFunc_Error
2293         * @tc.desc Test blendFunc.
2294         */
2295        it('webgl_test_blendFunc_Error', 0, async function (done) {
2296            console.info("webgltest [webgl_test_blendFuncError] blendFunc");
2297            console.info("webgltest default value");
2298            let isEnable = gl.isEnabled(gl.BLEND);
2299            let src = gl.getParameter(gl.BLEND_SRC_RGB);
2300            let dst = gl.getParameter(gl.BLEND_DST_RGB);
2301            gl.enable(gl.BLEND);
2302            console.info("webgltest [webgl_test_blendFuncError] blendFunc(sfactor = undefined) ");
2303            gl.blendFunc(undefined, gl.DST_COLOR);
2304            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2305            console.info("webgltest [webgl_test_blendFuncError] blendFunc(dfactor = undefined) ");
2306            gl.blendFunc(gl.SRC_COLOR, undefined);
2307            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2308            console.info("webgltest [webgl_test_blendFuncError] blendFunc(sfactor = undefined,dfactor = undefined) ");
2309            gl.blendFunc(undefined, undefined);
2310            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2311            gl.blendFunc(src, dst);
2312            if (isEnable) {
2313                gl.enable(gl.BLEND);
2314            } else {
2315                gl.disable(gl.BLEND);
2316            }
2317            done();
2318        })
2319
2320        /**
2321         * blendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha)
2322         * 方法定义了哪个函数用于分别混合 RGB 和 alpha 组件的像素计算。
2323         */
2324
2325        /**
2326         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0146
2327         * @tc.name webgl_test_blendFuncSeparate
2328         * @tc.desc Test blendFuncSeparate.
2329         */
2330        it('webgl_test_blendFuncSeparate', 0, async function (done) {
2331            console.info("webgltest [webgl_test_blendFuncSeparate] blendFuncSeparate");
2332            let isEnable = gl.isEnabled(gl.BLEND);
2333            let src = gl.getParameter(gl.BLEND_SRC_RGB);
2334            let srcAlpha = gl.getParameter(gl.BLEND_SRC_ALPHA);
2335            let dst = gl.getParameter(gl.BLEND_DST_RGB);
2336            let dstAlpha = gl.getParameter(gl.BLEND_DST_ALPHA);
2337            gl.enable(gl.BLEND);
2338            console.info("webgltest gl.blendFuncSeparate(gl.SRC_COLOR, gl.DST_COLOR, gl.ONE, gl.ZERO);", gl.SRC_COLOR, gl.DST_COLOR, gl.ONE, gl.ZERO);
2339            gl.blendFuncSeparate(gl.SRC_COLOR, gl.DST_COLOR, gl.ONE, gl.ZERO);
2340            console.info("webgltest gl.getParameter(gl.BLEND_SRC_RGB) ", gl.getParameter(gl.BLEND_SRC_RGB));
2341            console.info("webgltest gl.getParameter(gl.BLEND_DST_RGB) ", gl.getParameter(gl.BLEND_DST_RGB));
2342            console.info("webgltest gl.getParameter(gl.BLEND_SRC_ALPHA) ", gl.getParameter(gl.BLEND_SRC_ALPHA));
2343            console.info("webgltest gl.getParameter(gl.BLEND_DST_ALPHA) ", gl.getParameter(gl.BLEND_DST_ALPHA));
2344            expect(gl.getParameter(gl.BLEND_SRC_RGB)).assertEqual(gl.SRC_COLOR);
2345            expect(gl.getParameter(gl.BLEND_DST_RGB)).assertEqual(gl.DST_COLOR);
2346            expect(gl.getParameter(gl.BLEND_SRC_ALPHA)).assertEqual(gl.ONE);
2347            expect(gl.getParameter(gl.BLEND_DST_ALPHA)).assertEqual(gl.ZERO);
2348            gl.blendFuncSeparate(src, dst, srcAlpha, dstAlpha);
2349            console.info("webgltest reset");
2350            console.info("webgltest gl.getParameter(gl.BLEND_SRC_RGB) ", gl.getParameter(gl.BLEND_SRC_RGB));
2351            console.info("webgltest gl.getParameter(gl.BLEND_DST_RGB) ", gl.getParameter(gl.BLEND_DST_RGB));
2352            console.info("webgltest gl.getParameter(gl.BLEND_SRC_ALPHA) ", gl.getParameter(gl.BLEND_SRC_ALPHA));
2353            console.info("webgltest gl.getParameter(gl.BLEND_DST_ALPHA) ", gl.getParameter(gl.BLEND_DST_ALPHA));
2354            if (isEnable) {
2355                gl.enable(gl.BLEND);
2356            } else {
2357                gl.disable(gl.BLEND);
2358            }
2359            done();
2360        })
2361
2362
2363        /**
2364         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0147
2365         * @tc.name webgl_test_blendFuncSeparate_Error
2366         * @tc.desc Test blendFuncSeparate.
2367         */
2368        it('webgl_test_blendFuncSeparate_Error', 0, async function (done) {
2369            console.info("webgltest [webgl_test_blendFuncSeparateError] blendFuncSeparate");
2370            let isEnable = gl.isEnabled(gl.BLEND);
2371            let src = gl.getParameter(gl.BLEND_SRC_RGB);
2372            let srcAlpha = gl.getParameter(gl.BLEND_SRC_ALPHA);
2373            let dst = gl.getParameter(gl.BLEND_DST_RGB);
2374            let dstAlpha = gl.getParameter(gl.BLEND_DST_ALPHA);
2375            gl.enable(gl.BLEND);
2376            console.info("webgltest [webgl_test_blendFuncSeparateError] blendFuncSeparate(srcRGB = undefined) ");
2377            gl.blendFuncSeparate(undefined, gl.DST_COLOR, gl.ONE, gl.ZERO);
2378            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2379            console.info("webgltest [webgl_test_blendFuncSeparateError] blendFuncSeparate(dstRGB = undefined) ");
2380            gl.blendFuncSeparate(gl.SRC_COLOR, undefined, gl.ONE, gl.ZERO);
2381            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2382            console.info("webgltest [webgl_test_blendFuncSeparateError] blendFuncSeparate(srcAlpha = undefined) ");
2383            gl.blendFuncSeparate(gl.SRC_COLOR, gl.DST_COLOR, undefined, gl.ZERO);
2384            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2385            console.info("webgltest [webgl_test_blendFuncSeparateError] blendFuncSeparate(dstAlpha = undefined) ");
2386            gl.blendFuncSeparate(gl.SRC_COLOR, gl.DST_COLOR, gl.ONE, undefined);
2387            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2388            gl.blendFuncSeparate(src, dst, srcAlpha, dstAlpha);
2389            if (isEnable) {
2390                gl.enable(gl.BLEND);
2391            } else {
2392                gl.disable(gl.BLEND);
2393            }
2394            done();
2395        })
2396
2397        /**
2398         * 指定了模板缓冲区的清除值
2399         */
2400
2401        /**
2402         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0148
2403         * @tc.name webgl_test_clearStencil
2404         * @tc.desc Test clearStencil.
2405         */
2406        it('webgl_test_clearStencil', 0, async function (done) {
2407            console.info("webgltest [webgl_test_clearStencil] clearStencil");
2408            let src = gl.getParameter(gl.STENCIL_CLEAR_VALUE);
2409            console.info("webgltest default clearStencil", src);
2410            console.info("webgltest gl.clearStencil(1);");
2411            gl.clearStencil(1);
2412            console.info("webgltest gl.getParameter(gl.STENCIL_CLEAR_VALUE)", gl.getParameter(gl.STENCIL_CLEAR_VALUE));
2413            expect(gl.getParameter(gl.STENCIL_CLEAR_VALUE)).assertEqual(1);
2414            console.info("webgltest gl.clearStencil(2);");
2415            gl.clearStencil(2);
2416            console.info("webgltest gl.getParameter(gl.STENCIL_CLEAR_VALUE)", gl.getParameter(gl.STENCIL_CLEAR_VALUE));
2417            expect(gl.getParameter(gl.STENCIL_CLEAR_VALUE)).assertEqual(2);
2418            gl.clearStencil(src);
2419            done();
2420        })
2421
2422
2423        /**
2424         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0149
2425         * @tc.name webgl_test_clearStencil_Error
2426         * @tc.desc Test clearStencil.
2427         */
2428        it('webgl_test_clearStencil_Error', 0, async function (done) {
2429            console.info("webgltest [webgl_test_clearStencilError] clearStencil");
2430            let src = gl.getParameter(gl.STENCIL_CLEAR_VALUE);
2431            console.info("webgltest [webgl_test_clearStencilError] clearStencil(undefined) ");
2432            gl.clearStencil(undefined);
2433            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2434            console.info("webgltest [webgl_test_clearStencilError] clearStencil(null) ");
2435            gl.clearStencil(null);
2436            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2437            console.info("webgltest [webgl_test_clearStencilError] clearStencil(-1) ");
2438            gl.clearStencil(-1);
2439            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2440            gl.clearStencil(src);
2441            done();
2442        })
2443
2444        /**
2445         * 设置在绘制或渲染到 WebGLFramebuffer 时要启用或禁用的颜色组件。
2446         */
2447
2448        /**
2449         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0150
2450         * @tc.name webgl_test_colorMask
2451         * @tc.desc Test colorMask.
2452         */
2453        it('webgl_test_colorMask', 0, async function (done) {
2454            console.info("webgltest [webgl_test_colorMask] colorMask");
2455            let src = gl.getParameter(gl.COLOR_WRITEMASK);
2456            console.info("webgltest gl.colorMask(false, false, false, false);");
2457            gl.colorMask(false, false, false, false);
2458            let colorWriteMask = gl.getParameter(gl.COLOR_WRITEMASK);
2459            console.info("webgltest colorMask", colorWriteMask);
2460            expect(colorWriteMask[0]).assertEqual(false);
2461            expect(colorWriteMask[1]).assertEqual(false);
2462            expect(colorWriteMask[2]).assertEqual(false);
2463            expect(colorWriteMask[3]).assertEqual(false);
2464            console.info("webgltest gl.colorMask(true, true, true, true);");
2465            gl.colorMask(true, true, true, true);
2466            colorWriteMask = gl.getParameter(gl.COLOR_WRITEMASK);
2467            console.info("webgltest colorMask", colorWriteMask);
2468            expect(colorWriteMask[0]).assertEqual(true);
2469            expect(colorWriteMask[1]).assertEqual(true);
2470            expect(colorWriteMask[2]).assertEqual(true);
2471            expect(colorWriteMask[3]).assertEqual(true);
2472            gl.colorMask(src[0], src[1], src[2], src[3]);
2473            done();
2474        })
2475
2476
2477        /**
2478         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0151
2479         * @tc.name webgl_test_colorMask_Error
2480         * @tc.desc Test colorMask.
2481         */
2482        it('webgl_test_colorMask_Error', 0, async function (done) {
2483            console.info("webgltest [webgl_test_colorMaskError] colorMask");
2484            let src = gl.getParameter(gl.COLOR_WRITEMASK);
2485            console.info("webgltest [webgl_test_colorMaskError] colorMask(red = undefined) ");
2486            gl.colorMask(undefined, false, false, false);
2487            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2488            console.info("webgltest [webgl_test_colorMaskError] colorMask(green = undefined) ");
2489            gl.colorMask(false, undefined, false, false);
2490            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2491            console.info("webgltest [webgl_test_colorMaskError] colorMask(blue = undefined) ");
2492            gl.colorMask(false, false, undefined, false);
2493            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2494            console.info("webgltest [webgl_test_colorMaskError] colorMask(alpha = undefined) ");
2495            gl.colorMask(false, false, false, undefined);
2496            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2497            gl.colorMask(src[0], src[1], src[2], src[3]);
2498            done();
2499        })
2500
2501        /**
2502         * 指定是否可以剔除正面和/或背面多边形。
2503         */
2504
2505        /**
2506         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0152
2507         * @tc.name webgl_test_cullFace
2508         * @tc.desc Test cullFace.
2509         */
2510        it('webgl_test_cullFace', 0, async function (done) {
2511            console.info("webgltest [webgl_test_cullFace] cullFace");
2512            console.info("webgltest CULL_FACE_MODE default gl.BACK ", gl.BACK);
2513            let src = gl.getParameter(gl.CULL_FACE_MODE);
2514            expect(gl.getParameter(gl.CULL_FACE_MODE)).assertEqual(gl.BACK);
2515            gl.enable(gl.CULL_FACE);
2516            console.info("webgltest gl.cullFace(gl.FRONT_AND_BACK);");
2517            gl.cullFace(gl.FRONT_AND_BACK);
2518            console.info("webgltest CULL_FACE_MODE", gl.getParameter(gl.CULL_FACE_MODE));
2519            expect(gl.getParameter(gl.CULL_FACE_MODE)).assertEqual(gl.FRONT_AND_BACK);
2520            gl.cullFace(src);
2521            gl.disable(gl.CULL_FACE);
2522            done();
2523        })
2524
2525
2526        /**
2527         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0153
2528         * @tc.name webgl_test_cullFace_Error
2529         * @tc.desc Test cullFace.
2530         */
2531        it('webgl_test_cullFace_Error', 0, async function (done) {
2532            console.info("webgltest [webgl_test_cullFaceError] cullFace");
2533            console.info("webgltest CULL_FACE_MODE default gl.BACK ", gl.BACK);
2534            let src = gl.getParameter(gl.CULL_FACE_MODE);
2535            console.info("webgltest [webgl_test_cullFaceError] cullFace(undefined) ");
2536            gl.cullFace(undefined);
2537            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
2538            console.info("webgltest [webgl_test_cullFaceError] cullFace(null) ");
2539            gl.cullFace(undefined);
2540            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
2541            console.info("webgltest [webgl_test_cullFaceError] cullFace(-1) ");
2542            gl.cullFace(-1);
2543            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
2544            gl.cullFace(src);
2545            gl.disable(gl.CULL_FACE);
2546            done();
2547        })
2548
2549        /**
2550         * WebGL API 的 WebGLRenderingContext.depthFunc() 方法指定了一个函数,用于将传入的像素深度与当前深度缓冲区值进行比较。
2551         */
2552
2553        /**
2554         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0154
2555         * @tc.name webgl_test_depthFunc
2556         * @tc.desc Test depthFunc.
2557         */
2558        it('webgl_test_depthFunc', 0, async function (done) {
2559            console.info("webgltest [webgl_test_depthFunc] depthFunc");
2560            let isEnable = gl.isEnabled(gl.DEPTH_TEST);
2561            gl.enable(gl.DEPTH_TEST);
2562            let src = gl.getParameter(gl.DEPTH_FUNC);
2563            console.info("webgltest gl.depthFunc(gl.NEVER);");
2564            gl.depthFunc(gl.NEVER);
2565            console.info("webgltest gl.getParameter(gl.DEPTH_FUNC);", gl.getParameter(gl.DEPTH_FUNC));
2566            expect(gl.getParameter(gl.DEPTH_FUNC)).assertEqual(gl.NEVER);
2567            console.info("webgltest gl.depthFunc(gl.LESS);");
2568            gl.depthFunc(gl.LESS);
2569            console.info("webgltest gl.getParameter(gl.DEPTH_FUNC);", gl.getParameter(gl.DEPTH_FUNC));
2570            expect(gl.getParameter(gl.DEPTH_FUNC)).assertEqual(gl.LESS);
2571            gl.depthFunc(src);
2572            if (!isEnable) {
2573                gl.disable(gl.DEPTH_TEST);
2574            }
2575            done();
2576        })
2577
2578
2579        /**
2580         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0155
2581         * @tc.name webgl_test_depthFunc_Error
2582         * @tc.desc Test depthFunc.
2583         */
2584        it('webgl_test_depthFunc_Error', 0, async function (done) {
2585            console.info("webgltest [webgl_test_depthFuncError] depthFunc");
2586            let isEnable = gl.isEnabled(gl.DEPTH_TEST);
2587            gl.enable(gl.DEPTH_TEST);
2588            let src = gl.getParameter(gl.DEPTH_FUNC);
2589            console.info("webgltest [webgl_test_depthFuncError] depthFunc(undefined)");
2590            gl.depthFunc(-1);
2591            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
2592            console.info("webgltest [webgl_test_depthFuncError] depthFunc(null) ");
2593            gl.depthFunc(null);
2594            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
2595            console.info("webgltest [webgl_test_depthFuncError] depthFunc(-1) ");
2596            gl.depthFunc(-1);
2597            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
2598            gl.depthFunc(src);
2599            if (!isEnable) {
2600                gl.disable(gl.DEPTH_TEST);
2601            }
2602            done();
2603        })
2604
2605        /**
2606         * WebGL API 的 WebGLRenderingContext.depthMask() 方法设置写入深度缓冲区是启用还是禁用。
2607         */
2608
2609        /**
2610         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0156
2611         * @tc.name webgl_test_depthMask
2612         * @tc.desc Test depthMask.
2613         */
2614        it('webgl_test_depthMask', 0, async function (done) {
2615            console.info("webgltest [webgl_test_depthMask] depthMask");
2616            let src = gl.getParameter(gl.DEPTH_WRITEMASK);
2617            gl.depthMask(false);
2618            console.info("webgltest gl.depthMask(false);");
2619            console.info("webgltest gl.getParameter(gl.DEPTH_WRITEMASK)", gl.getParameter(gl.DEPTH_WRITEMASK));
2620            expect(gl.getParameter(gl.DEPTH_WRITEMASK)).assertEqual(false);
2621            gl.depthMask(true);
2622            console.info("webgltest gl.depthMask(true);");
2623            console.info("webgltest gl.getParameter(gl.DEPTH_WRITEMASK)", gl.getParameter(gl.DEPTH_WRITEMASK));
2624            expect(gl.getParameter(gl.DEPTH_WRITEMASK)).assertEqual(true);
2625            gl.depthMask(src);
2626            done();
2627        })
2628
2629
2630        /**
2631         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0157
2632         * @tc.name webgl_test_depthMask_Error
2633         * @tc.desc Test depthMask.
2634         */
2635        it('webgl_test_depthMask_Error', 0, async function (done) {
2636            console.info("webgltest [webgl_test_depthMaskError] depthMask");
2637            let src = gl.getParameter(gl.DEPTH_WRITEMASK);
2638            console.info("webgltest [webgl_test_depthFuncError] depthMask(undefined) ");
2639            gl.depthMask(undefined);
2640            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2641            console.info("webgltest [webgl_test_depthFuncError] depthMask(null) ");
2642            gl.depthMask(null);
2643            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2644            console.info("webgltest [webgl_test_depthFuncError] depthMask(-1) ");
2645            gl.depthMask(-1);
2646            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2647            console.info("webgltest [webgl_test_depthFuncError] depthMask(0) ");
2648            gl.depthMask(0);
2649            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2650            console.info("webgltest [webgl_test_depthFuncError] depthMask(1) ");
2651            gl.depthMask(1);
2652            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2653            gl.depthMask(src);
2654            done();
2655        })
2656
2657        /**
2658         * WebGL API 的 WebGLRenderingContext.depthRange() 方法指定从规范化设备坐标到窗口或视口坐标的深度范围映射。
2659         */
2660
2661        /**
2662         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0158
2663         * @tc.name webgl_test_depthRange
2664         * @tc.desc Test depthRange.
2665         */
2666        it('webgl_test_depthRange', 0, async function (done) {
2667            console.info("webgltest [webgl_test_depthRange] depthRange");
2668            let src = gl.getParameter(gl.DEPTH_RANGE);
2669            console.info("webgltest default depthRange", src);
2670            console.info("webgltest gl.depthRange(0.0, 1.0);");
2671            gl.depthRange(0.0, 1.0);
2672            let arr = gl.getParameter(gl.DEPTH_RANGE);
2673            console.info("webgltest gl.getParameter(gl.DEPTH_RANGE);", arr);
2674            expect(arr[0]).assertEqual(0.0);
2675            expect(arr[1]).assertEqual(1.0);
2676            gl.depthRange(src[0], src[1]);
2677            done();
2678        })
2679
2680
2681        /**
2682         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0159
2683         * @tc.name webgl_test_depthRange_Error
2684         * @tc.desc Test depthRange.
2685         */
2686        it('webgl_test_depthRange_Error', 0, async function (done) {
2687            console.info("webgltest [webgl_test_depthRangeError] depthRange");
2688            let src = gl.getParameter(gl.DEPTH_RANGE);
2689            console.info("webgltest [webgl_test_depthRangeError] depthRange(zNear = undefined) ");
2690            gl.depthRange(undefined, 1.0);
2691            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2692            console.info("webgltest [webgl_test_depthRangeError] depthRange(zFar = undefined) ");
2693            gl.depthRange(1.0, undefined);
2694            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2695            console.info("webgltest [webgl_test_depthRangeError] depthRange(zNear = undefined,zFar = undefined) ");
2696            gl.depthRange(undefined, undefined);
2697            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2698            console.info("webgltest [webgl_test_depthRangeError] depthRange(zNear = -1,zFar = -1) ");
2699            gl.depthRange(-1, -1);
2700            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2701            gl.depthRange(src[0], src[1]);
2702            done();
2703        })
2704        /**
2705         * 通过设置绕组方向来指定多边形是正面还是背面。
2706         */
2707
2708        /**
2709         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0160
2710         * @tc.name webgl_test_frontFace
2711         * @tc.desc Test frontFace.
2712         */
2713        it('webgl_test_frontFace', 0, async function (done) {
2714            console.info("webgltest [webgl_test_frontFace] frontFace");
2715            let src = gl.getParameter(gl.FRONT_FACE);
2716            console.info("webgltest gl.frontFace(gl.CW);", gl.CW);
2717            gl.frontFace(gl.CW);
2718            console.info("webgltest gl.getParameter(gl.FRONT_FACE);", gl.getParameter(gl.FRONT_FACE));
2719            expect(gl.getParameter(gl.FRONT_FACE)).assertEqual(gl.CW);
2720            console.info("webgltest gl.frontFace(gl.CCW);", gl.CCW);
2721            gl.frontFace(gl.CCW);
2722            console.info("webgltest gl.getParameter(gl.FRONT_FACE);", gl.getParameter(gl.FRONT_FACE));
2723            expect(gl.getParameter(gl.FRONT_FACE)).assertEqual(gl.CCW);
2724            gl.frontFace(src);
2725            done();
2726        })
2727
2728
2729        /**
2730         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0161
2731         * @tc.name webgl_test_frontFace_Error
2732         * @tc.desc Test frontFace.
2733         */
2734        it('webgl_test_frontFace_Error', 0, async function (done) {
2735            console.info("webgltest [webgl_test_frontFaceError] frontFace");
2736            let src = gl.getParameter(gl.FRONT_FACE);
2737            console.info("webgltest [webgl_test_depthRangeError] frontFace(undefined) ");
2738            gl.frontFace(undefined);
2739            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
2740            console.info("webgltest [webgl_test_depthRangeError] frontFace(null) ");
2741            gl.frontFace(null);
2742            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
2743            console.info("webgltest [webgl_test_depthRangeError] frontFace(-1) ");
2744            gl.frontFace(-1);
2745            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
2746            gl.frontFace(src);
2747            done();
2748        })
2749
2750        /**
2751         * 方法设置了模板测试的前端和后端函数和参考值。
2752         */
2753
2754        /**
2755         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0162
2756         * @tc.name webgl_test_stencilFunc
2757         * @tc.desc Test stencilFunc.
2758         */
2759        it('webgl_test_stencilFunc', 0, async function (done) {
2760            console.info("webgltest [webgl_test_stencilFunc] stencilFunc");
2761            let isEnable = gl.isEnabled(gl.STENCIL_TEST);
2762            gl.enable(gl.STENCIL_TEST);
2763            let defVal = gl.getParameter(gl.STENCIL_VALUE_MASK);
2764            console.info("webgltest gl.stencilFunc(gl.LESS, 0, 0b11);");
2765            gl.stencilFunc(gl.LESS, 0, 0b11);
2766            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
2767            let stencilFunc = gl.getParameter(gl.STENCIL_FUNC);
2768            console.info("webgltest STENCIL_FUNC", stencilFunc);
2769            let stencilValueMask = gl.getParameter(gl.STENCIL_VALUE_MASK);
2770            console.info("webgltest STENCIL_VALUE_MASK", stencilValueMask);
2771            let stencilRef = gl.getParameter(gl.STENCIL_REF);
2772            console.info("webgltest STENCIL_REF", stencilRef);
2773            let backFunc = gl.getParameter(gl.STENCIL_BACK_FUNC);
2774            console.info("webgltest STENCIL_BACK_FUNC", backFunc);
2775            let stencilBackValueMask = gl.getParameter(gl.STENCIL_BACK_VALUE_MASK);
2776            console.info("webgltest STENCIL_BACK_VALUE_MASK", stencilBackValueMask);
2777            let stencilBackRef = gl.getParameter(gl.STENCIL_BACK_REF);
2778            console.info("webgltest STENCIL_BACK_REF", stencilBackRef);
2779            let stencilBits = gl.getParameter(gl.STENCIL_BITS);
2780            console.info("webgltest STENCIL_BITS", stencilBits);
2781            expect(stencilValueMask).assertEqual(3);
2782            expect(stencilBackValueMask).assertEqual(3);
2783            gl.stencilFunc(gl.LESS, 0, defVal);
2784            if (!isEnable) {
2785                gl.disable(gl.STENCIL_TEST);
2786            }
2787            done();
2788        })
2789
2790
2791        /**
2792         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0163
2793         * @tc.name webgl_test_stencilFunc_Error
2794         * @tc.desc Test stencilFunc.
2795         */
2796        it('webgl_test_stencilFunc_Error', 0, async function (done) {
2797            let isEnable = gl.isEnabled(gl.STENCIL_TEST);
2798            gl.enable(gl.STENCIL_TEST);
2799            let defVal = gl.getParameter(gl.STENCIL_VALUE_MASK);
2800            console.info("webgltest [webgl_test_stencilFuncError] stencilFunc(func = undefined) ");
2801            gl.stencilFunc(undefined, 0, defVal);
2802            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
2803            console.info("webgltest [webgl_test_stencilFuncError] stencilFunc(ref = undefined) ");
2804            gl.stencilFunc(gl.LESS, undefined, defVal);
2805            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2806            console.info("webgltest [webgl_test_stencilFuncError] stencilFunc(mask = undefined) ");
2807            gl.stencilFunc(gl.LESS, 0, undefined);
2808            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2809            gl.stencilFunc(gl.LESS, 0, defVal);
2810            if (!isEnable) {
2811                gl.disable(gl.STENCIL_TEST);
2812            }
2813            done();
2814        })
2815
2816        /**
2817         * WebGL API 的 WebGLRenderingContext.stencilFuncSepar() 方法设置了模板测试的前端和/或背面函数和参考值。
2818         */
2819
2820        /**
2821         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0164
2822         * @tc.name webgl_test_stencilFuncSeparate
2823         * @tc.desc Test stencilFuncSeparate.
2824         */
2825        it('webgl_test_stencilFuncSeparate', 0, async function (done) {
2826            console.info("webgltest [webgl_test_stencilFuncSeparate] stencilFuncSeparate");
2827            let isEnable = gl.isEnabled(gl.STENCIL_TEST);
2828            gl.enable(gl.STENCIL_TEST);
2829            let defVal = gl.getParameter(gl.STENCIL_VALUE_MASK);
2830            console.info("webgltest gl.stencilFuncSeparate(gl.FRONT, gl.LESS, 1, 0b11);", gl.FRONT, gl.LESS);
2831            console.info("webgltest gl.stencilFuncSeparate(gl.BACK, gl.LESS, 2, 0b111);", gl.BACK, gl.LESS);
2832            gl.stencilFuncSeparate(gl.FRONT, gl.LESS, 1, 0b11);
2833            gl.stencilFuncSeparate(gl.BACK, gl.LESS, 2, 0b111);
2834            expect(gl.getError()).assertEqual(gl.NO_ERROR);
2835            let stencilFunc = gl.getParameter(gl.STENCIL_FUNC);
2836            console.info("webgltest STENCIL_FUNC", stencilFunc);
2837            let stencilValueMask = gl.getParameter(gl.STENCIL_VALUE_MASK);
2838            console.info("webgltest STENCIL_VALUE_MASK", stencilValueMask);
2839            let stencilRef = gl.getParameter(gl.STENCIL_REF);
2840            console.info("webgltest STENCIL_REF", stencilRef);
2841            let backFunc = gl.getParameter(gl.STENCIL_BACK_FUNC);
2842            console.info("webgltest STENCIL_BACK_FUNC", backFunc);
2843            let stencilBackValueMask = gl.getParameter(gl.STENCIL_BACK_VALUE_MASK);
2844            console.info("webgltest STENCIL_BACK_VALUE_MASK", stencilBackValueMask);
2845            let stencilBackRef = gl.getParameter(gl.STENCIL_BACK_REF);
2846            console.info("webgltest STENCIL_BACK_REF", stencilBackRef);
2847            let stencilBits = gl.getParameter(gl.STENCIL_BITS);
2848            console.info("webgltest STENCIL_BITS", stencilBits);
2849            expect(stencilRef).assertEqual(1);
2850            expect(stencilBackRef).assertEqual(2);
2851            expect(stencilValueMask).assertEqual(3);
2852            expect(stencilBackValueMask).assertEqual(7);
2853            gl.stencilFunc(gl.LESS, 0, defVal);
2854            if (!isEnable) {
2855                gl.disable(gl.STENCIL_TEST);
2856            }
2857            done();
2858        })
2859
2860
2861        /**
2862         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0165
2863         * @tc.name webgl_test_stencilFuncSeparate_Error
2864         * @tc.desc Test stencilFuncSeparate.
2865         */
2866        it('webgl_test_stencilFuncSeparate_Error', 0, async function (done) {
2867            console.info("webgltest [webgl_test_stencilFuncSeparateError] stencilFuncSeparate");
2868            let isEnable = gl.isEnabled(gl.STENCIL_TEST);
2869            gl.enable(gl.STENCIL_TEST);
2870            let defVal = gl.getParameter(gl.STENCIL_VALUE_MASK);
2871            console.info("webgltest [webgl_test_stencilFuncError] stencilFuncSeparate(face = undefined) ");
2872            gl.stencilFuncSeparate(undefined, gl.LESS, 1, 0b11);
2873            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
2874            console.info("webgltest [webgl_test_stencilFuncError] stencilFuncSeparate(func = undefined) ");
2875            gl.stencilFuncSeparate(gl.FRONT, undefined, 1, 0b11);
2876            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
2877            console.info("webgltest [webgl_test_stencilFuncError] stencilFuncSeparate(ref = undefined) ");
2878            gl.stencilFuncSeparate(gl.FRONT, gl.LESS, undefined, 0b11);
2879            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2880            console.info("webgltest [webgl_test_stencilFuncError] stencilFuncSeparate(mask = undefined) ");
2881            gl.stencilFuncSeparate(gl.FRONT, gl.LESS, 1, undefined);
2882            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2883            gl.stencilFunc(gl.LESS, 0, defVal);
2884            if (!isEnable) {
2885                gl.disable(gl.STENCIL_TEST);
2886            }
2887            done();
2888        })
2889
2890        /**
2891         * WebGL API 的 WebGLRenderingContext.stencilMask() 方法控制启用和禁用模板平面中单个位的正面和背面写入。
2892         */
2893
2894        /**
2895         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0166
2896         * @tc.name webgl_test_stencilMask
2897         * @tc.desc Test stencilMask.
2898         */
2899        it('webgl_test_stencilMask', 0, async function (done) {
2900            console.info("webgltest [webgl_test_stencilMask] stencilMask");
2901            let srcStencilWriteMask = gl.getParameter(gl.STENCIL_WRITEMASK);
2902            let srcStencilBackWriteMask = gl.getParameter(gl.STENCIL_BACK_WRITEMASK);
2903            console.info("webgltest gl.stencilMask(110111);");
2904            gl.stencilMask(110111);
2905            console.info("webgltest STENCIL_WRITEMASK", gl.getParameter(gl.STENCIL_WRITEMASK));
2906            console.info("webgltest STENCIL_BACK_WRITEMASK", gl.getParameter(gl.STENCIL_BACK_WRITEMASK));
2907            console.info("webgltest STENCIL_BITS", gl.getParameter(gl.STENCIL_BITS));
2908            expect(gl.getParameter(gl.STENCIL_WRITEMASK)).assertEqual(110111);
2909            expect(gl.getParameter(gl.STENCIL_BACK_WRITEMASK)).assertEqual(110111);
2910            gl.stencilMask(srcStencilWriteMask);
2911            done();
2912        })
2913
2914
2915        /**
2916         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0167
2917         * @tc.name webgl_test_stencilMask_Error
2918         * @tc.desc Test stencilMask.
2919         */
2920        it('webgl_test_stencilMask_Error', 0, async function (done) {
2921            console.info("webgltest [webgl_test_stencilMaskError] stencilMask");
2922            let srcStencilWriteMask = gl.getParameter(gl.STENCIL_WRITEMASK);
2923            console.info("webgltest [webgl_test_stencilFuncError] stencilMask(undefined) ");
2924            gl.stencilMask(undefined);
2925            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2926            console.info("webgltest [webgl_test_stencilFuncError] stencilMask(null) ");
2927            gl.stencilMask(null);
2928            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2929            console.info("webgltest [webgl_test_stencilFuncError] stencilMask(-1) ");
2930            gl.stencilMask(-1);
2931            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2932            gl.stencilMask(srcStencilWriteMask);
2933            done();
2934        })
2935
2936        /**
2937         * WebGL API 的 WebGLRenderingContext.stencilMaskSepar() 方法控制启用和禁用模板平面中单个位的正面和/或背面写入。
2938         */
2939
2940        /**
2941         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0168
2942         * @tc.name webgl_test_stencilMaskSeparate
2943         * @tc.desc Test stencilMaskSeparate.
2944         */
2945        it('webgl_test_stencilMaskSeparate', 0, async function (done) {
2946            console.info("webgltest [webgl_test_stencilMaskSeparate] stencilMaskSeparate");
2947            let srcStencilWriteMask = gl.getParameter(gl.STENCIL_WRITEMASK);
2948            let srcStencilBackWriteMask = gl.getParameter(gl.STENCIL_BACK_WRITEMASK);
2949            console.info("webgltest gl.stencilMaskSeparate(gl.FRONT, 110101);");
2950            gl.stencilMaskSeparate(gl.FRONT, 110101);
2951            console.info("webgltest gl.stencilMaskSeparate(gl.BACK, 110111);");
2952            gl.stencilMaskSeparate(gl.BACK, 110111);
2953            let stencilWriteMask = gl.getParameter(gl.STENCIL_WRITEMASK);
2954            let stencilBackWriteMask = gl.getParameter(gl.STENCIL_BACK_WRITEMASK);
2955            let stencilBits = gl.getParameter(gl.STENCIL_BITS);
2956            console.info("webgltest STENCIL_WRITEMASK", stencilWriteMask);
2957            console.info("webgltest STENCIL_BACK_WRITEMASK", stencilBackWriteMask);
2958            console.info("webgltest STENCIL_BITS", stencilBits);
2959            expect(stencilWriteMask).assertEqual(110101);
2960            expect(stencilBackWriteMask).assertEqual(110111);
2961            gl.stencilMaskSeparate(gl.FRONT, srcStencilWriteMask);
2962            gl.stencilMaskSeparate(gl.BACK, srcStencilBackWriteMask);
2963            done();
2964        })
2965
2966
2967        /**
2968         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0169
2969         * @tc.name webgl_test_stencilMaskSeparate_Error
2970         * @tc.desc Test stencilMaskSeparate.
2971         */
2972        it('webgl_test_stencilMaskSeparate_Error', 0, async function (done) {
2973            console.info("webgltest [webgl_test_stencilMaskSeparateError] stencilMaskSeparate");
2974            let srcStencilWriteMask = gl.getParameter(gl.STENCIL_WRITEMASK);
2975            let srcStencilBackWriteMask = gl.getParameter(gl.STENCIL_BACK_WRITEMASK);
2976            console.info("webgltest [webgl_test_stencilFuncError] stencilMaskSeparate(face = undefined) ");
2977            gl.stencilMaskSeparate(undefined, 110101);
2978            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
2979            console.info("webgltest [webgl_test_stencilFuncError] stencilMaskSeparate(face = FRONT,mask = undefined) ");
2980            gl.stencilMaskSeparate(gl.FRONT, undefined);
2981            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2982            console.info("webgltest [webgl_test_stencilFuncError] stencilMaskSeparate(face = BACK,mask = undefined) ");
2983            gl.stencilMaskSeparate(gl.BACK, undefined);
2984            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
2985            gl.stencilMaskSeparate(gl.FRONT, srcStencilWriteMask);
2986            gl.stencilMaskSeparate(gl.BACK, srcStencilBackWriteMask);
2987            done();
2988        })
2989
2990        /**
2991         * stencilOp(fail, zfail, zpass) 方法设置正面和背面的模板测试操作。
2992         */
2993
2994        /**
2995         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0170
2996         * @tc.name webgl_test_stencilOp
2997         * @tc.desc Test stencilOp.
2998         */
2999        it('webgl_test_stencilOp', 0, async function (done) {
3000            console.info("webgltest [webgl_test_stencilOp] stencilOp");
3001            let isEnable = gl.isEnabled(gl.STENCIL_TEST);
3002            gl.enable(gl.STENCIL_TEST);
3003            let getInfo = () => {
3004                let fail = gl.getParameter(gl.STENCIL_FAIL);
3005                let passDepthFail = gl.getParameter(gl.STENCIL_PASS_DEPTH_FAIL);
3006                let passDepthPass = gl.getParameter(gl.STENCIL_PASS_DEPTH_PASS);
3007                let backFail = gl.getParameter(gl.STENCIL_BACK_FAIL);
3008                let backPassDepthFail = gl.getParameter(gl.STENCIL_BACK_PASS_DEPTH_FAIL);
3009                let backPassDepthPass = gl.getParameter(gl.STENCIL_BACK_PASS_DEPTH_PASS);
3010                let bits = gl.getParameter(gl.STENCIL_BITS);
3011                console.info("webgltest STENCIL_FAIL", fail);
3012                console.info("webgltest STENCIL_PASS_DEPTH_FAIL", passDepthFail);
3013                console.info("webgltest STENCIL_PASS_DEPTH_PASS", passDepthPass);
3014                console.info("webgltest STENCIL_BACK_FAIL", backFail);
3015                console.info("webgltest STENCIL_BACK_PASS_DEPTH_FAIL", backPassDepthFail);
3016                console.info("webgltest STENCIL_BACK_PASS_DEPTH_PASS", backPassDepthPass);
3017                console.info("webgltest STENCIL_BITS", bits);
3018                return {
3019                    fail, passDepthPass, passDepthFail,
3020                    backFail, backPassDepthPass, backPassDepthFail,
3021                    bits
3022                }
3023            }
3024            let info = getInfo();
3025            expect(info.fail).assertEqual(gl.KEEP);
3026            expect(info.passDepthFail).assertEqual(gl.KEEP);
3027            expect(info.passDepthPass).assertEqual(gl.KEEP);
3028            console.info("webgltest gl.stencilOp(gl.INCR, gl.DECR, gl.INVERT);", gl.INCR, gl.DECR, gl.INVERT);
3029            gl.stencilOp(gl.INCR, gl.DECR, gl.INVERT);
3030            info = getInfo();
3031            expect(info.fail).assertEqual(gl.INCR);
3032            expect(info.passDepthFail).assertEqual(gl.DECR);
3033            expect(info.passDepthPass).assertEqual(gl.INVERT);
3034            gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);
3035            if (!isEnable) {
3036                gl.disable(gl.STENCIL_TEST);
3037            }
3038            done();
3039        })
3040
3041
3042        /**
3043         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0171
3044         * @tc.name webgl_test_stencilOp_Error
3045         * @tc.desc Test stencilOp.
3046         */
3047        it('webgl_test_stencilOp_Error', 0, async function (done) {
3048            console.info("webgltest [webgl_test_stencilOpError] stencilOp");
3049            let isEnable = gl.isEnabled(gl.STENCIL_TEST);
3050            gl.enable(gl.STENCIL_TEST);
3051            console.info("webgltest [webgl_test_stencilFuncError] stencilOp(fail = undefined) ");
3052            gl.stencilOp(undefined, gl.KEEP, gl.KEEP);
3053            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
3054            console.info("webgltest [webgl_test_stencilFuncError] stencilOp(zfail = undefined) ");
3055            gl.stencilOp(gl.KEEP, undefined, gl.KEEP);
3056            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
3057            console.info("webgltest [webgl_test_stencilFuncError] stencilOp(zpass = undefined) ");
3058            gl.stencilOp(gl.KEEP, gl.KEEP, undefined);
3059            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
3060            gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);
3061            if (!isEnable) {
3062                gl.disable(gl.STENCIL_TEST);
3063            }
3064            done();
3065        })
3066
3067        /**
3068         * stencilOpSeparate(face, fail, zfail, zpass)
3069         */
3070
3071        /**
3072         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0172
3073         * @tc.name webgl_test_stencilOpSeparate
3074         * @tc.desc Test stencilOpSeparate.
3075         */
3076        it('webgl_test_stencilOpSeparate', 0, async function (done) {
3077            console.info("webgltest [webgl_test_stencilOpSeparate] stencilOpSeparate");
3078            let isEnable = gl.isEnabled(gl.STENCIL_TEST);
3079            gl.enable(gl.STENCIL_TEST);
3080            let getInfo = () => {
3081                let fail = gl.getParameter(gl.STENCIL_FAIL);
3082                let passDepthFail = gl.getParameter(gl.STENCIL_PASS_DEPTH_FAIL);
3083                let passDepthPass = gl.getParameter(gl.STENCIL_PASS_DEPTH_PASS);
3084                let backFail = gl.getParameter(gl.STENCIL_BACK_FAIL);
3085                let backPassDepthFail = gl.getParameter(gl.STENCIL_BACK_PASS_DEPTH_FAIL);
3086                let backPassDepthPass = gl.getParameter(gl.STENCIL_BACK_PASS_DEPTH_PASS);
3087                let bits = gl.getParameter(gl.STENCIL_BITS);
3088                console.info("webgltest STENCIL_FAIL", fail);
3089                console.info("webgltest STENCIL_PASS_DEPTH_FAIL", passDepthFail);
3090                console.info("webgltest STENCIL_PASS_DEPTH_PASS", passDepthPass);
3091                console.info("webgltest STENCIL_BACK_FAIL", backFail);
3092                console.info("webgltest STENCIL_BACK_PASS_DEPTH_FAIL", backPassDepthFail);
3093                console.info("webgltest STENCIL_BACK_PASS_DEPTH_PASS", backPassDepthPass);
3094                console.info("webgltest STENCIL_BITS", bits);
3095                return {
3096                    fail, passDepthPass, passDepthFail,
3097                    backFail, backPassDepthPass, backPassDepthFail,
3098                    bits
3099                }
3100            }
3101            let info = getInfo();
3102            expect(info.fail).assertEqual(gl.KEEP);
3103            expect(info.passDepthFail).assertEqual(gl.KEEP);
3104            expect(info.passDepthPass).assertEqual(gl.KEEP);
3105            expect(info.backFail).assertEqual(gl.KEEP);
3106            expect(info.backPassDepthFail).assertEqual(gl.KEEP);
3107            expect(info.backPassDepthPass).assertEqual(gl.KEEP);
3108            console.info("webgltest gl.stencilOpSeparate(gl.FRONT,gl.INCR, gl.DECR, gl.INVERT);", gl.FRONT, gl.INCR, gl.DECR, gl.INVERT);
3109            console.info("webgltest gl.stencilOpSeparate(gl.BACK,gl.KEEP, gl.DECR, gl.INVERT);", gl.BACK, gl.KEEP, gl.DECR, gl.INVERT);
3110            gl.stencilOpSeparate(gl.FRONT, gl.INCR, gl.DECR, gl.INVERT);
3111            gl.stencilOpSeparate(gl.BACK, gl.KEEP, gl.DECR, gl.INVERT);
3112            info = getInfo();
3113            expect(info.fail).assertEqual(gl.INCR);
3114            expect(info.passDepthFail).assertEqual(gl.DECR);
3115            expect(info.passDepthPass).assertEqual(gl.INVERT);
3116            expect(info.backFail).assertEqual(gl.KEEP);
3117            expect(info.backPassDepthFail).assertEqual(gl.DECR);
3118            expect(info.backPassDepthPass).assertEqual(gl.INVERT);
3119            gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);
3120            if (!isEnable) {
3121                gl.disable(gl.STENCIL_TEST);
3122            }
3123            done();
3124        })
3125
3126
3127        /**
3128         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0173
3129         * @tc.name webgl_test_stencilOpSeparate_Error
3130         * @tc.desc Test stencilOpSeparate.
3131         */
3132        it('webgl_test_stencilOpSeparate_Error', 0, async function (done) {
3133            console.info("webgltest [webgl_test_stencilOpSeparateError] stencilOpSeparate");
3134            let isEnable = gl.isEnabled(gl.STENCIL_TEST);
3135            gl.enable(gl.STENCIL_TEST);
3136            console.info("webgltest [webgl_test_stencilOpSeparateError] stencilOpSeparate(face = undefined) ");
3137            gl.stencilOpSeparate(undefined, gl.KEEP, gl.DECR, gl.INVERT);
3138            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
3139            console.info("webgltest [webgl_test_stencilOpSeparateError] stencilOpSeparate(fail = undefined) ");
3140            gl.stencilOpSeparate(gl.BACK, undefined, gl.DECR, gl.INVERT);
3141            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
3142            console.info("webgltest [webgl_test_stencilOpSeparateError] stencilOpSeparate(zfail = undefined) ");
3143            gl.stencilOpSeparate(gl.BACK, gl.KEEP, undefined, gl.INVERT);
3144            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
3145            console.info("webgltest [webgl_test_stencilOpSeparateError] stencilOpSeparate(zpss = undefined) ");
3146            gl.stencilOpSeparate(gl.BACK, gl.KEEP, gl.DECR, undefined);
3147            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
3148            gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);
3149            if (!isEnable) {
3150                gl.disable(gl.STENCIL_TEST);
3151            }
3152            done();
3153        })
3154
3155        /**
3156         * WebGL API 的 WebGLRenderingContext.scissor() 方法设置了一个剪刀框,将绘图限制为指定的矩形。
3157         */
3158
3159        /**
3160         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0174
3161         * @tc.name webgl_test_scissor
3162         * @tc.desc Test scissor.
3163         */
3164        it('webgl_test_scissor', 0, async function (done) {
3165            console.info("webgltest [webgl_test_scissor] scissor");
3166            let isEnable = gl.isEnabled(gl.SCISSOR_TEST);
3167            let src = gl.getParameter(gl.SCISSOR_BOX);
3168            console.info("webgltest default ", src);
3169            gl.enable(gl.SCISSOR_TEST);
3170            console.info("webgltest gl.scissor(0, 0, 100, 100);");
3171            gl.scissor(0, 0, 100, 100);
3172            let box = gl.getParameter(gl.SCISSOR_BOX);
3173            console.info("webgltest box", box);
3174            expect(box[0]).assertEqual(0);
3175            expect(box[1]).assertEqual(0);
3176            expect(box[2]).assertEqual(100);
3177            expect(box[3]).assertEqual(100);
3178            gl.scissor(src[0], src[1], src[2], src[3]);
3179            if (!isEnable) {
3180                gl.disable(gl.SCISSOR_TEST);
3181            }
3182            done();
3183        })
3184
3185
3186        /**
3187         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0175
3188         * @tc.name webgl_test_scissor_Error
3189         * @tc.desc Test scissor.
3190         */
3191        it('webgl_test_scissor_Error', 0, async function (done) {
3192            console.info("webgltest [webgl_test_scissorError] scissor");
3193            let isEnable = gl.isEnabled(gl.SCISSOR_TEST);
3194            let src = gl.getParameter(gl.SCISSOR_BOX);
3195            console.info("webgltest default ", src);
3196            gl.enable(gl.SCISSOR_TEST);
3197            console.info("webgltest [webgl_test_scissorError] scissor(x = undefined) ");
3198            gl.scissor(undefined, 0, 100, 100);
3199            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
3200            console.info("webgltest [webgl_test_scissorError] scissor(y = undefined) ");
3201            gl.scissor(0, undefined, 100, 100);
3202            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
3203            console.info("webgltest [webgl_test_scissorError] scissor(width = undefined) ");
3204            gl.scissor(0, 0, undefined, 100);
3205            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
3206            console.info("webgltest [webgl_test_scissorError] scissor(height = undefined) ");
3207            gl.scissor(0, 0, 100, undefined);
3208            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
3209            if (!isEnable) {
3210                gl.disable(gl.SCISSOR_TEST);
3211            }
3212            done();
3213        })
3214
3215        /**
3216         * WebGL API 的 WebGLRenderingContext.polygonOffset()
3217         * 方法指定用于计算深度值的比例因子和单位。
3218         */
3219
3220        /**
3221         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0176
3222         * @tc.name webgl_test_polygonOffset
3223         * @tc.desc Test polygonOffset.
3224         */
3225        it('webgl_test_polygonOffset', 0, async function (done) {
3226            console.info("webgltest [polygonOffset] polygonOffset");
3227            let isEnable = gl.isEnabled(gl.POLYGON_OFFSET_FILL);
3228            gl.enable(gl.POLYGON_OFFSET_FILL);
3229            gl.polygonOffset(0, 0);
3230            let srcFactor = gl.getParameter(gl.POLYGON_OFFSET_FACTOR);
3231            let srcUnits = gl.getParameter(gl.POLYGON_OFFSET_UNITS);
3232            expect(srcFactor).assertEqual(0);
3233            expect(srcUnits).assertEqual(0);
3234            console.info("webgltest default ", srcFactor, srcUnits);
3235            console.info("webgltest gl.polygonOffset(1, 1);");
3236            gl.polygonOffset(1, 1);
3237            let factor = gl.getParameter(gl.POLYGON_OFFSET_FACTOR);
3238            let units = gl.getParameter(gl.POLYGON_OFFSET_UNITS);
3239            console.info("webgltest factor", factor);
3240            console.info("webgltest units", units);
3241            expect(factor).assertEqual(1);
3242            expect(units).assertEqual(1);
3243            gl.polygonOffset(srcFactor, srcUnits);
3244            if (!isEnable) {
3245                gl.disable(gl.POLYGON_OFFSET_FILL);
3246            }
3247            done();
3248        })
3249
3250
3251        /**
3252         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0177
3253         * @tc.name webgl_test_polygonOffset_Error
3254         * @tc.desc Test polygonOffset.
3255         */
3256        it('webgl_test_polygonOffset_Error', 0, async function (done) {
3257            console.info("webgltest [webgl_test_polygonOffsetError] polygonOffset");
3258            let isEnable = gl.isEnabled(gl.POLYGON_OFFSET_FILL);
3259            gl.enable(gl.POLYGON_OFFSET_FILL);
3260            gl.polygonOffset(0, 0);
3261            let srcFactor = gl.getParameter(gl.POLYGON_OFFSET_FACTOR);
3262            let srcUnits = gl.getParameter(gl.POLYGON_OFFSET_UNITS);
3263            console.info("webgltest [webgl_test_polygonOffsetError] polygonOffset(factor = undefined) ");
3264            gl.polygonOffset(undefined, 1);
3265            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
3266            console.info("webgltest [webgl_test_polygonOffsetError] polygonOffset(units = undefined) ");
3267            gl.polygonOffset(1, undefined);
3268            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
3269            gl.polygonOffset(srcFactor, srcUnits);
3270            if (!isEnable) {
3271                gl.disable(gl.POLYGON_OFFSET_FILL);
3272            }
3273            done();
3274        })
3275
3276        /**
3277         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0178
3278         * @tc.name webgl_test_sampleCoverage
3279         * @tc.desc Test sampleCoverage.
3280         */
3281        it('webgl_test_sampleCoverage', 0, async function (done) {
3282            console.info("webgltest [sampleCoverage] sampleCoverage");
3283            let isEnable = gl.isEnabled(gl.SAMPLE_COVERAGE);
3284            gl.enable(gl.SAMPLE_COVERAGE);
3285            let srcValue = gl.getParameter(gl.SAMPLE_COVERAGE_VALUE);
3286            let srcInvert = gl.getParameter(gl.SAMPLE_COVERAGE_INVERT);
3287            expect(srcValue).assertEqual(1);
3288            expect(srcInvert).assertEqual(false);
3289            console.info("webgltest default ", srcValue, srcInvert);
3290            console.info("webgltest gl.sampleCoverage(0.5, true);");
3291            gl.sampleCoverage(0.5, true);
3292            let value = gl.getParameter(gl.SAMPLE_COVERAGE_VALUE);
3293            let invert = gl.getParameter(gl.SAMPLE_COVERAGE_INVERT);
3294            console.info("webgltest value", value);
3295            console.info("webgltest invert", invert);
3296            expect(value).assertEqual(0.5);
3297            expect(invert).assertEqual(true);
3298            gl.sampleCoverage(srcValue, srcInvert);
3299            if (!isEnable) {
3300                gl.disable(gl.SAMPLE_COVERAGE);
3301            }
3302            done();
3303        })
3304
3305
3306        /**
3307         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0179
3308         * @tc.name webgl_test_sampleCoverage_Error
3309         * @tc.desc Test sampleCoverage.
3310         */
3311        it('webgl_test_sampleCoverage_Error', 0, async function (done) {
3312            console.info("webgltest [webgl_test_sampleCoverageError] sampleCoverage");
3313            let isEnable = gl.isEnabled(gl.SAMPLE_COVERAGE);
3314            gl.enable(gl.SAMPLE_COVERAGE);
3315            let srcValue = gl.getParameter(gl.SAMPLE_COVERAGE_VALUE);
3316            let srcInvert = gl.getParameter(gl.SAMPLE_COVERAGE_INVERT);
3317            console.info("webgltest [webgl_test_sampleCoverageError] sampleCoverage(value = undefined) ");
3318            gl.sampleCoverage(undefined, true);
3319            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
3320            console.info("webgltest [webgl_test_sampleCoverageError] sampleCoverage(value = -1) ");
3321            gl.sampleCoverage(-1, true);
3322            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
3323            console.info("webgltest [webgl_test_sampleCoverageError] sampleCoverage(invert = undefined) ");
3324            gl.sampleCoverage(0.5, undefined);
3325            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
3326            console.info("webgltest [webgl_test_sampleCoverageError] sampleCoverage(value = -1,invert = undefined) ");
3327            gl.sampleCoverage(-1, undefined);
3328            expect(checkError(gl)).assertEqual(gl.NO_ERROR)
3329            gl.sampleCoverage(srcValue, srcInvert);
3330            if (!isEnable) {
3331                gl.disable(gl.SAMPLE_COVERAGE);
3332            }
3333            done();
3334        })
3335
3336        /**
3337         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0180
3338         * @tc.name webgl_test_pixelStorei
3339         * @tc.desc Test pixelStorei.
3340         */
3341        it('webgl_test_pixelStorei', 0, async function (done) {
3342            console.info("webgltest [pixelStorei] pixelStorei");
3343            let srcUnpack = gl.getParameter(gl.UNPACK_ALIGNMENT);
3344            let srcPack = gl.getParameter(gl.PACK_ALIGNMENT);
3345            console.info("webgltest default ", srcUnpack, srcPack);
3346            console.info("webgltest gl.pixelStorei(gl.UNPACK_ALIGNMENT, 2);");
3347            gl.pixelStorei(gl.UNPACK_ALIGNMENT, 2);
3348            console.info("webgltest gl.pixelStorei(gl.PACK_ALIGNMENT, 4);");
3349            gl.pixelStorei(gl.PACK_ALIGNMENT, 4);
3350            let unpack = gl.getParameter(gl.UNPACK_ALIGNMENT);
3351            let pack = gl.getParameter(gl.PACK_ALIGNMENT);
3352            console.info("webgltest unpack", unpack);
3353            console.info("webgltest pack", pack);
3354            expect(unpack).assertEqual(2);
3355            expect(pack).assertEqual(4);
3356            gl.pixelStorei(gl.UNPACK_ALIGNMENT, srcUnpack);
3357            gl.pixelStorei(gl.PACK_ALIGNMENT, srcPack);
3358            done();
3359        })
3360
3361
3362        /**
3363         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_COMMON_0181
3364         * @tc.name webgl_test_pixelStorei_Error
3365         * @tc.desc Test pixelStorei.
3366         */
3367        it('webgl_test_pixelStorei_Error', 0, async function (done) {
3368            console.info("webgltest [webgl_test_pixelStoreiError] pixelStorei");
3369            let srcUnpack = gl.getParameter(gl.UNPACK_ALIGNMENT);
3370            let srcPack = gl.getParameter(gl.PACK_ALIGNMENT);
3371            console.info("webgltest [webgl_test_pixelStoreiError] pixelStorei(pname = undefined) ");
3372            gl.pixelStorei(undefined, 2);
3373            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
3374            console.info("webgltest [webgl_test_pixelStoreiError] pixelStorei(param = undefined) ");
3375            gl.pixelStorei(gl.UNPACK_ALIGNMENT, undefined);
3376            expect(checkError(gl)).assertEqual(gl.INVALID_VALUE)
3377            console.info("webgltest [webgl_test_pixelStoreiError] pixelStorei(pname = undefined,param = undefined) ");
3378            gl.pixelStorei(undefined, undefined);
3379            expect(checkError(gl)).assertEqual(gl.INVALID_ENUM)
3380            gl.pixelStorei(gl.UNPACK_ALIGNMENT, srcUnpack);
3381            gl.pixelStorei(gl.PACK_ALIGNMENT, srcPack);
3382            done();
3383        })
3384
3385    })
3386}
3387