/*
 * Copyright (C) 2021 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import app from '@system.app'
import webgl from "@ohos.webglnapi";
import Context from '@ohos.napi_context'

import {
	describe,
	beforeAll,
	beforeEach,
	afterEach,
	afterAll,
	it,
	expect
} from 'deccjsunit/index'

describe('webgl1Test', function() {
	console.info('webgltest start');
	var gl;
	var gl2;

	var indices = new Uint16Array([0, 1, 2, 1, 3, 4]);
	var vertices = new Uint16Array([
		-0.5, 0.5, 0.0,
		0.0, 0.5, 0.0,
		-0.25, 0.25, 0.0,
		0.5, 0.5, 0.0,
		0.25, 0.25, 0.0,
	])

	//顶点着色器程序
	var VSHADER_SOURCE =
		"attribute vec4 a_Position;" +
		"void main() {" +
		//设置坐标
		"gl_Position = a_Position; " +
		//    "gl_PointSize = 10.0;" +
		"} ";

	//片元着色器
	var FSHADER_SOURCE =
		"void main() {" +
		//设置颜色
		"gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);" +
		"}";

	function globalFunction() {
		const vertexShader = gl.createShader(gl.VERTEX_SHADER);
		gl.shaderSource(vertexShader, VSHADER_SOURCE);
		gl.compileShader(vertexShader);
		const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);
		gl.shaderSource(fragmentShader, FSHADER_SOURCE);
		gl.compileShader(fragmentShader);
		const programObj = gl.createProgram();
		console.info("testUseProgram has failed for " + programObj)
		const useProgramError1 = gl.getError();
		console.info("useProgramError: " + useProgramError1);
		const renderBufferValue1 = gl.getParameter(gl.CURRENT_PROGRAM);
		console.info("testUseProgram has failed for " + renderBufferValue1)
		gl.attachShader(programObj, vertexShader);
		gl.attachShader(programObj, fragmentShader);
		gl.linkProgram(programObj);
		gl.useProgram(programObj);
		return programObj;
	}


	function createProgram(gl) {
		//顶点着色器程序
		var VSHADER_SOURCE =
			'attribute vec4 a_Position;\n' +
			'void main() {\n' +
			'  gl_Position = a_Position;\n' +
			'}\n';

		// 片元着色器程序
		var FSHADER_SOURCE =
			'precision mediump float;\n' +
			'uniform vec4 u_FragColor;\n' +
			'void main() {\n' +
			'  gl_FragColor = u_FragColor;\n' +
			'}\n';
		var vertexShader = gl.createShader(gl.VERTEX_SHADER);
		gl.shaderSource(vertexShader, VSHADER_SOURCE);
		gl.compileShader(vertexShader);
		var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);
		gl.shaderSource(fragmentShader, FSHADER_SOURCE);
		gl.compileShader(fragmentShader);
		const programObj = gl.createProgram();
		console.log("testUseProgram has failed for " + programObj)
		const useProgramError1 = gl.getError();
		console.info("useProgramError: " + useProgramError1);
		const renderBufferValue1 = gl.getParameter(gl.CURRENT_PROGRAM);
		console.log("testUseProgram has failed for " + renderBufferValue1)
		gl.attachShader(programObj, vertexShader);
		gl.attachShader(programObj, fragmentShader);
		gl.linkProgram(programObj);
		gl.useProgram(programObj);
		return programObj;
	}

	function initShaders(gl, vshader, fshader) {
		var program = createProgramExternal(gl, vshader, fshader);
		console.log("======createProgram program: " + JSON.stringify(program));

		if (!program) {
			console.log('Failed to create program');
			return false;
		}

		gl.useProgram(program);
		gl.program = program;

		return true;
	}

	function createProgramExternal(gl, vshader, fshader) {
		// Create shader object
		var vertexShader = loadShader(gl, gl.VERTEX_SHADER, vshader);
		console.log("======vertexShader: " + vertexShader);
		var fragmentShader = loadShader(gl, gl.FRAGMENT_SHADER, fshader);
		if (!vertexShader || !fragmentShader) {
			return null;
		}

		// Create a program object
		var program = gl.createProgram();
		console.log("======createProgram program: " + JSON.stringify(program));

		if (!program) {
			return null;
		}

		// Attach the shader objects
		gl.attachShader(program, vertexShader);
		gl.attachShader(program, fragmentShader);

		// Link the program object
		gl.linkProgram(program);

		// Check the result of linking
		var linked = gl.getProgramParameter(program, 0x8B82);
		console.log("======getProgramParameter linked: " + linked);

		const getUniformLocationValue = gl.getUniformLocation(program, "a_Position");
		console.log("======getUniformLocation: " + JSON.stringify(getUniformLocationValue));


		if (!linked) {
			var error = gl.getProgramInfoLog(program);
			console.log('Failed to link program: ' + error);
			gl.deleteProgram(program);
			gl.deleteShader(fragmentShader);
			gl.deleteShader(vertexShader);
			return null;
		}

		return program;
	}

	function loadShader(gl, type, source) {
		console.log("======into loadShader====");
		// Create shader object
		var shader = gl.createShader(type);
		if (shader == null) {
			console.log('unable to create shader');
			return null;
		}

		const isShaderValue = gl.isShader(shader);
		console.log('isShader: ' + isShaderValue);

		// Set the shader program
		gl.shaderSource(shader, source);

		// Compile the shader
		gl.compileShader(shader);

		// Check the result of compilation
		var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
		if (!compiled) {
			var error = gl.getShaderInfoLog(shader);
			console.log('Failed to compile shader: ' + error);
			gl.deleteShader(shader);
			return null;
		}

		var vertex = gl.getShaderParameter(shader, gl.VERTEX_SHADER);
		console.log('getShaderParameter VERTEX_SHADER: ' + vertex);


		return shader;
	}

	function initVertexBuffers(gl) {
		var vertices = new Float32Array([
			0.0, -1.0, -0.5, 0, 0.5, 0
		]);

		var n = 3; // 点的个数

		// 创建缓冲区对象
		var vertexBuffer = gl.createBuffer();
		if (!vertexBuffer) {
			console.log('Failed to create the buffer object');
			return -1;
		}

		// 将缓冲区对象绑定到目标
		gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer);
		// 向缓冲区对象写入数据
		gl.bufferData(gl.ARRAY_BUFFER, vertices.buffer, gl.STATIC_DRAW);

		var aPosition = gl.getAttribLocation(gl.program, 'a_Position');
		console.info("webgl# getAttribLocation getAttribLocation success:" + JSON.stringify(gl.program));
		console.info("webgl# getAttribLocation getAttribLocation success:" + aPosition);
		if (aPosition < 0) {
			console.log('Failed to get the storage location of a_Position');
			return -1;
		}
		// 将缓冲区对象分配给a_Position变量
		gl.vertexAttribPointer(aPosition, 2, gl.FLOAT, false, 0, 0);

		// 连接a_Position变量与分配给它的缓冲区对象
		gl.enableVertexAttribArray(aPosition);

		return n;
	}


	var float1 = new Float32Array([1.1, 1.2, 1.3, 1.4]);
	var int1 = new Int8Array([1, 1, 1, 1]);
	var uint1 = new Uint8Array([1, 1, 1, 1]);
	var float2 = [1.1, 1.2, 1.3, 1.4];
	var int2 = [1, 1, 1, 1];
	var uint2 = [1, 1, 1, 1];

	function initContext() {
		console.info('initContext start');
		// 获取canvas元素
		const el = global.el;
		const el2 = global.el2;
		// 获取webgl上下文
		gl = el.getContext('webgl');
		if (!gl) {
			console.log('webgltest Failed to get the rendering context for WebGL');
		}
		gl2 = el2.getContext('webgl2');
		if (!gl) {
			console.log('webgltest Failed to get the rendering context for WebGL2');
		}
		console.info('webgltest initContext finish');
	}

	function deleteContext() {
		if (gl != null) {
			gl = null;
			console.info("webgltest gl has null");
		}
		if (gl2 != null) {
			console.info("webgltest gl2 has null");
			gl2 = null;
		}
	}

	/**
	 * run before testClass
	 */
	beforeAll(async function(done) {
		console.info('webgltest beforeAll called');
		initContext();
		done();
	});

	/**
	 * run after testClass
	 */
	afterAll(async function(done) {
		console.info('webgltest afterEach called');
		deleteContext();
		done();
	})


	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0301
	 * @tc.name testUniform1iv3
	 * @tc.desc Test uniform1iv.
	 */
	it('testUniform1iv3', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniform1iv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		gl2.uniform1iv(uniformLocation, [1, 2]);
		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});


	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0302
	 * @tc.name testUniform1iv4
	 * @tc.desc Test uniform1iv.
	 */
	it('testUniform1iv4', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniform1iv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		gl2.uniform1iv(uniformLocation, [1, 2], 0, 0);
		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0303
	 * @tc.name testUniform2ivFirst
	 * @tc.desc Test uniform2iv.
	 */
	it('testUniform2ivFirst', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniform2iv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		const int32Array = new Int32Array([1, 2]);
		gl2.uniform2iv(uniformLocation, int32Array);
		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});


	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0304
	 * @tc.name testUniform2ivSecond
	 * @tc.desc Test uniform2iv.
	 */
	it('testUniform2ivSecond', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniform2iv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		const int32Array = new Int32Array([1, 2]);
		gl2.uniform2iv(uniformLocation, int32Array, 0, 0);
		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});


	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0305
	 * @tc.name testUniform2ivError
	 * @tc.desc Test uniform2iv.
	 */
	it('testUniform2ivError', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniform2iv test start ...' + JSON.stringify(gl2));
		const programObj = gl.createProgram();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		const int32Array = new Int32Array([1, 2]);
		gl2.uniform2iv(uniformLocation, int32Array);
		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(1282);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0306
	 * @tc.name testUniform2iv3
	 * @tc.desc Test uniform2iv.
	 */
	it('testUniform2iv3', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniform2iv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		gl2.uniform2iv(uniformLocation, [1, 2]);
		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0307
	 * @tc.name testUniform2iv4
	 * @tc.desc Test uniform2iv.
	 */
	it('testUniform2iv4', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniform2iv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		gl2.uniform2iv(uniformLocation, [1, 2], 0, 0);
		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0308
	 * @tc.name testUniform3ivFirst
	 * @tc.desc Test uniform3iv.
	 */
	it('testUniform3ivFirst', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniform3iv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		const int32Array = new Int32Array([1, 2]);
		gl2.uniform3iv(uniformLocation, int32Array);
		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0309
	 * @tc.name testUniform3ivSecond
	 * @tc.desc Test uniform3iv.
	 */
	it('testUniform3ivSecond', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniform3iv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		const int32Array = new Int32Array([1, 2]);
		gl2.uniform3iv(uniformLocation, int32Array, 0, 0);
		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0310
	 * @tc.name testUniform3ivError
	 * @tc.desc Test uniform3iv.
	 */
	it('testUniform3ivError', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniform3iv test start ...' + JSON.stringify(gl2));
		const programObj = gl.createProgram();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		const int32Array = new Int32Array([1, 2]);
		gl2.uniform3iv(uniformLocation, int32Array);
		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(1282);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0311
	 * @tc.name testUniform3iv3
	 * @tc.desc Test uniform3iv.
	 */
	it('testUniform3iv3', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniform3iv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		gl2.uniform3iv(uniformLocation, [1, 2]);
		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0312
	 * @tc.name testUniform3iv4
	 * @tc.desc Test uniform3iv.
	 */
	it('testUniform3iv4', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniform3iv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		gl2.uniform3iv(uniformLocation, [1, 2], 0, 0);
		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0313
	 * @tc.name testUniform4ivFirst
	 * @tc.desc Test uniform4iv.
	 */
	it('testUniform4ivFirst', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniform4iv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		const int32Array = new Int32Array([1, 2]);
		gl2.uniform4iv(uniformLocation, int32Array);
		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0314
	 * @tc.name testUniform4ivSecond
	 * @tc.desc Test uniform4iv.
	 */
	it('testUniform4ivSecond', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniform4iv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		const int32Array = new Int32Array([1, 2]);
		gl2.uniform4iv(uniformLocation, int32Array, 0, 0);
		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0315
	 * @tc.name testUniform4ivError
	 * @tc.desc Test uniform4iv.
	 */
	it('testUniform4ivError', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniform4iv test start ...' + JSON.stringify(gl2));
		const programObj = gl.createProgram();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		const int32Array = new Int32Array([1, 2]);
		gl2.uniform4iv(uniformLocation, int32Array);
		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(1282);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0316
	 * @tc.name testUniform4iv3
	 * @tc.desc Test uniform4iv.
	 */
	it('testUniform4iv3', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniform4iv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		gl2.uniform4iv(uniformLocation, [1, 2]);
		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0317
	 * @tc.name testUniform4iv4
	 * @tc.desc Test uniform4iv.
	 */
	it('testUniform4iv4', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniform4iv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		gl2.uniform4iv(uniformLocation, [1, 2], 0, 0);
		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0318
	 * @tc.name testUniformMatrix4fvFirst
	 * @tc.desc Test uniformMatrix4fv.
	 */
	it('testUniformMatrix4fvFirst', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniformMatrix4fv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		var flaot32list = new Float32Array([1, 2]);
		gl2.uniformMatrix4fv(uniformLocation, true, flaot32list);
		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0319
	 * @tc.name testUniformMatrix4fv2
	 * @tc.desc Test uniformMatrix4fv.
	 */
	it('testUniformMatrix4fv2', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniformMatrix4fv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		var flaot32list = new Float32Array([1, 2]);
		gl2.uniformMatrix4fv(uniformLocation, true, flaot32list, 0, 0);
		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0320
	 * @tc.name testUniformMatrix4fvError
	 * @tc.desc Test uniformMatrix4fv.
	 */
	it('testUniformMatrix4fvError', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniformMatrix4fv test start ...' + JSON.stringify(gl2));
		const programObj = gl.createProgram();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		var flaot32list = new Float32Array([1, 2]);
		gl2.uniformMatrix4fv(uniformLocation, true, flaot32list);
		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(1282);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0321
	 * @tc.name testUniformMatrix4fv3
	 * @tc.desc Test uniformMatrix4fv.
	 */
	it('testUniformMatrix4fv3', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniformMatrix4fv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		gl2.uniformMatrix4fv(uniformLocation, true, [1, 2]);
		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0322
	 * @tc.name testUniformMatrix4fv4
	 * @tc.desc Test uniformMatrix4fv.
	 */
	it('testUniformMatrix4fv4', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniformMatrix4fv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		gl2.uniformMatrix4fv(uniformLocation, true, [1, 2], 0, 0);
		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0323
	 * @tc.name testUniformMatrix3fvFirst
	 * @tc.desc Test uniformMatrix3fv.
	 */
	it('testUniformMatrix3fvFirst', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniformMatrix3fv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		var flaot32list = new Float32Array([1, 2]);
		gl2.uniformMatrix3fv(uniformLocation, true, flaot32list);

		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0324
	 * @tc.name testUniformMatrix3fv2
	 * @tc.desc Test uniformMatrix3fv.
	 */
	it('testUniformMatrix3fv2', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniformMatrix3fv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		var flaot32list = new Float32Array([1, 2]);
		gl2.uniformMatrix3fv(uniformLocation, true, flaot32list, 0, 0);

		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0325
	 * @tc.name testUniformMatrix3fvError
	 * @tc.desc Test uniformMatrix3fv.
	 */
	it('testUniformMatrix3fvError', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniformMatrix3fv test start ...' + JSON.stringify(gl2));
		const programObj = gl.createProgram();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		var flaot32list = new Float32Array([1, 2]);
		gl2.uniformMatrix3fv(uniformLocation, true, flaot32list);
		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(1282);
		done();
	});


	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0326
	 * @tc.name testUniformMatrix3fv3
	 * @tc.desc Test uniformMatrix3fv.
	 */
	it('testUniformMatrix3fv3', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniformMatrix3fv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		gl2.uniformMatrix3fv(uniformLocation, true, [1, 2]);

		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0327
	 * @tc.name testUniformMatrix3fv4
	 * @tc.desc Test uniformMatrix3fv.
	 */
	it('testUniformMatrix3fv4', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniformMatrix3fv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		gl2.uniformMatrix3fv(uniformLocation, true, [1, 2], 0, 0);

		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0328
	 * @tc.name testUniformMatrix2fv1
	 * @tc.desc Test uniformMatrix2fv.
	 */
	it('testUniformMatrix2fv1', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniformMatrix2fv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		var flaot32list = new Float32Array([1, 2]);
		gl2.uniformMatrix2fv(uniformLocation, true, flaot32list);

		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0329
	 * @tc.name testUniformMatrix2fv2
	 * @tc.desc Test uniformMatrix2fv.
	 */
	it('testUniformMatrix2fv2', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniformMatrix2fv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		var flaot32list = new Float32Array([1, 2]);
		gl2.uniformMatrix2fv(uniformLocation, true, flaot32list, 0, 0);

		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});


	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0330
	 * @tc.name testUniformMatrix2fvError
	 * @tc.desc Test uniformMatrix2fv.
	 */
	it('testUniformMatrix2fvError', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniformMatrix2fv test start ...' + JSON.stringify(gl2));
		const programObj = gl.createProgram();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		var flaot32list = new Float32Array([1, 2]);
		gl2.uniformMatrix2fv(uniformLocation, true, flaot32list);
		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(1282);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0331
	 * @tc.name testUniformMatrix2fv3
	 * @tc.desc Test uniformMatrix2fv.
	 */
	it('testUniformMatrix2fv3', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniformMatrix2fv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		gl2.uniformMatrix2fv(uniformLocation, true, [1, 2]);

		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0332
	 * @tc.name testUniformMatrix2fv4
	 * @tc.desc Test uniformMatrix2fv.
	 */
	it('testUniformMatrix2fv4', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 uniformMatrix2fv test start ...' + JSON.stringify(gl2));
		const programObj = globalFunction();
		const uniformLocation = gl.getUniformLocation(programObj, "a_Position");

		gl2.uniformMatrix2fv(uniformLocation, true, [1, 2], 0, 0);

		const error = gl.getError();
		console.info("error: " + error);
		expect(error).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0333
	 * @tc.name testBufferData1
	 * @tc.desc Test bufferData.
	 */
	it('testBufferData1', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 bufferData test start ...' + JSON.stringify(gl2));
		const buffer = gl.createBuffer();
		gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
		gl2.bufferData(gl.ARRAY_BUFFER, 1024, gl.STATIC_DRAW);
		const bufferSize = gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE);
		console.info('bufferSize' + bufferSize);
		expect(bufferSize).assertEqual(1024);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0334
	 * @tc.name testBufferData2
	 * @tc.desc Test bufferData.
	 */
	it('testBufferData2', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 bufferData test start ...' + JSON.stringify(gl2));
		const buffer = gl.createBuffer();
		gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
		gl2.bufferData(gl.ARRAY_BUFFER, 1024, gl.STATIC_DRAW);
		const bufferUsage = gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_USAGE);
		console.info('bufferUsage' + bufferUsage);
		expect(bufferUsage).assertEqual(gl.STATIC_DRAW);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0335
	 * @tc.name testBufferData3
	 * @tc.desc Test bufferData.
	 */
	it('testBufferData3', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 bufferData test start ...' + JSON.stringify(gl2));
		gl2.bufferData(gl.ELEMENT_ARRAY_BUFFER, new ArrayBuffer(8), gl.DYNAMIC_READ);
		const errorCode = gl.getError();
		console.info("webgltest bufferData getError: " + errorCode);
		expect(errorCode).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0336
	 * @tc.name testBufferData4
	 * @tc.desc Test bufferData.
	 */
	it('testBufferData4', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 bufferData test start ...' + JSON.stringify(gl2));
		gl2.bufferData(gl.ELEMENT_ARRAY_BUFFER, new ArrayBuffer(8), gl.DYNAMIC_READ, 0, 0);
		const errorCode = gl.getError();
		console.info("webgl2test bufferData getError: " + errorCode);
		expect(errorCode).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0337
	 * @tc.name testBufferDataError
	 * @tc.desc Test bufferData.
	 */
	it('testBufferDataError', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 bufferData test start ...' + JSON.stringify(gl2));
		gl2.bufferData(1024, gl.STATIC_DRAW);
		const bufferSize = gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE);
		console.info('bufferSize' + bufferSize);
		const type = (bufferSize === 1024)
		expect(type).assertEqual(true);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0338
	 * @tc.name testBufferSubData
	 * @tc.desc Test bufferData.
	 */
	it('testBufferSubData', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 bufferData test start ...' + JSON.stringify(gl2));
		gl2.bufferSubData(gl.COPY_READ_BUFFER, 512, new ArrayBuffer(8));
		const errorCode = gl.getError();
		console.info("webgl2test bufferSubData getError: " + errorCode);
		expect(errorCode).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0339
	 * @tc.name testBufferSubData2
	 * @tc.desc Test bufferData.
	 */
	it('testBufferSubData2', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 bufferData test start ...' + JSON.stringify(gl2));
		gl2.bufferSubData(gl.COPY_READ_BUFFER, 512, new ArrayBuffer(8), 0, 0);
		const errorCode = gl.getError();
		console.info("webgl2test bufferSubData getError: " + errorCode);
		expect(errorCode).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0340
	 * @tc.name testTexImage2D
	 * @tc.desc Test texImage2D.
	 */
	it('testTexImage2D', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 texImage2D test start ...' + JSON.stringify(gl2));
		var buffer = new ArrayBuffer(8);
		var view = new DataView(buffer, 0);
		view.setInt16(1, 42);
		gl2.texImage2D(gl2.TEXTURE_2D, 0, 32, 512, 512, 0, 32, 32, view);
		const errorCode = gl.getError();
		console.info("webgl2test texImage2D getError: " + errorCode);
		expect(errorCode).assertEqual(gl.NO_ERROR);
		done();
	});


	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0341
	 * @tc.name testTexImage2D2
	 * @tc.desc Test texImage2D.
	 */
	it('testTexImage2D2', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 texImage2D test start ...' + JSON.stringify(gl2));
		gl2.texImage2D(gl2.TEXTURE_2D, 0, gl.RGB8, 512, 512, 0, gl.RGB, gl.UNSIGNED_BYTE, 0);
		const errorCode = gl.getError();
		console.info("webgl2test texImage2D getError: " + errorCode);
		expect(errorCode).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0342
	 * @tc.name testTexImage2D3
	 * @tc.desc Test texImage2D.
	 */
	it('testTexImage2D3', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 texImage2D test start ...' + JSON.stringify(gl2));
		var buffer = new ArrayBuffer(8);
		var view = new DataView(buffer, 0);
		view.setInt16(1, 42);
		gl2.texImage2D(gl2.TEXTURE_2D, 0, gl.R16F, 512, 512, 0, gl.RED, gl.FLOAT, view, 0);
		const errorCode = gl.getError();
		console.info("webgl2test texImage2D getError: " + errorCode);
		expect(errorCode).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0343
	 * @tc.name testTexImage2D4
	 * @tc.desc Test frontFace.
	 */
	it('testTexImage2D4', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 texImage2D test start ...' + JSON.stringify(gl2));
		var buffer = new ArrayBuffer(8);
		var view = new DataView(buffer, 0);
		view.setInt16(1, 42);
		gl2.texImage2D(gl2.TEXTURE_2D, 0, gl.R16F, 512, 512, 0, gl.RED, gl.FLOAT, view, 0);
		const errorCode = gl.getError();
		console.info("webgl2test texImage2D getError: " + errorCode);
		expect(errorCode).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0344
	 * @tc.name testTexSubImage2D5
	 * @tc.desc Test texSubImage2D.
	 */
	it('testTexSubImage2D5', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 texSubImage2D test start ...' + JSON.stringify(gl2));
		var buffer = new ArrayBuffer(8);
		var view = new DataView(buffer, 0);
		view.setInt16(1, 42);
		gl2.texSubImage2D(gl2.TEXTURE_2D, 0, 0, 0, 512, 512, gl.RED, gl.FLOAT, view, 0);
		const errorCode = gl.getError();
		console.info("webgl2test texSubImage2D getError: " + errorCode);
		expect(errorCode).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0345
	 * @tc.name testTexSubImage2D6
	 * @tc.desc Test texSubImage2D.
	 */
	it('testTexSubImage2D6', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 texSubImage2D test start ...' + JSON.stringify(gl2));
		gl2.texSubImage2D(gl2.TEXTURE_2D, 0, 0, 0, 512, 512, gl.RED, gl.FLOAT, 0);
		const errorCode = gl.getError();
		console.info("webgl2test texSubImage2D getError: " + errorCode);
		expect(errorCode).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0346
	 * @tc.name testTexSubImage2D7
	 * @tc.desc Test texSubImage2D.
	 */
	it('testTexSubImage2D7', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 texSubImage2D test start ...' + JSON.stringify(gl2));
		var buffer = new ArrayBuffer(8);
		var view = new DataView(buffer, 0);
		view.setInt16(1, 42);
		gl2.texSubImage2D(gl2.TEXTURE_2D, 0, 0, 0, 512, 512, gl.RGBA, gl.UNSIGNED_BYTE, view);
		const errorCode = gl.getError();
		console.info("webgl2test texSubImage2D getError: " + errorCode);
		expect(errorCode).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0347
	 * @tc.name testTexSubImage2D8
	 * @tc.desc Test texSubImage2D.
	 */
	it('testTexSubImage2D8', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 texSubImage2D test start ...' + JSON.stringify(gl2));
		var buffer = new ArrayBuffer(8);
		var view = new DataView(buffer, 0);
		view.setInt16(1, 42);
		gl2.texSubImage2D(gl2.TEXTURE_2D, 0, 0, 0, 512, 512, gl.RGBA, gl.UNSIGNED_BYTE, view);
		const errorCode = gl.getError();
		console.info("webgl2test texSubImage2D getError: " + errorCode);
		expect(errorCode).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0348
	 * @tc.name testCompressedTexImage2D9
	 * @tc.desc Test compressedTexImage2D.
	 */
	it('testCompressedTexImage2D9', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 compressedTexImage2D test start ...' + JSON.stringify(gl2));
		gl2.compressedTexImage2D(gl2.TEXTURE_2D, 0, 0x83F3, 512, 512, 0, gl.PIXEL_UNPACK_BUFFER, 0);
		const errorCode = gl.getError();
		console.info("webgl2test compressedTexImage2D getError: " + errorCode);
		expect(errorCode).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0349
	 * @tc.name testCompressedTexImage2D11
	 * @tc.desc Test compressedTexImage2D.
	 */
	it('testCompressedTexImage2D11', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 compressedTexImage2D test start ...' + JSON.stringify(gl2));
		var buffer = new ArrayBuffer(8);
		var view = new DataView(buffer, 0);
		view.setInt16(1, 42);
		gl2.compressedTexImage2D(gl2.TEXTURE_2D, 0, 0x83F3, 512, 512, 0, view, 0, 0);
		const errorCode = gl.getError();
		console.info("webgl2test compressedTexImage2D getError: " + errorCode);
		expect(errorCode).assertEqual(gl.NO_ERROR);
		done();
	});


	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0350
	 * @tc.name testCompressedTexSubImage2D12
	 * @tc.desc Test compressedTexSubImage2D.
	 */
	it('testCompressedTexSubImage2D12', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 compressedTexSubImage2D test start ...' + JSON.stringify(gl2));
		gl2.compressedTexSubImage2D(gl2.TEXTURE_2D, 0, 256, 256, 512, 512, 0x83F3, gl
			.PIXEL_UNPACK_BUFFER, 0);
		const errorCode = gl.getError();
		console.info("webgl2test compressedTexSubImage2D getError: " + errorCode);
		expect(errorCode).assertEqual(gl.NO_ERROR);
		done();
	});


	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0351
	 * @tc.name testCompressedTexSubImage2D13
	 * @tc.desc Test compressedTexSubImage2D.
	 */
	it('testCompressedTexSubImage2D13', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 compressedTexSubImage2D test start ...' + JSON.stringify(gl2));
		var buffer = new ArrayBuffer(8);
		var view = new DataView(buffer, 0);
		view.setInt16(1, 42);
		gl2.compressedTexSubImage2D(gl2.TEXTURE_2D, 0, 256, 256, 512, 512, 0x83F3, view, 0, 0);
		const errorCode = gl.getError();
		console.info("webgl2test compressedTexSubImage2D getError: " + errorCode);
		expect(errorCode).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0352
	 * @tc.name testReadPixelsFirst
	 * @tc.desc Test readPixels.
	 */
	it('testReadPixelsFirst', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 readPixels test start ...' + JSON.stringify(gl2));
		var buffer = new ArrayBuffer(8);
		var view = new DataView(buffer, 0);
		view.setInt16(1, 42);
		gl2.readPixels(0, 0, 512, 512, gl2.RGBA, gl2.UNSIGNED_BYTE, view);
		const errorCode = gl.getError();
		console.info("webgl2test readPixels getError: " + errorCode);
		expect(errorCode).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0353
	 * @tc.name testReadPixelsSecond
	 * @tc.desc Test readPixels.
	 */
	it('testReadPixelsSecond', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 readPixels test start ...' + JSON.stringify(gl2));
		gl2.readPixels(0, 0, 512, 512, gl2.RGBA, gl2.UNSIGNED_BYTE, 0);
		const errorCode = gl.getError();
		console.info("webgl2test readPixels getError: " + errorCode);
		expect(errorCode).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0354
	 * @tc.name testReadPixelsThird
	 * @tc.desc Test readPixels.
	 */
	it('testReadPixelsThird', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 readPixels test start ...' + JSON.stringify(gl2));
		var buffer = new ArrayBuffer(8);
		var view = new DataView(buffer, 0);
		view.setInt16(1, 42);
		gl2.readPixels(0, 0, 512, 512, gl2.RGBA, gl2.UNSIGNED_BYTE, view, 0);
		const errorCode = gl.getError();
		console.info("webgl2test readPixels getError: " + errorCode);
		expect(errorCode).assertEqual(gl.NO_ERROR);
		done();
	});

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0355
	 * @tc.name testReadPixelsError
	 * @tc.desc Test readPixels.
	 */
	it('testReadPixelsError', 0, async function(done) {
		//initContext();
		console.info('jsWebGL2 readPixels test start ...' + JSON.stringify(gl2));
		var buffer = new ArrayBuffer(8);
		var view = new DataView(buffer, 0);
		view.setInt16(1, 42);
		const returnVale = gl2.readPixels(0, 0, 512, 512, gl2.RGBA, gl2.UNSIGNED_BYTE, view, 0);
		const errorCode = gl.getError();
		console.info("webgl2test readPixels getError: " + errorCode);
		const type =
			expect(errorCode).assertEqual(gl.NO_ERROR);
		done();
	});

/*
 * ***************************************** GT ************************************************
 */

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0356
	 * @tc.name testIsFramebuffer
	 * @tc.desc Test isFramebuffer.
	 */
	it('testIsFramebuffer', 0, async function(done) {
		//initContext();
		try {
			console.info('jsWebGL testIsFramebuffer test start ...66');
			var framebuffer = gl.createFramebuffer();
			const isFramebuffer = gl.isFramebuffer(framebuffer);
			console.info("createFramebuffer --> isFramebuffer: " + isFramebuffer);
			expect(isFramebuffer).assertEqual(false);
			//deleteContext();
			done();
		} catch (e) {
			console.log("testIsFramebuffer has failed for " + e)
			expect(null).assertFail()
		}
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0357
	 * @tc.name testIsFramebuffer_01
	 * @tc.desc Test isFramebuffer.
	 */
	it('testIsFramebuffer_01', 0, async function(done) {
		//initContext();
		try {
			console.info('jsWebGL testIsFramebuffer_01 test start ...66');
			var framebuffer = gl.createFramebuffer();
			gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
			const isFramebuffer = gl.isFramebuffer(framebuffer);
			console.info("createFramebuffer --> bindFramebuffer --> isFramebuffer: " +
				isFramebuffer);
			expect(isFramebuffer).assertEqual(true);
			//deleteContext();
			done();
		} catch (e) {
			console.log("testIsFramebuffer_01 has failed for " + e)
			expect(null).assertFail()
		}
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0358
	 * @tc.name testIsFramebuffer_02
	 * @tc.desc Test isFramebuffer.
	 */
	it('testIsFramebuffer_02', 0, async function(done) {
		//initContext();
		try {
			console.info('jsWebGL testIsFramebuffer_02 test start ...66');
			var programobject = gl.createProgram();
			const isFramebuffer = gl.isFramebuffer(programobject);
			console.info("createFramebuffer --> isFramebuffer: " + isFramebuffer);
			expect(isFramebuffer).assertEqual(false);
			//deleteContext();
			done();
		} catch (e) {
			console.log("testIsFramebuffer_02 has failed for " + e)
			expect(null).assertFail()
		}
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0359
	 * @tc.name testIsFramebuffer_03
	 * @tc.desc Test isFramebuffer.
	 */
	it('testIsFramebuffer_03', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testIsFramebuffer_03 test start ...66');
		var shader = gl.createShader(gl.VERTEX_SHADER)
		const isFramebuffer = gl.isFramebuffer(shader);
		console.info("createFramebuffer --> isFramebuffer: " + isFramebuffer);
		expect(isFramebuffer).assertEqual(false);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0360
	 * @tc.name testIsFramebuffer_04
	 * @tc.desc Test isFramebuffer.
	 */
	it('testIsFramebuffer_04', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testIsFramebuffer_04 test start ...66');
		var renderbufferObject = gl.createRenderbuffer();
		const isFramebuffer = gl.isFramebuffer(renderbufferObject);
		console.info("createFramebuffer --> isFramebuffer: " + isFramebuffer);
		expect(isFramebuffer).assertEqual(false);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0361
	 * @tc.name testIsProgram
	 * @tc.desc Test isProgram.
	 */
	it('testIsProgram', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testIsProgram test start ...66');
		var program = gl.createProgram();
		const isProgram = gl.isProgram(program);
		console.info("createProgram --> isProgram: " + isProgram);
		expect(isProgram).assertEqual(true);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0362
	 * @tc.name testIsProgram_01
	 * @tc.desc Test isProgram.
	 */
	it('testIsProgram_01', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testIsProgram_01 test start ...66');
		var framebuffer = gl.createFramebuffer();
		const programError = gl.getError();
		console.info("createProgram --> programError: " + programError);
		const isProgram = gl.isProgram(framebuffer);
		console.info("createProgram --> isProgram: " + isProgram);
		expect(isProgram).assertEqual(true);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0363
	 * @tc.name testIsProgram_02
	 * @tc.desc Test isProgram.
	 */
	it('testIsProgram_02', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testIsProgram_02 test start ...66');
		var renderbuffer = gl.createRenderbuffer();
		const programError = gl.getError();
		console.info("createProgram --> programError: " + programError);
		const isProgram = gl.isProgram(renderbuffer);
		console.info("createProgram --> isProgram: " + isProgram);
		expect(isProgram).assertEqual(false);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0364
	 * @tc.name testIsProgram_03
	 * @tc.desc Test isProgram.
	 */
	it('testIsProgram_03', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testIsProgram_03 test start ...66');
		var shader = gl.createShader(gl.VERTEX_SHADER);
		const programError = gl.getError();
		console.info("createProgram --> programError: " + programError);
		const isProgram = gl.isProgram(shader);
		console.info("createProgram --> isProgram: " + isProgram);
		expect(isProgram).assertEqual(false);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0366
	 * @tc.name testIsRenderbuffer
	 * @tc.desc Test isRenderbuffer.
	 */
	it('testIsRenderbuffer', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testIsRenderbuffer test start ...66');
		var renderbuffer = gl.createRenderbuffer();
		const isrenderbuffer = gl.isRenderbuffer(renderbuffer);
		console.info("createRenderbuffer --> isRenderbuffer: " + isrenderbuffer);
		expect(isrenderbuffer).assertEqual(false);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0367
	 * @tc.name testIsRenderbuffer_01
	 * @tc.desc Test isRenderbuffer.
	 */
	it('testIsRenderbuffer_01', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testIsRenderbuffer_01 test start ...66');
		var renderbuffer = gl.createRenderbuffer();
		gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);
		const isrenderbuffer = gl.isRenderbuffer(renderbuffer);
		console.info("createRenderbuffer --> isRenderbuffer: " + isrenderbuffer);
		expect(isrenderbuffer).assertEqual(true);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0368
	 * @tc.name testIsRenderbuffer_02
	 * @tc.desc Test isRenderbuffer.
	 */
	it('testIsRenderbuffer_02', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testIsRenderbuffer_02 test start ...66');
		var framebuffer = gl.createFramebuffer();
		const isrenderbuffer = gl.isRenderbuffer(framebuffer);
		console.info("createRenderbuffer --> isRenderbuffer: " + isrenderbuffer);
		expect(isrenderbuffer).assertEqual(true);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0369
	 * @tc.name testIsRenderbuffer_03
	 * @tc.desc Test isRenderbuffer.
	 */
	it('testIsRenderbuffer_03', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testIsRenderbuffer_03 test start ...66');
		var programobject = gl.createProgram();
		const isrenderbuffer = gl.isRenderbuffer(programobject);
		console.info("createRenderbuffer --> isRenderbuffer: " + isrenderbuffer);
		expect(isrenderbuffer).assertEqual(false);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0371
	 * @tc.name testIsShader
	 * @tc.desc Test isShader.
	 */
	it('testIsShader', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testIsShader test start ...66');
		var shader = gl.createShader(gl.VERTEX_SHADER)
		const isShader = gl.isShader(shader);
		console.info("createShader --> isShader: " + isShader);
		expect(isShader).assertEqual(true);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0372
	 * @tc.name testIsShader_01
	 * @tc.desc Test isShader.
	 */
	it('testIsShader_01', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testIsShader_01 test start ...66');
		var shader = gl.createShader(gl.FRAGMENT_SHADER)
		const isShader = gl.isShader(shader);
		console.info("createShader --> isShader: " + isShader);
		expect(isShader).assertEqual(true);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0373
	 * @tc.name testIsShader_02
	 * @tc.desc Test isShader.
	 */
	it('testIsShader_02', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testIsShader_02 test start ...66');
		var renderbuffer = gl.createRenderbuffer();
		const isShader = gl.isShader(renderbuffer);
		console.info("createShader --> isShader: " + isShader);
		expect(isShader).assertEqual(true);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0374
	 * @tc.name testIsShader_03
	 * @tc.desc Test isShader.
	 */
	it('testIsShader_03', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testIsShader_03 test start ...66');
		var framebuffer = gl.createFramebuffer();
		const isShader = gl.isShader(framebuffer);
		console.info("createShader --> isShader: " + isShader);
		expect(isShader).assertEqual(true);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0375
	 * @tc.name testIsShader_04
	 * @tc.desc Test isShader.
	 */
	it('testIsShader_04', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testIsShader_04 test start ...66');
		var programobject = gl.createProgram();
		const isShader = gl.isShader(programobject);
		console.info("createShader --> isShader: " + isShader);
		expect(isShader).assertEqual(false);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0376
	 * @tc.name testIsTexture
	 * @tc.desc Test isTexture.
	 */
	it('testIsTexture', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testIsTexture test start ...66');
		var texture = gl.createTexture();
		gl.bindTexture(gl.TEXTURE_2D, texture);
		const isTexture = gl.isTexture(texture);
		console.info("createShader --> isTexture: " + isTexture);
		expect(isTexture).assertEqual(true);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0377
	 * @tc.name testIsTexture_01
	 * @tc.desc Test isTexture.
	 */
	it('testIsTexture_01', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testIsTexture_01 test start ...66');
		var texture = gl.createTexture();
		const isTexture = gl.isTexture(texture);
		console.info("createShader --> isTexture: " + isTexture);
		expect(isTexture).assertEqual(false);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0378
	 * @tc.name testIsTexture_02
	 * @tc.desc Test isTexture.
	 */
	it('testIsTexture_02', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testIsTexture_02 test start ...66');
		var programobject = gl.createProgram();
		const isTexture = gl.isTexture(programobject);
		console.info("createShader --> isTexture: " + isTexture);
		expect(isTexture).assertEqual(false);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0379
	 * @tc.name testIsTexture_03
	 * @tc.desc Test isTexture.
	 */
	it('testIsTexture_03', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testIsTexture_03 test start ...66');
		var renderbuffer = gl.createRenderbuffer();
		const isTexture = gl.isTexture(renderbuffer);
		console.info("createShader --> isTexture: " + isTexture);
		expect(isTexture).assertEqual(false);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0380
	 * @tc.name testIsTexture_04
	 * @tc.desc Test isTexture.
	 */
	it('testIsTexture_04', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testIsTexture_04 test start ...66');
		var framebuffer = gl.createFramebuffer();
		const isTexture = gl.isTexture(framebuffer);
		console.info("createShader --> isTexture: " + isTexture);
		expect(isTexture).assertEqual(false);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0382
	 * @tc.name testLineWidth
	 * @tc.desc Test lineWidth.
	 */
	it('testLineWidth', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testLineWidth test start ...66');
		gl.lineWidth(5);
		const windtherror = gl.getError();
		console.info("windtherror: " + windtherror);
		expect(windtherror).assertEqual(gl.INVALID_VALUE);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0383
	 * @tc.name testLineWidth_01
	 * @tc.desc Test lineWidth.
	 */
	it('testLineWidth_01', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testLineWidth_01 test start ...66');
		gl.lineWidth(-1);
		const windtherror = gl.getError();
		console.info("windtherror: " + windtherror);
		expect(windtherror).assertEqual(gl.INVALID_VALUE);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0384
	 * @tc.name testLineWidth_02
	 * @tc.desc Test lineWidth.
	 */
	it('testLineWidth_02', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testLineWidth_02 test start ...66');
		gl.lineWidth(0);
		const windtherror = gl.getError();
		console.info("windtherror: " + windtherror);
		expect(windtherror).assertEqual(gl.INVALID_VALUE);
		done();
	})


	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0385
	 * @tc.name testLinkProgram
	 * @tc.desc Test linkProgram.
	 */
	it('testLinkProgram', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testLinkProgram test start ...66');
		console.info('jsWebGL testLinkProgram test start ...' + JSON.stringify(gl));
		var shaderProg = gl.createProgram();
		gl.linkProgram(shaderProg);
		const linkProgramError = gl.getError();
		console.info("linkProgramError: " + linkProgramError);
		expect(linkProgramError).assertEqual(0);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0388
	 * @tc.name testLinkProgram_03
	 * @tc.desc Test linkProgram.
	 */
	it('testLinkProgram_03', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testLinkProgram_03 test start ...66');
		var shader = gl.createShader(gl.VERTEX_SHADER);
		gl.linkProgram(shader);
		const linkProgramError = gl.getError();
		console.info("linkProgramError: " + linkProgramError);
		expect(linkProgramError).assertEqual(gl.INVALID_OPERATION);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0389
	 * @tc.name testLinkProgram_04
	 * @tc.desc Test linkProgram.
	 */
	it('testLinkProgram_04', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testLinkProgram_04 test start ...66');
		gl.linkProgram("-123");
		const linkProgramError = gl.getError();
		console.info("linkProgramError: " + linkProgramError);
		expect(linkProgramError).assertEqual(0);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0390
	 * @tc.name testPixelStorei
	 * @tc.desc Test pixelStorei.
	 */
	it('testPixelStorei', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testPixelStorei test start ...66');
		var tex = gl.createTexture();
		gl.bindTexture(gl.TEXTURE_2D, tex);
		gl.pixelStorei(gl.PACK_ALIGNMENT, 4);
		gl.pixelStorei(gl.UNPACK_ALIGNMENT, 8);
		const packValue = gl.getParameter(gl.PACK_ALIGNMENT);
		const unpackValue = gl.getParameter(gl.UNPACK_ALIGNMENT);
		console.info("packValue: " + packValue);
		console.info("unpackValue: " + unpackValue);
		const pixelStoreiError = gl.getError();
		console.info("pixelStoreiError: " + pixelStoreiError);
		expect(pixelStoreiError).assertEqual(0);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0391
	 * @tc.name testPixelStorei_01
	 * @tc.desc Test pixelStorei.
	 */
	it('testPixelStorei_01', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testPixelStorei_01 test start ...66');
		var tex = gl.createTexture();
		gl.pixelStorei(gl.UNPACK_ALIGNMENT, 8);
		const pixelStoreiError = gl.getError();
		console.info("pixelStoreiError: " + pixelStoreiError);
		expect(pixelStoreiError).assertEqual(0);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0392
	 * @tc.name testPixelStorei_02
	 * @tc.desc Test pixelStorei.
	 */
	it('testPixelStorei_02', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testPixelStorei_02 test start ...66');
		var tex = gl.createTexture();
		gl.pixelStorei(gl.LINE_LOOP, 8);
		const pixelStoreiError = gl.getError();
		console.info("pixelStoreiError: " + pixelStoreiError);
		expect(pixelStoreiError).assertEqual(gl.INVALID_ENUM);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0393
	 * @tc.name testPixelStorei_03
	 * @tc.desc Test pixelStorei.
	 */
	it('testPixelStorei_03', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testPixelStorei_03 test start ...66');
		var tex = gl.createTexture();
		gl.pixelStorei(gl.ONE_MINUS_SRC_COLOR, 8);
		const pixelStoreiError = gl.getError();
		console.info("pixelStoreiError: " + pixelStoreiError);
		expect(pixelStoreiError).assertEqual(gl.INVALID_ENUM);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0394
	 * @tc.name testPixelStorei_04
	 * @tc.desc Test pixelStorei.
	 */
	it('testPixelStorei_04', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testPixelStorei_04 test start ...66');
		var tex = gl.createTexture();
		gl.pixelStorei(gl.ONE_MINUS_SRC_COLOR, -1);
		const pixelStoreiError = gl.getError();
		console.info("pixelStoreiError: " + pixelStoreiError);
		expect(pixelStoreiError).assertEqual(gl.INVALID_VALUE);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0395
	 * @tc.name testPolygonOffset
	 * @tc.desc Test polygonOffset.
	 */
	it('testPolygonOffset', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testPolygonOffset test start ...66');
		gl.enable(gl.POLYGON_OFFSET_FILL);
		gl.polygonOffset(2, 3);
		const polygonOffsetError = gl.getError();
		console.info("polygonOffsetError: " + polygonOffsetError);
		expect(polygonOffsetError).assertEqual(0);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0396
	 * @tc.name testPolygonOffset_01
	 * @tc.desc Test polygonOffset.
	 */
	it('testPolygonOffset_01', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testPolygonOffset_01 test start ...66');
		gl.enable(gl.TRIANGLE_STRIP);
		gl.polygonOffset(-2, 3);
		const polygonOffsetError = gl.getError();
		console.info("polygonOffsetError: " + polygonOffsetError);
		expect(polygonOffsetError).assertEqual(gl.INVALID_ENUM);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0397
	 * @tc.name testPolygonOffset_02
	 * @tc.desc Test polygonOffset.
	 */
	it('testPolygonOffset_02', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testPolygonOffset_02 test start ...66');
		gl.enable(gl.TRIANGLES);
		gl.polygonOffset(-2, -3);
		const polygonOffsetError = gl.getError();
		console.info("polygonOffsetError: " + polygonOffsetError);
		expect(polygonOffsetError).assertEqual(gl.INVALID_ENUM);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0398
	 * @tc.name testPolygonOffset_03
	 * @tc.desc Test polygonOffset.
	 */
	it('testPolygonOffset_03', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testPolygonOffset_03 test start ...66');
		gl.enable(gl.LINES);
		gl.polygonOffset(0, 0);
		const polygonOffsetError = gl.getError();
		console.info("polygonOffsetError: " + polygonOffsetError);
		expect(polygonOffsetError).assertEqual(gl.INVALID_ENUM);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0399
	 * @tc.name testPolygonOffset_04
	 * @tc.desc Test polygonOffset.
	 */
	it('testPolygonOffset_04', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testPolygonOffset_04 test start ...66');
		gl.enable(gl.LINE_STRIP);
		gl.polygonOffset(0, 0);
		const polygonOffsetError = gl.getError();
		console.info("polygonOffsetError: " + polygonOffsetError);
		expect(polygonOffsetError).assertEqual(gl.INVALID_ENUM);
		done();
	})

	/**
	 * @tc.number GRAPHIC_FUNCTION_JS_WEBGL_TESTWEBGL_0400
	 * @tc.name testBufferData
	 * @tc.desc Test bufferData.
	 */
	it('testBufferData', 0, async function(done) {
		//initContext();
		console.info('jsWebGL testBufferData test start ...66');
		console.info('jsWebGL testBufferData test start ...' + JSON.stringify(gl));
		var buffer = gl.createBuffer();
		gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
		gl.bufferData(gl.ARRAY_BUFFER, 1024, gl.STATIC_DRAW);
		const bufferDataError = gl.getError();
		console.info("bufferDataError: " + bufferDataError);
		expect(bufferDataError).assertEqual(0);
		done();
	})
})
