Validate tex functions input parameters

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".

PASS gl = create3DContext() is non-null.
PASS tex = gl.createTexture() is non-null.
PASS getError was expected value: NO_ERROR : 

Checking TexImage2D: a set of inputs that are valid in GL but invalid in GLES2
PASS getError was expected value: INVALID_ENUM :  internalFormat: RGBA target: 0x8064 format: RGBA type: UNSIGNED_BYTE border: 0
PASS getError was expected value: INVALID_ENUM :  internalFormat: 0x1903 target: TEXTURE_2D format: 0x1903 type: UNSIGNED_BYTE border: 0
PASS getError was expected value: INVALID_VALUE :  internalFormat: RGBA target: TEXTURE_2D format: RGBA type: UNSIGNED_BYTE border: 1
PASS getError was expected value: INVALID_OPERATION :  internalFormat: RGBA target: TEXTURE_2D format: RGB type: UNSIGNED_BYTE border: 0
PASS getError was expected value: INVALID_ENUM :  internalFormat: RGBA target: TEXTURE_2D format: RGBA type: BYTE border: 0
PASS getError was expected value: NO_ERROR :  internalFormat: RGBA target: TEXTURE_2D format: RGBA type: UNSIGNED_BYTE border: 0

Checking TexSubImage2D: a set of inputs that are valid in GL but invalid in GLES2
PASS getError was expected value: INVALID_ENUM :  format: 0x1903 type: UNSIGNED_BYTE
PASS getError was expected value: INVALID_ENUM :  format: RGBA type: BYTE
PASS getError was expected value: NO_ERROR :  format: RGBA type: UNSIGNED_BYTE

Checking TexParameter: a set of inputs that are valid in GL but invalid in GLES2
PASS getError was expected value: INVALID_ENUM : paramName: TEXTURE_WRAP_T
PASS getError was expected value: INVALID_ENUM : paramName: TEXTURE_WRAP_T
PASS getError was expected value: INVALID_ENUM : paramName: 0x813a
PASS getError was expected value: INVALID_ENUM : paramName: 0x813a
PASS getError was expected value: INVALID_ENUM : paramName: TEXTURE_WRAP_T
PASS getError was expected value: INVALID_ENUM : paramName: TEXTURE_WRAP_T
PASS getError was expected value: NO_ERROR : paramName: TEXTURE_WRAP_T
PASS getError was expected value: NO_ERROR : paramName: TEXTURE_WRAP_T

Checking GetTexParameter: a set of inputs that are valid in GL but invalid in GLES2
PASS getError was expected value: INVALID_ENUM : paramName: TEXTURE_WRAP_T
PASS getError was expected value: INVALID_ENUM : paramName: 0x813a
PASS getError was expected value: NO_ERROR : paramName: TEXTURE_WRAP_T

Checking CopyTexImage2D: a set of inputs that are valid in GL but invalid in GLES2
PASS fbo = gl.createFramebuffer() is non-null.
PASS colorBuffer = gl.createRenderbuffer() is non-null.
PASS getError was expected value: NO_ERROR : 
PASS getError was expected value: NO_ERROR : 
PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_COMPLETE
PASS getError was expected value: INVALID_ENUM :  colorBufferFormat: RGB565 internalFormat: 0x8054 target: TEXTURE_2D border: 0
PASS getError was expected value: NO_ERROR : 
PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_COMPLETE
PASS getError was expected value: INVALID_VALUE :  colorBufferFormat: RGB565 internalFormat: RGBA target: TEXTURE_2D border: 1
PASS getError was expected value: NO_ERROR : 
PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_COMPLETE
PASS getError was expected value: INVALID_OPERATION :  colorBufferFormat: RGB565 internalFormat: RGBA target: TEXTURE_2D border: 0
PASS getError was expected value: NO_ERROR : 
PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_COMPLETE
PASS getError was expected value: NO_ERROR :  colorBufferFormat: RGB565 internalFormat: RGB target: TEXTURE_2D border: 0

Checking CopyTexSubImage2D: a set of inputs that are valid in GL but invalid in GLES2
PASS getError was expected value: NO_ERROR : 
PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_COMPLETE
PASS getError was expected value: NO_ERROR : 
PASS getError was expected value: NO_ERROR :  colorBufferFormat: RGB5_A1 internalFormat: RGBA target: TEXTURE_2D
PASS getError was expected value: NO_ERROR : 
PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_COMPLETE
PASS getError was expected value: NO_ERROR : 
PASS getError was expected value: INVALID_OPERATION :  colorBufferFormat: RGB565 internalFormat: RGBA target: TEXTURE_2D

Checking CopyTex{Sub}Image2D: copy from WebGL internal framebuffer
PASS gl is non-null.
PASS tex = gl.createTexture() is non-null.
PASS getError was expected value: NO_ERROR : 
PASS getError was expected value: NO_ERROR :  colorBufferFormat: RGBA internalFormat: RGBA
PASS gl is non-null.
PASS tex = gl.createTexture() is non-null.
PASS getError was expected value: NO_ERROR : 
PASS getError was expected value: INVALID_OPERATION :  colorBufferFormat: RGB internalFormat: RGBA
PASS gl is non-null.
PASS tex = gl.createTexture() is non-null.
PASS getError was expected value: NO_ERROR : 
PASS getError was expected value: NO_ERROR :  colorBufferFormat: RGBA internalFormat: RGBA
PASS gl is non-null.
PASS tex = gl.createTexture() is non-null.
PASS getError was expected value: NO_ERROR : 
PASS getError was expected value: INVALID_OPERATION :  colorBufferFormat: RGB internalFormat: RGBA
PASS successfullyParsed is true

TEST COMPLETE

