Author: tilman
Date: Thu Jul 30 14:58:14 2026
New Revision: 1936738

Log:
PDFBOX-6227: add test

Modified:
   
pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormTest.java

Modified: 
pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormTest.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormTest.java
     Thu Jul 30 14:48:23 2026        (r1936737)
+++ 
pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormTest.java
     Thu Jul 30 14:58:14 2026        (r1936738)
@@ -489,6 +489,48 @@ public class PDAcroFormTest
         doc.close();
     }
 
+    /**
+     * PDFBOX-6227: Check that cycle is caught in repair.
+     *
+     * @throws IOException 
+     */
+    @Test
+    public void testCycle() throws IOException
+    {
+        PDDocument doc = new PDDocument();
+        PDPage page = new PDPage();
+        doc.addPage(page);
+
+        PDAcroForm theAcroForm = new PDAcroForm(doc);
+        theAcroForm.setNeedAppearances(true);
+        doc.getDocumentCatalog().setAcroForm(theAcroForm);
+        theAcroForm.setDefaultResources(new PDResources());
+
+        PDTextField textBox = new PDTextField(theAcroForm);
+        textBox.setPartialName("SampleField");
+
+        textBox.setDefaultAppearance("/Helv 0 Ff 0 g");
+        // field not added to force repair
+
+        PDAnnotationWidget widget = textBox.getWidgets().get(0);
+        PDRectangle rect = new PDRectangle(50, 750, 200, 20);
+        try
+        {
+            widget.setParent(textBox);
+            fail("Should have thrown IllegalArgumentException");
+        }
+        catch (IllegalArgumentException ex)
+        {
+        }
+        widget.getCOSObject().setItem(COSName.PARENT, widget.getCOSObject());
+        widget.setRectangle(rect);
+        widget.setPage(page);
+
+        page.getAnnotations().add(widget);
+        
assertTrue(doc.getDocumentCatalog().getAcroForm().getFields().isEmpty());
+        doc.close();
+    }
+
     @After
     public void tearDown() throws IOException
     {
@@ -547,4 +589,3 @@ public class PDAcroFormTest
         return count;
     } 
 }
-

Reply via email to