• 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, TestType, Level, Size } from '@ohos/hypium';
18
19import {checkError, createProgram, getColorUint8Array} from './WebGL1';
20
21
22export default function webgl1_buffer() {
23
24	describe('webgl1_buffer', 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        /**
51         * 创建并初始化一个用于储存顶点数据或着色数据的WebGLBuffer对象
52         */
53
54        /**
55         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0001
56         * @tc.name webgl_test_createBuffer
57         * @tc.desc Test createBuffer.
58         */
59        it('webgl_test_createBuffer', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
60            console.info("webgltest [webgl_test_createBuffer] createBuffer");
61            let buffer = gl.createBuffer();
62            console.info("webgltest ", buffer);
63            expect(buffer != null).assertTrue();
64            console.info("webgltest isBuffer:", gl.isBuffer(buffer));
65            expect(gl.isBuffer(buffer) == false).assertTrue();
66            console.info("webgltest gl.bindBuffer(gl.ARRAY_BUFFER, buffer);");
67            gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
68            console.info("webgltest isBuffer:", gl.isBuffer(buffer));
69            expect(gl.isBuffer(buffer) == true).assertTrue();
70            gl.deleteBuffer(buffer);
71            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
72            done();
73        })
74
75        /**
76         * 判定 给定的WebGLBuffer是否有效
77         */
78
79        /**
80         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0002
81         * @tc.name webgl_test_isBuffer
82         * @tc.desc Test isBuffer.
83         */
84        it('webgl_test_isBuffer', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
85            console.info("webgltest [webgl_test_isBuffer] isBuffer");
86            let buffer = gl.createBuffer();
87            console.info("webgltest ", buffer);
88            expect(buffer != null).assertTrue();
89            console.info("webgltest isBuffer:", gl.isBuffer(buffer));
90            expect(gl.isBuffer(buffer) == false).assertTrue();
91            console.info("webgltest gl.bindBuffer(gl.ARRAY_BUFFER, buffer);");
92            gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
93            console.info("webgltest isBuffer:", gl.isBuffer(buffer));
94            expect(gl.isBuffer(buffer) == true).assertTrue();
95            gl.deleteBuffer(buffer);
96            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
97            done();
98        })
99
100
101        /**
102         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0003
103         * @tc.name webgl_test_isBuffer_1
104         * @tc.desc Test isBuffer.
105         */
106        it('webgl_test_isBuffer_1', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
107            console.info("webgltest [webgl_test_isBuffer_1] isBuffer");
108            gl.isBuffer(null);
109            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
110            done();
111        })
112
113
114        /**
115         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0004
116         * @tc.name webgl_test_isBuffer_2
117         * @tc.desc Test isBuffer.
118         */
119        it('webgl_test_isBuffer_2', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
120            console.info("webgltest [webgl_test_isBuffer_2] isBuffer");
121            gl.isBuffer(undefined);
122            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
123            done();
124        })
125
126
127        /**
128         * 将给定的 WebGLBuffer 绑定到目标
129         */
130        function bindBuffer(callback, finish) {
131            let buffer = gl.createBuffer();
132            expect(buffer != null).assertTrue();
133            callback(buffer);
134            finish(gl.isBuffer(buffer));
135            gl.deleteBuffer(buffer);
136        }
137
138
139        /**
140         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0005
141         * @tc.name webgl_test_bindBuffer
142         * @tc.desc Test bindBuffer.
143         */
144        it('webgl_test_bindBuffer', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
145            console.info("webgltest [webgl_test_bindBuffer] bindBuffer");
146            let buffer = gl.createBuffer();
147            console.info("webgltest ", buffer);
148            expect(buffer != null).assertTrue();
149            console.info("webgltest isBuffer:", gl.isBuffer(buffer));
150            expect(gl.isBuffer(buffer)).assertFalse();
151            console.info("webgltest bindBuffer()");
152            gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
153            expect(gl.isBuffer(buffer)).assertTrue();
154            console.info("webgltest isBuffer:", gl.isBuffer(buffer));
155            gl.deleteBuffer(buffer);
156            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
157            done();
158        })
159
160
161        /**
162         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0006
163         * @tc.name webgl_test_bindBuffer_1
164         * @tc.desc Test bindBuffer.
165         */
166        it('webgl_test_bindBuffer_1', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
167            console.info("webgltest [webgl_test_bindBuffer_1] bindBuffer");
168            bindBuffer((buffer) => {
169                gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
170                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
171            }, (isBind) => {
172                expect(isBind).assertEqual(true);
173                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
174            });
175            done();
176        })
177
178
179        /**
180         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0007
181         * @tc.name webgl_test_bindBuffer_2
182         * @tc.desc Test bindBuffer.
183         */
184        it('webgl_test_bindBuffer_2', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
185            console.info("webgltest [webgl_test_bindBuffer_2] bindBuffer");
186            bindBuffer((buffer) => {
187                gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);
188                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
189            }, (isBind) => {
190                expect(isBind).assertEqual(true);
191                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
192            });
193            done();
194        })
195
196
197        /**
198         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0008
199         * @tc.name webgl_test_bindBuffer_3
200         * @tc.desc Test bindBuffer.
201         */
202        it('webgl_test_bindBuffer_3', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
203            console.info("webgltest [webgl_test_bindBuffer_3] bindBuffer");
204            bindBuffer((buffer) => {
205                gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);
206                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
207            }, (isBind) => {
208                expect(isBind).assertEqual(false);
209                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
210            });
211            done();
212        })
213
214
215        /**
216         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0009
217         * @tc.name webgl_test_bindBuffer_4
218         * @tc.desc Test bindBuffer.
219         */
220        it('webgl_test_bindBuffer_4', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
221            console.info("webgltest [webgl_test_bindBuffer_4] bindBuffer");
222            bindBuffer((buffer) => {
223                gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, undefined);
224                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
225            }, (isBind) => {
226                expect(isBind).assertEqual(false);
227                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
228            });
229            done();
230        })
231
232        /**
233         * 删除给定的 WebGLBuffer 对象
234         */
235        function deleteBuffer(callback, finish) {
236            let buffer = gl.createBuffer();
237            expect(buffer != null).assertTrue();
238            expect(gl.isBuffer(buffer)).assertFalse();
239            callback(buffer);
240            finish(gl.isBuffer(buffer));
241        }
242
243        /**
244         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0010
245         * @tc.name webgl_test_deleteBuffer
246         * @tc.desc Test deleteBuffer.
247         */
248        it('webgl_test_deleteBuffer', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
249            console.info("webgltest [webgl_test_deleteBuffer] deleteBuffer");
250            let buffer = gl.createBuffer();
251            console.info("webgltest ", buffer);
252            expect(buffer != null).assertTrue();
253            console.info("webgltest isBuffer:", gl.isBuffer(buffer));
254            expect(gl.isBuffer(buffer)).assertFalse();
255            console.info("webgltest bindBuffer()");
256            gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
257            expect(gl.isBuffer(buffer)).assertTrue();
258            console.info("webgltest isBuffer:", gl.isBuffer(buffer));
259            console.info("webgltest deleteBuffer()");
260            gl.deleteBuffer(buffer);
261            expect(gl.isBuffer(buffer)).assertFalse();
262            console.info("webgltest isBuffer:", gl.isBuffer(buffer));
263            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
264            done();
265        })
266
267
268        /**
269         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0011
270         * @tc.name webgl_test_deleteBuffer_1
271         * @tc.desc Test deleteBuffer.
272         */
273        it('webgl_test_deleteBuffer_1', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
274            console.info("webgltest [webgl_test_deleteBuffer_1] deleteBuffer");
275            deleteBuffer((buffer) => {
276                gl.deleteBuffer(buffer);
277                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
278            }, (isDelete) => {
279                expect(isDelete).assertEqual(false);
280                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
281            });
282            done();
283        })
284
285
286        /**
287         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0012
288         * @tc.name webgl_test_deleteBuffer_2
289         * @tc.desc Test deleteBuffer.
290         */
291        it('webgl_test_deleteBuffer_2', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
292            console.info("webgltest [webgl_test_deleteBuffer_2] deleteBuffer");
293            deleteBuffer((buffer) => {
294                gl.deleteBuffer(null);
295                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
296            }, (isDelete) => {
297                expect(isDelete).assertEqual(false);
298                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
299            });
300            done();
301        })
302
303
304        /**
305         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0013
306         * @tc.name webgl_test_deleteBuffer_3
307         * @tc.desc Test deleteBuffer.
308         */
309        it('webgl_test_deleteBuffer_3', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
310            console.info("webgltest [webgl_test_deleteBuffer_3] deleteBuffer");
311            deleteBuffer((buffer) => {
312                gl.deleteBuffer(undefined);
313                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
314            }, (isDelete) => {
315                expect(isDelete).assertEqual(false);
316                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
317            });
318            done();
319        })
320
321        /**
322         * 创建并初始化了 Buffer 对象的数据存储区
323         */
324        function bufferData(callback, finish) {
325            let arr = new Float32Array([
326                0.0, 0.5, -0.5, 0.5, 1.0, 0.5,
327            ]);
328            let buffer = gl.createBuffer();
329            gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
330            callback(arr);
331            gl.bufferData(gl.ARRAY_BUFFER, arr, gl.STATIC_DRAW);
332            let bufferSize = gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE);
333            finish(bufferSize, arr);
334            gl.deleteBuffer(buffer);
335        }
336
337        /**
338         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0014
339         * @tc.name webgl_test_bufferData
340         * @tc.desc Test bufferData.
341         */
342        it('webgl_test_bufferData', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
343            console.info("webgltest [webgl_test_bufferData] bufferData - TypedArray");
344            let arr = new Float32Array([
345                0.0, 0.5, -0.5, 0.5, 1.0, 0.5,
346            ]);
347            console.info("webgltest arr:", arr);
348            console.info("webgltest arr.BYTES_PER_ELEMENT:", arr.BYTES_PER_ELEMENT);
349            let buffer = gl.createBuffer();
350            gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
351            console.info("webgltest gl.bufferData(gl.ARRAY_BUFFER, arr, gl.STATIC_DRAW);")
352            gl.bufferData(gl.ARRAY_BUFFER, arr, gl.STATIC_DRAW);
353            let bufferSize = gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE);
354            console.info("webgltest bufferSize:", bufferSize);
355            expect(bufferSize).assertEqual(arr.length * arr.BYTES_PER_ELEMENT);
356            gl.deleteBuffer(buffer);
357            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
358            done();
359        })
360
361        /**
362         * 创建并初始化了 Buffer 对象的数据存储区
363         */
364
365        /**
366         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0015
367         * @tc.name webgl_test_bufferData_1
368         * @tc.desc Test bufferData.
369         */
370        it('webgl_test_bufferData_1', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
371            console.info("webgltest [webgl_test_bufferData_1] bufferData - ArrayBuffer");
372            let arr = new Float32Array([
373                0.0, 0.5, -0.5, 0.5, 1.0, 0.5,
374            ]);
375            console.info("webgltest arr:", arr);
376            console.info("webgltest arr.BYTES_PER_ELEMENT:", arr.BYTES_PER_ELEMENT);
377            let buffer = gl.createBuffer();
378            gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
379            console.info("webgltest gl.bufferData(gl.ARRAY_BUFFER, arr, gl.STATIC_DRAW);")
380            gl.bufferData(gl.ARRAY_BUFFER, arr.buffer, gl.STATIC_DRAW);
381            let bufferSize = gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE);
382            console.info("webgltest bufferSize:", bufferSize);
383            expect(bufferSize).assertEqual(arr.length * arr.BYTES_PER_ELEMENT);
384            gl.deleteBuffer(buffer);
385            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
386            done();
387        })
388
389
390        /**
391         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0016
392         * @tc.name webgl_test_bufferData_2
393         * @tc.desc Test bufferData.
394         */
395        it('webgl_test_bufferData_2', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
396            console.info("webgltest [webgl_test_bufferData_2] bufferData");
397            bufferData((arr) => {
398                gl.bufferData(gl.ARRAY_BUFFER, arr, gl.STATIC_DRAW);
399                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
400            }, (bufferSize, arr) => {
401                expect(bufferSize).assertEqual(arr.length * arr.BYTES_PER_ELEMENT);
402                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
403            });
404            done();
405        })
406
407
408        /**
409         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0017
410         * @tc.name webgl_test_bufferData_3
411         * @tc.desc Test bufferData.
412         */
413        it('webgl_test_bufferData_3', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
414            console.info("webgltest [webgl_test_bufferData_3] bufferData");
415            bufferData((arr) => {
416                gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, arr, gl.STATIC_DRAW);
417                expect(checkError(gl)).assertEqual(gl.INVALID_OPERATION);
418            }, (bufferSize, arr) => {
419                expect(bufferSize).assertEqual(arr.length * arr.BYTES_PER_ELEMENT);
420                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
421            });
422            done();
423        })
424
425
426        /**
427         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0018
428         * @tc.name webgl_test_bufferData_4
429         * @tc.desc Test bufferData.
430         */
431        it('webgl_test_bufferData_4', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
432            console.info("webgltest [webgl_test_bufferData_4] bufferData");
433            bufferData((arr) => {
434                gl.bufferData(gl.ARRAY_BUFFER, arr, gl.DYNAMIC_DRAW);
435                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
436            }, (bufferSize, arr) => {
437                expect(bufferSize).assertEqual(arr.length * arr.BYTES_PER_ELEMENT);
438                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
439            });
440            done();
441        })
442
443
444        /**
445         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0019
446         * @tc.name webgl_test_bufferData_5
447         * @tc.desc Test bufferData.
448         */
449        it('webgl_test_bufferData_5', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
450            console.info("webgltest [webgl_test_bufferData_5] bufferData");
451            bufferData((arr) => {
452                gl.bufferData(gl.ARRAY_BUFFER, arr, gl.STREAM_DRAW);
453                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
454            }, (bufferSize, arr) => {
455                expect(bufferSize).assertEqual(arr.length * arr.BYTES_PER_ELEMENT);
456                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
457            });
458            done();
459        })
460
461
462        /**
463         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0020
464         * @tc.name webgl_test_bufferData_6
465         * @tc.desc Test bufferData.
466         */
467        it('webgl_test_bufferData_6', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
468            console.info("webgltest [webgl_test_bufferData_6] bufferData");
469            bufferData((arr) => {
470                gl.bufferData(gl.ARRAY_BUFFER, null, gl.STREAM_DRAW);
471                expect(checkError(gl)).assertEqual(gl.INVALID_VALUE);
472            }, (bufferSize, arr) => {
473                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
474            });
475            done();
476        })
477
478
479        /**
480         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0021
481         * @tc.name webgl_test_bufferData_7
482         * @tc.desc Test bufferData.
483         */
484        it('webgl_test_bufferData_7', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
485            console.info("webgltest [webgl_test_bufferData_7] bufferData");
486            bufferData((arr) => {
487                gl.bufferData(gl.ARRAY_BUFFER, undefined, gl.STREAM_DRAW);
488                expect(checkError(gl)).assertEqual(gl.INVALID_VALUE);
489            }, (bufferSize, arr) => {
490                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
491            });
492            done();
493        })
494
495
496        /**
497         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0022
498         * @tc.name webgl_test_bufferData_8
499         * @tc.desc Test bufferData.
500         */
501        it('webgl_test_bufferData_8', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
502            console.info("webgltest [webgl_test_bufferData_8] bufferData");
503            bufferData((arr) => {
504                gl.bufferData(gl.ARRAY_BUFFER, -1, gl.STREAM_DRAW);
505                expect(checkError(gl)).assertEqual(gl.INVALID_VALUE);
506            }, (bufferSize, arr) => {
507                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
508            });
509            done();
510        })
511
512        /**
513         * 创建并初始化了 Buffer 对象的数据存储区
514         */
515
516        /**
517         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0023
518         * @tc.name webgl_test_bufferData_9
519         * @tc.desc Test bufferData.
520         */
521        it('webgl_test_bufferData_9', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
522            console.info("webgltest [webgl_test_bufferData_9] bufferData - number");
523            let buffer = gl.createBuffer();
524            gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
525            console.info("webgltest gl.bufferData(gl.ARRAY_BUFFER, 1024, gl.STATIC_DRAW);")
526            gl.bufferData(gl.ARRAY_BUFFER, 1024, gl.STATIC_DRAW);
527            let bufferSize = gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE);
528            console.info("testwebgl bufferSize:", bufferSize);
529            expect(bufferSize).assertEqual(1024);
530            gl.deleteBuffer(buffer);
531            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
532            done();
533        })
534
535        /**
536         * 获取缓冲区的信息。
537         */
538        function getBufferParameter(callback, finish) {
539            let arr = new Float32Array([
540                0.0, 0.5, -0.5, 0.5, 1.0, 0.5,
541            ]);
542            let buffer = gl.createBuffer();
543            gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
544            gl.bufferData(gl.ARRAY_BUFFER, arr, gl.STATIC_DRAW);
545            callback(arr);
546            finish();
547            gl.deleteBuffer(buffer);
548            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
549        }
550
551        /**
552         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0024
553         * @tc.name webgl_test_getBufferParameter
554         * @tc.desc Test getBufferParameter.
555         */
556        it('webgl_test_getBufferParameter', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
557            console.info("webgltest [webgl_test_getBufferParameter] getBufferParameter");
558            let arr = new Float32Array([
559                0.0, 0.5, -0.5, 0.5, 1.0, 0.5,
560            ]);
561            console.info("webgltest arr:", arr);
562            console.info("webgltest arr.BYTES_PER_ELEMENT:", arr.BYTES_PER_ELEMENT);
563            let buffer = gl.createBuffer();
564            gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
565            console.info("webgltest gl.bufferData(gl.ARRAY_BUFFER, arr, gl.STATIC_DRAW);")
566            gl.bufferData(gl.ARRAY_BUFFER, arr, gl.STATIC_DRAW);
567            console.info("webgltest gl.getBufferParameter(gl.ARRAY_BUFFER,gl.BUFFER_SIZE);")
568            let bufferSize = gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE);
569            console.info("webgltest bufferSize:", bufferSize);
570            expect(bufferSize == arr.length * arr.BYTES_PER_ELEMENT).assertTrue();
571            console.info("webgltest gl.bufferData(gl.ARRAY_BUFFER, 1024, gl.STATIC_DRAW);")
572            gl.bufferData(gl.ARRAY_BUFFER, 1024, gl.STATIC_DRAW);
573            console.info("webgltest gl.getBufferParameter(gl.ARRAY_BUFFER,gl.BUFFER_SIZE);")
574            bufferSize = gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE);
575            console.info("testwebgl bufferSize:", bufferSize);
576            expect(bufferSize).assertEqual(1024);
577            gl.deleteBuffer(buffer);
578            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
579            done();
580        })
581
582
583        /**
584         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0025
585         * @tc.name webgl_test_getBufferParameter_1
586         * @tc.desc Test getBufferParameter.
587         */
588        it('webgl_test_getBufferParameter_1', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
589            async function (done) {
590            console.info("webgltest [webgl_test_getBufferParameter_1] getBufferParameter");
591            getBufferParameter((arr) => {
592                let bufferSize = gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE);
593                expect(bufferSize == arr.length * arr.BYTES_PER_ELEMENT).assertTrue();
594                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
595            }, () => {
596                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
597            });
598            done();
599        })
600
601
602        /**
603         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0026
604         * @tc.name webgl_test_getBufferParameter_2
605         * @tc.desc Test getBufferParameter.
606         */
607        it('webgl_test_getBufferParameter_2', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
608            async function (done) {
609            console.info("webgltest [webgl_test_getBufferParameter_2] getBufferParameter");
610            getBufferParameter((arr) => {
611                let bufferSize = gl.getBufferParameter(gl.ELEMENT_ARRAY_BUFFER, gl.BUFFER_SIZE);
612                expect(checkError(gl)).assertEqual(gl.INVALID_OPERATION);
613            }, () => {
614                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
615            });
616            done();
617        })
618
619
620        /**
621         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0027
622         * @tc.name webgl_test_getBufferParameter_3
623         * @tc.desc Test getBufferParameter.
624         */
625        it('webgl_test_getBufferParameter_3', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
626            async function (done) {
627            console.info("webgltest [webgl_test_getBufferParameter_3] getBufferParameter");
628            getBufferParameter((arr) => {
629                let bufferSize = gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_USAGE);
630                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
631            }, () => {
632                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
633            });
634            done();
635        })
636
637        /**
638         * RenderBuffer
639         * 创建并初始化 WebGLRenderbuffer 对象。
640         */
641
642        /**
643         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0028
644         * @tc.name webgl_test_createRenderbuffer
645         * @tc.desc Test createRenderbuffer.
646         */
647        it('webgl_test_createRenderbuffer', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
648            console.info("webgltest [webgl_test_createRenderbuffer] createRenderbuffer");
649            let renderbuffer = gl.createRenderbuffer();
650            console.info("webgltest  createRenderbuffer:", renderbuffer);
651            expect(renderbuffer != null).assertTrue();
652            console.info("webgltest  isRenderbuffer:", gl.isRenderbuffer(renderbuffer));
653            expect(gl.isRenderbuffer(renderbuffer)).assertEqual(false);
654            console.info("webgltest  gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);");
655            gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);
656            console.info("webgltest  isRenderbuffer:", gl.isRenderbuffer(renderbuffer));
657            expect(gl.isRenderbuffer(renderbuffer)).assertEqual(true);
658            gl.deleteRenderbuffer(renderbuffer);
659            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
660            done();
661        })
662
663        /**
664         * 删除 WebGLRenderbuffer 对象
665         */
666        function deleteRenderbuffer(callback, finish) {
667            let renderbuffer = gl.createRenderbuffer();
668            expect(renderbuffer != null).assertTrue();
669            gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);
670            callback(renderbuffer);
671            finish(gl.isRenderbuffer(renderbuffer));
672            gl.deleteRenderbuffer(renderbuffer);
673        }
674
675        /**
676         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0029
677         * @tc.name webgl_test_deleteRenderbuffer
678         * @tc.desc Test deleteRenderbuffer.
679         */
680        it('webgl_test_deleteRenderbuffer', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
681            console.info("webgltest [webgl_test_deleteRenderbuffer] deleteRenderbuffer");
682            let renderbuffer = gl.createRenderbuffer();
683            console.info("webgltest  createRenderbuffer:", renderbuffer);
684            expect(renderbuffer != null).assertTrue();
685            console.info("webgltest  isRenderbuffer:", gl.isRenderbuffer(renderbuffer));
686            expect(gl.isRenderbuffer(renderbuffer)).assertEqual(false);
687            console.info("webgltest  gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);");
688            gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);
689            console.info("webgltest  isRenderbuffer:", gl.isRenderbuffer(renderbuffer));
690            expect(gl.isRenderbuffer(renderbuffer)).assertEqual(true);
691            console.info("webgltest  gl.deleteRenderbuffer(renderbuffer);");
692            gl.deleteRenderbuffer(renderbuffer);
693            console.info("webgltest  isRenderbuffer:", gl.isRenderbuffer(renderbuffer));
694            expect(gl.isRenderbuffer(renderbuffer)).assertEqual(false);
695            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
696            done();
697        })
698
699
700        /**
701         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0030
702         * @tc.name webgl_test_deleteRenderbuffer_1
703         * @tc.desc Test deleteRenderbuffer.
704         */
705        it('webgl_test_deleteRenderbuffer_1', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
706            async function (done) {
707            console.info("webgltest [webgl_test_deleteRenderbuffer_1] deleteRenderbuffer");
708            deleteRenderbuffer((renderbuffer) => {
709                gl.deleteRenderbuffer(renderbuffer);
710                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
711            }, (isDelete) => {
712                expect(isDelete).assertEqual(false);
713                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
714            });
715            done();
716        })
717
718
719        /**
720         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0031
721         * @tc.name webgl_test_deleteRenderbuffer_2
722         * @tc.desc Test deleteRenderbuffer.
723         */
724        it('webgl_test_deleteRenderbuffer_2', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
725            async function (done) {
726            console.info("webgltest [webgl_test_deleteRenderbuffer_2] deleteRenderbuffer");
727            deleteRenderbuffer((renderbuffer) => {
728                gl.deleteRenderbuffer(null);
729                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
730            }, (isDelete) => {
731                expect(isDelete).assertEqual(true);
732                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
733            });
734            done();
735        })
736
737
738        /**
739         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0032
740         * @tc.name webgl_test_deleteRenderbuffer_3
741         * @tc.desc Test deleteRenderbuffer.
742         */
743        it('webgl_test_deleteRenderbuffer_3', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
744            async function (done) {
745            console.info("webgltest [webgl_test_deleteRenderbuffer_3] deleteRenderbuffer");
746            deleteRenderbuffer((renderbuffer) => {
747                gl.deleteRenderbuffer(undefined);
748                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
749            }, (isDelete) => {
750                expect(isDelete).assertEqual(true);
751                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
752            });
753            done();
754        })
755
756        /**
757         * 获取关于渲染缓冲区的信息
758         */
759        function getRenderbufferParameter(callback) {
760            let buf = gl.createRenderbuffer();
761            gl.bindRenderbuffer(gl.RENDERBUFFER, buf);
762            callback(buf);
763            gl.deleteRenderbuffer(buf);
764        }
765
766        /**
767         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0033
768         * @tc.name webgl_test_getRenderbufferParameter
769         * @tc.desc Test getRenderbufferParameter.
770         */
771        it('webgl_test_getRenderbufferParameter', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
772            async function (done) {
773            console.info("webgltest [webgl_test_getRenderbufferParameter] getRenderbufferParameter");
774            let buf = gl.createRenderbuffer();
775            gl.bindRenderbuffer(gl.RENDERBUFFER, buf);
776            console.info("webgltest RENDERBUFFER_WIDTH:",
777                gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH));
778            console.info("webgltest RENDERBUFFER_HEIGHT:",
779                gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_HEIGHT));
780            expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH)).assertEqual(0);
781            expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_HEIGHT)).assertEqual(0);
782            console.info("webgltest gl.renderbufferStorage(gl.RENDERBUFFER, gl.RGBA4, 256, 256);");
783            gl.renderbufferStorage(gl.RENDERBUFFER, gl.RGBA4, 256, 256);
784            console.info("webgltest RENDERBUFFER_WIDTH:",
785                gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH));
786            console.info("webgltest RENDERBUFFER_HEIGHT:",
787                gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_HEIGHT));
788            expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH)).assertEqual(256);
789            expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_HEIGHT)).assertEqual(256);
790            gl.deleteRenderbuffer(buf);
791            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
792            done();
793        })
794
795
796        /**
797         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0034
798         * @tc.name webgl_test_getRenderbufferParameter_1
799         * @tc.desc Test getRenderbufferParameter.
800         */
801        it('webgl_test_getRenderbufferParameter_1', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
802            async function (done) {
803            console.info("webgltest [webgl_test_getRenderbufferParameter_1] getRenderbufferParameter");
804            getRenderbufferParameter((buf) => {
805                console.info("webgltest RENDERBUFFER_WIDTH:",
806                    gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH));
807                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH)).assertEqual(0);
808                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
809            });
810            done();
811        })
812
813
814        /**
815         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0035
816         * @tc.name webgl_test_getRenderbufferParameter_2
817         * @tc.desc Test getRenderbufferParameter.
818         */
819        it('webgl_test_getRenderbufferParameter_2', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
820            async function (done) {
821            console.info("webgltest [webgl_test_getRenderbufferParameter_2] getRenderbufferParameter");
822            getRenderbufferParameter((buf) => {
823                console.info("webgltest RENDERBUFFER_WIDTH:",
824                    gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH));
825                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH)).assertEqual(0);
826                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
827            });
828            done();
829        })
830
831
832        /**
833         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0036
834         * @tc.name webgl_test_getRenderbufferParameter_3
835         * @tc.desc Test getRenderbufferParameter.
836         */
837        it('webgl_test_getRenderbufferParameter_3', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
838            async function (done) {
839            console.info("webgltest [webgl_test_getRenderbufferParameter_3] getRenderbufferParameter");
840            getRenderbufferParameter((buf) => {
841                console.info("webgltest RENDERBUFFER_INTERNAL_FORMAT:",
842                    gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_INTERNAL_FORMAT));
843                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER,
844                    gl.RENDERBUFFER_INTERNAL_FORMAT)).assertEqual(gl.RGBA4);
845                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
846            });
847            done();
848        })
849
850
851        /**
852         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0037
853         * @tc.name webgl_test_getRenderbufferParameter_4
854         * @tc.desc Test getRenderbufferParameter.
855         */
856        it('webgl_test_getRenderbufferParameter_4', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
857            async function (done) {
858            console.info("webgltest [webgl_test_getRenderbufferParameter_4] getRenderbufferParameter");
859            getRenderbufferParameter((buf) => {
860                console.info("webgltest RENDERBUFFER_GREEN_SIZE:",
861                    gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_GREEN_SIZE));
862                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_GREEN_SIZE)>=0).assertEqual(true);
863                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
864            });
865            done();
866        })
867
868
869        /**
870         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0038
871         * @tc.name webgl_test_getRenderbufferParameter_5
872         * @tc.desc Test getRenderbufferParameter.
873         */
874        it('webgl_test_getRenderbufferParameter_5', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
875            async function (done) {
876            console.info("webgltest [webgl_test_getRenderbufferParameter_5] getRenderbufferParameter");
877            getRenderbufferParameter((buf) => {
878                console.info("webgltest RENDERBUFFER_BLUE_SIZE:",
879                    gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_BLUE_SIZE));
880                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_BLUE_SIZE)>=0).assertEqual(true);
881                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
882            });
883            done();
884        })
885
886
887        /**
888         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0039
889         * @tc.name webgl_test_getRenderbufferParameter_6
890         * @tc.desc Test getRenderbufferParameter.
891         */
892        it('webgl_test_getRenderbufferParameter_6', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
893            async function (done) {
894            console.info("webgltest [webgl_test_getRenderbufferParameter_6] getRenderbufferParameter");
895            getRenderbufferParameter((buf) => {
896                console.info("webgltest RENDERBUFFER_RED_SIZE:",
897                    gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_RED_SIZE));
898                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_RED_SIZE)>=0).assertEqual(true);
899                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
900            });
901            done();
902        })
903
904
905        /**
906         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0040
907         * @tc.name webgl_test_getRenderbufferParameter_7
908         * @tc.desc Test getRenderbufferParameter.
909         */
910        it('webgl_test_getRenderbufferParameter_7', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
911            async function (done) {
912            console.info("webgltest [webgl_test_getRenderbufferParameter_7] getRenderbufferParameter");
913            getRenderbufferParameter((buf) => {
914                console.info("webgltest RENDERBUFFER_ALPHA_SIZE:",
915                    gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_ALPHA_SIZE));
916                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_ALPHA_SIZE)>=0).assertEqual(true);
917                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
918            });
919            done();
920        })
921
922
923        /**
924         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0041
925         * @tc.name webgl_test_getRenderbufferParameter_8
926         * @tc.desc Test getRenderbufferParameter.
927         */
928        it('webgl_test_getRenderbufferParameter_8', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
929            async function (done) {
930            console.info("webgltest [webgl_test_getRenderbufferParameter_8] getRenderbufferParameter");
931            getRenderbufferParameter((buf) => {
932                console.info("webgltest RENDERBUFFER_DEPTH_SIZE:",
933                    gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_DEPTH_SIZE));
934                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_DEPTH_SIZE)>=0).assertEqual(true);
935                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
936            });
937            done();
938        })
939
940
941        /**
942         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0042
943         * @tc.name webgl_test_getRenderbufferParameter_9
944         * @tc.desc Test getRenderbufferParameter.
945         */
946        it('webgl_test_getRenderbufferParameter_9', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
947            async function (done) {
948            console.info("webgltest [webgl_test_getRenderbufferParameter_9] getRenderbufferParameter");
949            getRenderbufferParameter((buf) => {
950                console.info("webgltest RENDERBUFFER_STENCIL_SIZE:",
951                    gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_STENCIL_SIZE));
952                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER,
953                    gl.RENDERBUFFER_STENCIL_SIZE)>=0).assertEqual(true);
954                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
955            });
956            done();
957        })
958
959        /**
960         * 判定传入的WebGLRenderbuffer是否有效
961         */
962        function isRenderbuffer(callback) {
963            let renderbuffer = gl.createRenderbuffer();
964            expect(renderbuffer != null).assertTrue();
965            expect(gl.isRenderbuffer(renderbuffer)).assertEqual(false);
966            gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);
967            callback(renderbuffer);
968            gl.deleteRenderbuffer(renderbuffer);
969        }
970
971        /**
972         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0043
973         * @tc.name webgl_test_isRenderbuffer
974         * @tc.desc Test isRenderbuffer.
975         */
976        it('webgl_test_isRenderbuffer', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
977            console.info("webgltest [webgl_test_isRenderbuffer] isRenderbuffer");
978            let renderbuffer = gl.createRenderbuffer();
979            console.info("webgltest  createRenderbuffer:", renderbuffer);
980            expect(renderbuffer != null).assertTrue();
981            console.info("webgltest  isRenderbuffer:", gl.isRenderbuffer(renderbuffer));
982            expect(gl.isRenderbuffer(renderbuffer)).assertEqual(false);
983            console.info("webgltest  gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);");
984            gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);
985            console.info("webgltest  isRenderbuffer:", gl.isRenderbuffer(renderbuffer));
986            expect(gl.isRenderbuffer(renderbuffer)).assertEqual(true);
987            console.info("webgltest  gl.deleteRenderbuffer(renderbuffer);");
988            gl.deleteRenderbuffer(renderbuffer);
989            console.info("webgltest  isRenderbuffer:", gl.isRenderbuffer(renderbuffer));
990            expect(gl.isRenderbuffer(renderbuffer)).assertEqual(false);
991            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
992            done();
993        })
994
995
996        /**
997         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0044
998         * @tc.name webgl_test_isRenderbuffer_1
999         * @tc.desc Test isRenderbuffer.
1000         */
1001        it('webgl_test_isRenderbuffer_1', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
1002            console.info("webgltest [webgl_test_isRenderbuffer_1] isRenderbuffer");
1003            isRenderbuffer((renderbuffer) => {
1004                expect(gl.isRenderbuffer(renderbuffer)).assertEqual(true);
1005                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1006            });
1007            done();
1008        })
1009
1010
1011        /**
1012         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0045
1013         * @tc.name webgl_test_isRenderbuffer_2
1014         * @tc.desc Test isRenderbuffer.
1015         */
1016        it('webgl_test_isRenderbuffer_2', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
1017            console.info("webgltest [webgl_test_isRenderbuffer_2] isRenderbuffer");
1018            isRenderbuffer((renderbuffer) => {
1019                expect(gl.isRenderbuffer(null)).assertEqual(false);
1020                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1021            });
1022            done();
1023        })
1024
1025
1026        /**
1027         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0046
1028         * @tc.name webgl_test_isRenderbuffer_3
1029         * @tc.desc Test isRenderbuffer.
1030         */
1031        it('webgl_test_isRenderbuffer_3', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
1032            console.info("webgltest [webgl_test_isRenderbuffer_3] isRenderbuffer");
1033            isRenderbuffer((renderbuffer) => {
1034                expect(gl.isRenderbuffer(undefined)).assertEqual(false);
1035                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1036            });
1037            done();
1038        })
1039
1040        /**
1041         * 将给定的 WebGLRenderbuffer 绑定到一个目标
1042         */
1043        function bindRenderbuffer(callback, finish) {
1044            let buf = gl.createRenderbuffer();
1045            let renderBufferBinding = gl.getParameter(gl.RENDERBUFFER_BINDING);
1046            console.info("webgltest renderBufferBinding:", renderBufferBinding);
1047            callback(buf);
1048            renderBufferBinding = gl.getParameter(gl.RENDERBUFFER_BINDING);
1049            finish(renderBufferBinding, buf);
1050            gl.deleteRenderbuffer(buf);
1051        }
1052
1053        /**
1054         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0047
1055         * @tc.name webgl_test_bindRenderbuffer
1056         * @tc.desc Test bindRenderbuffer.
1057         */
1058        it('webgl_test_bindRenderbuffer', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
1059            console.info("webgltest [webgl_test_bindRenderbuffer] bindRenderbuffer");
1060            let buf = gl.createRenderbuffer();
1061            let renderBufferBinding = gl.getParameter(gl.RENDERBUFFER_BINDING);
1062            console.info("webgltest renderBufferBinding:", renderBufferBinding);
1063            console.info("webgltest gl.bindRenderbuffer(gl.RENDERBUFFER,renderBuffer);");
1064            gl.bindRenderbuffer(gl.RENDERBUFFER, buf);
1065            renderBufferBinding = gl.getParameter(gl.RENDERBUFFER_BINDING);
1066            console.info("webgltest renderBufferBinding:", renderBufferBinding);
1067            expect(renderBufferBinding == buf).assertTrue();
1068            gl.deleteRenderbuffer(buf);
1069            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1070            done();
1071        })
1072
1073
1074        /**
1075         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0048
1076         * @tc.name webgl_test_bindRenderbuffer_1
1077         * @tc.desc Test bindRenderbuffer.
1078         */
1079        it('webgl_test_bindRenderbuffer_1', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
1080            console.info("webgltest [webgl_test_bindRenderbuffer_1] bindRenderbuffer");
1081            bindRenderbuffer((buf) => {
1082                gl.bindRenderbuffer(gl.RENDERBUFFER, buf);
1083                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1084            }, (renderBufferBinding, buf) => {
1085                expect(renderBufferBinding).assertEqual(buf);
1086                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1087            });
1088            done();
1089        })
1090
1091
1092        /**
1093         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0049
1094         * @tc.name webgl_test_bindRenderbuffer_2
1095         * @tc.desc Test bindRenderbuffer.
1096         */
1097        it('webgl_test_bindRenderbuffer_2', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
1098            console.info("webgltest [webgl_test_bindRenderbuffer_2] bindRenderbuffer");
1099            bindRenderbuffer((buf) => {
1100                gl.bindRenderbuffer(gl.RENDERBUFFER, null);
1101                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1102            }, (renderBufferBinding, buf) => {
1103                expect(renderBufferBinding).assertEqual(null);
1104                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1105            });
1106            done();
1107        })
1108
1109
1110        /**
1111         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0050
1112         * @tc.name webgl_test_bindRenderbuffer_3
1113         * @tc.desc Test bindRenderbuffer.
1114         */
1115        it('webgl_test_bindRenderbuffer_3', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
1116            console.info("webgltest [webgl_test_bindRenderbuffer_3] bindRenderbuffer");
1117            bindRenderbuffer((buf) => {
1118                gl.bindRenderbuffer(gl.RENDERBUFFER, undefined);
1119                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1120            }, (renderBufferBinding, buf) => {
1121                expect(renderBufferBinding).assertEqual(null);
1122                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1123            });
1124            done();
1125        })
1126
1127        /**
1128         * 创建并初始化一个renderbuffer对象的数据存储。
1129         */
1130        function renderbufferStorage(callback, finish) {
1131            let buf = gl.createRenderbuffer();
1132            gl.bindRenderbuffer(gl.RENDERBUFFER, buf);
1133            callback(buf);
1134            finish(buf);
1135            gl.deleteRenderbuffer(buf);
1136        }
1137
1138        /**
1139         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0051
1140         * @tc.name webgl_test_renderbufferStorage
1141         * @tc.desc Test renderbufferStorage.
1142         */
1143        it('webgl_test_renderbufferStorage', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1144            async function (done) {
1145            console.info("webgltest [webgl_test_renderbufferStorage] renderbufferStorage");
1146            let buf = gl.createRenderbuffer();
1147            gl.bindRenderbuffer(gl.RENDERBUFFER, buf);
1148            console.info("webgltest RENDERBUFFER_WIDTH:",
1149                gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH));
1150            console.info("webgltest RENDERBUFFER_HEIGHT:",
1151                gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_HEIGHT));
1152            expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH)).assertEqual(0);
1153            expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_HEIGHT)).assertEqual(0);
1154            console.info("webgltest gl.renderbufferStorage(gl.RENDERBUFFER, gl.RGBA4, 256, 256);");
1155            gl.renderbufferStorage(gl.RENDERBUFFER, gl.RGBA4, 256, 256);
1156            console.info("webgltest RENDERBUFFER_WIDTH:",
1157                gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH));
1158            console.info("webgltest RENDERBUFFER_HEIGHT:",
1159                gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_HEIGHT));
1160            expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH)).assertEqual(256);
1161            expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_HEIGHT)).assertEqual(256);
1162            gl.deleteRenderbuffer(buf);
1163            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1164            done();
1165        })
1166
1167
1168        /**
1169         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0052
1170         * @tc.name webgl_test_renderbufferStorage_1
1171         * @tc.desc Test renderbufferStorage.
1172         */
1173        it('webgl_test_renderbufferStorage_1', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1174            async function (done) {
1175            console.info("webgltest [webgl_test_renderbufferStorage_1] renderbufferStorage");
1176            renderbufferStorage((buf) => {
1177                gl.renderbufferStorage(gl.RENDERBUFFER, gl.RGBA4, 256, 256);
1178                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1179            }, (buf) => {
1180                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH)).assertEqual(256);
1181                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_HEIGHT)).assertEqual(256);
1182                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1183            });
1184            done();
1185        })
1186
1187
1188        /**
1189         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0053
1190         * @tc.name webgl_test_renderbufferStorage_2
1191         * @tc.desc Test renderbufferStorage.
1192         */
1193        it('webgl_test_renderbufferStorage_2', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1194            async function (done) {
1195            console.info("webgltest [webgl_test_renderbufferStorage_2] renderbufferStorage");
1196            renderbufferStorage((buf) => {
1197                gl.renderbufferStorage(gl.RENDERBUFFER, gl.RGB565, 256, 256);
1198                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1199            }, (buf) => {
1200                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH)).assertEqual(256);
1201                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_HEIGHT)).assertEqual(256);
1202                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1203            });
1204            done();
1205        })
1206
1207
1208        /**
1209         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0054
1210         * @tc.name webgl_test_renderbufferStorage_3
1211         * @tc.desc Test renderbufferStorage.
1212         */
1213        it('webgl_test_renderbufferStorage_3', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1214            async function (done) {
1215            console.info("webgltest [webgl_test_renderbufferStorage_3] renderbufferStorage");
1216            renderbufferStorage((buf) => {
1217                gl.renderbufferStorage(gl.RENDERBUFFER, gl.RGB5_A1, 256, 256);
1218                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1219            }, (buf) => {
1220                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH)).assertEqual(256);
1221                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_HEIGHT)).assertEqual(256);
1222                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1223            });
1224            done();
1225        })
1226
1227
1228        /**
1229         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0055
1230         * @tc.name webgl_test_renderbufferStorage_4
1231         * @tc.desc Test renderbufferStorage.
1232         */
1233        it('webgl_test_renderbufferStorage_4', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1234            async function (done) {
1235            console.info("webgltest [webgl_test_renderbufferStorage_4] renderbufferStorage");
1236            renderbufferStorage((buf) => {
1237                gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, 256, 256);
1238                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1239            }, (buf) => {
1240                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH)).assertEqual(256);
1241                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_HEIGHT)).assertEqual(256);
1242                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1243            });
1244            done();
1245        })
1246
1247
1248        /**
1249         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0056
1250         * @tc.name webgl_test_renderbufferStorage_5
1251         * @tc.desc Test renderbufferStorage.
1252         */
1253        it('webgl_test_renderbufferStorage_5', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1254            async function (done) {
1255            console.info("webgltest [webgl_test_renderbufferStorage_5] renderbufferStorage");
1256            renderbufferStorage((buf) => {
1257                gl.renderbufferStorage(gl.RENDERBUFFER, gl.STENCIL_INDEX8, 256, 256);
1258                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1259            }, (buf) => {
1260                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH)).assertEqual(256);
1261                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_HEIGHT)).assertEqual(256);
1262                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1263            });
1264            done();
1265        })
1266
1267
1268        /**
1269         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0057
1270         * @tc.name webgl_test_renderbufferStorage_6
1271         * @tc.desc Test renderbufferStorage.
1272         */
1273        it('webgl_test_renderbufferStorage_6', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1274            async function (done) {
1275            console.info("webgltest [webgl_test_renderbufferStorage_6] renderbufferStorage");
1276            renderbufferStorage((buf) => {
1277                gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, 256, 256);
1278                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1279            }, (buf) => {
1280                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH)).assertEqual(256);
1281                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_HEIGHT)).assertEqual(256);
1282                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1283            });
1284            done();
1285        })
1286
1287
1288        /**
1289         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0058
1290         * @tc.name webgl_test_renderbufferStorage_7
1291         * @tc.desc Test renderbufferStorage.
1292         */
1293        it('webgl_test_renderbufferStorage_7', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1294            async function (done) {
1295            console.info("webgltest [webgl_test_renderbufferStorage_7] renderbufferStorage");
1296            renderbufferStorage((buf) => {
1297                gl.renderbufferStorage(gl.RENDERBUFFER, gl.RGBA4, 0, 0);
1298                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1299            }, (buf) => {
1300                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH)).assertEqual(0);
1301                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_HEIGHT)).assertEqual(0);
1302                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1303            });
1304            done();
1305        })
1306
1307
1308        /**
1309         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0059
1310         * @tc.name webgl_test_renderbufferStorage_8
1311         * @tc.desc Test renderbufferStorage.
1312         */
1313        it('webgl_test_renderbufferStorage_8', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1314            async function (done) {
1315            console.info("webgltest [webgl_test_renderbufferStorage_8] renderbufferStorage");
1316            renderbufferStorage((buf) => {
1317                gl.renderbufferStorage(gl.RENDERBUFFER, gl.RGBA4, -1, -1);
1318                expect(checkError(gl)).assertEqual(gl.INVALID_VALUE);
1319            }, (buf) => {
1320                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH)).assertEqual(0);
1321                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_HEIGHT)).assertEqual(0);
1322                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1323            });
1324            done();
1325        })
1326
1327
1328        /**
1329         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0060
1330         * @tc.name webgl_test_renderbufferStorage_9
1331         * @tc.desc Test renderbufferStorage.
1332         */
1333        it('webgl_test_renderbufferStorage_9', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1334            async function (done) {
1335            console.info("webgltest [webgl_test_renderbufferStorage_9] renderbufferStorage");
1336            renderbufferStorage((buf) => {
1337                gl.renderbufferStorage(gl.RENDERBUFFER, gl.RGBA4, null, null);
1338                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1339            }, (buf) => {
1340                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH)).assertEqual(0);
1341                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_HEIGHT)).assertEqual(0);
1342                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1343            });
1344            done();
1345        })
1346
1347
1348        /**
1349         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0061
1350         * @tc.name webgl_test_renderbufferStorage_10
1351         * @tc.desc Test renderbufferStorage.
1352         */
1353        it('webgl_test_renderbufferStorage_10', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1354            async function (done) {
1355            console.info("webgltest [webgl_test_renderbufferStorage_10] renderbufferStorage");
1356            renderbufferStorage((buf) => {
1357                gl.renderbufferStorage(gl.RENDERBUFFER, gl.RGBA4, undefined, undefined);
1358                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1359            }, (buf) => {
1360                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH)).assertEqual(0);
1361                expect(gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_HEIGHT)).assertEqual(0);
1362                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1363            });
1364            done();
1365        })
1366
1367        /**
1368         * FrameBuffer
1369         * 创建和初始化WebGLFramebuffer 对象
1370         */
1371
1372        /**
1373         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0062
1374         * @tc.name webgl_test_createFramebuffer
1375         * @tc.desc Test createFramebuffer.
1376         */
1377        it('webgl_test_createFramebuffer', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
1378            console.info("webgltest [webgl_test_createFramebuffer] createFramebuffer");
1379            let buf = gl.createFramebuffer();
1380            console.info("webgltest newFramebuffer:", buf);
1381            expect(buf != null).assertTrue();
1382            console.log("webgltest isFramebuffer() ", gl.isFramebuffer(buf));
1383            expect(gl.isFramebuffer(buf)).assertEqual(false);
1384            console.info("webgltest gl.bindFramebuffer(gl.FRAMEBUFFER, buf);");
1385            gl.bindFramebuffer(gl.FRAMEBUFFER, buf);
1386            console.log("webgltest isFramebuffer() ", gl.isFramebuffer(buf));
1387            expect(gl.isFramebuffer(buf)).assertEqual(true);
1388            checkFrameBufferStatus();
1389            gl.deleteFramebuffer(buf);
1390            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1391            done();
1392        })
1393
1394        /**
1395         * 绑定WebGLFramebuffer 对象到一个目标
1396         */
1397        function bindFramebuffer(callback, finish) {
1398            let buf = gl.createFramebuffer();
1399            expect(buf != null).assertTrue();
1400            expect(gl.isFramebuffer(buf)).assertEqual(false);
1401            callback(buf);
1402            finish(gl.isFramebuffer(buf));
1403            checkFrameBufferStatus();
1404            gl.deleteFramebuffer(buf);
1405        }
1406
1407        /**
1408         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0063
1409         * @tc.name webgl_test_bindFramebuffer
1410         * @tc.desc Test bindFramebuffer.
1411         */
1412        it('webgl_test_bindFramebuffer', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
1413            console.info("webgltest [webgl_test_bindFramebuffer] bindFramebuffer");
1414            let buf = gl.createFramebuffer();
1415            console.info("webgltest newFramebuffer:", buf);
1416            expect(buf != null).assertTrue();
1417            console.log("webgltest isFramebuffer() ", gl.isFramebuffer(buf));
1418            expect(gl.isFramebuffer(buf)).assertEqual(false);
1419            console.info("webgltest gl.bindFramebuffer(gl.FRAMEBUFFER, buf);");
1420            gl.bindFramebuffer(gl.FRAMEBUFFER, buf);
1421            console.log("webgltest isFramebuffer() ", gl.isFramebuffer(buf));
1422            expect(gl.isFramebuffer(buf)).assertEqual(true);
1423            checkFrameBufferStatus();
1424            gl.deleteFramebuffer(buf);
1425            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1426            done();
1427        })
1428
1429
1430        /**
1431         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0064
1432         * @tc.name webgl_test_bindFramebuffer_1
1433         * @tc.desc Test bindFramebuffer.
1434         */
1435        it('webgl_test_bindFramebuffer_1', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
1436            console.info("webgltest [webgl_test_bindFramebuffer_1] bindFramebuffer");
1437            bindFramebuffer((buf) => {
1438                gl.bindFramebuffer(gl.FRAMEBUFFER, buf);
1439                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1440            }, (isFramebuffer) => {
1441                expect(isFramebuffer).assertEqual(true);
1442                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1443            });
1444            done();
1445        })
1446
1447
1448        /**
1449         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0065
1450         * @tc.name webgl_test_bindFramebuffer_2
1451         * @tc.desc Test bindFramebuffer.
1452         */
1453        it('webgl_test_bindFramebuffer_2', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
1454            console.info("webgltest [webgl_test_bindFramebuffer_2] bindFramebuffer");
1455            bindFramebuffer((buf) => {
1456                gl.bindFramebuffer(gl.FRAMEBUFFER, null);
1457                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1458            }, (isFramebuffer) => {
1459                expect(isFramebuffer).assertEqual(false);
1460                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1461            });
1462            done();
1463        })
1464
1465
1466        /**
1467         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0066
1468         * @tc.name webgl_test_bindFramebuffer_3
1469         * @tc.desc Test bindFramebuffer.
1470         */
1471        it('webgl_test_bindFramebuffer_3', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
1472            console.info("webgltest [webgl_test_bindFramebuffer_3] bindFramebuffer");
1473            bindFramebuffer((buf) => {
1474                gl.bindFramebuffer(gl.FRAMEBUFFER, undefined);
1475                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1476            }, (isFramebuffer) => {
1477                expect(isFramebuffer).assertEqual(false);
1478                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1479            });
1480            done();
1481        })
1482
1483        /**
1484         * 删除WebGLFramebuffer 对象
1485         */
1486        function deleteFramebuffer(callback, finish) {
1487            let buf = gl.createFramebuffer();
1488            expect(buf != null).assertTrue();
1489            expect(gl.isFramebuffer(buf)).assertEqual(false);
1490            gl.bindFramebuffer(gl.FRAMEBUFFER, buf);
1491            callback(buf);
1492            finish(gl.isFramebuffer(buf));
1493            gl.deleteFramebuffer(buf);
1494        }
1495
1496        /**
1497         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0067
1498         * @tc.name webgl_test_deleteFramebuffer
1499         * @tc.desc Test deleteFramebuffer.
1500         */
1501        it('webgl_test_deleteFramebuffer', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
1502            console.info("webgltest [webgl_test_deleteFramebuffer] deleteFramebuffer");
1503            let buf = gl.createFramebuffer();
1504            console.info("webgltest newFramebuffer:", buf);
1505            expect(buf != null).assertTrue();
1506            expect(gl.isFramebuffer(buf)).assertEqual(false);
1507            console.info("webgltest gl.bindFramebuffer(gl.FRAMEBUFFER, buf);");
1508            gl.bindFramebuffer(gl.FRAMEBUFFER, buf);
1509            console.log("webgltest isFramebuffer() ", gl.isFramebuffer(buf));
1510            expect(gl.isFramebuffer(buf)).assertEqual(true);
1511            console.log("webgltest gl.deleteFramebuffer(buf);");
1512            gl.deleteFramebuffer(buf);
1513            console.log("webgltest isFramebuffer() ", gl.isFramebuffer(buf));
1514            expect(gl.isFramebuffer(buf)).assertEqual(false);
1515            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1516            done();
1517        })
1518
1519
1520        /**
1521         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0068
1522         * @tc.name webgl_test_deleteFramebuffer_1
1523         * @tc.desc Test deleteFramebuffer.
1524         */
1525        it('webgl_test_deleteFramebuffer_1', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1526            async function (done) {
1527            console.info("webgltest [webgl_test_deleteFramebuffer_1] deleteFramebuffer");
1528            deleteFramebuffer((buf) => {
1529                gl.deleteFramebuffer(buf);
1530                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1531            }, (isFramebuffer) => {
1532                expect(isFramebuffer).assertEqual(false);
1533                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1534            });
1535            done();
1536        })
1537
1538
1539        /**
1540         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0069
1541         * @tc.name webgl_test_deleteFramebuffer_2
1542         * @tc.desc Test deleteFramebuffer.
1543         */
1544        it('webgl_test_deleteFramebuffer_2', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1545            async function (done) {
1546            console.info("webgltest [webgl_test_deleteFramebuffer_2] deleteFramebuffer");
1547            deleteFramebuffer((buf) => {
1548                gl.deleteFramebuffer(null);
1549                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1550            }, (isFramebuffer) => {
1551                expect(isFramebuffer).assertEqual(true);
1552                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1553            });
1554            done();
1555        })
1556
1557
1558        /**
1559         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0070
1560         * @tc.name webgl_test_deleteFramebuffer_3
1561         * @tc.desc Test deleteFramebuffer.
1562         */
1563        it('webgl_test_deleteFramebuffer_3', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1564            async function (done) {
1565            console.info("webgltest [webgl_test_deleteFramebuffer_3] deleteFramebuffer");
1566            deleteFramebuffer((buf) => {
1567                gl.deleteFramebuffer(undefined);
1568                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1569            }, (isFramebuffer) => {
1570                expect(isFramebuffer).assertEqual(true);
1571                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1572            });
1573            done();
1574        })
1575
1576        function checkFrameBufferStatus() {
1577            let status = gl.checkFramebufferStatus(gl.FRAMEBUFFER);
1578            switch (status) {
1579                case gl.FRAMEBUFFER_COMPLETE:
1580                    console.info("webgltest checkFramebufferStatus FRAMEBUFFER_COMPLETE");
1581                    break;
1582                case gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:
1583                    console.info("webgltest checkFramebufferStatus FRAMEBUFFER_INCOMPLETE_ATTACHMENT");
1584                    break;
1585                case gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:
1586                    console.info("webgltest checkFramebufferStatus FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT");
1587                    break;
1588                case gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:
1589                    console.info("webgltest checkFramebufferStatus FRAMEBUFFER_INCOMPLETE_DIMENSIONS");
1590                    break;
1591                case gl.FRAMEBUFFER_UNSUPPORTED:
1592                    console.info("webgltest checkFramebufferStatus FRAMEBUFFER_UNSUPPORTED");
1593                    break;
1594            }
1595            return status;
1596        }
1597
1598        /**
1599         * 检查WebGLFramebuffer对象的完整性状态
1600         */
1601        function checkFramebufferStatus(callback) {
1602            let buf = gl.createFramebuffer();
1603            gl.bindFramebuffer(gl.FRAMEBUFFER, buf);
1604            callback(buf);
1605            gl.deleteFramebuffer(buf);
1606        }
1607
1608        /**
1609         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0071
1610         * @tc.name webgl_test_checkFramebufferStatus
1611         * @tc.desc Test checkFramebufferStatus.
1612         */
1613        it('webgl_test_checkFramebufferStatus', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1614            async function (done) {
1615            console.info("webgltest [webgl_test_checkFramebufferStatus] checkFramebufferStatus");
1616            let buf = gl.createFramebuffer();
1617            console.info("webgltest newFramebuffer:", buf);
1618            expect(buf != null).assertTrue();
1619            let status = checkFrameBufferStatus();
1620            expect(status == gl.FRAMEBUFFER_COMPLETE).assertEqual(true);
1621            console.info("webgltest gl.bindFramebuffer(gl.FRAMEBUFFER, buf);");
1622            gl.bindFramebuffer(gl.FRAMEBUFFER, buf);
1623            expect(gl.isFramebuffer(buf)).assertEqual(true);
1624            status = checkFrameBufferStatus();
1625            expect(status == gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT).assertEqual(true);
1626            gl.deleteFramebuffer(buf);
1627            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1628            done();
1629        })
1630
1631
1632        /**
1633         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0072
1634         * @tc.name webgl_test_checkFramebufferStatus_1
1635         * @tc.desc Test checkFramebufferStatus.
1636         */
1637        it('webgl_test_checkFramebufferStatus_1', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1638            async function (done) {
1639            console.info("webgltest [webgl_test_checkFramebufferStatus_1] checkFramebufferStatus");
1640            checkFramebufferStatus((buf) => {
1641                let status = gl.checkFramebufferStatus(gl.FRAMEBUFFER);
1642                expect(status == gl.FRAMEBUFFER_COMPLETE).assertEqual(false);
1643                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1644            });
1645            done();
1646        })
1647
1648        /**
1649         * 判定给定的WebGLFramebuffer是否有效
1650         */
1651        function isFramebuffer(callback) {
1652            let buf = gl.createFramebuffer();
1653            expect(gl.isFramebuffer(buf)).assertEqual(false);
1654            gl.bindFramebuffer(gl.FRAMEBUFFER, buf);
1655            callback(buf);
1656            gl.deleteFramebuffer(buf);
1657        }
1658
1659        /**
1660         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0073
1661         * @tc.name webgl_test_isFramebuffer
1662         * @tc.desc Test isFramebuffer.
1663         */
1664        it('webgl_test_isFramebuffer', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
1665            console.info("webgltest [webgl_test_isFramebuffer] isFramebuffer");
1666            let buf = gl.createFramebuffer();
1667            console.info("webgltest newFramebuffer:", buf);
1668            expect(buf != null).assertTrue();
1669            console.log("webgltest isFramebuffer() ", gl.isFramebuffer(buf));
1670            expect(gl.isFramebuffer(buf)).assertEqual(false);
1671            console.info("webgltest gl.bindFramebuffer(gl.FRAMEBUFFER, buf);");
1672            gl.bindFramebuffer(gl.FRAMEBUFFER, buf);
1673            console.log("webgltest isFramebuffer() ", gl.isFramebuffer(buf));
1674            expect(gl.isFramebuffer(buf)).assertEqual(true);
1675            checkFrameBufferStatus();
1676            gl.deleteFramebuffer(buf);
1677            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1678            done();
1679        })
1680
1681
1682        /**
1683         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0074
1684         * @tc.name webgl_test_isFramebuffer_1
1685         * @tc.desc Test isFramebuffer.
1686         */
1687        it('webgl_test_isFramebuffer_1', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
1688            console.info("webgltest [webgl_test_isFramebuffer_1] isFramebuffer");
1689            isFramebuffer((buf) => {
1690                expect(gl.isFramebuffer(buf)).assertEqual(true);
1691                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1692            });
1693            done();
1694        })
1695
1696
1697        /**
1698         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0075
1699         * @tc.name webgl_test_isFramebuffer_2
1700         * @tc.desc Test isFramebuffer.
1701         */
1702        it('webgl_test_isFramebuffer_2', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
1703            console.info("webgltest [webgl_test_isFramebuffer_2] isFramebuffer");
1704            isFramebuffer((buf) => {
1705                expect(gl.isFramebuffer(null)).assertEqual(false);
1706                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1707            });
1708            done();
1709        })
1710
1711
1712        /**
1713         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0076
1714         * @tc.name webgl_test_isFramebuffer_3
1715         * @tc.desc Test isFramebuffer.
1716         */
1717        it('webgl_test_isFramebuffer_3', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
1718            console.info("webgltest [webgl_test_isFramebuffer_3] isFramebuffer");
1719            isFramebuffer((buf) => {
1720                expect(gl.isFramebuffer(undefined)).assertEqual(false);
1721                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1722            });
1723            done();
1724        })
1725
1726        /**
1727         * WebGL API 的 WebGLRenderingContext.framebufferRenderbuffer()
1728         * 方法将 WebGLRenderbuffer 对象附加到 WebGLFramebuffer 对象。
1729         */
1730        function framebufferRenderbuffer(callback, finish) {
1731            let framebuffer = gl.createFramebuffer();
1732            gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
1733            let renderbuffer = gl.createRenderbuffer();
1734            gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);
1735            callback(framebuffer, renderbuffer);
1736            let object = gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0,
1737                gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME,);
1738            finish(object, framebuffer, renderbuffer);
1739            gl.deleteRenderbuffer(renderbuffer);
1740            gl.deleteFramebuffer(framebuffer);
1741        }
1742
1743        /**
1744         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0077
1745         * @tc.name webgl_test_framebufferRenderbuffer
1746         * @tc.desc Test framebufferRenderbuffer.
1747         */
1748        it('webgl_test_framebufferRenderbuffer', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1749            async function (done) {
1750            console.info("webgltest [webgl_test_framebufferRenderbuffer] framebufferRenderbuffer");
1751            let framebuffer = gl.createFramebuffer();
1752            console.info("webgltest framebuffer:", framebuffer);
1753            gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
1754            expect(gl.isFramebuffer(framebuffer)).assertEqual(true);
1755            let renderbuffer = gl.createRenderbuffer();
1756            console.info("webgltest renderbuffer:", renderbuffer);
1757            gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);
1758            expect(gl.isRenderbuffer(renderbuffer)).assertEqual(true);
1759            gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, renderbuffer);
1760            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1761            let object = gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0,
1762                gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME,);
1763            console.info("webgltest getFramebufferAttachmentParameter:", object);
1764            expect(object).assertEqual(renderbuffer);
1765            gl.deleteRenderbuffer(renderbuffer);
1766            gl.deleteFramebuffer(framebuffer);
1767            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1768            done();
1769        })
1770
1771
1772        /**
1773         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0078
1774         * @tc.name webgl_test_framebufferRenderbuffer_1
1775         * @tc.desc Test framebufferRenderbuffer.
1776         */
1777        it('webgl_test_framebufferRenderbuffer_1', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1778            async function (done) {
1779            console.info("webgltest [webgl_test_framebufferRenderbuffer_1] framebufferRenderbuffer");
1780            framebufferRenderbuffer((framebuffer, renderbuffer) => {
1781                gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, renderbuffer);
1782                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1783            }, (object, framebuffer, renderbuffer) => {
1784                expect(object).assertEqual(renderbuffer);
1785                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1786            });
1787            done();
1788        })
1789
1790
1791        /**
1792         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0079
1793         * @tc.name webgl_test_framebufferRenderbuffer_2
1794         * @tc.desc Test framebufferRenderbuffer.
1795         */
1796        it('webgl_test_framebufferRenderbuffer_2', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1797            async function (done) {
1798            console.info("webgltest [webgl_test_framebufferRenderbuffer_2] framebufferRenderbuffer");
1799            framebufferRenderbuffer((framebuffer, renderbuffer) => {
1800                gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, renderbuffer);
1801                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1802            }, (object, framebuffer, renderbuffer) => {
1803                expect(object).assertEqual(null);
1804                expect(checkError(gl)).assertEqual(gl.INVALID_ENUM);
1805            });
1806            done();
1807        })
1808
1809
1810        /**
1811         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0080
1812         * @tc.name webgl_test_framebufferRenderbuffer_3
1813         * @tc.desc Test framebufferRenderbuffer.
1814         */
1815        it('webgl_test_framebufferRenderbuffer_3', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1816            async function (done) {
1817            console.info("webgltest [webgl_test_framebufferRenderbuffer_3] framebufferRenderbuffer");
1818            framebufferRenderbuffer((framebuffer, renderbuffer) => {
1819                gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.STENCIL_ATTACHMENT, gl.RENDERBUFFER, renderbuffer);
1820                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1821            }, (object, framebuffer, renderbuffer) => {
1822                expect(object).assertEqual(null);
1823                expect(checkError(gl)).assertEqual(gl.INVALID_ENUM);
1824            });
1825            done();
1826        })
1827
1828
1829        /**
1830         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0081
1831         * @tc.name webgl_test_framebufferRenderbuffer_4
1832         * @tc.desc Test framebufferRenderbuffer.
1833         */
1834        it('webgl_test_framebufferRenderbuffer_4', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1835            async function (done) {
1836            console.info("webgltest [webgl_test_framebufferRenderbuffer_4] framebufferRenderbuffer");
1837            framebufferRenderbuffer((framebuffer, renderbuffer) => {
1838                gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, renderbuffer);
1839                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1840            }, (object, framebuffer, renderbuffer) => {
1841                expect(object).assertEqual(null);
1842                expect(checkError(gl)).assertEqual(gl.INVALID_ENUM);
1843            });
1844            done();
1845        })
1846
1847
1848        /**
1849         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0082
1850         * @tc.name webgl_test_framebufferRenderbuffer_5
1851         * @tc.desc Test framebufferRenderbuffer.
1852         */
1853        it('webgl_test_framebufferRenderbuffer_5', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1854            async function (done) {
1855            console.info("webgltest [webgl_test_framebufferRenderbuffer_5] framebufferRenderbuffer");
1856            framebufferRenderbuffer((framebuffer, renderbuffer) => {
1857                gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, null);
1858                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1859            }, (object, framebuffer, renderbuffer) => {
1860                expect(object).assertEqual(null);
1861                expect(checkError(gl)).assertEqual(gl.INVALID_ENUM);
1862            });
1863            done();
1864        })
1865
1866
1867        /**
1868         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0083
1869         * @tc.name webgl_test_framebufferRenderbuffer_6
1870         * @tc.desc Test framebufferRenderbuffer.
1871         */
1872        it('webgl_test_framebufferRenderbuffer_6', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1873            async function (done) {
1874            console.info("webgltest [webgl_test_framebufferRenderbuffer_6] framebufferRenderbuffer");
1875            framebufferRenderbuffer((framebuffer, renderbuffer) => {
1876                gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, undefined);
1877                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1878            }, (object, framebuffer, renderbuffer) => {
1879                expect(object).assertEqual(null);
1880                expect(checkError(gl)).assertEqual(gl.INVALID_ENUM);
1881            });
1882            done();
1883        })
1884
1885        /**
1886         * 获取帧缓冲区连接的相关信息。
1887         */
1888        function getFramebufferAttachmentParameter(callback, finish) {
1889            let framebuffer = gl.createFramebuffer();
1890            gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
1891            let renderbuffer = gl.createRenderbuffer();
1892            gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);
1893            gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, renderbuffer);
1894            callback(framebuffer, renderbuffer);
1895            finish(framebuffer, renderbuffer);
1896            gl.deleteRenderbuffer(renderbuffer);
1897            gl.deleteFramebuffer(framebuffer);
1898        }
1899
1900        /**
1901         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0084
1902         * @tc.name webgl_test_getFramebufferAttachmentParameter
1903         * @tc.desc Test getFramebufferAttachmentParameter.
1904         */
1905        it('webgl_test_getFramebufferAttachmentParameter', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1906            async function (done) {
1907            console.info("webgltest [webgl_test_getFramebufferAttachmentParameter] getFramebufferAttachmentParameter");
1908            let framebuffer = gl.createFramebuffer();
1909            console.info("webgltest framebuffer:", framebuffer);
1910            gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
1911            expect(gl.isFramebuffer(framebuffer)).assertEqual(true);
1912            let renderbuffer = gl.createRenderbuffer();
1913            console.info("webgltest renderbuffer:", renderbuffer);
1914            gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);
1915            expect(gl.isRenderbuffer(renderbuffer)).assertEqual(true);
1916            gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, renderbuffer);
1917            let object = gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0,
1918                gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME);
1919            console.info("webgltest gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME); ", object);
1920            expect(object).assertEqual(renderbuffer);
1921            gl.deleteRenderbuffer(renderbuffer);
1922            gl.deleteFramebuffer(framebuffer);
1923            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1924            done();
1925        })
1926
1927
1928        /**
1929         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0085
1930         * @tc.name webgl_test_getFramebufferAttachmentParameter_1
1931         * @tc.desc Test getFramebufferAttachmentParameter.
1932         */
1933        it('webgl_test_getFramebufferAttachmentParameter_1', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1934            async function (done) {
1935            console.info("webgltest [webgl_test_getFramebufferAttachmentParameter_1] getFramebufferAttachmentParameter");
1936            getFramebufferAttachmentParameter((framebuffer, renderbuffer) => {
1937                let object = gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0,
1938                gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME);
1939                expect(object).assertEqual(renderbuffer);
1940                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1941            }, (framebuffer, renderbuffer) => {
1942                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1943            });
1944            done();
1945        })
1946
1947
1948        /**
1949         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0086
1950         * @tc.name webgl_test_getFramebufferAttachmentParameter_2
1951         * @tc.desc Test getFramebufferAttachmentParameter.
1952         */
1953        it('webgl_test_getFramebufferAttachmentParameter_2', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1954            async function (done) {
1955            console.info("webgltest [webgl_test_getFramebufferAttachmentParameter_2] getFramebufferAttachmentParameter");
1956            getFramebufferAttachmentParameter((framebuffer, renderbuffer) => {
1957                let object = gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0,
1958                gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE);
1959                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1960            }, (framebuffer, renderbuffer) => {
1961                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1962            });
1963            done();
1964        })
1965
1966
1967        /**
1968         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0087
1969         * @tc.name webgl_test_getFramebufferAttachmentParameter_3
1970         * @tc.desc Test getFramebufferAttachmentParameter.
1971         */
1972        it('webgl_test_getFramebufferAttachmentParameter_3', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1973            async function (done) {
1974            console.info("webgltest [webgl_test_getFramebufferAttachmentParameter_3] getFramebufferAttachmentParameter");
1975            getFramebufferAttachmentParameter((framebuffer, renderbuffer) => {
1976                let object = gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT,
1977                gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL);
1978                expect(checkError(gl)).assertEqual(gl.INVALID_ENUM);
1979            }, (framebuffer, renderbuffer) => {
1980                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
1981            });
1982            done();
1983        })
1984
1985
1986        /**
1987         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0088
1988         * @tc.name webgl_test_getFramebufferAttachmentParameter_4
1989         * @tc.desc Test getFramebufferAttachmentParameter.
1990         */
1991        it('webgl_test_getFramebufferAttachmentParameter_4', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
1992            async function (done) {
1993            console.info("webgltest [webgl_test_getFramebufferAttachmentParameter_4] getFramebufferAttachmentParameter");
1994            getFramebufferAttachmentParameter((framebuffer, renderbuffer) => {
1995                let object = gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL_ATTACHMENT,
1996                gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE);
1997                expect(checkError(gl)).assertEqual(gl.INVALID_ENUM);
1998            }, (framebuffer, renderbuffer) => {
1999                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
2000            });
2001            done();
2002        })
2003
2004
2005        /**
2006         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0089
2007         * @tc.name webgl_test_getFramebufferAttachmentParameter_5
2008         * @tc.desc Test getFramebufferAttachmentParameter.
2009         */
2010        it('webgl_test_getFramebufferAttachmentParameter_5', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
2011            async function (done) {
2012            console.info("webgltest [webgl_test_getFramebufferAttachmentParameter_5] getFramebufferAttachmentParameter");
2013            getFramebufferAttachmentParameter((framebuffer, renderbuffer) => {
2014                let object = gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT,
2015                gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE);
2016                expect(checkError(gl)).assertEqual(gl.INVALID_ENUM);
2017            }, (framebuffer, renderbuffer) => {
2018                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
2019            });
2020            done();
2021        })
2022
2023
2024        /**
2025         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0090
2026         * @tc.name webgl_test_getFramebufferAttachmentParameter_6
2027         * @tc.desc Test getFramebufferAttachmentParameter.
2028         */
2029        it('webgl_test_getFramebufferAttachmentParameter_6', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
2030            async function (done) {
2031            console.info("webgltest [webgl_test_getFramebufferAttachmentParameter_6] getFramebufferAttachmentParameter");
2032            getFramebufferAttachmentParameter((framebuffer, renderbuffer) => {
2033                let object = gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0,
2034                gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL);
2035                expect(checkError(gl)).assertEqual(gl.INVALID_ENUM);
2036            }, (framebuffer, renderbuffer) => {
2037                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
2038            });
2039            done();
2040        })
2041
2042
2043        /**
2044         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0091
2045         * @tc.name webgl_test_getFramebufferAttachmentParameter_7
2046         * @tc.desc Test getFramebufferAttachmentParameter.
2047         */
2048        it('webgl_test_getFramebufferAttachmentParameter_7', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0,
2049            async function (done) {
2050            console.info("webgltest [webgl_test_getFramebufferAttachmentParameter_7] getFramebufferAttachmentParameter");
2051            getFramebufferAttachmentParameter((framebuffer, renderbuffer) => {
2052                let object = gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0,
2053                gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE);
2054                expect(checkError(gl)).assertEqual(gl.INVALID_ENUM);
2055            }, (framebuffer, renderbuffer) => {
2056                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
2057            });
2058            done();
2059        })
2060
2061        /**
2062         * 更新缓冲区对象的数据储存集
2063         */
2064        function bufferSubData(callback, finish) {
2065            let arr = new Float32Array([
2066                0.0, 0.5, -0.5, 0.5, 1.0, 0.5,
2067            ]);
2068            let buffer = gl.createBuffer();
2069            gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
2070            gl.bufferData(gl.ARRAY_BUFFER, arr, gl.STATIC_DRAW);
2071            let bufferSize = gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE);
2072            expect(bufferSize == arr.length * arr.BYTES_PER_ELEMENT).assertTrue();
2073            callback(arr);
2074            finish();
2075            gl.deleteBuffer(buffer);
2076        }
2077
2078        /**
2079         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0092
2080         * @tc.name webgl_test_bufferSubData
2081         * @tc.desc Test bufferSubData.
2082         */
2083        it('webgl_test_bufferSubData', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
2084            console.info("webgltest [webgl_test_bufferSubData] bufferSubData");
2085            let arr = new Float32Array([
2086                0.0, 0.5, -0.5, 0.5, 1.0, 0.5,
2087            ]);
2088            console.info("webgltest arr:", arr);
2089            console.info("webgltest arr.BYTES_PER_ELEMENT:", arr.BYTES_PER_ELEMENT);
2090            let buffer = gl.createBuffer();
2091            gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
2092            console.info("webgltest gl.bufferData(gl.ARRAY_BUFFER, arr, gl.STATIC_DRAW);")
2093            gl.bufferData(gl.ARRAY_BUFFER, arr, gl.STATIC_DRAW);
2094            let bufferSize = gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE);
2095            console.info("webgltest bufferSize:", bufferSize);
2096            expect(bufferSize == arr.length * arr.BYTES_PER_ELEMENT).assertTrue();
2097            console.info("webgltest gl.bufferSubData(gl.ARRAY_BUFFER, 0, arr);")
2098            gl.bufferSubData(gl.ARRAY_BUFFER, 0, arr);
2099            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
2100            gl.deleteBuffer(buffer);
2101            expect(checkError(gl)).assertEqual(gl.NO_ERROR);
2102            done();
2103        })
2104
2105
2106        /**
2107         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0093
2108         * @tc.name webgl_test_bufferSubData_1
2109         * @tc.desc Test bufferSubData.
2110         */
2111        it('webgl_test_bufferSubData_1', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
2112            console.info("webgltest [webgl_test_bufferSubData_1] bufferSubData");
2113            bufferSubData((arr) => {
2114                gl.bufferSubData(gl.ARRAY_BUFFER, 0, arr);
2115                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
2116            }, () => {
2117                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
2118            });
2119            done();
2120        })
2121
2122
2123        /**
2124         * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_BUFFER_0094
2125         * @tc.name webgl_test_bufferSubData_2
2126         * @tc.desc Test bufferSubData.
2127         */
2128        it('webgl_test_bufferSubData_2', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async function (done) {
2129            console.info("webgltest [webgl_test_bufferSubData_2] bufferSubData");
2130            bufferSubData((arr) => {
2131                gl.bufferSubData(gl.ELEMENT_ARRAY_BUFFER, 0, arr);
2132                expect(checkError(gl)).assertEqual(gl.INVALID_OPERATION);
2133            }, () => {
2134                expect(checkError(gl)).assertEqual(gl.NO_ERROR);
2135            });
2136            done();
2137        })
2138    })
2139}
2140