Author: leleueri
Date: Wed Aug  8 20:08:31 2012
New Revision: 1370929

URL: http://svn.apache.org/viewvc?rev=1370929&view=rev
Log:
[https://issues.apache.org/jira/browse/PDFBOX-1312] Addition of Unit Test for 
Action validation

Added:
    pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/
    
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/
    
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/AbstractTestAction.java
   (with props)
    
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestForbiddenAction.java
   (with props)
    
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestGotoAction.java
   (with props)
    
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestGotoRemoteAction.java
   (with props)
    
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestHideAction.java
   (with props)
    
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestNamedAction.java
   (with props)
    
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestSubmitAction.java
   (with props)
    
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestThreadAction.java
   (with props)
    
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestUriAction.java
   (with props)
    pdfbox/trunk/preflight/src/test/resources/pdfa-with-annotations-square.pdf  
 (with props)

Added: 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/AbstractTestAction.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/AbstractTestAction.java?rev=1370929&view=auto
==============================================================================
--- 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/AbstractTestAction.java
 (added)
+++ 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/AbstractTestAction.java
 Wed Aug  8 20:08:31 2012
@@ -0,0 +1,119 @@
+/*****************************************************************************
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * 
+ ****************************************************************************/
+
+package org.apache.pdfbox.preflight.action.pdfa1b;
+
+import static org.junit.Assert.*;
+
+import java.util.List;
+
+import javax.activation.DataSource;
+import javax.activation.FileDataSource;
+
+import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.interactive.action.type.PDAction;
+import org.apache.pdfbox.preflight.Format;
+import org.apache.pdfbox.preflight.PreflightContext;
+import org.apache.pdfbox.preflight.PreflightDocument;
+import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
+import org.apache.pdfbox.preflight.action.AbstractActionManager;
+import org.apache.pdfbox.preflight.action.ActionManagerFactory;
+
+public abstract class AbstractTestAction {
+
+       /**
+        * Read a simple PDF/A to create a valid Context
+        * 
+        * @return
+        * @throws Exception
+        */
+       protected PreflightContext createContext() throws Exception {
+               DataSource ds = new 
FileDataSource("src/test/resources/pdfa-with-annotations-square.pdf");
+               PDDocument doc = PDDocument.load(ds.getInputStream());
+               PreflightDocument preflightDocument = new 
PreflightDocument(doc.getDocument(), Format.PDF_A1B);
+               PreflightContext ctx = new PreflightContext(ds);
+               ctx.setDocument(preflightDocument);
+               preflightDocument.setContext(ctx);
+               return ctx;
+       }
+       
+       /**
+        * Run the Action validation and check the result.
+        * 
+        * @param action action to check
+        * @param valid true if the Action must be valid, false if the action 
contains mistakes
+        * @throws Exception
+        */
+       protected void valid(PDAction action, boolean valid) throws Exception {
+               valid(action, valid, null);
+       }
+
+       protected void valid(COSDictionary action, boolean valid) throws 
Exception {
+               valid(action, valid, null);
+       }
+       
+       /**
+        * Run the Action validation and check the result.
+        * 
+        * @param action action to check
+        * @param valid true if the Action must be valid, false if the action 
contains mistakes
+        * @param expectedCode the expected error code (can be null)
+        * @throws Exception
+        */
+       protected void valid(PDAction action, boolean valid, String 
expectedCode) throws Exception {
+               valid(action.getCOSDictionary(), valid, expectedCode);
+       }
+       
+       protected void valid(COSDictionary action, boolean valid, String 
expectedCode) throws Exception {
+               ActionManagerFactory fact = new ActionManagerFactory();
+               PreflightContext ctx = createContext();
+               COSDictionary dict = new COSDictionary();
+               dict.setItem(COSName.A, action);
+               
+               // process the action validation
+               List<AbstractActionManager> actions = 
fact.getActionManagers(ctx, dict);
+               for (AbstractActionManager abstractActionManager : actions) {
+                       abstractActionManager.valid();
+               }
+
+               // check the result
+               if (!valid) {
+                       List<ValidationError> errors = 
ctx.getDocument().getResult().getErrorsList();
+                       assertFalse(errors.isEmpty());
+                       if (expectedCode != null || !"".equals(expectedCode)) {
+                               boolean found = false;
+                               for (ValidationError err : errors) {
+                                       if 
(err.getErrorCode().equals(expectedCode)) {
+                                               found = true;
+                                       }
+                               }
+                               assertTrue(found);
+                       }
+               } else {
+                       if (ctx.getDocument().getResult() != null) {
+                               List<ValidationError> errors = 
ctx.getDocument().getResult().getErrorsList();
+                               assertTrue(errors.isEmpty());
+                       }
+               }
+       }
+}

Propchange: 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/AbstractTestAction.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestForbiddenAction.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestForbiddenAction.java?rev=1370929&view=auto
==============================================================================
--- 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestForbiddenAction.java
 (added)
+++ 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestForbiddenAction.java
 Wed Aug  8 20:08:31 2012
@@ -0,0 +1,73 @@
+/*****************************************************************************
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * 
+ ****************************************************************************/
+
+package org.apache.pdfbox.preflight.action.pdfa1b;
+
+import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.preflight.PreflightConstants;
+import org.junit.Test;
+
+public class TestForbiddenAction extends AbstractTestAction {
+       
+       protected COSDictionary createAction(String type) {
+               COSDictionary action = new COSDictionary();
+               action.setItem(COSName.TYPE, COSName.getPDFName("Action"));
+               action.setItem(COSName.S, COSName.getPDFName(type));
+               return action;
+       }
+       
+       @Test
+       public void testLaunch() throws Exception {
+               COSDictionary action = createAction("Launch");
+               valid(action, false, 
PreflightConstants.ERROR_ACTION_FORBIDDEN_ACTIONS_EXPLICITLY_FORBIDDEN);
+       }
+
+       @Test
+       public void testSound() throws Exception {
+               COSDictionary action = createAction("Sound");
+               valid(action, false, 
PreflightConstants.ERROR_ACTION_FORBIDDEN_ACTIONS_EXPLICITLY_FORBIDDEN);
+       }
+
+       @Test
+       public void testMovie() throws Exception {
+               COSDictionary action = createAction("Movie");
+               valid(action, false, 
PreflightConstants.ERROR_ACTION_FORBIDDEN_ACTIONS_EXPLICITLY_FORBIDDEN);
+       }
+
+       @Test
+       public void testImportData() throws Exception {
+               COSDictionary action = createAction("ImportData");
+               valid(action, false, 
PreflightConstants.ERROR_ACTION_FORBIDDEN_ACTIONS_EXPLICITLY_FORBIDDEN);
+       }
+
+       @Test
+       public void testResetForm() throws Exception {
+               COSDictionary action = createAction("ResetForm");
+               valid(action, false, 
PreflightConstants.ERROR_ACTION_FORBIDDEN_ACTIONS_EXPLICITLY_FORBIDDEN);
+       }
+
+       @Test
+       public void testJS() throws Exception {
+               COSDictionary action = createAction("JavaScript");
+               valid(action, false, 
PreflightConstants.ERROR_ACTION_FORBIDDEN_ACTIONS_EXPLICITLY_FORBIDDEN);
+       }
+}

Propchange: 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestForbiddenAction.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestGotoAction.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestGotoAction.java?rev=1370929&view=auto
==============================================================================
--- 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestGotoAction.java
 (added)
+++ 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestGotoAction.java
 Wed Aug  8 20:08:31 2012
@@ -0,0 +1,63 @@
+/*****************************************************************************
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * 
+ ****************************************************************************/
+
+package org.apache.pdfbox.preflight.action.pdfa1b;
+
+import org.apache.pdfbox.cos.COSBase;
+import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.pdmodel.interactive.action.type.PDActionGoTo;
+import 
org.apache.pdfbox.pdmodel.interactive.documentnavigation.destination.PDDestination;
+import org.apache.pdfbox.preflight.PreflightConstants;
+import org.junit.Test;
+
+public class TestGotoAction extends AbstractTestAction {
+
+       @Test
+       public void testGoto_OK() throws Exception {
+               PDActionGoTo gotoAction = new PDActionGoTo();
+               gotoAction.setDestination(new PDDestination() {
+                       public COSBase getCOSObject() {
+                               return COSName.getPDFName("ADest");
+                       }
+               });
+
+               valid(gotoAction, true);
+       }
+
+       @Test
+       public void testGoto_KO_invalidContent() throws Exception {
+               PDActionGoTo gotoAction = new PDActionGoTo();
+               gotoAction.setDestination(new PDDestination() {
+                       public COSBase getCOSObject() {
+                               return new COSDictionary();
+                       }
+               });
+
+               valid(gotoAction, false, 
PreflightConstants.ERROR_ACTION_INVALID_TYPE);
+       }
+       
+       @Test
+       public void testGoto_KO_missingD() throws Exception {
+               PDActionGoTo gotoAction = new PDActionGoTo();
+               valid(gotoAction, false, 
PreflightConstants.ERROR_ACTION_MISING_KEY);
+       }
+}

Propchange: 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestGotoAction.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestGotoRemoteAction.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestGotoRemoteAction.java?rev=1370929&view=auto
==============================================================================
--- 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestGotoRemoteAction.java
 (added)
+++ 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestGotoRemoteAction.java
 Wed Aug  8 20:08:31 2012
@@ -0,0 +1,98 @@
+/*****************************************************************************
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * 
+ ****************************************************************************/
+
+package org.apache.pdfbox.preflight.action.pdfa1b;
+
+import org.apache.pdfbox.cos.COSBase;
+import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.pdmodel.common.filespecification.PDFileSpecification;
+import org.apache.pdfbox.pdmodel.interactive.action.type.PDActionGoTo;
+import org.apache.pdfbox.pdmodel.interactive.action.type.PDActionRemoteGoTo;
+import 
org.apache.pdfbox.pdmodel.interactive.documentnavigation.destination.PDDestination;
+import org.apache.pdfbox.preflight.PreflightConstants;
+import org.junit.Test;
+
+public class TestGotoRemoteAction extends AbstractTestAction {
+
+       @Test
+       public void testGoto_OK() throws Exception {
+               PDActionRemoteGoTo gotoAction = new PDActionRemoteGoTo();
+               gotoAction.setD(COSName.getPDFName("ADest"));
+               gotoAction.setFile(new PDFileSpecification() {
+                       public COSBase getCOSObject() {
+                               return COSName.getPDFName("ADest");
+                       }
+                       @Override
+                       public void setFile(String file) {
+                       }
+                       @Override
+                       public String getFile() {
+                               return "pouey";
+                       }
+               });
+               valid(gotoAction, true);
+       }
+
+       @Test
+       public void testGoto_KO_InvalidContent() throws Exception {
+               PDActionRemoteGoTo gotoAction = new PDActionRemoteGoTo();
+               gotoAction.setD(new COSDictionary());
+               gotoAction.setFile(new PDFileSpecification() {
+                       public COSBase getCOSObject() {
+                               return COSName.getPDFName("ADest");
+                       }
+                       @Override
+                       public void setFile(String file) {
+                       }
+                       @Override
+                       public String getFile() {
+                               return "pouey";
+                       }
+               });
+               valid(gotoAction, false, 
PreflightConstants.ERROR_ACTION_INVALID_TYPE);
+       }
+
+       @Test
+       public void testGoto_KO_MissingD() throws Exception {
+               PDActionRemoteGoTo gotoAction = new PDActionRemoteGoTo();
+               gotoAction.setFile(new PDFileSpecification() {
+                       public COSBase getCOSObject() {
+                               return COSName.getPDFName("ADest");
+                       }
+                       @Override
+                       public void setFile(String file) {
+                       }
+                       @Override
+                       public String getFile() {
+                               return "pouey";
+                       }
+               });
+               valid(gotoAction, false, 
PreflightConstants.ERROR_ACTION_MISING_KEY);
+       }
+
+       @Test
+       public void testGoto_KO_MissingF() throws Exception {
+               PDActionRemoteGoTo gotoAction = new PDActionRemoteGoTo();
+               gotoAction.setD(COSName.getPDFName("ADest"));
+               valid(gotoAction, false, 
PreflightConstants.ERROR_ACTION_MISING_KEY);
+       }
+}

Propchange: 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestGotoRemoteAction.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestHideAction.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestHideAction.java?rev=1370929&view=auto
==============================================================================
--- 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestHideAction.java
 (added)
+++ 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestHideAction.java
 Wed Aug  8 20:08:31 2012
@@ -0,0 +1,66 @@
+/*****************************************************************************
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * 
+ ****************************************************************************/
+
+package org.apache.pdfbox.preflight.action.pdfa1b;
+
+import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.preflight.PreflightConstants;
+import org.junit.Test;
+
+public class TestHideAction extends AbstractTestAction {
+
+       protected COSDictionary createHideAction() {
+               COSDictionary hideAction = new COSDictionary();
+               hideAction.setItem(COSName.TYPE, COSName.getPDFName("Action"));
+               hideAction.setItem(COSName.S, COSName.getPDFName("Hide"));
+               hideAction.setBoolean(COSName.H, false);
+               hideAction.setString(COSName.T, "avalue");
+               return hideAction;
+       }
+       
+       @Test
+       public void testHideAction() throws Exception {
+               COSDictionary action = createHideAction();
+               valid(action, true);
+       }
+       
+       @Test
+       public void testHideAction_InvalideH() throws Exception {
+               COSDictionary action = createHideAction();
+               action.setBoolean(COSName.H, true);
+               valid(action, false, 
PreflightConstants.ERROR_ACTION_HIDE_H_INVALID);
+       }
+       
+       @Test
+       public void testHideAction_InvalideT() throws Exception {
+               COSDictionary action = createHideAction();
+               action.setBoolean(COSName.T, true);
+               valid(action, false, 
PreflightConstants.ERROR_ACTION_INVALID_TYPE);
+       }
+       
+       @Test
+       public void testHideAction_MissingT() throws Exception {
+               COSDictionary action = createHideAction();
+               action.removeItem(COSName.T);
+               valid(action, false, 
PreflightConstants.ERROR_ACTION_MISING_KEY);
+       }
+}

Propchange: 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestHideAction.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestNamedAction.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestNamedAction.java?rev=1370929&view=auto
==============================================================================
--- 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestNamedAction.java
 (added)
+++ 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestNamedAction.java
 Wed Aug  8 20:08:31 2012
@@ -0,0 +1,78 @@
+/*****************************************************************************
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * 
+ ****************************************************************************/
+
+package org.apache.pdfbox.preflight.action.pdfa1b;
+
+import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.preflight.PreflightConstants;
+import org.junit.Test;
+
+public class TestNamedAction extends AbstractTestAction {
+       protected COSDictionary createNamedAction() {
+               COSDictionary namedAction = new COSDictionary();
+               namedAction.setItem(COSName.TYPE, COSName.getPDFName("Action"));
+               namedAction.setItem(COSName.S, COSName.getPDFName("Named"));
+               
+               return namedAction;
+       }
+       
+       @Test
+       public void testFirstPage() throws Exception {
+               COSDictionary namedAction = createNamedAction();
+               namedAction.setItem(COSName.N, 
COSName.getPDFName(PreflightConstants.ACTION_DICTIONARY_VALUE_ATYPE_NAMED_FIRST));
+               valid(namedAction, true);
+       }
+
+       @Test
+       public void testLastPage() throws Exception {
+               COSDictionary namedAction = createNamedAction();
+               namedAction.setItem(COSName.N, 
COSName.getPDFName(PreflightConstants.ACTION_DICTIONARY_VALUE_ATYPE_NAMED_LAST));
+               valid(namedAction, true);
+       }
+
+       @Test
+       public void testNextPage() throws Exception {
+               COSDictionary namedAction = createNamedAction();
+               namedAction.setItem(COSName.N, 
COSName.getPDFName(PreflightConstants.ACTION_DICTIONARY_VALUE_ATYPE_NAMED_NEXT));
+               valid(namedAction, true);
+       }
+
+       @Test
+       public void testPrevPage() throws Exception {
+               COSDictionary namedAction = createNamedAction();
+               namedAction.setItem(COSName.N, 
COSName.getPDFName(PreflightConstants.ACTION_DICTIONARY_VALUE_ATYPE_NAMED_PREV));
+               valid(namedAction, true);
+       }
+
+       @Test
+       public void testMissingN() throws Exception {
+               COSDictionary namedAction = createNamedAction();
+               valid(namedAction, false, 
PreflightConstants.ERROR_ACTION_MISING_KEY);
+       }
+       
+       @Test
+       public void testForbiddenN() throws Exception {
+               COSDictionary namedAction = createNamedAction();
+               namedAction.setItem(COSName.N, COSName.getPDFName("unknown"));
+               valid(namedAction, false, 
PreflightConstants.ERROR_ACTION_FORBIDDEN_ACTIONS_NAMED);
+       }
+}

Propchange: 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestNamedAction.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestSubmitAction.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestSubmitAction.java?rev=1370929&view=auto
==============================================================================
--- 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestSubmitAction.java
 (added)
+++ 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestSubmitAction.java
 Wed Aug  8 20:08:31 2012
@@ -0,0 +1,65 @@
+/*****************************************************************************
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * 
+ ****************************************************************************/
+
+package org.apache.pdfbox.preflight.action.pdfa1b;
+
+import org.apache.pdfbox.cos.COSBase;
+import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.pdmodel.common.filespecification.PDFileSpecification;
+import org.apache.pdfbox.preflight.PreflightConstants;
+import org.junit.Test;
+
+public class TestSubmitAction extends AbstractTestAction {
+       
+       protected COSDictionary createSubmitAction() {
+               COSDictionary action = new COSDictionary();
+               action.setItem(COSName.TYPE, COSName.getPDFName("Action"));
+               action.setItem(COSName.S, COSName.getPDFName("SubmitForm"));
+               action.setItem(COSName.F, new PDFileSpecification() {
+                       public COSBase getCOSObject() {
+                               return COSName.getPDFName("value");
+                       }
+                       @Override
+                       public void setFile(String file) {
+                       }
+                       @Override
+                       public String getFile() {
+                               return null;
+                       }
+               });
+               return action;
+       }
+       
+       @Test
+       public void test() throws Exception {
+               COSDictionary action = createSubmitAction();
+               valid(action, true);
+       }
+       
+       @Test
+       public void testMissngF() throws Exception {
+               COSDictionary action = createSubmitAction();
+               action.removeItem(COSName.F);
+               valid(action, false, 
PreflightConstants.ERROR_ACTION_MISING_KEY);
+       }
+
+}

Propchange: 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestSubmitAction.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestThreadAction.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestThreadAction.java?rev=1370929&view=auto
==============================================================================
--- 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestThreadAction.java
 (added)
+++ 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestThreadAction.java
 Wed Aug  8 20:08:31 2012
@@ -0,0 +1,58 @@
+/*****************************************************************************
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * 
+ ****************************************************************************/
+
+package org.apache.pdfbox.preflight.action.pdfa1b;
+
+import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.preflight.PreflightConstants;
+import org.junit.Test;
+
+public class TestThreadAction extends AbstractTestAction {
+       
+       protected COSDictionary createSubmitAction() {
+               COSDictionary action = new COSDictionary();
+               action.setItem(COSName.TYPE, COSName.getPDFName("Action"));
+               action.setItem(COSName.S, COSName.getPDFName("Thread"));
+               action.setInt(COSName.D, 1);
+               return action;
+       }
+       
+       @Test
+       public void test() throws Exception {
+               COSDictionary action = createSubmitAction();
+               valid(action, true);
+       }
+       
+       @Test
+       public void testMissingD() throws Exception {
+               COSDictionary action = createSubmitAction();
+               action.removeItem(COSName.D);
+               valid(action, false, 
PreflightConstants.ERROR_ACTION_MISING_KEY);
+       }
+       
+       @Test
+       public void testInvalidD() throws Exception {
+               COSDictionary action = createSubmitAction();
+               action.setBoolean(COSName.D, false);
+               valid(action, false, 
PreflightConstants.ERROR_ACTION_INVALID_TYPE);
+       }
+}

Propchange: 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestThreadAction.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestUriAction.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestUriAction.java?rev=1370929&view=auto
==============================================================================
--- 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestUriAction.java
 (added)
+++ 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestUriAction.java
 Wed Aug  8 20:08:31 2012
@@ -0,0 +1,73 @@
+/*****************************************************************************
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * 
+ ****************************************************************************/
+
+package org.apache.pdfbox.preflight.action.pdfa1b;
+
+import java.util.Arrays;
+
+import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.pdmodel.interactive.action.type.PDAction;
+import org.apache.pdfbox.pdmodel.interactive.action.type.PDActionJavaScript;
+import org.apache.pdfbox.pdmodel.interactive.action.type.PDActionURI;
+import org.apache.pdfbox.preflight.PreflightConstants;
+import org.junit.Test;
+
+public class TestUriAction extends AbstractTestAction {
+       
+       protected PDActionURI createAction() {
+               PDActionURI action = new PDActionURI();
+               action.setURI("http://www.apache.org";);
+               return action;
+       }
+       
+       @Test
+       public void test() throws Exception {
+               PDAction action = createAction();
+               valid(action, true);
+       }
+       
+       @Test
+       public void testMissingURI() throws Exception {
+               PDActionURI action = new PDActionURI();
+               valid(action, false, 
PreflightConstants.ERROR_ACTION_MISING_KEY);
+       }
+       
+       @Test
+       public void testInvalidURI() throws Exception {
+               PDActionURI action = new PDActionURI();
+               action.getCOSDictionary().setBoolean(COSName.URI, true);
+               valid(action, false, 
PreflightConstants.ERROR_ACTION_INVALID_TYPE);
+       }
+       
+       @Test
+       public void testNextValid() throws Exception {
+               PDActionURI action = createAction();
+               action.setNext(Arrays.asList(createAction()));
+               valid(action, true);
+       }
+
+       @Test
+       public void testNextInvalid() throws Exception {
+               PDActionURI action = createAction();
+               action.setNext(Arrays.asList(new PDActionJavaScript()));
+               valid(action, false, 
PreflightConstants.ERROR_ACTION_FORBIDDEN_ACTIONS_EXPLICITLY_FORBIDDEN);
+       }
+}

Propchange: 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/action/pdfa1b/TestUriAction.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
pdfbox/trunk/preflight/src/test/resources/pdfa-with-annotations-square.pdf
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/test/resources/pdfa-with-annotations-square.pdf?rev=1370929&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
pdfbox/trunk/preflight/src/test/resources/pdfa-with-annotations-square.pdf
------------------------------------------------------------------------------
    svn:executable = *

Propchange: 
pdfbox/trunk/preflight/src/test/resources/pdfa-with-annotations-square.pdf
------------------------------------------------------------------------------
    svn:mime-type = application/pdf


Reply via email to