| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <body> |
| <script> |
| |
| function setRGBA(imageData, i, rgba) { |
| var s = i * 4; |
| imageData[s] = rgba[0]; |
| imageData[s + 1] = rgba[1]; |
| imageData[s + 2] = rgba[2]; |
| imageData[s + 3] = rgba[3]; |
| } |
| |
| function getRGBA(imageData, i) { |
| var result = []; |
| var s = i * 4; |
| for (var j = 0; j < 4; j++) { |
| result[j] = imageData[s + j]; |
| } |
| return result; |
| } |
| |
| test(function(t) { |
| assert_not_equals(ImageData, undefined); |
| assert_equals(ImageData.length, 2); |
| |
| imageData = new ImageData(100, 50); |
| |
| assert_not_equals(imageData, null); |
| assert_not_equals(imageData.data, null); |
| assert_equals(imageData.width, 100); |
| assert_equals(imageData.height, 50); |
| assert_array_equals(getRGBA(imageData.data, 4), [0, 0, 0, 0]); |
| |
| var testColor = [0, 255, 255, 128]; |
| setRGBA(imageData.data, 4, testColor); |
| assert_array_equals(getRGBA(imageData.data, 4), testColor); |
| |
| assert_throws(null, function() {new ImageData(10)}); |
| assert_throws(null, function() {new ImageData(0, 10)}); |
| assert_throws(null, function() {new ImageData(10, 0)}); |
| assert_throws(null, function() {new ImageData('width', 'height')}); |
| assert_throws(null, function() {new ImageData(1 << 31, 1 << 31)}); |
| |
| assert_throws(null, function() {new ImageData(new Uint8ClampedArray(0))}); |
| assert_throws(null, function() {new ImageData(new Uint8Array(100), 25)}); |
| assert_throws(null, function() {new ImageData(new Uint8ClampedArray(27), 2)}); |
| assert_throws(null, function() {new ImageData(new Uint8ClampedArray(28), 7, 0)}); |
| assert_throws(null, function() {new ImageData(new Uint8ClampedArray(104), 14)}); |
| assert_throws(null, function() {new ImageData(new Uint8ClampedArray([12, 34, 168, 65328]), 1, 151)}); |
| assert_throws(null, function() {new ImageData(self, 4, 4)}); |
| assert_throws(null, function() {new ImageData(null, 4, 4)}); |
| assert_throws(null, function() {new ImageData(imageData.data, 0)}); |
| assert_throws(null, function() {new ImageData(imageData.data, 13)}); |
| assert_throws(null, function() {new ImageData(imageData.data, 1 << 31)}); |
| assert_throws(null, function() {new ImageData(imageData.data, 'biggish')}); |
| assert_throws(null, function() {new ImageData(imageData.data, 1 << 24, 1 << 31)}); |
| assert_equals((new ImageData(new Uint8ClampedArray(28), 7)).height, 1); |
| |
| imageDataFromData = new ImageData(imageData.data, 100); |
| assert_equals(imageDataFromData.width, 100); |
| assert_equals(imageDataFromData.height, 50); |
| assert_equals(imageDataFromData.data, imageData.data); |
| assert_array_equals(getRGBA(imageDataFromData.data, 10), getRGBA(imageData.data, 10)); |
| setRGBA(imageData.data, 10, testColor); |
| assert_array_equals(getRGBA(imageDataFromData.data, 10), getRGBA(imageData.data, 10)); |
| |
| var data = new Uint8ClampedArray(400); |
| data[22] = 129; |
| imageDataFromData = new ImageData(data, 20, 5); |
| assert_equals(imageDataFromData.width, 20); |
| assert_equals(imageDataFromData.height, 5); |
| assert_equals(imageDataFromData.data, data); |
| assert_array_equals(getRGBA(imageDataFromData.data, 2), getRGBA(data, 2)); |
| setRGBA(imageDataFromData.data, 2, testColor); |
| assert_array_equals(getRGBA(imageDataFromData.data, 2), getRGBA(data, 2)); |
| |
| if (window.SharedArrayBuffer) { |
| assert_throws(null, function() {new ImageData(new Uint16Array(new SharedArrayBuffer(32)), 4, 2)}); |
| } |
| |
| }, 'Test ImageData constructor'); |
| </script> |
| </body> |