Tests behavior under a restored context.

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

Test losing a context and inability to restore it.
Test valid context
PASS gl.isContextLost() is false
PASS gl.getError() is gl.NO_ERROR
PASS shouldBe 255,10,20
PASS gl.getError() is gl.NO_ERROR

PASS gl.isContextLost() is true
PASS gl.getError() is gl.CONTEXT_LOST_WEBGL
PASS gl.getError() is gl.NO_ERROR
PASS gl.blendFunc(gl.TEXTURE_2D, gl.TEXTURE_CUBE_MAP) was expected value: NO_ERROR.
PASS contextLostEventFired is false
Test lost context
PASS contextLostEventFired is false
PASS gl.isContextLost() is true
PASS gl.getError() is gl.NO_ERROR

PASS extension.restoreContext() was expected value: INVALID_OPERATION.

Test losing and restoring a context.
Test valid context
PASS gl.isContextLost() is false
PASS gl.getError() is gl.NO_ERROR
PASS shouldBe 255,10,20
PASS gl.getError() is gl.NO_ERROR

PASS gl.isContextLost() is true
PASS gl.getError() is gl.CONTEXT_LOST_WEBGL
PASS gl.getError() is gl.NO_ERROR
PASS gl.blendFunc(gl.TEXTURE_2D, gl.TEXTURE_CUBE_MAP) was expected value: NO_ERROR.
PASS contextLostEventFired is false
Test lost context
PASS contextLostEventFired is false
PASS gl.isContextLost() is true
PASS gl.getError() is gl.NO_ERROR

PASS extension.restoreContext() was expected value: NO_ERROR.
PASS gl.isContextLost() is true
PASS gl.getError() is gl.NO_ERROR
PASS gl.blendFunc(gl.TEXTURE_2D, gl.TEXTURE_CUBE_MAP) was expected value: NO_ERROR.
Test restored context
PASS contextRestoredEventFired is false
PASS gl.isContextLost() is false
PASS gl.getError() is gl.NO_ERROR
PASS gl.bindTexture(gl.TEXTURE_2D, texture) was expected value: INVALID_OPERATION.
PASS gl.useProgram(program) was expected value: INVALID_OPERATION.
PASS gl.bindBuffer(gl.ARRAY_BUFFER, bufferObjects[0]) was expected value: INVALID_OPERATION.
PASS shouldBe 255,10,20
PASS gl.getError() is gl.NO_ERROR
PASS gl.bindTexture(gl.TEXTURE_2D, texture) was expected value: NO_ERROR.
PASS gl.useProgram(program) was expected value: NO_ERROR.
PASS gl.bindBuffer(gl.ARRAY_BUFFER, bufferObjects[0]) was expected value: NO_ERROR.

PASS successfullyParsed is true

TEST COMPLETE

