This test ensures that putImageData works correctly, the end result should be a 100x100px green square.

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


PASS getPixel(0,0) is [0,128,0,255]
PASS getPixel(25,25) is [0,128,0,255]
PASS getPixel(49,0) is [0,128,0,255]
PASS getPixel(0,49) is [0,128,0,255]
PASS getPixel(49,49) is [0,128,0,255]
PASS getPixel(50,0) is [0,0,0,0]
PASS getPixel(0,50) is [0,0,0,0]
PASS getPixel(50,50) is [0,0,0,0]
PASS getPixel(0,50) is [0,128,0,255]
PASS getPixel(25,75) is [0,128,0,255]
PASS getPixel(49,50) is [0,128,0,255]
PASS getPixel(0,99) is [0,128,0,255]
PASS getPixel(49,99) is [0,128,0,255]
PASS getPixel(50,50) is [0,128,0,255]
PASS getPixel(75,75) is [0,128,0,255]
PASS getPixel(99,99) is [0,128,0,255]
PASS getPixel(50,49) is [0,0,0,0]
PASS getPixel(50,0) is [0,128,0,255]
PASS getPixel(50,5) is [0,128,0,255]
PASS getPixel(50,15) is [0,128,0,255]
PASS getPixel(50,25) is [0,128,0,255]
PASS getPixel(50,35) is [0,128,0,255]
PASS getPixel(50,45) is [0,128,0,255]
PASS getPixel(55,0) is [0,128,0,255]
PASS getPixel(55,5) is [0,128,0,255]
PASS getPixel(55,15) is [0,128,0,255]
PASS getPixel(55,25) is [0,128,0,255]
PASS getPixel(55,35) is [0,128,0,255]
PASS getPixel(55,45) is [0,128,0,255]
PASS getPixel(65,0) is [0,128,0,255]
PASS getPixel(65,5) is [0,128,0,255]
PASS getPixel(65,15) is [0,128,0,255]
PASS getPixel(65,25) is [0,128,0,255]
PASS getPixel(65,35) is [0,128,0,255]
PASS getPixel(65,45) is [0,128,0,255]
PASS getPixel(75,0) is [0,128,0,255]
PASS getPixel(75,5) is [0,128,0,255]
PASS getPixel(75,15) is [0,128,0,255]
PASS getPixel(75,25) is [0,128,0,255]
PASS getPixel(75,35) is [0,128,0,255]
PASS getPixel(75,45) is [0,128,0,255]
PASS getPixel(85,0) is [0,128,0,255]
PASS getPixel(85,5) is [0,128,0,255]
PASS getPixel(85,15) is [0,128,0,255]
PASS getPixel(85,25) is [0,128,0,255]
PASS getPixel(85,35) is [0,128,0,255]
PASS getPixel(85,45) is [0,128,0,255]
PASS getPixel(95,0) is [0,128,0,255]
PASS getPixel(95,5) is [0,128,0,255]
PASS getPixel(95,15) is [0,128,0,255]
PASS getPixel(95,25) is [0,128,0,255]
PASS getPixel(95,35) is [0,128,0,255]
PASS getPixel(95,45) is [0,128,0,255]
PASS getPixel(0,25) is [0,128,0,255]
PASS getPixel(99,25) is [0,128,0,255]
PASS getPixel(25,0) is [0,128,0,255]
PASS getPixel(25,99) is [0,128,0,255]
PASS getPixel(50,0) is [0,128,0,255]
PASS getPixel(50,5) is [0,128,0,255]
PASS getPixel(50,15) is [0,128,0,255]
PASS getPixel(50,25) is [0,128,0,255]
PASS getPixel(50,35) is [0,128,0,255]
PASS getPixel(50,45) is [0,128,0,255]
PASS getPixel(55,0) is [0,128,0,255]
PASS getPixel(55,5) is [0,128,0,255]
PASS getPixel(55,15) is [0,128,0,255]
PASS getPixel(55,25) is [0,128,0,255]
PASS getPixel(55,35) is [0,128,0,255]
PASS getPixel(55,45) is [0,128,0,255]
PASS getPixel(65,0) is [0,128,0,255]
PASS getPixel(65,5) is [0,128,0,255]
PASS getPixel(65,15) is [0,128,0,255]
PASS getPixel(65,25) is [0,128,0,255]
PASS getPixel(65,35) is [0,128,0,255]
PASS getPixel(65,45) is [0,128,0,255]
PASS getPixel(75,0) is [0,128,0,255]
PASS getPixel(75,5) is [0,128,0,255]
PASS getPixel(75,15) is [0,128,0,255]
PASS getPixel(75,25) is [0,128,0,255]
PASS getPixel(75,35) is [0,128,0,255]
PASS getPixel(75,45) is [0,128,0,255]
PASS getPixel(85,0) is [0,128,0,255]
PASS getPixel(85,5) is [0,128,0,255]
PASS getPixel(85,15) is [0,128,0,255]
PASS getPixel(85,25) is [0,128,0,255]
PASS getPixel(85,35) is [0,128,0,255]
PASS getPixel(85,45) is [0,128,0,255]
PASS getPixel(95,0) is [0,128,0,255]
PASS getPixel(95,5) is [0,128,0,255]
PASS getPixel(95,15) is [0,128,0,255]
PASS getPixel(95,25) is [0,128,0,255]
PASS getPixel(95,35) is [0,128,0,255]
PASS getPixel(95,45) is [0,128,0,255]
PASS getPixel(0,25) is [0,128,0,255]
PASS getPixel(0,50) is [0,128,0,255]
PASS getPixel(0,75) is [0,128,0,255]
PASS getPixel(99,25) is [0,128,0,255]
PASS getPixel(99,50) is [0,128,0,255]
PASS getPixel(99,75) is [0,128,0,255]
PASS getPixel(25,0) is [0,128,0,255]
PASS getPixel(50,0) is [0,128,0,255]
PASS getPixel(75,0) is [0,128,0,255]
PASS getPixel(25,99) is [0,128,0,255]
PASS getPixel(50,99) is [0,128,0,255]
PASS getPixel(75,99) is [0,128,0,255]
PASS getPixel(0,25) is [0,128,0,255]
PASS getPixel(0,50) is [0,128,0,255]
PASS getPixel(0,75) is [0,128,0,255]
PASS getPixel(10,25) is [0,128,0,255]
PASS getPixel(10,50) is [0,128,0,255]
PASS getPixel(10,75) is [0,128,0,255]
PASS getPixel(99,25) is [0,128,0,255]
PASS getPixel(99,50) is [0,128,0,255]
PASS getPixel(99,75) is [0,128,0,255]
PASS getPixel(89,25) is [0,128,0,255]
PASS getPixel(89,50) is [0,128,0,255]
PASS getPixel(89,75) is [0,128,0,255]
PASS getPixel(25,0) is [0,128,0,255]
PASS getPixel(50,0) is [0,128,0,255]
PASS getPixel(75,0) is [0,128,0,255]
PASS getPixel(25,10) is [0,128,0,255]
PASS getPixel(50,10) is [0,128,0,255]
PASS getPixel(75,10) is [0,128,0,255]
PASS getPixel(25,99) is [0,128,0,255]
PASS getPixel(50,99) is [0,128,0,255]
PASS getPixel(75,99) is [0,128,0,255]
PASS getPixel(25,89) is [0,128,0,255]
PASS getPixel(50,89) is [0,128,0,255]
PASS getPixel(75,89) is [0,128,0,255]
PASS getPixel(11,11) is [0,128,0,255]
PASS getPixel(1,1) is [0,128,0,255]
PASS getPixel(1,1) is [0,128,0,255]
PASS getPixel(10,10) is [0,128,0,255]
PASS getPixel(1,1) is [0,128,0,255]
PASS getPixel(10,10) is [0,128,0,255]
PASS getPixel(1,1) is [0,128,0,255]
PASS getPixel(9,9) is [0,128,0,255]
PASS getPixel(1,1) is [0,128,0,255]
PASS getPixel(9,9) is [0,128,0,255]
PASS getPixel(1,1) is [0,128,0,255]
PASS getPixel(9,9) is [0,128,0,255]
PASS context.putImageData({}, 0, 0) threw exception TypeError: Type error.
PASS context.putImageData(buffer, NaN, 0, 0, 0, 0, 0) threw exception Error: NotSupportedError: DOM Exception 9.
PASS context.putImageData(buffer, 0, NaN, 0, 0, 0, 0) threw exception Error: NotSupportedError: DOM Exception 9.
PASS context.putImageData(buffer, 0, 0, NaN, 0, 0, 0) threw exception Error: NotSupportedError: DOM Exception 9.
PASS context.putImageData(buffer, 0, 0, 0, NaN, 0, 0) threw exception Error: NotSupportedError: DOM Exception 9.
PASS context.putImageData(buffer, 0, 0, 0, 0, NaN, 0) threw exception Error: NotSupportedError: DOM Exception 9.
PASS context.putImageData(buffer, 0, 0, 0, 0, 0, NaN) threw exception Error: NotSupportedError: DOM Exception 9.
PASS context.putImageData(buffer, Infinity, 0, 0, 0, 0, 0) threw exception Error: NotSupportedError: DOM Exception 9.
PASS context.putImageData(buffer, 0, Infinity, 0, 0, 0, 0) threw exception Error: NotSupportedError: DOM Exception 9.
PASS context.putImageData(buffer, 0, 0, Infinity, 0, 0, 0) threw exception Error: NotSupportedError: DOM Exception 9.
PASS context.putImageData(buffer, 0, 0, 0, Infinity, 0, 0) threw exception Error: NotSupportedError: DOM Exception 9.
PASS context.putImageData(buffer, 0, 0, 0, 0, Infinity, 0) threw exception Error: NotSupportedError: DOM Exception 9.
PASS context.putImageData(buffer, 0, 0, 0, 0, 0, Infinity) threw exception Error: NotSupportedError: DOM Exception 9.
PASS context.putImageData(buffer, undefined, 0, 0, 0, 0, 0) threw exception Error: NotSupportedError: DOM Exception 9.
PASS context.putImageData(buffer, 0, undefined, 0, 0, 0, 0) threw exception Error: NotSupportedError: DOM Exception 9.
PASS context.putImageData(buffer, 0, 0, undefined, 0, 0, 0) threw exception Error: NotSupportedError: DOM Exception 9.
PASS context.putImageData(buffer, 0, 0, 0, undefined, 0, 0) threw exception Error: NotSupportedError: DOM Exception 9.
PASS context.putImageData(buffer, 0, 0, 0, 0, undefined, 0) threw exception Error: NotSupportedError: DOM Exception 9.
PASS context.putImageData(buffer, 0, 0, 0, 0, 0, undefined) threw exception Error: NotSupportedError: DOM Exception 9.
PASS successfullyParsed is true

TEST COMPLETE


