| <!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> |