Skip to content

Commit 4e56f84

Browse files
author
Dmitry Radchuk
committed
Add test for infinite loop on page break with keep together
DEVSIX-9586
1 parent fa6ca76 commit 4e56f84

12 files changed

+87
-65
lines changed

src/test/java/com/itextpdf/html2pdf/css/PageBreakTest.java

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -195,28 +195,48 @@ public void pageBreakInConstrainedDivTest() throws IOException, InterruptedExcep
195195

196196
@Test
197197
@LogMessages(messages = {@LogMessage(messageTemplate = LayoutLogMessageConstant.ELEMENT_DOES_NOT_FIT_AREA)})
198-
// TODO: DEVSIX-5263 inconsistent behavior when page-break-inside: avoid set in td and td contains inline elements
198+
public void pageBreakInsideAvoidInOlLiWithDivTest() throws IOException, InterruptedException {
199+
runTest("pageBreakInsideAvoidInOlLiWithDiv");
200+
}
201+
202+
@Test
203+
@LogMessages(messages = {@LogMessage(messageTemplate = LayoutLogMessageConstant.ELEMENT_DOES_NOT_FIT_AREA)})
204+
public void pageBreakInsideAvoidInOlLiSecondPageTest() throws IOException, InterruptedException {
205+
runTest("pageBreakInsideAvoidInOlLiSecondPage");
206+
}
207+
208+
@Test
209+
@LogMessages(messages = {@LogMessage(messageTemplate = LayoutLogMessageConstant.ELEMENT_DOES_NOT_FIT_AREA)})
210+
public void pageBreakInsideAvoidInOlLiOverflowTest() throws IOException, InterruptedException {
211+
runTest("pageBreakInsideAvoidInOlLiOverflow");
212+
}
213+
214+
@Test
215+
@LogMessages(messages = {@LogMessage(messageTemplate = LayoutLogMessageConstant.ELEMENT_DOES_NOT_FIT_AREA)})
216+
public void pageBreakInsideAvoidInUlLiWithDivTest() throws IOException, InterruptedException {
217+
runTest("pageBreakInsideAvoidInUlLiWithDiv");
218+
}
219+
220+
@Test
221+
@LogMessages(messages = {@LogMessage(messageTemplate = LayoutLogMessageConstant.ELEMENT_DOES_NOT_FIT_AREA)})
199222
public void pageBreakInsideAvoidInTdWithBrInsideTest() throws IOException, InterruptedException {
200223
convertToElements("pageBreakInsideAvoidInTdWithBrInside");
201224
}
202225

203226
@Test
204227
@LogMessages(messages = {@LogMessage(messageTemplate = LayoutLogMessageConstant.ELEMENT_DOES_NOT_FIT_AREA)})
205-
// TODO: DEVSIX-5263 inconsistent behavior when page-break-inside: avoid set in td and td contains inline elements
206228
public void pageBreakInsideAvoidInTdWithSpanInsideTest() throws IOException, InterruptedException {
207229
convertToElements("pageBreakInsideAvoidInTdWithSpanInside");
208230
}
209231

210232
@Test
211233
@LogMessages(messages = {@LogMessage(messageTemplate = LayoutLogMessageConstant.ELEMENT_DOES_NOT_FIT_AREA)})
212-
// TODO: DEVSIX-5263 inconsistent behavior when page-break-inside: avoid set in td and td contains inline elements
213234
public void pageBreakInsideAvoidInTdWithHeadingsTest() throws IOException, InterruptedException {
214235
convertToElements("pageBreakInsideAvoidInTdWithHeadings");
215236
}
216237

217238
@Test
218239
@LogMessages(messages = {@LogMessage(messageTemplate = LayoutLogMessageConstant.ELEMENT_DOES_NOT_FIT_AREA)})
219-
// TODO: DEVSIX-5263 inconsistent behavior when page-break-inside: avoid set in td and td contains inline elements
220240
public void pageBreakInsideAvoidInTdWithParaTest() throws IOException, InterruptedException {
221241
convertToElements("pageBreakInsideAvoidInTdWithPara");
222242
}
@@ -226,14 +246,12 @@ public void pageBreakInsideAvoidInTdWithParaTest() throws IOException, Interrupt
226246
@LogMessage(messageTemplate = IoLogMessageConstant.LAST_ROW_IS_NOT_COMPLETE),
227247
@LogMessage(messageTemplate = LayoutLogMessageConstant.ELEMENT_DOES_NOT_FIT_AREA)
228248
})
229-
// TODO: DEVSIX-5263 inconsistent behavior when page-break-inside: avoid set in td and td contains inline elements
230249
public void pageBreakInsideAvoidInTdWithTableTest() throws IOException, InterruptedException {
231250
convertToElements("pageBreakInsideAvoidInTdWithTable");
232251
}
233252

234253
@Test
235254
@LogMessages(messages = {@LogMessage(messageTemplate = LayoutLogMessageConstant.ELEMENT_DOES_NOT_FIT_AREA)})
236-
// TODO: DEVSIX-5263 inconsistent behavior when page-break-inside: avoid set in td and td contains inline elements
237255
public void pageBreakInsideAvoidInTdWithDivTest() throws IOException, InterruptedException {
238256
convertToElements("pageBreakInsideAvoidInTdWithDiv");
239257
}

src/test/java/com/itextpdf/html2pdf/element/ListItemTest.java

Lines changed: 15 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,11 @@ This file is part of the iText (R) project.
2222
*/
2323
package com.itextpdf.html2pdf.element;
2424

25+
import com.itextpdf.html2pdf.ExtendedHtmlConversionITextTest;
2526
import com.itextpdf.html2pdf.HtmlConverter;
2627
import com.itextpdf.io.logs.IoLogMessageConstant;
2728
import com.itextpdf.kernel.utils.CompareTool;
28-
import com.itextpdf.test.ExtendedITextTest;
29+
import com.itextpdf.layout.logs.LayoutLogMessageConstant;
2930
import com.itextpdf.test.annotations.LogMessage;
3031
import com.itextpdf.test.annotations.LogMessages;
3132
import org.junit.jupiter.api.Assertions;
@@ -37,111 +38,66 @@ This file is part of the iText (R) project.
3738
import java.io.IOException;
3839

3940
@Tag("IntegrationTest")
40-
public class ListItemTest extends ExtendedITextTest {
41+
public class ListItemTest extends ExtendedHtmlConversionITextTest {
4142

42-
public static final String sourceFolder = "./src/test/resources/com/itextpdf/html2pdf/element/ListItemTest/";
43-
public static final String destinationFolder = "./target/test/com/itextpdf/html2pdf/element/ListItemTest/";
43+
public static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/html2pdf/element/ListItemTest/";
44+
public static final String DESTINATION_FOLDER = "./target/test/com/itextpdf/html2pdf/element/ListItemTest/";
4445

4546
@BeforeAll
4647
public static void beforeClass() {
47-
createDestinationFolder(destinationFolder);
48+
createDestinationFolder(DESTINATION_FOLDER);
4849
}
4950

5051
@Test
5152
@LogMessages(messages = {@LogMessage(messageTemplate = IoLogMessageConstant.TYPOGRAPHY_NOT_FOUND, count = 14)})
5253
public void rtlListItemInsideLtrOrderedListTest() throws IOException, InterruptedException {
53-
String name = "rtlListItemInsideLtrOrderedListTest";
54-
HtmlConverter.convertToPdf(new File(sourceFolder + name + ".html"),
55-
new File(destinationFolder + name +".pdf"));
56-
Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + name + ".pdf",
57-
sourceFolder + "cmp_" + name + ".pdf",
58-
destinationFolder, "diff01_"));
54+
convertToPdfAndCompare("rtlListItemInsideLtrOrderedListTest", SOURCE_FOLDER, DESTINATION_FOLDER);
5955
}
6056

6157
@Test
6258
@LogMessages(messages = {@LogMessage(messageTemplate = IoLogMessageConstant.TYPOGRAPHY_NOT_FOUND, count = 16)})
6359
public void listItemWithDifferentDirAndPositionInsideTest() throws IOException, InterruptedException {
64-
String name = "listItemWithDifferentDirAndPositionInsideTest";
65-
HtmlConverter.convertToPdf(new File(sourceFolder + name + ".html"),
66-
new File(destinationFolder + name +".pdf"));
67-
Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + name + ".pdf",
68-
sourceFolder + "cmp_" + name + ".pdf",
69-
destinationFolder, "diff01_"));
60+
convertToPdfAndCompare("listItemWithDifferentDirAndPositionInsideTest", SOURCE_FOLDER, DESTINATION_FOLDER);
7061
}
7162

7263
@Test
7364
@LogMessages(messages = {@LogMessage(messageTemplate = IoLogMessageConstant.TYPOGRAPHY_NOT_FOUND, count = 12)})
7465
public void rtlListItemInsideLtrUnorderedListTest() throws IOException, InterruptedException {
75-
String name = "rtlListItemInsideLtrUnorderedListTest";
76-
HtmlConverter.convertToPdf(new File(sourceFolder + name + ".html"),
77-
new File(destinationFolder + name +".pdf"));
78-
Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + name + ".pdf",
79-
sourceFolder + "cmp_" + name + ".pdf",
80-
destinationFolder, "diff01_"));
66+
convertToPdfAndCompare("rtlListItemInsideLtrUnorderedListTest", SOURCE_FOLDER, DESTINATION_FOLDER);
8167
}
8268

8369
@Test
8470
@LogMessages(messages = {@LogMessage(messageTemplate = IoLogMessageConstant.TYPOGRAPHY_NOT_FOUND, count = 12)})
8571
public void drawBulletRtlTest() throws IOException, InterruptedException {
86-
String name = "drawBulletRtl";
87-
HtmlConverter.convertToPdf(new File(sourceFolder + name + ".html"),
88-
new File(destinationFolder + name +".pdf"));
89-
Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + name + ".pdf",
90-
sourceFolder + "cmp_" + name + ".pdf",
91-
destinationFolder, "diff01_"));
72+
convertToPdfAndCompare("drawBulletRtl", SOURCE_FOLDER, DESTINATION_FOLDER);
9273
}
9374

9475
@Test
9576
@LogMessages(messages = {@LogMessage(messageTemplate = IoLogMessageConstant.TYPOGRAPHY_NOT_FOUND, count = 16)})
9677
public void drawBulletLtrTest() throws IOException, InterruptedException {
97-
String name = "drawBulletLtr";
98-
HtmlConverter.convertToPdf(new File(sourceFolder + name + ".html"),
99-
new File(destinationFolder + name +".pdf"));
100-
Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + name + ".pdf",
101-
sourceFolder + "cmp_" + name + ".pdf",
102-
destinationFolder, "diff01_"));
78+
convertToPdfAndCompare("drawBulletLtr", SOURCE_FOLDER, DESTINATION_FOLDER);
10379
}
10480

10581
@Test
10682
@LogMessages(messages = {@LogMessage(messageTemplate = IoLogMessageConstant.TYPOGRAPHY_NOT_FOUND, count = 8)})
10783
public void bulletsAreNotDrawnAsTheyAreInPageMarginsTest() throws IOException, InterruptedException {
108-
String name = "bulletsAreNotDrawnAsTheyAreInPageMargins";
109-
HtmlConverter.convertToPdf(new File(sourceFolder + name + ".html"),
110-
new File(destinationFolder + name +".pdf"));
111-
Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + name + ".pdf",
112-
sourceFolder + "cmp_" + name + ".pdf",
113-
destinationFolder, "diff01_"));
84+
convertToPdfAndCompare("bulletsAreNotDrawnAsTheyAreInPageMargins", SOURCE_FOLDER, DESTINATION_FOLDER);
11485
}
11586

11687
@Test
11788
@LogMessages(messages = {@LogMessage(messageTemplate = IoLogMessageConstant.TYPOGRAPHY_NOT_FOUND, count = 20)})
11889
public void rltListItemWithDifferentMarginsTest() throws IOException, InterruptedException {
119-
String name = "rltListItemWithDifferentMargins";
120-
HtmlConverter.convertToPdf(new File(sourceFolder + name + ".html"),
121-
new File(destinationFolder + name +".pdf"));
122-
Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + name + ".pdf",
123-
sourceFolder + "cmp_" + name + ".pdf",
124-
destinationFolder, "diff01_"));
90+
convertToPdfAndCompare("rltListItemWithDifferentMargins", SOURCE_FOLDER, DESTINATION_FOLDER);
12591
}
12692

12793
@Test
12894
@LogMessages(messages = {@LogMessage(messageTemplate = IoLogMessageConstant.TYPOGRAPHY_NOT_FOUND, count = 16)})
12995
public void diffListItemsInsideDiffListsWithDiffDirectionsWithoutWidthTest() throws IOException, InterruptedException {
130-
String name = "diffListItemsInsideDiffListsWithDiffDirectionsWithoutWidth";
131-
HtmlConverter.convertToPdf(new File(sourceFolder + name + ".html"),
132-
new File(destinationFolder + name +".pdf"));
133-
Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + name + ".pdf",
134-
sourceFolder + "cmp_" + name + ".pdf",
135-
destinationFolder, "diff01_"));
96+
convertToPdfAndCompare("diffListItemsInsideDiffListsWithDiffDirectionsWithoutWidth", SOURCE_FOLDER, DESTINATION_FOLDER);
13697
}
13798

13899
@Test
139100
public void listItemWithBlockDisplayTest() throws IOException, InterruptedException {
140-
String name = "listItemWithBlockDisplay";
141-
HtmlConverter.convertToPdf(new File(sourceFolder + name + ".html"),
142-
new File(destinationFolder + name +".pdf"));
143-
Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + name + ".pdf",
144-
sourceFolder + "cmp_" + name + ".pdf",
145-
destinationFolder, "diff01_"));
101+
convertToPdfAndCompare("listItemWithBlockDisplay", SOURCE_FOLDER, DESTINATION_FOLDER);
146102
}
147103
}
Binary file not shown.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<body>
4+
<div style="page-break-inside:avoid">
5+
<p>Just some text which fit the page</p>
6+
<div style="width: 400px; height: 989px; border: 2px solid red"></div>
7+
<ol>
8+
<li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero.</li>
9+
</ol>
10+
</div>
11+
</body>
12+
</html>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<body>
4+
<div style="page-break-inside:avoid">
5+
<p>Just some text which fit the page</p>
6+
<div style="width: 400px; height: 949px; border: 2px solid red"></div>
7+
<ol>
8+
<li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero.</li>
9+
</ol>
10+
</div>
11+
</body>
12+
</html>

0 commit comments

Comments
 (0)