| <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); |
| 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(new TypeError(), function() { |
| new ImageData(10); |
| }); |
| assert_throws("INDEX_SIZE_ERR", function() { |
| new ImageData(0, 10); |
| }); |
| assert_throws("INDEX_SIZE_ERR", function() { |
| new ImageData(10, 0); |
| }); |
| assert_throws("INDEX_SIZE_ERR", function() { |
| new ImageData('width', 'height'); |
| }); |
| assert_throws("INDEX_SIZE_ERR", function() { |
| new ImageData(1 << 31, 1 << 31); |
| }); |
| assert_throws(new TypeError(), function() { |
| new ImageData(new Uint8ClampedArray(0)); |
| }); |
| assert_throws("INDEX_SIZE_ERR", function() { |
| new ImageData(new Uint8Array(100), 25); |
| }); |
| assert_throws("INDEX_SIZE_ERR", function() { |
| new ImageData(new Uint8ClampedArray(27), 2); |
| }); |
| assert_throws("INDEX_SIZE_ERR", function() { |
| new ImageData(new Uint8ClampedArray(28), 7, 0); |
| }); |
| assert_throws("INDEX_SIZE_ERR", function() { |
| new ImageData(new Uint8ClampedArray(104), 14); |
| }); |
| assert_throws("INDEX_SIZE_ERR", function() { |
| new ImageData(new Uint8ClampedArray([12, 34, 168, 65328]), 1, 151); |
| }); |
| assert_throws(new TypeError(), function() { |
| new ImageData(self, 4, 4); |
| }); |
| assert_throws(new TypeError(), function() { |
| new ImageData(null, 4, 4); |
| }); |
| assert_throws("INDEX_SIZE_ERR", function() { |
| new ImageData(imageData.data, 0); |
| }); |
| assert_throws("INDEX_SIZE_ERR", function() { |
| new ImageData(imageData.data, 13); |
| }); |
| assert_throws("INDEX_SIZE_ERR", function() { |
| new ImageData(imageData.data, 1 << 31); |
| }); |
| assert_throws("INDEX_SIZE_ERR", function() { |
| new ImageData(imageData.data, 'biggish'); |
| }); |
| assert_throws("INDEX_SIZE_ERR", 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) { |
| try { |
| new ImageData(new Uint16Array(new SharedArrayBuffer(32)), 4, 2); |
| } catch (ex) { |
| assert_equals(ex.name, "TypeError"); |
| } |
| } |
| }, 'Test ImageData constructor'); |
| </script> |
| </body> |