| <!DOCTYPE html> | |
| <html> | |
| <head id="head_element"> | |
| <script src="../fast/js/resources/js-test-pre.js"></script> | |
| <style> | |
| </style> | |
| </head> | |
| <body> | |
| <p id="description"></p> | |
| <div id="console"></div> | |
| <script> | |
| description("This tests page format data"); | |
| function appendStyle(styleString) | |
| { | |
| var styleElement = document.createElement("style"); | |
| styleElement.innerHTML = styleString; | |
| document.getElementById("head_element").appendChild(styleElement); | |
| } | |
| function inchSize(width, height) | |
| { | |
| return "(" + Math.floor(width * 96) + ", " + Math.floor(height * 96) + ")"; | |
| } | |
| function mmSize(width, height) | |
| { | |
| return "(" + Math.floor(width * 96 / 25.4) + ", " + Math.floor(height * 96 / 25.4) + ")"; | |
| } | |
| function pxMargins(top, right, bottom, left) | |
| { | |
| return " " + top + " " + right + " " + bottom + " " + left; | |
| } | |
| if (window.testRunner) { | |
| testRunner.dumpAsText(); | |
| // Page box visibility tests. | |
| debug("Test default visibility"); | |
| shouldBe("internals.isPageBoxVisible(document, 0)", "true"); | |
| debug("Test display: none. display property doesn't apply to @page"); | |
| appendStyle("@page {display:none;}"); | |
| shouldBe("internals.isPageBoxVisible(document, 0)", "true"); | |
| debug("Test display: inline. display property doesn't apply to @page"); | |
| appendStyle("@page {display:inline;}"); | |
| shouldBe("internals.isPageBoxVisible(document, 0)", "true"); | |
| debug("Test visibility: hidden"); | |
| appendStyle("@page {visibility:hidden;}"); | |
| shouldBe("internals.isPageBoxVisible(document, 0)", "false"); | |
| debug("Test visibility: visible"); | |
| appendStyle("@page {visibility:visible;}"); | |
| shouldBe("internals.isPageBoxVisible(document, 0)", "true"); | |
| debug(""); | |
| // Page size tests | |
| debug("Test default page size"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "'(100, 200)' + pxMargins(1, 2, 3, 4)"); | |
| debug("Test auto page size"); | |
| appendStyle("@page {size:auto;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "'(100, 200)' + pxMargins(1, 2, 3, 4)"); | |
| debug("Test landscape"); | |
| appendStyle("@page {size:landscape;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "'(200, 100)' + pxMargins(1, 2, 3, 4)"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 200, 100, 1, 2, 3, 4)", "'(200, 100)' + pxMargins(1, 2, 3, 4)"); | |
| debug("Test portrait"); | |
| appendStyle("@page {size:portrait;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "'(100, 200)' + pxMargins(1, 2, 3, 4)"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 200, 100, 1, 2, 3, 4)", "'(100, 200)' + pxMargins(1, 2, 3, 4)"); | |
| debug("Test a5"); | |
| appendStyle("@page {size:a5;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "mmSize(148, 210) + pxMargins(1, 2, 3, 4)"); | |
| debug("Test a5 landscape"); | |
| appendStyle("@page {size:a5 landscape;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "mmSize(210, 148) + pxMargins(1, 2, 3, 4)"); | |
| debug("Test portrait a4"); | |
| appendStyle("@page {size:portrait a4;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "mmSize(210, 297) + pxMargins(1, 2, 3, 4)"); | |
| debug("Test a3"); | |
| appendStyle("@page {size:a3;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "mmSize(297, 420) + pxMargins(1, 2, 3, 4)"); | |
| debug("Test b5"); | |
| appendStyle("@page {size:b5;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "mmSize(176, 250) + pxMargins(1, 2, 3, 4)"); | |
| debug("Test b4"); | |
| appendStyle("@page {size:b4;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "mmSize(250, 353) + pxMargins(1, 2, 3, 4)"); | |
| debug("Test letter"); | |
| appendStyle("@page {size:letter;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "inchSize(8.5, 11) + pxMargins(1, 2, 3, 4)"); | |
| debug("Test legal"); | |
| appendStyle("@page {size:legal;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "inchSize(8.5, 14) + pxMargins(1, 2, 3, 4)"); | |
| debug("Test ledger"); | |
| appendStyle("@page {size:ledger;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "inchSize(11, 17) + pxMargins(1, 2, 3, 4)"); | |
| debug("Test 10cm"); | |
| appendStyle("@page {size:10cm;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "mmSize(100, 100) + pxMargins(1, 2, 3, 4)"); | |
| debug("Test 20cm x 30cm"); | |
| appendStyle("@page {size:20cm 30cm;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "mmSize(200, 300) + pxMargins(1, 2, 3, 4)"); | |
| debug("Test 10000px 20000px"); | |
| appendStyle("@page {size:10000px 20000px;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "'(10000, 20000)' + pxMargins(1, 2, 3, 4)"); | |
| debug("Test invalid page size: -10cm"); | |
| appendStyle("@page {size:-10cm;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "'(10000, 20000)' + pxMargins(1, 2, 3, 4)"); | |
| debug("Test invalid page size: a4 a4"); | |
| appendStyle("@page {size:a4 a4;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "'(10000, 20000)' + pxMargins(1, 2, 3, 4)"); | |
| debug("Test invalid page size: landscape portrait"); | |
| appendStyle("@page {size:landscape portrait;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "'(10000, 20000)' + pxMargins(1, 2, 3, 4)"); | |
| debug("Test invalid page size: 10cm letter"); | |
| appendStyle("@page {size:10cm letter;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "'(10000, 20000)' + pxMargins(1, 2, 3, 4)"); | |
| debug("Test invalid page size: 10cm 10cm 10cm"); | |
| appendStyle("@page {size:10cm 10cm 10cm;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "'(10000, 20000)' + pxMargins(1, 2, 3, 4)"); | |
| debug("Test invalid page size: empty"); | |
| appendStyle("@page {size:;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "'(10000, 20000)' + pxMargins(1, 2, 3, 4)"); | |
| debug(""); | |
| // Margin tests | |
| debug("Test 0px margins"); | |
| appendStyle("@page {margin:0px;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "'(10000, 20000)' + pxMargins(0, 0, 0, 0)"); | |
| debug("Test non-zero margins"); | |
| appendStyle("@page {margin:10px 20px 40px 80px;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "'(10000, 20000)' + pxMargins(10, 20, 40, 80)"); | |
| debug("Test percentage margin"); | |
| appendStyle("@page {margin: 8% 4% 2% 1%;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "'(10000, 20000)' + pxMargins(800, 400, 200, 100)"); | |
| debug("Test margin: auto 4% 2% 1%"); | |
| appendStyle("@page {margin: auto 4% 2% 1%;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "'(10000, 20000)' + pxMargins(1, 400, 200, 100)"); | |
| debug("Test margin: 8% auto 2% 1%"); | |
| appendStyle("@page {margin: 8% auto 2% 1%;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "'(10000, 20000)' + pxMargins(800, 2, 200, 100)"); | |
| debug("Test margin: 8% 4% auto 1%"); | |
| appendStyle("@page {margin: 8% 4% auto 1%;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "'(10000, 20000)' + pxMargins(800, 400, 3, 100)"); | |
| debug("Test margin: 8% 4% 2% auto"); | |
| appendStyle("@page {margin: 8% 4% 2% auto;}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "'(10000, 20000)' + pxMargins(800, 400, 200, 4)"); | |
| debug("Test visibility: hidden"); | |
| appendStyle("@page {visibility:hidden}"); | |
| shouldBe("internals.pageSizeAndMarginsInPixels(0, 100, 200, 1, 2, 3, 4)", "'(10000, 20000)' + pxMargins(800, 400, 200, 4)"); | |
| debug(""); | |
| } else { | |
| testFailed("This test can be run only with window.testRunner"); | |
| } | |
| </script> | |
| <script src="../fast/js/resources/js-test-post.js"></script> | |
| </body> | |
| </html> |