41 lines
1.1 KiB
JavaScript
41 lines
1.1 KiB
JavaScript
description("This test ensures that Canvas and CanvasRenderingContext2D work correctly if the rendering context outlives the canvas element");
|
|
|
|
function dataToArray(data) {
|
|
var result = new Array(data.length)
|
|
for (var i = 0; i < data.length; i++)
|
|
result[i] = data[i];
|
|
return result;
|
|
}
|
|
|
|
function getPixel(x, y) {
|
|
var data = context.getImageData(x,y,1,1);
|
|
if (!data) // getImageData failed, which should never happen
|
|
return [-1,-1,-1,-1];
|
|
return dataToArray(data.data);
|
|
}
|
|
|
|
function pixelShouldBe(x, y, colour) {
|
|
shouldBe("getPixel(" + [x, y] +")", "["+colour+"]");
|
|
}
|
|
|
|
function prepareCanvas() {
|
|
var context = document.createElement("canvas").getContext("2d");
|
|
context.fillStyle = "green";
|
|
context.fillRect(0,0,100,100);
|
|
return context;
|
|
}
|
|
|
|
function clobberGC(count) {
|
|
for (var i = 0; i < 5000; ++i)
|
|
({a: i*i*i*0.5+"str", b: i/Math.sqrt(i)});
|
|
if (count > 0)
|
|
clobberGC(count-1);
|
|
}
|
|
|
|
function test() {
|
|
context = prepareCanvas();
|
|
clobberGC(40);
|
|
pixelShouldBe(50, 50, [0, 128, 0, 255]);
|
|
}
|
|
test();
|