| description("Test for orphans and widows"); |
| |
| function test() |
| { |
| var block; |
| createBlockWithNumberOfLines("page1-1", 10).style.pageBreakBefore = "always"; |
| // 10 lines lines are available in the current page. |
| block = createBlockWithNumberOfLines("page1-2", 9); |
| block.style.orphans = 10; |
| block.style.widows = 20; |
| // block 'page1-2' can be placed on the current page. |
| createBlockWithRatioToPageHeight("page1-3", 0.01); |
| |
| createBlockWithNumberOfLines("page2", 10).style.pageBreakBefore = "always"; |
| // 10 lines lines are available in the current page. |
| block = createBlockWithNumberOfLines("page3", 12); |
| block.style.orphans = 15; |
| block.style.widows = 2; |
| // block 'page3' must move as a block to the next page because of 'orphans'. |
| |
| createBlockWithNumberOfLines("page4", 10).style.pageBreakBefore = "always"; |
| // 10 lines lines are available in the current page. |
| block = createBlockWithNumberOfLines("page5", 12); |
| block.style.orphans = 2; |
| block.style.widows = 15; |
| // block 'page5' must move as a block to the next page because of 'widows'. |
| |
| createBlockWithNumberOfLines("page6-1", 10).style.pageBreakBefore = "always"; |
| // 10 lines lines are available in the current page. |
| block = createBlockWithNumberOfLines("page6-2", 12); |
| block.style.orphans = 6; |
| block.style.widows = 6; |
| // block 'page6' must be splitted. |
| createBlockWithRatioToPageHeight("page7", 0.01); |
| |
| createBlockWithNumberOfLines("page8", 10).style.pageBreakBefore = "always"; |
| // 10 lines lines are available in the current page. |
| block = createBlockWithNumberOfLines("page9", 12); |
| block.style.orphans = 10; |
| block.style.widows = 10; |
| // block 'page9' must move as a block to the next page because we cannot satisfy |
| // both 'orphans' and 'widows' at the same time. |
| |
| pageNumberForElementShouldBe("page1-1", 1); |
| pageNumberForElementShouldBe("page1-2", 1); |
| pageNumberForElementShouldBe("page1-3", 1); |
| |
| pageNumberForElementShouldBe("page2", 2); |
| pageNumberForElementShouldBe("page3", 3); |
| |
| pageNumberForElementShouldBe("page4", 4); |
| pageNumberForElementShouldBe("page5", 5); |
| |
| pageNumberForElementShouldBe("page6-1", 6); |
| pageNumberForElementShouldBe("page6-2", 6); |
| pageNumberForElementShouldBe("page7", 7); |
| |
| pageNumberForElementShouldBe("page8", 8); |
| pageNumberForElementShouldBe("page9", 9); |
| |
| document.body.removeChild(document.getElementById("sandbox")); |
| } |
| |
| var successfullyParsed = true; |