Tests that index validation for drawElements does not examine too many indices

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


PASS WebGL context exists
PASS Successfully enabled OES_element_index_uint extension
PASS OES_element_index_uint listed as supported and getExtension succeeded
Test that draws with unsigned integer indices produce the expected results
PASS Draw 0 passed pixel test
Testing with valid indices
PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_COMPLETE
PASS getError was expected value: NO_ERROR : 
PASS gl.drawElements(gl.TRIANGLES, 3, gl.UNSIGNED_INT, 0) is undefined.
PASS getError was expected value: NO_ERROR : 
Testing with out-of-range indices
Enable vertices, valid
PASS getError was expected value: NO_ERROR : 
PASS gl.drawElements(gl.TRIANGLES, 3, gl.UNSIGNED_INT, 0) is undefined.
PASS getError was expected value: NO_ERROR : 
Enable normals, out-of-range
PASS getError was expected value: NO_ERROR : 
PASS gl.drawElements(gl.TRIANGLES, 3, gl.UNSIGNED_INT, 0) is undefined.
PASS getError was expected value: INVALID_OPERATION : 
Test with enabled attribute that does not belong to current program
Enable an extra attribute with null
PASS getError was expected value: NO_ERROR : 
PASS gl.drawElements(gl.TRIANGLES, 3, gl.UNSIGNED_INT, 0) is undefined.
PASS getError was expected value: INVALID_OPERATION : 
Enable an extra attribute with insufficient data buffer
PASS getError was expected value: NO_ERROR : 
PASS gl.drawElements(gl.TRIANGLES, 3, gl.UNSIGNED_INT, 0) is undefined.
Pass large negative index to vertexAttribPointer
PASS getError was expected value: INVALID_VALUE : 
PASS gl.drawElements(gl.TRIANGLES, 3, gl.UNSIGNED_INT, 0) is undefined.
Test that client data is always copied during bufferData and bufferSubData calls
PASS gl.drawElements(gl.TRIANGLE_STRIP, 4, gl.UNSIGNED_INT, 4) generated expected GL error: NO_ERROR.
PASS gl.drawElements(gl.TRIANGLE_STRIP, 4, gl.UNSIGNED_INT, 0) generated expected GL error: INVALID_OPERATION.
PASS gl.drawElements(gl.TRIANGLE_STRIP, 4, gl.UNSIGNED_INT, 8) generated expected GL error: INVALID_OPERATION.
PASS gl.drawElements(gl.TRIANGLE_STRIP, 4, gl.UNSIGNED_INT, 4) generated expected GL error: NO_ERROR.
PASS gl.drawElements(gl.TRIANGLE_STRIP, 4, gl.UNSIGNED_INT, 0) generated expected GL error: INVALID_OPERATION.
PASS gl.drawElements(gl.TRIANGLE_STRIP, 4, gl.UNSIGNED_INT, 8) generated expected GL error: INVALID_OPERATION.
Test that updating the size of a vertex buffer is properly noticed by the WebGL implementation.
PASS getError was expected value: NO_ERROR : after initialization
PASS getError was expected value: NO_ERROR : after vertex setup
PASS getError was expected value: NO_ERROR : after texture coord setup
PASS getError was expected value: NO_ERROR : after vertex redefinition
PASS getError was expected value: NO_ERROR : after texture coordinate / color redefinition
PASS getError was expected value: NO_ERROR : after setting up indices
PASS getError was expected value: NO_ERROR : after drawing
Test out of range indices
PASS gl.drawElements(gl.TRIANGLE_STRIP, 4, gl.UNSIGNED_INT, 4) generated expected GL error: NO_ERROR.
PASS gl.drawElements(gl.TRIANGLE_STRIP, 4, gl.UNSIGNED_INT, 0) generated expected GL error: INVALID_OPERATION.
PASS gl.drawElements(gl.TRIANGLE_STRIP, 4, gl.UNSIGNED_INT, 8) generated expected GL error: INVALID_OPERATION.
Verifies that the index validation code which is within bufferSubData does not crash.
PASS getError was expected value: INVALID_VALUE : after attempting to update a buffer outside of the allocated bounds
PASS bufferSubData, when buffer object was initialized with null, did not crash
PASS getError was expected value: NO_ERROR : there should be no errors

PASS successfullyParsed is true

TEST COMPLETE

