Skip to content

Commit 1abce11

Browse files
Move PdfPagesTest tests from samples internal
DEVSIX-3807
1 parent 518a91f commit 1abce11

File tree

7 files changed

+75
-2
lines changed

7 files changed

+75
-2
lines changed

kernel/src/test/java/com/itextpdf/kernel/pdf/PdfPagesTest.java

Lines changed: 75 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,14 @@ This file is part of the iText (R) project.
5959
import com.itextpdf.test.annotations.LogMessages;
6060
import com.itextpdf.test.annotations.type.IntegrationTest;
6161

62-
import java.io.FileOutputStream;
62+
import java.lang.reflect.Array;
6363
import java.util.ArrayList;
64-
import java.util.Queue;
64+
import java.util.Arrays;
65+
import java.util.Collections;
66+
import java.util.HashSet;
67+
import java.util.LinkedHashSet;
68+
import java.util.Set;
69+
import javax.xml.bind.Element;
6570
import org.junit.Assert;
6671
import org.junit.BeforeClass;
6772
import org.junit.Rule;
@@ -649,6 +654,74 @@ public void readSinglePageTest() throws IOException {
649654
document.close();
650655
}
651656

657+
@Test
658+
public void implicitPagesTreeRebuildingTest() throws IOException, InterruptedException {
659+
String inFileName = sourceFolder + "implicitPagesTreeRebuilding.pdf";
660+
String outFileName = destinationFolder + "implicitPagesTreeRebuilding.pdf";
661+
String cmpFileName = sourceFolder + "cmp_implicitPagesTreeRebuilding.pdf";
662+
PdfDocument pdfDocument = new PdfDocument(new PdfReader(inFileName), new PdfWriter(outFileName));
663+
pdfDocument.close();
664+
Assert.assertNull(new CompareTool().compareByContent(outFileName,cmpFileName, destinationFolder));
665+
}
666+
667+
@Test
668+
@LogMessages(messages = {@LogMessage(messageTemplate = LogMessageConstant.PAGE_TREE_IS_BROKEN_FAILED_TO_RETRIEVE_PAGE)})
669+
public void brokenPageTreeWithExcessiveLastPageTest() throws IOException {
670+
String inFileName = sourceFolder + "brokenPageTreeNullLast.pdf";
671+
672+
PdfDocument pdfDocument = new PdfDocument(new PdfReader(inFileName));
673+
674+
List<Integer> pages = Arrays.asList(4);
675+
Set<Integer> nullPages = new HashSet<>(pages);
676+
677+
findAndAssertNullPages(pdfDocument, nullPages);
678+
}
679+
680+
@Test
681+
@LogMessages(messages = {@LogMessage(messageTemplate = LogMessageConstant.PAGE_TREE_IS_BROKEN_FAILED_TO_RETRIEVE_PAGE)})
682+
public void brokenPageTreeWithExcessiveMiddlePageTest() throws IOException {
683+
String inFileName = sourceFolder + "brokenPageTreeNullMiddle.pdf";
684+
685+
PdfDocument pdfDocument = new PdfDocument(new PdfReader(inFileName));
686+
687+
List<Integer> pages = Arrays.asList(3);
688+
Set<Integer> nullPages = new HashSet<>(pages);
689+
690+
findAndAssertNullPages(pdfDocument, nullPages);
691+
}
692+
693+
@Test
694+
@LogMessages(messages = {@LogMessage(messageTemplate = LogMessageConstant.PAGE_TREE_IS_BROKEN_FAILED_TO_RETRIEVE_PAGE, count = 7)})
695+
public void brokenPageTreeWithExcessiveMultipleNegativePagesTest() throws IOException {
696+
String inFileName = sourceFolder + "brokenPageTreeNullMultipleSequence.pdf";
697+
698+
PdfDocument pdfDocument = new PdfDocument(new PdfReader(inFileName));
699+
700+
List<Integer> pages = Arrays.asList(2, 3, 4, 6, 7, 8, 9);
701+
Set<Integer> nullPages = new HashSet<>(pages);
702+
703+
findAndAssertNullPages(pdfDocument, nullPages);
704+
}
705+
706+
@Test
707+
@LogMessages(messages = {@LogMessage(messageTemplate = LogMessageConstant.PAGE_TREE_IS_BROKEN_FAILED_TO_RETRIEVE_PAGE, count = 2)})
708+
public void brokenPageTreeWithExcessiveRangeNegativePagesTest() throws IOException {
709+
String inFileName = sourceFolder + "brokenPageTreeNullRangeNegative.pdf";
710+
711+
PdfDocument pdfDocument = new PdfDocument(new PdfReader(inFileName));
712+
713+
List<Integer> pages = Arrays.asList(2, 4);
714+
Set<Integer> nullPages = new HashSet<>(pages);
715+
716+
findAndAssertNullPages(pdfDocument, nullPages);
717+
}
718+
719+
private static void findAndAssertNullPages(PdfDocument pdfDocument, Set<Integer> nullPages) {
720+
for (Integer e : nullPages) {
721+
Assert.assertNull(pdfDocument.getPage((int) e));
722+
}
723+
}
724+
652725
private int getAmountOfReadPages(PdfArray pageIndRefArray) {
653726
int amountOfLoadedPages = 0;
654727
for (int i = 0; i < pageIndRefArray.size(); i++) {

0 commit comments

Comments
 (0)