1818
1919import static org .junit .jupiter .api .Assertions .assertEquals ;
2020import static org .junit .jupiter .api .Assertions .assertNull ;
21+ import static org .junit .jupiter .api .Assertions .assertThrows ;
2122import static org .junit .jupiter .api .Assertions .assertTrue ;
2223
2324import java .io .File ;
2425import java .io .IOException ;
2526import java .util .HashSet ;
27+ import java .util .List ;
2628import java .util .Map ;
2729import java .util .Set ;
2830
3436import org .apache .pdfbox .cos .COSObject ;
3537import org .apache .pdfbox .io .RandomAccessReadBuffer ;
3638import org .apache .pdfbox .pdmodel .PDDocument ;
39+ import org .apache .pdfbox .pdmodel .documentinterchange .markedcontent .PDMarkedContent ;
40+
3741import org .junit .jupiter .api .Test ;
3842
3943/**
@@ -152,6 +156,7 @@ void testSimple()
152156 assertEquals (33 , structureElement .getRevisionNumber ());
153157 structureElement .incrementRevisionNumber ();
154158 assertEquals (34 , structureElement .getRevisionNumber ());
159+ assertThrows (IllegalArgumentException .class , () -> structureElement .setRevisionNumber (-1 ));
155160 structureElement .setTitle ("Title" );
156161 assertEquals ("Title" , structureElement .getTitle ());
157162 structureElement .setLanguage ("Klingon" );
@@ -162,5 +167,25 @@ void testSimple()
162167 assertEquals ("Actual" , structureElement .getActualText ());
163168 structureElement .setExpandedForm ("ExpF" );
164169 assertEquals ("ExpF" , structureElement .getExpandedForm ());
170+ assertThrows (IllegalArgumentException .class , () -> structureElement .appendKid (-1 ));
171+ structureElement .appendKid (0 );
172+ PDMarkedContentReference mcr1 = new PDMarkedContentReference ();
173+ mcr1 .setMCID (1 );
174+ structureElement .appendKid (mcr1 );
175+ PDMarkedContentReference mcr2 = new PDMarkedContentReference ();
176+ mcr2 .setMCID (2 );
177+ PDMarkedContent mc2 = PDMarkedContent .create (COSName .S , mcr2 .getCOSObject ());
178+ structureElement .appendKid (mc2 );
179+ PDMarkedContentReference mcrSubZero = new PDMarkedContentReference ();
180+ mcrSubZero .setMCID (-1 ); //TODO should fail
181+ PDMarkedContent mcSubZero = PDMarkedContent .create (COSName .S , mcrSubZero .getCOSObject ());
182+ assertThrows (IllegalArgumentException .class , () -> structureElement .appendKid (mcSubZero ));
183+ List <Object > kids = structureElement .getKids ();
184+ assertEquals (3 , kids .size ());
185+ assertEquals (0 , kids .get (0 ));
186+ mcr1 = (PDMarkedContentReference ) kids .get (1 );
187+ assertEquals (PDMarkedContentReference .TYPE , mcr1 .getCOSObject ().getNameAsString (COSName .TYPE ));
188+ assertEquals (1 , mcr1 .getMCID ());
189+ assertEquals (2 , kids .get (2 ));
165190 }
166191}
0 commit comments