You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2020/08/24 17:07:48 UTC

svn commit: r1881149 - in /pdfbox/trunk/pdfbox/src: main/java/org/apache/pdfbox/pdmodel/interactive/form/PDRadioButton.java test/java/org/apache/pdfbox/pdmodel/interactive/form/TestRadioButtons.java

Author: tilman
Date: Mon Aug 24 17:07:48 2020
New Revision: 1881149

URL: http://svn.apache.org/viewvc?rev=1881149&view=rev
Log:
PDFBOX-4941: increment index when going through export values; expand test

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDRadioButton.java
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/TestRadioButtons.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDRadioButton.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDRadioButton.java?rev=1881149&r1=1881148&r2=1881149&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDRadioButton.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDRadioButton.java Mon Aug 24 17:07:48 2020
@@ -114,6 +114,7 @@ public final class PDRadioButton extends
                 {
                     selectedExportValues.add(exportValues.get(idx));
                 }
+                ++idx;
             }
             return selectedExportValues;
         }

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/TestRadioButtons.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/TestRadioButtons.java?rev=1881149&r1=1881148&r2=1881149&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/TestRadioButtons.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/TestRadioButtons.java Mon Aug 24 17:07:48 2020
@@ -25,8 +25,13 @@ import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
 import org.apache.pdfbox.cos.COSArray;
+import org.apache.pdfbox.cos.COSDictionary;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationWidget;
+import org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceDictionary;
+import org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceEntry;
+import org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceStream;
 
 /**
  * This will test the functionality of Radio Buttons in PDFBox.
@@ -90,6 +95,44 @@ public class TestRadioButtons extends Te
             options.add("Value02");
             radioButton.setExportValues(options);
 
+            // Test getSelectedExportValues()
+            List<PDAnnotationWidget> widgets = new ArrayList<>();
+            for (int i = 0; i < options.size(); i++)
+            {
+                PDAnnotationWidget widget = new PDAnnotationWidget();
+                COSDictionary apNDict = new COSDictionary();
+                apNDict.setItem(COSName.Off, new PDAppearanceStream(doc));
+                apNDict.setItem(options.get(i), new PDAppearanceStream(doc));
+
+                PDAppearanceDictionary appearance = new PDAppearanceDictionary();
+                PDAppearanceEntry appearanceNEntry = new PDAppearanceEntry(apNDict);
+                appearance.setNormalAppearance(appearanceNEntry);
+                widget.setAppearance(appearance);
+                widget.setAppearanceState("Off");
+                widgets.add(widget);
+            }
+            radioButton.setWidgets(widgets);
+
+            radioButton.setValue("Value01");
+            assertEquals("Value01", radioButton.getValue());
+            assertEquals(1, radioButton.getSelectedExportValues().size());
+            assertEquals("Value01", radioButton.getSelectedExportValues().get(0));
+            assertEquals("Value01", widgets.get(0).getAppearanceState().getName());
+            assertEquals("Off", widgets.get(1).getAppearanceState().getName());
+
+            radioButton.setValue("Value02");
+            assertEquals("Value02", radioButton.getValue());
+            assertEquals(1, radioButton.getSelectedExportValues().size());
+            assertEquals("Value02", radioButton.getSelectedExportValues().get(0));
+            assertEquals("Off", widgets.get(0).getAppearanceState().getName());
+            assertEquals("Value02", widgets.get(1).getAppearanceState().getName());
+
+            radioButton.setValue("Off");
+            assertEquals("Off", radioButton.getValue());
+            assertEquals(0, radioButton.getSelectedExportValues().size());
+            assertEquals("Off", widgets.get(0).getAppearanceState().getName());
+            assertEquals("Off", widgets.get(1).getAppearanceState().getName());
+
             COSArray optItem = (COSArray) radioButton.getCOSObject().getItem(COSName.OPT);
 
             // assert that the values have been correctly set
@@ -106,7 +149,7 @@ public class TestRadioButtons extends Te
             radioButton.setExportValues(null);
             assertNull(radioButton.getCOSObject().getItem(COSName.OPT));
             // if there is no Opt entry an empty List shall be returned
-            assertEquals(radioButton.getExportValues(), new ArrayList<String>());
+            assertEquals(radioButton.getExportValues(), new ArrayList<>());
         }
     }
 }
\ No newline at end of file