summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/canvas/element/pixel-manipulation/2d.imageData.object.ctor.basics.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/html/canvas/element/pixel-manipulation/2d.imageData.object.ctor.basics.html')
-rw-r--r--testing/web-platform/tests/html/canvas/element/pixel-manipulation/2d.imageData.object.ctor.basics.html111
1 files changed, 111 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/canvas/element/pixel-manipulation/2d.imageData.object.ctor.basics.html b/testing/web-platform/tests/html/canvas/element/pixel-manipulation/2d.imageData.object.ctor.basics.html
new file mode 100644
index 0000000000..f7811e7441
--- /dev/null
+++ b/testing/web-platform/tests/html/canvas/element/pixel-manipulation/2d.imageData.object.ctor.basics.html
@@ -0,0 +1,111 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
+<title>Canvas test: 2d.imageData.object.ctor.basics</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/html/canvas/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css">
+<body class="show_output">
+
+<h1>2d.imageData.object.ctor.basics</h1>
+<p class="desc">Testing different type of ImageData constructor</p>
+
+
+<p class="output">Actual output:</p>
+<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
+
+<ul id="d"></ul>
+<script>
+var t = async_test("Testing different type of ImageData constructor");
+_addTest(function(canvas, ctx) {
+
+ 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;
+ }
+
+ function assertArrayEquals(actual, expected)
+ {
+ _assertSame(typeof actual, "object", "typeof actual", "\"object\"");
+ _assertDifferent(actual, null, "actual", "null");
+ _assertSame("length" in actual, true, "\"length\" in actual", "true");
+ _assertSame(actual.length, expected.length, "actual.length", "expected.length");
+ for (var i = 0; i < actual.length; i++) {
+ _assertSame(actual.hasOwnProperty(i), expected.hasOwnProperty(i), "actual.hasOwnProperty(i)", "expected.hasOwnProperty(i)");
+ _assertSame(actual[i], expected[i], "actual[\""+(i)+"\"]", "expected[\""+(i)+"\"]");
+ }
+ }
+
+ _assertDifferent(ImageData, undefined, "ImageData", "undefined");
+ imageData = new ImageData(100, 50);
+
+ _assertDifferent(imageData, null, "imageData", "null");
+ _assertDifferent(imageData.data, null, "imageData.data", "null");
+ _assertSame(imageData.width, 100, "imageData.width", "100");
+ _assertSame(imageData.height, 50, "imageData.height", "50");
+ assertArrayEquals(getRGBA(imageData.data, 4), [0, 0, 0, 0]);
+
+ var testColor = [0, 255, 255, 128];
+ setRGBA(imageData.data, 4, testColor);
+ assertArrayEquals(getRGBA(imageData.data, 4), testColor);
+
+ assert_throws_js(TypeError, function() { ImageData(1, 1); });
+ assert_throws_js(TypeError, function() { new ImageData(10); });
+ assert_throws_dom("INDEX_SIZE_ERR", function() { new ImageData(0, 10); });
+ assert_throws_dom("INDEX_SIZE_ERR", function() { new ImageData(10, 0); });
+ assert_throws_dom("INDEX_SIZE_ERR", function() { new ImageData('width', 'height'); });
+ assert_throws_dom("INDEX_SIZE_ERR", function() { new ImageData(1 << 31, 1 << 31); });
+ assert_throws_js(TypeError, function() { new ImageData(new Uint8ClampedArray(0)); });
+ assert_throws_dom("INDEX_SIZE_ERR", function() { new ImageData(new Uint8Array(100), 25); });
+ assert_throws_dom("INVALID_STATE_ERR", function() { new ImageData(new Uint8ClampedArray(27), 2); });
+ assert_throws_dom("INDEX_SIZE_ERR", function() { new ImageData(new Uint8ClampedArray(28), 7, 0); });
+ assert_throws_dom("INDEX_SIZE_ERR", function() { new ImageData(new Uint8ClampedArray(104), 14); });
+ assert_throws_dom("INDEX_SIZE_ERR", function() { new ImageData(new Uint8ClampedArray([12, 34, 168, 65328]), 1, 151); });
+ assert_throws_js(TypeError, function() { new ImageData(self, 4, 4); });
+ assert_throws_js(TypeError, function() { new ImageData(null, 4, 4); });
+ assert_throws_dom("INDEX_SIZE_ERR", function() { new ImageData(imageData.data, 0); });
+ assert_throws_dom("INDEX_SIZE_ERR", function() { new ImageData(imageData.data, 13); });
+ assert_throws_dom("INDEX_SIZE_ERR", function() { new ImageData(imageData.data, 1 << 31); });
+ assert_throws_dom("INDEX_SIZE_ERR", function() { new ImageData(imageData.data, 'biggish'); });
+ assert_throws_dom("INDEX_SIZE_ERR", function() { new ImageData(imageData.data, 1 << 24, 1 << 31); });
+ _assertSame(new ImageData(new Uint8ClampedArray(28), 7).height, 1, "new ImageData(new Uint8ClampedArray(28), 7).height", "1");
+
+ imageDataFromData = new ImageData(imageData.data, 100);
+ _assertSame(imageDataFromData.width, 100, "imageDataFromData.width", "100");
+ _assertSame(imageDataFromData.height, 50, "imageDataFromData.height", "50");
+ _assertSame(imageDataFromData.data, imageData.data, "imageDataFromData.data", "imageData.data");
+ assertArrayEquals(getRGBA(imageDataFromData.data, 10), getRGBA(imageData.data, 10));
+ setRGBA(imageData.data, 10, testColor);
+ assertArrayEquals(getRGBA(imageDataFromData.data, 10), getRGBA(imageData.data, 10));
+
+ var data = new Uint8ClampedArray(400);
+ data[22] = 129;
+ imageDataFromData = new ImageData(data, 20, 5);
+ _assertSame(imageDataFromData.width, 20, "imageDataFromData.width", "20");
+ _assertSame(imageDataFromData.height, 5, "imageDataFromData.height", "5");
+ _assertSame(imageDataFromData.data, data, "imageDataFromData.data", "data");
+ assertArrayEquals(getRGBA(imageDataFromData.data, 2), getRGBA(data, 2));
+ setRGBA(imageDataFromData.data, 2, testColor);
+ assertArrayEquals(getRGBA(imageDataFromData.data, 2), getRGBA(data, 2));
+
+ if (window.SharedArrayBuffer) {
+ assert_throws_js(TypeError, function() { new ImageData(new Uint16Array(new SharedArrayBuffer(32)), 4, 2); });
+ }
+
+});
+</script>
+