blob: cec2af93d903da8fc9b7b15d3a76fa0195f935aa [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<script>
description("Test that canvas elements can't have negative height and/or width.");
canvas = document.createElement('canvas');
function createFromMarkup(markup)
{
var fragmentContainer = document.createElement("div");
fragmentContainer.innerHTML = markup;
return fragmentContainer.firstChild;
}
function trySettingWidth(value) {
canvas.width = 6;
canvas.width = value;
return canvas.width;
}
function trySettingHeight(value) {
canvas.height = 6;
canvas.height = value;
return canvas.height;
}
function trySettingWidthAttribute(value) {
canvas.width = 6;
canvas.setAttribute('width', value);
return canvas.width;
}
function trySettingHeightAttribute(value) {
canvas.height = 6;
canvas.setAttribute('height', value);
return canvas.height;
}
function tryCreatingCanvasWithWidth(value) {
return createFromMarkup("<canvas width=" + value + "></canvas>").width;
}
function tryCreatingCanvasWithHeight(value) {
return createFromMarkup("<canvas height='" + value + "'></canvas>").height;
}
function tryWidth(value, expected) {
shouldBe("trySettingWidth(" + value + ")", expected);
shouldBe("trySettingWidthAttribute(" + value + ")", expected);
shouldBe("tryCreatingCanvasWithWidth(" + value + ")", expected);
}
function tryHeight(value, expected) {
shouldBe("trySettingHeight(" + value + ")", expected);
shouldBe("trySettingHeightAttribute(" + value + ")", expected);
shouldBe("tryCreatingCanvasWithHeight(" + value + ")", expected);
}
function checkDefaultWidth() {
return document.createElement("canvas").width;
}
function checkDefaultHeight() {
return document.createElement("canvas").height;
}
shouldBe("checkDefaultWidth()", "300");
shouldBe("checkDefaultHeight()", "150");
shouldBe("trySettingWidth('abc')", "300");
shouldBe("trySettingWidth('200')", "200");
shouldBe("trySettingWidth('300')", "300");
shouldBe("trySettingWidth(NaN)", "300");
shouldBe("trySettingWidth(Infinity)", "300");
shouldBe("trySettingWidth(null)", "300");
shouldBe("trySettingWidth(true)", "1");
shouldBe("trySettingWidth(false)", "0");
shouldBe("trySettingHeight('abc')", "150");
shouldBe("trySettingHeight('200')", "200");
shouldBe("trySettingHeight('150')", "150");
shouldBe("trySettingHeight(NaN)", "150");
shouldBe("trySettingHeight(Infinity)", "150");
shouldBe("trySettingHeight(null)", "150");
shouldBe("trySettingHeight(true)", "1");
shouldBe("trySettingHeight(false)", "0");
tryWidth("'foo'", "300");
tryWidth("-1", "300");
tryWidth("0", "0");
tryWidth("1", "1");
tryWidth("'+7'", "7");
tryWidth("'-7'", "300");
tryWidth("'123'", "123");
tryHeight("'foo'", "150");
tryHeight("-1", "150");
tryHeight("0", "0");
tryHeight("1", "1");
tryHeight("'+7'", "7");
tryHeight("'-7'", "150");
tryHeight("'123'", "123");
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>