Commit a760a93a authored by Yi Xu's avatar Yi Xu Committed by Commit Bot

Move tests from fast/canvas to wpt tests

Moved 7 more tests from fast/canvas to wpt tests: Deleted 2 due to
duplications, canvas-context-attributes-default-value.html and
canvas-ImageData-behaviour.html, created 5 new tests.

Bug: 1071659

Change-Id: Ib439525798a4fe899d77a5469dc5590bbc8be5ca
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2314991Reviewed-by: default avatarFernando Serboncini <fserb@chromium.org>
Commit-Queue: Yi Xu <yiyix@chromium.org>
Cr-Commit-Position: refs/heads/master@{#791428}
parent d88cf6e9
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<title>Canvas test: 2d.path.ellipse.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.path.ellipse.basics</h1>
<p class="desc">Verify canvas throws error when drawing ellipse with negative radii.</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("Verify canvas throws error when drawing ellipse with negative radii.");
_addTest(function(canvas, ctx) {
ctx.ellipse(10, 10, 10, 5, 0, 0, 1, false);
ctx.ellipse(10, 10, 10, 0, 0, 0, 1, false);
ctx.ellipse(10, 10, -0, 5, 0, 0, 1, false);
assert_throws_dom("INDEX_SIZE_ERR", function() { ctx.ellipse(10, 10, -2, 5, 0, 0, 1, false); });
assert_throws_dom("INDEX_SIZE_ERR", function() { ctx.ellipse(10, 10, 0, -1.5, 0, 0, 1, false); });
assert_throws_dom("INDEX_SIZE_ERR", function() { ctx.ellipse(10, 10, -2, -5, 0, 0, 1, false); });
ctx.ellipse(80, 0, 10, 4294967277, Math.PI / -84, -Math.PI / 2147483436, false);
});
</script>
<!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() { 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>
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<title>OffscreenCanvas test: 2d.path.isPointInStroke.basic</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/html/canvas/resources/canvas-tests.js"></script>
<h1>2d.path.isPointInStroke.basic</h1>
<p class="desc">detects whether point is in the area contained by the stroke of the path</p>
<script>
var t = async_test("detects whether point is in the area contained by the stroke of the path");
var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
t.step(function() {
var offscreenCanvas = new OffscreenCanvas(100, 50);
var ctx = offscreenCanvas.getContext('2d');
ctx.strokeStyle = '#0f0';
ctx.beginPath();
ctx.rect(0, 0, 20, 20);
_assertSame(ctx.isPointInStroke(0, 0), true, "ctx.isPointInStroke(0, 0)", "true");
_assertSame(ctx.isPointInStroke(30, 10), false, "ctx.isPointInStroke(30, 10)", "false");
var path = new Path2D();
path.rect(20, 20, 100, 100);
_assertSame(ctx.isPointInStroke(path, 20, 20), true, "ctx.isPointInStroke(path, 20, 20)", "true");
_assertSame(ctx.isPointInStroke(path, 120, 20), true, "ctx.isPointInStroke(path, 120, 20)", "true");
t.done();
});
</script>
// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
// OffscreenCanvas test in a worker:2d.path.isPointInStroke.basic
// Description:detects whether point is in the area contained by the stroke of the path
// Note:
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
var t = async_test("detects whether point is in the area contained by the stroke of the path");
var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
});
t.step(function() {
var offscreenCanvas = new OffscreenCanvas(100, 50);
var ctx = offscreenCanvas.getContext('2d');
ctx.strokeStyle = '#0f0';
ctx.beginPath();
ctx.rect(0, 0, 20, 20);
_assertSame(ctx.isPointInStroke(0, 0), true, "ctx.isPointInStroke(0, 0)", "true");
_assertSame(ctx.isPointInStroke(30, 10), false, "ctx.isPointInStroke(30, 10)", "false");
var path = new Path2D();
path.rect(20, 20, 100, 100);
_assertSame(ctx.isPointInStroke(path, 20, 20), true, "ctx.isPointInStroke(path, 20, 20)", "true");
_assertSame(ctx.isPointInStroke(path, 120, 20), true, "ctx.isPointInStroke(path, 120, 20)", "true");
t.done();
});
done();
...@@ -1560,6 +1560,19 @@ ...@@ -1560,6 +1560,19 @@
@assert pixel 90,45 == 0,255,0,255; @assert pixel 90,45 == 0,255,0,255;
expected: green expected: green
- name: 2d.path.ellipse.basics
desc: Verify canvas throws error when drawing ellipse with negative radii.
testing:
- 2d.ellipse.basics
code: |
ctx.ellipse(10, 10, 10, 5, 0, 0, 1, false);
ctx.ellipse(10, 10, 10, 0, 0, 0, 1, false);
ctx.ellipse(10, 10, -0, 5, 0, 0, 1, false);
@assert throws INDEX_SIZE_ERR ctx.ellipse(10, 10, -2, 5, 0, 0, 1, false);
@assert throws INDEX_SIZE_ERR ctx.ellipse(10, 10, 0, -1.5, 0, 0, 1, false);
@assert throws INDEX_SIZE_ERR ctx.ellipse(10, 10, -2, -5, 0, 0, 1, false);
ctx.ellipse(80, 0, 10, 4294967277, Math.PI / -84, -Math.PI / 2147483436, false);
- name: 2d.path.fill.overlap - name: 2d.path.fill.overlap
testing: testing:
- 2d.path.fill.basic - 2d.path.fill.basic
...@@ -2538,7 +2551,6 @@ ...@@ -2538,7 +2551,6 @@
// hit-test past the end of the dash (t=10.2) // hit-test past the end of the dash (t=10.2)
@assert ctx.isPointInStroke(3.74*scale, 14.46*scale) === false; @assert ctx.isPointInStroke(3.74*scale, 14.46*scale) === false;
- name: 2d.path.isPointInPath.basic - name: 2d.path.isPointInPath.basic
desc: Verify the winding rule in isPointInPath works for for rect path. desc: Verify the winding rule in isPointInPath works for for rect path.
testing: testing:
......
...@@ -585,15 +585,96 @@ ...@@ -585,15 +585,96 @@
@assert imgdata.data[i] === 0; @assert imgdata.data[i] === 0;
} }
- name: 2d.imageData.object.ctor.size.bounds - name: 2d.imageData.object.ctor.basics
desc: ImageData has a usable constructor desc: Testing different type of ImageData constructor
testing: testing:
- 2d.imageData.type - 2d.imageData.type
code: | code: |
@assert window.ImageData !== undefined; function setRGBA(imageData, i, rgba)
@assert throws INDEX_SIZE_ERR new window.ImageData(0, 0); {
@assert throws INDEX_SIZE_ERR new window.ImageData(0, 1); var s = i * 4;
@assert throws INDEX_SIZE_ERR new window.ImageData(1, 0); 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)
{
@assert typeof actual === "object";
@assert actual !== null;
@assert "length" in actual === true;
@assert actual.length === expected.length;
for (var i = 0; i < actual.length; i++) {
@assert actual.hasOwnProperty(i) === expected.hasOwnProperty(i);
@assert actual[i] === expected[i];
}
}
@assert ImageData !== undefined;
imageData = new ImageData(100, 50);
@assert imageData !== null;
@assert imageData.data !== null;
@assert imageData.width === 100;
@assert 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 TypeError new ImageData(10);
@assert throws INDEX_SIZE_ERR new ImageData(0, 10);
@assert throws INDEX_SIZE_ERR new ImageData(10, 0);
@assert throws INDEX_SIZE_ERR new ImageData('width', 'height');
@assert throws INDEX_SIZE_ERR new ImageData(1 << 31, 1 << 31);
@assert throws TypeError new ImageData(new Uint8ClampedArray(0));
@assert throws INDEX_SIZE_ERR new ImageData(new Uint8Array(100), 25);
@assert throws INVALID_STATE_ERR new ImageData(new Uint8ClampedArray(27), 2);
@assert throws INDEX_SIZE_ERR new ImageData(new Uint8ClampedArray(28), 7, 0);
@assert throws INDEX_SIZE_ERR new ImageData(new Uint8ClampedArray(104), 14);
@assert throws INDEX_SIZE_ERR new ImageData(new Uint8ClampedArray([12, 34, 168, 65328]), 1, 151);
@assert throws TypeError new ImageData(self, 4, 4);
@assert throws TypeError new ImageData(null, 4, 4);
@assert throws INDEX_SIZE_ERR new ImageData(imageData.data, 0);
@assert throws INDEX_SIZE_ERR new ImageData(imageData.data, 13);
@assert throws INDEX_SIZE_ERR new ImageData(imageData.data, 1 << 31);
@assert throws INDEX_SIZE_ERR new ImageData(imageData.data, 'biggish');
@assert throws INDEX_SIZE_ERR new ImageData(imageData.data, 1 << 24, 1 << 31);
@assert new ImageData(new Uint8ClampedArray(28), 7).height === 1;
imageDataFromData = new ImageData(imageData.data, 100);
@assert imageDataFromData.width === 100;
@assert imageDataFromData.height === 50;
@assert 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);
@assert imageDataFromData.width === 20;
@assert imageDataFromData.height === 5;
@assert 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 TypeError new ImageData(new Uint16Array(new SharedArrayBuffer(32)), 4, 2);
}
- name: 2d.imageData.object.ctor.array - name: 2d.imageData.object.ctor.array
desc: ImageData has a usable constructor desc: ImageData has a usable constructor
......
...@@ -5,6 +5,21 @@ ...@@ -5,6 +5,21 @@
code: | code: |
@assert canvas.getContext('2d') !== null; @assert canvas.getContext('2d') !== null;
- name: 2d.getcontext.invalid.args
desc: Calling getContext with invalid arguments.
testing:
- context.2d
code: |
@assert canvas.getContext('') === null;
@assert canvas.getContext('2d#') === null;
@assert canvas.getContext('This is clearly not a valid context name.') === null;
@assert canvas.getContext('2d\0') === null;
@assert canvas.getContext('2\uFF44') === null;
@assert canvas.getContext('2D') === null;
@assert throws TypeError canvas.getContext();
@assert canvas.getContext('null') === null;
@assert canvas.getContext('undefined') === null;
- name: 2d.getcontext.extraargs - name: 2d.getcontext.extraargs
desc: The 2D context ignores extra getContext arguments desc: The 2D context ignores extra getContext arguments
testing: testing:
...@@ -131,3 +146,12 @@ ...@@ -131,3 +146,12 @@
ctx.canvas = c; ctx.canvas = c;
@assert ctx.canvas === d; @assert ctx.canvas === d;
- name: 2d.canvas.context
desc: checks CanvasRenderingContext2D prototype
testing:
- 2d.path.contexttypexxx.basic
code: |
@assert CanvasRenderingContext2D.prototype.__proto__ === Object.prototype;
@assert ctx.__proto__ === CanvasRenderingContext2D.prototype;
t.done();
...@@ -2395,3 +2395,20 @@ ...@@ -2395,3 +2395,20 @@
@assert ctx.isPointInPath(NaN, NaN) === false; @assert ctx.isPointInPath(NaN, NaN) === false;
t.done(); t.done();
- name: 2d.path.isPointInStroke.basic
desc: detects whether point is in the area contained by the stroke of the path
testing:
- 2d.path.isPointInStroke.basic
code: |
ctx.strokeStyle = '#0f0';
ctx.beginPath();
ctx.rect(0, 0, 20, 20);
@assert ctx.isPointInStroke(0, 0) === true;
@assert ctx.isPointInStroke(30, 10) === false;
var path = new Path2D();
path.rect(20, 20, 100, 100);
@assert ctx.isPointInStroke(path, 20, 20) === true;
@assert ctx.isPointInStroke(path, 120, 20) === true;
t.done();
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<title>Canvas test: 2d.canvas.context</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.canvas.context</h1>
<p class="desc">checks CanvasRenderingContext2D prototype</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("checks CanvasRenderingContext2D prototype");
_addTest(function(canvas, ctx) {
_assertSame(CanvasRenderingContext2D.prototype.__proto__, Object.prototype, "CanvasRenderingContext2D.prototype.__proto__", "Object.prototype");
_assertSame(ctx.__proto__, CanvasRenderingContext2D.prototype, "ctx.__proto__", "CanvasRenderingContext2D.prototype");
t.done();
});
</script>
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<title>Canvas test: 2d.getcontext.invalid.args</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.getcontext.invalid.args</h1>
<p class="desc">Calling getContext with invalid arguments.</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("Calling getContext with invalid arguments.");
_addTest(function(canvas, ctx) {
_assertSame(canvas.getContext(''), null, "canvas.getContext('')", "null");
_assertSame(canvas.getContext('2d#'), null, "canvas.getContext('2d#')", "null");
_assertSame(canvas.getContext('This is clearly not a valid context name.'), null, "canvas.getContext('This is clearly not a valid context name.')", "null");
_assertSame(canvas.getContext('2d\0'), null, "canvas.getContext('2d\\0')", "null");
_assertSame(canvas.getContext('2\uFF44'), null, "canvas.getContext('2\\uFF44')", "null");
_assertSame(canvas.getContext('2D'), null, "canvas.getContext('2D')", "null");
assert_throws_js(TypeError, function() { canvas.getContext(); });
_assertSame(canvas.getContext('null'), null, "canvas.getContext('null')", "null");
_assertSame(canvas.getContext('undefined'), null, "canvas.getContext('undefined')", "null");
});
</script>
<!doctype html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>
test(function() {
assert_equals(CanvasRenderingContext2D.prototype.__proto__, Object.prototype);
}, 'Constructor prototype');
test(function() {
var canvasElement = document.createElement('canvas');
var context = canvasElement.getContext('2d');
assert_equals(context.__proto__, CanvasRenderingContext2D.prototype);
}, 'Instance prototype chain');
</script>
<!DOCTYPE HTML>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>
test(function() {
var offscreenCanvas = new OffscreenCanvas(100, 50);
var ctx = offscreenCanvas.getContext('2d');
ctx.rect(0, 0, 20, 20);
assert_true(ctx.isPointInPath(10, 10));
assert_false(ctx.isPointInPath(30, 10));
var path = new Path2D();
path.rect(20, 20, 100, 100);
assert_true(ctx.isPointInPath(path, 20, 20));
assert_false(ctx.isPointInPath(path, 130, 20));
}, 'Test the behavior of isPointInPath APIs for OffscreenCanvas');
test(function() {
var offscreenCanvas = new OffscreenCanvas(100, 50);
var ctx = offscreenCanvas.getContext('2d');
ctx.strokeStyle = '#0f0';
ctx.beginPath();
ctx.rect(0, 0, 20, 20);
assert_true(ctx.isPointInStroke(0, 0));
assert_false(ctx.isPointInStroke(30, 10));
var path = new Path2D();
path.rect(20, 20, 100, 100);
assert_true(ctx.isPointInStroke(path, 20, 20));
assert_true(ctx.isPointInStroke(path, 120, 20));
}, 'Test the behavior of isPointInStroke APIs for OffscreenCanvas');
</script>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<canvas id=mycanvas width=400 height=400</script>
<script>
test(function(t) {
var canvas = document.getElementById('mycanvas');
var ctx = canvas.getContext('2d');
ctx.ellipse(80, 0, 10, 4294967277, Math.PI / -84, -Math.PI / 2147483436, false);
}, 'Regression test for crbug.com/503422. Test passes by not crashing.');
</script>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>
test(function(t){
imageData = document.createElement("canvas").getContext("2d").getImageData(0,0,2,2);
assert_equals(imageData.width, 2);
assert_equals(imageData.height, 2);
assert_equals(imageData.data.length, 16);
for (var i = 0; i < imageData.data.length; i++)
assert_equals(imageData.data[i], 0);
var testValues = [NaN, true, false, "\"garbage\"", "-1",
"0", "1", "2", Infinity, -Infinity,
-5, -0.5, 0, 0.5, 5,
5.4, 255, 256, null, undefined];
var testResults = [0, 1, 0, 0, 0,
0, 1, 2, 255, 0,
0, 0, 0, 0, 5,
5, 255, 255, 0, 0];
for (var i = 0; i < testValues.length; i++) {
imageData.data[0] = testValues[i];
assert_equals(imageData.data[0], testResults[i]);
}
imageData.data['foo']='garbage';
assert_equals(imageData.data['foo'], 'garbage');
imageData.data[-1]='garbage';
assert_equals(imageData.data[-1], undefined);
imageData.data[17]='garbage';
assert_equals(imageData.data[17], undefined);
}, 'Series of tests to ensure correct behaviour of the ImageData object');
</script>
\ No newline at end of file
<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_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);
});
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>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>
var defaultAttributes = {
alpha : true,
desynchronized : false,
};
var falseAttributes = {
alpha : false,
desynchronized : false,
};
function testAttributes(expectedAttributes, checkValue) {
if (arguments.length != 1 && arguments.length != 2)
return;
var canvas = document.createElement("canvas");
var initialAttributes = {};
var isUndefinedOrNull = arguments.length == 2 &&
(checkValue == undefined || checkValue == null);
if (isUndefinedOrNull)
for (key in expectedAttributes)
initialAttributes[key] = checkValue;
var context = canvas.getContext("2d", initialAttributes);
window.actualContextAttributes = context.getContextAttributes();
for (key in expectedAttributes)
assert_equals(eval("actualContextAttributes." + key),
expectedAttributes[key]);
}
test(function(t) {
testAttributes(defaultAttributes);
}, 'Test default value');
test(function(t) {
testAttributes(defaultAttributes, undefined);
}, 'Test undefined value');
test(function(t) {
testAttributes(falseAttributes, null);
}, 'Test null value');
</script>
</body>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<body>
<script>
test(function(t) {
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
ctx.ellipse(10, 10, 10, 5, 0, 0, 1, false);
ctx.ellipse(10, 10, 10, 0, 0, 0, 1, false);
ctx.ellipse(10, 10, -0, 5, 0, 0, 1, false);
assert_throws_dom("INDEX_SIZE_ERR", function() {
ctx.ellipse(10, 10, -2, 5, 0, 0, 1, false);
});
assert_throws_dom("INDEX_SIZE_ERR", function() {
ctx.ellipse(10, 10, 0, -1.5, 0, 0, 1, false);
});
assert_throws_dom("INDEX_SIZE_ERR", function() {
ctx.ellipse(10, 10, -2, -5, 0, 0, 1, false);
});
// FIXME: When this is exposed on Path as well as CanvasRenderingContext2D, add tests for Path as well.
}, 'Tests CanvasPath ellipse with negative radii.');
</script>
</body>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment