Author: tilman Date: Wed Aug 20 08:49:01 2025 New Revision: 1927908 Log: PDFBOX-5660: improve test coverage
Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureElementTest.java Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureElementTest.java ============================================================================== --- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureElementTest.java Wed Aug 20 08:48:57 2025 (r1927907) +++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureElementTest.java Wed Aug 20 08:49:01 2025 (r1927908) @@ -18,11 +18,13 @@ package org.apache.pdfbox.pdmodel.docume import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.File; import java.io.IOException; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -34,6 +36,8 @@ import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.cos.COSObject; import org.apache.pdfbox.io.RandomAccessReadBuffer; import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.documentinterchange.markedcontent.PDMarkedContent; + import org.junit.jupiter.api.Test; /** @@ -152,6 +156,7 @@ class PDStructureElementTest assertEquals(33, structureElement.getRevisionNumber()); structureElement.incrementRevisionNumber(); assertEquals(34, structureElement.getRevisionNumber()); + assertThrows(IllegalArgumentException.class, () -> structureElement.setRevisionNumber(-1)); structureElement.setTitle("Title"); assertEquals("Title", structureElement.getTitle()); structureElement.setLanguage("Klingon"); @@ -162,5 +167,25 @@ class PDStructureElementTest assertEquals("Actual", structureElement.getActualText()); structureElement.setExpandedForm("ExpF"); assertEquals("ExpF", structureElement.getExpandedForm()); + assertThrows(IllegalArgumentException.class, () -> structureElement.appendKid(-1)); + structureElement.appendKid(0); + PDMarkedContentReference mcr1 = new PDMarkedContentReference(); + mcr1.setMCID(1); + structureElement.appendKid(mcr1); + PDMarkedContentReference mcr2 = new PDMarkedContentReference(); + mcr2.setMCID(2); + PDMarkedContent mc2 = PDMarkedContent.create(COSName.S, mcr2.getCOSObject()); + structureElement.appendKid(mc2); + PDMarkedContentReference mcrSubZero = new PDMarkedContentReference(); + mcrSubZero.setMCID(-1); //TODO should fail + PDMarkedContent mcSubZero = PDMarkedContent.create(COSName.S, mcrSubZero.getCOSObject()); + assertThrows(IllegalArgumentException.class, () -> structureElement.appendKid(mcSubZero)); + List<Object> kids = structureElement.getKids(); + assertEquals(3, kids.size()); + assertEquals(0, kids.get(0)); + mcr1 = (PDMarkedContentReference) kids.get(1); + assertEquals(PDMarkedContentReference.TYPE, mcr1.getCOSObject().getNameAsString(COSName.TYPE)); + assertEquals(1, mcr1.getMCID()); + assertEquals(2, kids.get(2)); } }