Test constructors of ImageData.

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


Test invalid ImageData constructor arguments.
PASS new ImageData() threw exception TypeError: Not enough arguments.
PASS new ImageData(1) threw exception TypeError: Not enough arguments.
PASS new ImageData(new Uint8ClampedArray([1,2,3,4])); threw exception TypeError: Not enough arguments.
PASS new ImageData(0, 0) threw exception IndexSizeError: The index is not in the allowed range..
PASS new ImageData(20, 0) threw exception IndexSizeError: The index is not in the allowed range..
PASS new ImageData(0, 20) threw exception IndexSizeError: The index is not in the allowed range..
PASS new ImageData(-20, 20) threw exception RangeError: Cannot allocate a buffer of this size.
PASS new ImageData(20, -20) threw exception RangeError: Cannot allocate a buffer of this size.
PASS new ImageData(null, 20) threw exception IndexSizeError: The index is not in the allowed range..
PASS new ImageData(32768, 32768) threw exception RangeError: Cannot allocate a buffer of this size.
PASS new ImageData(null, 20, 20) threw exception TypeError: Type error.
PASS new ImageData(imageData, 20, 20) threw exception TypeError: Type error.
PASS new ImageData(imageData, 0) threw exception IndexSizeError: The index is not in the allowed range..
PASS new ImageData(imageData, 20, 0) threw exception TypeError: Type error.
PASS new ImageData(imageData, 0, 20) threw exception TypeError: Type error.
PASS new ImageData(imageData, 10, 5) threw exception TypeError: Type error.
PASS new ImageData(imageData.data, 10, 5) threw exception IndexSizeError: sh value is not equal to height.
PASS new ImageData(imageData.data, -10, 5) threw exception IndexSizeError: Length is not a multiple of sw.
PASS new ImageData(imageData.data, 10, -10) threw exception IndexSizeError: sh value is not equal to height.
PASS new ImageData(new Uint8ClampedArray([1,2,3,4,5,6,7,8]),536870913,2); threw exception IndexSizeError: Length is not a multiple of sw.
PASS new ImageData({},2,2); threw exception TypeError: Type error.
PASS new ImageData(undefined,2,2); threw exception TypeError: Type error.
PASS new ImageData("none",2,2); threw exception TypeError: Type error.
PASS new ImageData(0,2,2); threw exception TypeError: Type error.
PASS new ImageData(imageData.data, 32768, 32768) threw exception IndexSizeError: Length is not a multiple of sw.
PASS new ImageData(imageData.data, Infinity, Infinity) threw exception IndexSizeError: Length is not a multiple of sw.
PASS new ImageData(imageData.data, NaN, NaN) threw exception IndexSizeError: Length is not a multiple of sw.
PASS new ImageData(imageData.data, 10, 0) threw exception IndexSizeError: sh value is not equal to height.

Test valid ImageData constructors.
Test that we got the pixel array from imageData.
PASS imageData.data[1] is 128

Test that we got a reference rather than a copy.
PASS imageData.data[1] is 100

PASS testTransparentBlack(imageData2.data) is true
PASS imageData2.data is data
PASS successfullyParsed is true

TEST COMPLETE

