You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by gb...@apache.org on 2013/03/06 17:46:37 UTC

svn commit: r1453416 [16/16] - in /pdfbox/trunk/preflight: ./ src/main/java/org/apache/pdfbox/preflight/ src/main/java/org/apache/pdfbox/preflight/action/ src/main/java/org/apache/pdfbox/preflight/annotation/ src/main/java/org/apache/pdfbox/preflight/a...

Modified: pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/metadata/TestSynchronizedMetadataValidation.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/metadata/TestSynchronizedMetadataValidation.java?rev=1453416&r1=1453415&r2=1453416&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/metadata/TestSynchronizedMetadataValidation.java (original)
+++ pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/metadata/TestSynchronizedMetadataValidation.java Wed Mar  6 16:46:35 2013
@@ -41,535 +41,580 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
+
 /**
  * Test Class of SynchronizedMetaDataValidation (for 6-7-3 Isartor Tests)
  * 
  * @author Germain Costenobel
  * 
  */
-public class TestSynchronizedMetadataValidation {
+public class TestSynchronizedMetadataValidation
+{
+
+    protected PDDocument doc;
+    protected PDDocumentInformation dico;
+    protected XMPMetadata metadata;
+    protected String title, author, subject, keywords, creator, producer;
+    protected Calendar creationDate, modifyDate;
+    protected static SynchronizedMetaDataValidation sync;
+    protected List<ValidationError> ve;
+
+    @BeforeClass
+    public static void initSynchronizedMetadataValidation()
+    {
+        sync = new SynchronizedMetaDataValidation();
+    }
+
+    @Before
+    public void initNewDocumentInformation() throws Exception
+    {
+
+        try
+        {
+            doc = new PDDocument();
+            dico = doc.getDocumentInformation();
+            metadata = XMPMetadata.createXMPMetadata();
+        }
+        catch (IOException e)
+        {
+            throw new Exception("Failed to create temporary test PDF/XMP Document");
+        }
+
+    }
+
+    /**
+     * Check detection of a null Document
+     * 
+     * @throws ValidationException
+     */
+    @Test(expected = ValidationException.class)
+    public void TestNullDocument() throws ValidationException
+    {
+        sync.validateMetadataSynchronization(null, metadata);
+    }
+
+    /**
+     * Check detection of null metadata
+     * 
+     * @throws ValidationException
+     */
+    @Test(expected = ValidationException.class)
+    public void TestNullMetaData() throws ValidationException
+    {
+        sync.validateMetadataSynchronization(doc, null);
+    }
 
-  protected PDDocument doc;
-  protected PDDocumentInformation dico;
-  protected XMPMetadata metadata;
-  protected String title, author, subject, keywords, creator, producer;
-  protected Calendar creationDate, modifyDate;
-  protected static SynchronizedMetaDataValidation sync;
-  protected List<ValidationError> ve;
-
-  @BeforeClass
-  public static void initSynchronizedMetadataValidation() {
-    sync = new SynchronizedMetaDataValidation();
-  }
-
-  @Before
-  public void initNewDocumentInformation() throws Exception {
-
-    try {
-      doc = new PDDocument();
-      dico = doc.getDocumentInformation();
-      metadata = XMPMetadata.createXMPMetadata();
-    } catch (IOException e) {
-      throw new Exception("Failed to create temporary test PDF/XMP Document");
-    }
-
-  }
-
-  /**
-   * Check detection of a null Document
-   * 
-   * @throws ValidationException
-   */
-  @Test(expected = ValidationException.class)
-  public void TestNullDocument() throws ValidationException {
-    sync.validateMetadataSynchronization(null, metadata);
-  }
-
-  /**
-   * Check detection of null metadata
-   * 
-   * @throws ValidationException
-   */
-  @Test(expected = ValidationException.class)
-  public void TestNullMetaData() throws ValidationException {
-    sync.validateMetadataSynchronization(doc, null);
-  }
-
-  /**
-   * Check the detection of a PDF document without any information
-   * 
-   * @throws Exception
-   */
-  @Test
-  public void TestDocumentWithoutInformation() throws Exception {
-    try {
-      ve = sync.validateMetadataSynchronization(doc, metadata);
-      // Test without any information
-      Assert.assertEquals(0, ve.size());
-    } catch (ValidationException e) {
-      throw new Exception(e.getMessage());
-    }
-  }
-
-  /**
-   * Check the detection of a completely empty XMP document (without any
-   * schemas)
-   * 
-   * @throws Exception
-   */
-  @Test
-  public void testEmptyXMP() throws Exception {
-    title = "TITLE";
-    author = "AUTHOR(S)";
-    subject = "SUBJECTS";
-    keywords = "KEYWORD(S)";
-    creator = "CREATOR";
-    producer = "PRODUCER";
-    creationDate = Calendar.getInstance();
-    modifyDate = Calendar.getInstance();
-
-    // Writing info in Document Information dictionary
-    // TITLE
-    dico.setTitle(title);
-    // AUTHOR
-    dico.setAuthor(author);
-    // SUBJECT
-    dico.setSubject(subject);
-    // KEYWORDS
-    dico.setKeywords(keywords);
-    // CREATOR
-    dico.setCreator(creator);
-    // PRODUCER
-    dico.setProducer(producer);
-    // CREATION DATE
-    dico.setCreationDate(creationDate);
-    // MODIFY DATE
-    dico.setModificationDate(modifyDate);
-
-    try {
-      ve = sync.validateMetadataSynchronization(doc, metadata);
-      // Test Detection of an Empty XMP (without any schemas)
-      for (ValidationError valid : ve) {
-        Assert.assertEquals(PreflightConstants.ERROR_METADATA_MISMATCH, valid
-            .getErrorCode());
-      }
-    } catch (ValidationException e) {
-      throw new Exception(e.getMessage());
-    }
-  }
-
-  /**
-   * Check the detection of a XMP with empty common schemas
-   * 
-   * @throws Exception
-   */
-  @Test
-  public void testEmptyXMPSchemas() throws Exception {
-    title = "TITLE";
-    author = "AUTHOR(S)";
-    subject = "SUBJECTS";
-    keywords = "KEYWORD(S)";
-    creator = "CREATOR";
-    producer = "PRODUCER";
-    creationDate = Calendar.getInstance();
-    modifyDate = Calendar.getInstance();
-
-    // building temporary XMP metadata (but empty)
-    metadata.createAndAddDublinCoreSchema();
-    metadata.createAndAddAdobePDFSchema();
-    metadata.createAndAddXMPBasicSchema();
-
-    // Writing info in Document Information dictionary
-    // TITLE
-    dico.setTitle(title);
-    // AUTHOR
-    dico.setAuthor(author);
-    // SUBJECT
-    dico.setSubject(subject);
-    // KEYWORDS
-    dico.setKeywords(keywords);
-    // CREATOR
-    dico.setCreator(creator);
-    // PRODUCER
-    dico.setProducer(producer);
-    // CREATION DATE
-    dico.setCreationDate(creationDate);
-    // MODIFY DATE
-    dico.setModificationDate(modifyDate);
-
-    try {
-      ve = sync.validateMetadataSynchronization(doc, metadata);
-      // Test Detection of absent XMP values
-      Assert.assertEquals(8, ve.size());
-    } catch (ValidationException e) {
-      throw new Exception(e.getMessage());
-    }
-
-  }
-
-  /**
-   * Check detection of a null value in array (for Subject and author
-   * properties)
-   * 
-   * @throws Exception
-   */
-  @Test(expected = IllegalArgumentException.class)
-  public void testNullArrayValue() throws Exception {
-    // building temporary XMP metadata
-
-    DublinCoreSchema dc = metadata.createAndAddDublinCoreSchema();
-
-    // AUTHOR
-    dico.setAuthor("dicoAuthor");
-    dc.addCreator(null);
-
-    // SUBJECT
-    dico.setSubject("dicoSubj");
-    dc.addSubject(null);
-
-    // Launching synchronization test
-    try {
-      ve = sync.validateMetadataSynchronization(doc, metadata);
-      // Test unsychronized value
-      Assert.assertEquals(2, ve.size());
-
-    } catch (ValidationException e) {
-      throw new Exception(e.getMessage());
-    }
-  }
-
-  /**
-   * in XMP, Subject and Author must be embedded in a single entry text array
-   * This function check the detection of multiple entries for these properties
-   * 
-   * @throws Exception
-   */
-  @Test
-  public void testBadSizeOfArrays() throws Exception {
-    // building temporary XMP metadata
-
-    DublinCoreSchema dc = metadata.createAndAddDublinCoreSchema();
-    AdobePDFSchema pdf = metadata.createAndAddAdobePDFSchema();
-    XMPBasicSchema xmp = metadata.createAndAddXMPBasicSchema();
-
-    // Writing info in XMP and Document Information dictionary
-    // TITLE
-    dico.setTitle("dicoTitle");
-    dc.setTitle("x-default", "XMPTitle");
-    // AUTHOR
-    dico.setAuthor("dicoAuthor");
-    dc.addCreator("XMPAuthor");
-    dc.addCreator("2ndCreator");
-    // SUBJECT
-    dico.setSubject("dicoSubj");
-    dc.addSubject("XMPSubj");
-    dc.addSubject("2ndSubj");
-    // KEYWORDS
-    dico.setKeywords("DicoKeywords");
-    pdf.setKeywords("XMPkeywords");
-    // CREATOR
-    dico.setCreator("DicoCreator");
-    xmp.setCreatorTool("XMPCreator");
-    // PRODUCER
-    dico.setProducer("DicoProducer");
-    pdf.setProducer("XMPProducer");
-    // CREATION DATE
-    dico.setCreationDate(Calendar.getInstance());
-    GregorianCalendar XMPCreate = new GregorianCalendar(2008, 11, 05);
-    xmp.setCreateDate(XMPCreate);
-    // MODIFY DATE
-    dico.setModificationDate(Calendar.getInstance());
-    GregorianCalendar XMPModify = new GregorianCalendar(2009, 10, 15);
-    xmp.setModifyDate(XMPModify);
-
-    // Launching synchronization test
-    try {
-      ve = sync.validateMetadataSynchronization(doc, metadata);
-      // Test unsychronized value
-      Assert.assertEquals(8, ve.size());
-    } catch (ValidationException e) {
-      throw new Exception(e.getMessage());
-    }
-
-  }
-
-  /**
-   * Check the detection of unsynchronized information between Document
-   * Information dictionary and XMP
-   * 
-   * @throws Exception
-   */
-  @Test
-  public void testAllInfoUnsynchronized() throws Exception {
-    // building temporary XMP metadata
-
-    DublinCoreSchema dc = metadata.createAndAddDublinCoreSchema();
-    AdobePDFSchema pdf = metadata.createAndAddAdobePDFSchema();
-    XMPBasicSchema xmp = metadata.createAndAddXMPBasicSchema();
-
-    // Writing info in XMP and Document Information dictionary
-    // TITLE
-    dico.setTitle("dicoTitle");
-    dc.setTitle("x-default", "XMPTitle");
-    // AUTHOR
-    dico.setAuthor("dicoAuthor");
-    dc.addCreator("XMPAuthor");
-    // SUBJECT
-    dico.setSubject("dicoSubj");
-    dc.addSubject("XMPSubj");
-    // KEYWORDS
-    dico.setKeywords("DicoKeywords");
-    pdf.setKeywords("XMPkeywords");
-    // CREATOR
-    dico.setCreator("DicoCreator");
-    xmp.setCreatorTool("XMPCreator");
-    // PRODUCER
-    dico.setProducer("DicoProducer");
-    pdf.setProducer("XMPProducer");
-    // CREATION DATE
-    dico.setCreationDate(Calendar.getInstance());
-    GregorianCalendar XMPCreate = new GregorianCalendar(2008, 11, 05);
-    xmp.setCreateDate(XMPCreate);
-    // MODIFY DATE
-    dico.setModificationDate(Calendar.getInstance());
-    GregorianCalendar XMPModify = new GregorianCalendar(2009, 10, 15);
-    xmp.setModifyDate(XMPModify);
-
-    // Launching synchronization test
-    try {
-      ve = sync.validateMetadataSynchronization(doc, metadata);
-      // Test unsychronized value
-      Assert.assertEquals(8, ve.size());
-    } catch (ValidationException e) {
-      throw new Exception(e.getMessage());
-    }
-
-  }
-
-  /**
-   * Check reaction when metadata are well-formed
-   * 
-   * @throws Exception
-   */
-  @Test
-  public void testAllInfoSynhcronized() throws Exception {
-    title = "TITLE";
-    author = "AUTHOR(S)";
-    subject = "SUBJECTS";
-    keywords = "KEYWORD(S)";
-    creator = "CREATOR";
-    producer = "PRODUCER";
-    creationDate = Calendar.getInstance();
-    modifyDate = Calendar.getInstance();
-
-    // building temporary XMP metadata
-    DublinCoreSchema dc = metadata.createAndAddDublinCoreSchema();
-    XMPBasicSchema xmp = metadata.createAndAddXMPBasicSchema();
-    AdobePDFSchema pdf = metadata.createAndAddAdobePDFSchema();
-    // Writing info in XMP and Document Information dictionary
-    // TITLE
-    dico.setTitle(title);
-    dc.setTitle("x-default", title);
-    // AUTHOR
-    dico.setAuthor(author);
-    dc.addCreator(author);
-    // SUBJECT
-    dico.setSubject(subject);
-    dc.addDescription("x-default", subject);
-    // KEYWORDS
-    dico.setKeywords(keywords);
-    pdf.setKeywords(keywords);
-    // CREATOR
-    dico.setCreator(creator);
-    xmp.setCreatorTool(creator);
-    // PRODUCER
-    dico.setProducer(producer);
-    pdf.setProducer(producer);
-    // CREATION DATE
-    dico.setCreationDate(creationDate);
-    xmp.setCreateDate(creationDate);
-    // MODIFY DATE
-    dico.setModificationDate(modifyDate);
-    xmp.setModifyDate(modifyDate);
-
-    // Launching synchronization test
-    try {
-      ve = sync.validateMetadataSynchronization(doc, metadata);
-      // Checking all is synchronized
-      Assert.assertEquals(0, ve.size());
-    } catch (ValidationException e) {
-      throw new Exception(e.getMessage());
-    }
-
-  }
-
-  /**
-   * Check if FormatAccessException Generator is ok
-   * 
-   * @throws Exception
-   */
-  @Test
-  public void checkformatAccessException() throws Exception {
-    Throwable cause = new Throwable();
-    Assert.assertSame(cause, sync.formatAccessException("test", "test", cause)
-        .getCause());
-  }
-
-  /**
-   * Check if SchemaAccessException Generator is ok
-   * 
-   * @throws Exception
-   */
-  @Test
-  public void checkSchemaAccessException() throws Exception {
-    Throwable cause = new Throwable();
-    Assert.assertSame(cause, sync.SchemaAccessException("test", cause)
-        .getCause());
-  }
-
-  /**
-   * Check reaction when metadata are well-formed
-   * 
-   * @throws Exception
-   */
-  @Test
-  public void testBadPrefixSchemas() throws Exception {
-    title = "TITLE";
-    author = "AUTHOR(S)";
-    subject = "SUBJECTS";
-    keywords = "KEYWORD(S)";
-    creator = "CREATOR";
-    producer = "PRODUCER";
-    creationDate = Calendar.getInstance();
-    modifyDate = Calendar.getInstance();
-
-    // building temporary XMP metadata
-    DublinCoreSchema dc = new DublinCoreSchema(metadata, "dctest");
-    metadata.addSchema(dc);
-    XMPBasicSchema xmp = new XMPBasicSchema(metadata, "xmptest");
-    metadata.addSchema(xmp);
-    AdobePDFSchema pdf = new AdobePDFSchema(metadata, "pdftest");
-    metadata.addSchema(pdf);
-
-    // Writing info in XMP and Document Information dictionary
-    // TITLE
-    dico.setTitle(title);
-    dc.setTitle("x-default", title);
-    // AUTHOR
-    dico.setAuthor(author);
-    dc.addCreator(author);
-    // SUBJECT
-    dico.setSubject(subject);
-    dc.addDescription("x-default", subject);
-    // KEYWORDS
-    dico.setKeywords(keywords);
-    pdf.setKeywords(keywords);
-    // CREATOR
-    dico.setCreator(creator);
-    xmp.setCreatorTool(creator);
-    // PRODUCER
-    dico.setProducer(producer);
-    pdf.setProducer(producer);
-    // CREATION DATE
-    dico.setCreationDate(creationDate);
-    xmp.setCreateDate(creationDate);
-    // MODIFY DATE
-    dico.setModificationDate(modifyDate);
-    xmp.setModifyDate(modifyDate);
-
-    // Launching synchronization test
-    try {
-      ve = sync.validateMetadataSynchronization(doc, metadata);
-      for (ValidationError valid : ve) {
-        Assert.assertEquals(PreflightConstants.ERROR_METADATA_WRONG_NS_PREFIX,
-            valid.getErrorCode());
-      }
-    } catch (ValidationException e) {
-      throw new Exception(e.getMessage());
-    }
-
-  }
-
-  /**
-   * Check reaction when metadata are well-formed
-   * 
-   * @throws Exception
-   */
-  @Test
-  public void testdoublePrefixSchemas() throws Exception {
-    title = "TITLE";
-    author = "AUTHOR(S)";
-    subject = "SUBJECTS";
-    keywords = "KEYWORD(S)";
-    creator = "CREATOR";
-    producer = "PRODUCER";
-    creationDate = Calendar.getInstance();
-    modifyDate = Calendar.getInstance();
-
-    // building temporary XMP metadata
-    DublinCoreSchema dc = metadata.createAndAddDublinCoreSchema();
-    DublinCoreSchema dc2 = new DublinCoreSchema(metadata, "dctest");
-    metadata.addSchema(dc2);
-    XMPBasicSchema xmp = metadata.createAndAddXMPBasicSchema();
-    XMPBasicSchema xmp2 = new XMPBasicSchema(metadata, "xmptest");
-    metadata.addSchema(xmp2);
-    AdobePDFSchema pdf = metadata.createAndAddAdobePDFSchema();
-    AdobePDFSchema pdf2 = new AdobePDFSchema(metadata, "pdftest");
-    metadata.addSchema(pdf2);
-
-    // write some temp info in 'false' schemas
-    dc2.setCoverage("tmpcover");
-    xmp2.setCreatorTool("tmpcreator");
-    pdf2.setKeywords("tmpkeys");
-
-    // Writing info in XMP and Document Information dictionary
-    // TITLE
-    dico.setTitle(title);
-    dc.setTitle("x-default", title);
-    // AUTHOR
-    dico.setAuthor(author);
-    dc.addCreator(author);
-    // SUBJECT
-    dico.setSubject(subject);
-    dc.addDescription("x-default", subject);
-    // KEYWORDS
-    dico.setKeywords(keywords);
-    pdf.setKeywords(keywords);
-    // CREATOR
-    dico.setCreator(creator);
-    xmp.setCreatorTool(creator);
-    // PRODUCER
-    dico.setProducer(producer);
-    pdf.setProducer(producer);
-    // CREATION DATE
-    dico.setCreationDate(creationDate);
-    xmp.setCreateDate(creationDate);
-    // MODIFY DATE
-    dico.setModificationDate(modifyDate);
-    xmp.setModifyDate(modifyDate);
-
-    // Launching synchronization test
-    try {
-      ve = sync.validateMetadataSynchronization(doc, metadata);
-      Assert.assertTrue(ve.isEmpty());
-    } catch (ValidationException e) {
-      throw new Exception(e.getMessage());
-    }
-
-  }
-
-  @After
-  public void checkErrors() throws Exception {
-    try {
-      doc.close();
-    } catch (IOException e) {
-      throw new Exception("Error while closing PDF Document");
-    }
-    /*
-     * Iterator<ValidationError> it=ve.iterator(); while(it.hasNext()){
-     * ValidationError tmp=it.next(); System.out.println("Error:"+
-     * tmp.getDetails()+"\n code: "+tmp.getErrorCode()); }
+    /**
+     * Check the detection of a PDF document without any information
+     * 
+     * @throws Exception
      */
-  }
+    @Test
+    public void TestDocumentWithoutInformation() throws Exception
+    {
+        try
+        {
+            ve = sync.validateMetadataSynchronization(doc, metadata);
+            // Test without any information
+            Assert.assertEquals(0, ve.size());
+        }
+        catch (ValidationException e)
+        {
+            throw new Exception(e.getMessage());
+        }
+    }
+
+    /**
+     * Check the detection of a completely empty XMP document (without any schemas)
+     * 
+     * @throws Exception
+     */
+    @Test
+    public void testEmptyXMP() throws Exception
+    {
+        title = "TITLE";
+        author = "AUTHOR(S)";
+        subject = "SUBJECTS";
+        keywords = "KEYWORD(S)";
+        creator = "CREATOR";
+        producer = "PRODUCER";
+        creationDate = Calendar.getInstance();
+        modifyDate = Calendar.getInstance();
+
+        // Writing info in Document Information dictionary
+        // TITLE
+        dico.setTitle(title);
+        // AUTHOR
+        dico.setAuthor(author);
+        // SUBJECT
+        dico.setSubject(subject);
+        // KEYWORDS
+        dico.setKeywords(keywords);
+        // CREATOR
+        dico.setCreator(creator);
+        // PRODUCER
+        dico.setProducer(producer);
+        // CREATION DATE
+        dico.setCreationDate(creationDate);
+        // MODIFY DATE
+        dico.setModificationDate(modifyDate);
+
+        try
+        {
+            ve = sync.validateMetadataSynchronization(doc, metadata);
+            // Test Detection of an Empty XMP (without any schemas)
+            for (ValidationError valid : ve)
+            {
+                Assert.assertEquals(PreflightConstants.ERROR_METADATA_MISMATCH, valid.getErrorCode());
+            }
+        }
+        catch (ValidationException e)
+        {
+            throw new Exception(e.getMessage());
+        }
+    }
+
+    /**
+     * Check the detection of a XMP with empty common schemas
+     * 
+     * @throws Exception
+     */
+    @Test
+    public void testEmptyXMPSchemas() throws Exception
+    {
+        title = "TITLE";
+        author = "AUTHOR(S)";
+        subject = "SUBJECTS";
+        keywords = "KEYWORD(S)";
+        creator = "CREATOR";
+        producer = "PRODUCER";
+        creationDate = Calendar.getInstance();
+        modifyDate = Calendar.getInstance();
+
+        // building temporary XMP metadata (but empty)
+        metadata.createAndAddDublinCoreSchema();
+        metadata.createAndAddAdobePDFSchema();
+        metadata.createAndAddXMPBasicSchema();
+
+        // Writing info in Document Information dictionary
+        // TITLE
+        dico.setTitle(title);
+        // AUTHOR
+        dico.setAuthor(author);
+        // SUBJECT
+        dico.setSubject(subject);
+        // KEYWORDS
+        dico.setKeywords(keywords);
+        // CREATOR
+        dico.setCreator(creator);
+        // PRODUCER
+        dico.setProducer(producer);
+        // CREATION DATE
+        dico.setCreationDate(creationDate);
+        // MODIFY DATE
+        dico.setModificationDate(modifyDate);
+
+        try
+        {
+            ve = sync.validateMetadataSynchronization(doc, metadata);
+            // Test Detection of absent XMP values
+            Assert.assertEquals(8, ve.size());
+        }
+        catch (ValidationException e)
+        {
+            throw new Exception(e.getMessage());
+        }
+
+    }
+
+    /**
+     * Check detection of a null value in array (for Subject and author properties)
+     * 
+     * @throws Exception
+     */
+    @Test(expected = IllegalArgumentException.class)
+    public void testNullArrayValue() throws Exception
+    {
+        // building temporary XMP metadata
+
+        DublinCoreSchema dc = metadata.createAndAddDublinCoreSchema();
+
+        // AUTHOR
+        dico.setAuthor("dicoAuthor");
+        dc.addCreator(null);
+
+        // SUBJECT
+        dico.setSubject("dicoSubj");
+        dc.addSubject(null);
+
+        // Launching synchronization test
+        try
+        {
+            ve = sync.validateMetadataSynchronization(doc, metadata);
+            // Test unsychronized value
+            Assert.assertEquals(2, ve.size());
+
+        }
+        catch (ValidationException e)
+        {
+            throw new Exception(e.getMessage());
+        }
+    }
+
+    /**
+     * in XMP, Subject and Author must be embedded in a single entry text array This function check the detection of
+     * multiple entries for these properties
+     * 
+     * @throws Exception
+     */
+    @Test
+    public void testBadSizeOfArrays() throws Exception
+    {
+        // building temporary XMP metadata
+
+        DublinCoreSchema dc = metadata.createAndAddDublinCoreSchema();
+        AdobePDFSchema pdf = metadata.createAndAddAdobePDFSchema();
+        XMPBasicSchema xmp = metadata.createAndAddXMPBasicSchema();
+
+        // Writing info in XMP and Document Information dictionary
+        // TITLE
+        dico.setTitle("dicoTitle");
+        dc.setTitle("x-default", "XMPTitle");
+        // AUTHOR
+        dico.setAuthor("dicoAuthor");
+        dc.addCreator("XMPAuthor");
+        dc.addCreator("2ndCreator");
+        // SUBJECT
+        dico.setSubject("dicoSubj");
+        dc.addSubject("XMPSubj");
+        dc.addSubject("2ndSubj");
+        // KEYWORDS
+        dico.setKeywords("DicoKeywords");
+        pdf.setKeywords("XMPkeywords");
+        // CREATOR
+        dico.setCreator("DicoCreator");
+        xmp.setCreatorTool("XMPCreator");
+        // PRODUCER
+        dico.setProducer("DicoProducer");
+        pdf.setProducer("XMPProducer");
+        // CREATION DATE
+        dico.setCreationDate(Calendar.getInstance());
+        GregorianCalendar XMPCreate = new GregorianCalendar(2008, 11, 05);
+        xmp.setCreateDate(XMPCreate);
+        // MODIFY DATE
+        dico.setModificationDate(Calendar.getInstance());
+        GregorianCalendar XMPModify = new GregorianCalendar(2009, 10, 15);
+        xmp.setModifyDate(XMPModify);
+
+        // Launching synchronization test
+        try
+        {
+            ve = sync.validateMetadataSynchronization(doc, metadata);
+            // Test unsychronized value
+            Assert.assertEquals(8, ve.size());
+        }
+        catch (ValidationException e)
+        {
+            throw new Exception(e.getMessage());
+        }
+
+    }
+
+    /**
+     * Check the detection of unsynchronized information between Document Information dictionary and XMP
+     * 
+     * @throws Exception
+     */
+    @Test
+    public void testAllInfoUnsynchronized() throws Exception
+    {
+        // building temporary XMP metadata
+
+        DublinCoreSchema dc = metadata.createAndAddDublinCoreSchema();
+        AdobePDFSchema pdf = metadata.createAndAddAdobePDFSchema();
+        XMPBasicSchema xmp = metadata.createAndAddXMPBasicSchema();
+
+        // Writing info in XMP and Document Information dictionary
+        // TITLE
+        dico.setTitle("dicoTitle");
+        dc.setTitle("x-default", "XMPTitle");
+        // AUTHOR
+        dico.setAuthor("dicoAuthor");
+        dc.addCreator("XMPAuthor");
+        // SUBJECT
+        dico.setSubject("dicoSubj");
+        dc.addSubject("XMPSubj");
+        // KEYWORDS
+        dico.setKeywords("DicoKeywords");
+        pdf.setKeywords("XMPkeywords");
+        // CREATOR
+        dico.setCreator("DicoCreator");
+        xmp.setCreatorTool("XMPCreator");
+        // PRODUCER
+        dico.setProducer("DicoProducer");
+        pdf.setProducer("XMPProducer");
+        // CREATION DATE
+        dico.setCreationDate(Calendar.getInstance());
+        GregorianCalendar XMPCreate = new GregorianCalendar(2008, 11, 05);
+        xmp.setCreateDate(XMPCreate);
+        // MODIFY DATE
+        dico.setModificationDate(Calendar.getInstance());
+        GregorianCalendar XMPModify = new GregorianCalendar(2009, 10, 15);
+        xmp.setModifyDate(XMPModify);
+
+        // Launching synchronization test
+        try
+        {
+            ve = sync.validateMetadataSynchronization(doc, metadata);
+            // Test unsychronized value
+            Assert.assertEquals(8, ve.size());
+        }
+        catch (ValidationException e)
+        {
+            throw new Exception(e.getMessage());
+        }
+
+    }
+
+    /**
+     * Check reaction when metadata are well-formed
+     * 
+     * @throws Exception
+     */
+    @Test
+    public void testAllInfoSynhcronized() throws Exception
+    {
+        title = "TITLE";
+        author = "AUTHOR(S)";
+        subject = "SUBJECTS";
+        keywords = "KEYWORD(S)";
+        creator = "CREATOR";
+        producer = "PRODUCER";
+        creationDate = Calendar.getInstance();
+        modifyDate = Calendar.getInstance();
+
+        // building temporary XMP metadata
+        DublinCoreSchema dc = metadata.createAndAddDublinCoreSchema();
+        XMPBasicSchema xmp = metadata.createAndAddXMPBasicSchema();
+        AdobePDFSchema pdf = metadata.createAndAddAdobePDFSchema();
+        // Writing info in XMP and Document Information dictionary
+        // TITLE
+        dico.setTitle(title);
+        dc.setTitle("x-default", title);
+        // AUTHOR
+        dico.setAuthor(author);
+        dc.addCreator(author);
+        // SUBJECT
+        dico.setSubject(subject);
+        dc.addDescription("x-default", subject);
+        // KEYWORDS
+        dico.setKeywords(keywords);
+        pdf.setKeywords(keywords);
+        // CREATOR
+        dico.setCreator(creator);
+        xmp.setCreatorTool(creator);
+        // PRODUCER
+        dico.setProducer(producer);
+        pdf.setProducer(producer);
+        // CREATION DATE
+        dico.setCreationDate(creationDate);
+        xmp.setCreateDate(creationDate);
+        // MODIFY DATE
+        dico.setModificationDate(modifyDate);
+        xmp.setModifyDate(modifyDate);
+
+        // Launching synchronization test
+        try
+        {
+            ve = sync.validateMetadataSynchronization(doc, metadata);
+            // Checking all is synchronized
+            Assert.assertEquals(0, ve.size());
+        }
+        catch (ValidationException e)
+        {
+            throw new Exception(e.getMessage());
+        }
+
+    }
+
+    /**
+     * Check if FormatAccessException Generator is ok
+     * 
+     * @throws Exception
+     */
+    @Test
+    public void checkformatAccessException() throws Exception
+    {
+        Throwable cause = new Throwable();
+        Assert.assertSame(cause, sync.formatAccessException("test", "test", cause).getCause());
+    }
+
+    /**
+     * Check if SchemaAccessException Generator is ok
+     * 
+     * @throws Exception
+     */
+    @Test
+    public void checkSchemaAccessException() throws Exception
+    {
+        Throwable cause = new Throwable();
+        Assert.assertSame(cause, sync.SchemaAccessException("test", cause).getCause());
+    }
+
+    /**
+     * Check reaction when metadata are well-formed
+     * 
+     * @throws Exception
+     */
+    @Test
+    public void testBadPrefixSchemas() throws Exception
+    {
+        title = "TITLE";
+        author = "AUTHOR(S)";
+        subject = "SUBJECTS";
+        keywords = "KEYWORD(S)";
+        creator = "CREATOR";
+        producer = "PRODUCER";
+        creationDate = Calendar.getInstance();
+        modifyDate = Calendar.getInstance();
+
+        // building temporary XMP metadata
+        DublinCoreSchema dc = new DublinCoreSchema(metadata, "dctest");
+        metadata.addSchema(dc);
+        XMPBasicSchema xmp = new XMPBasicSchema(metadata, "xmptest");
+        metadata.addSchema(xmp);
+        AdobePDFSchema pdf = new AdobePDFSchema(metadata, "pdftest");
+        metadata.addSchema(pdf);
+
+        // Writing info in XMP and Document Information dictionary
+        // TITLE
+        dico.setTitle(title);
+        dc.setTitle("x-default", title);
+        // AUTHOR
+        dico.setAuthor(author);
+        dc.addCreator(author);
+        // SUBJECT
+        dico.setSubject(subject);
+        dc.addDescription("x-default", subject);
+        // KEYWORDS
+        dico.setKeywords(keywords);
+        pdf.setKeywords(keywords);
+        // CREATOR
+        dico.setCreator(creator);
+        xmp.setCreatorTool(creator);
+        // PRODUCER
+        dico.setProducer(producer);
+        pdf.setProducer(producer);
+        // CREATION DATE
+        dico.setCreationDate(creationDate);
+        xmp.setCreateDate(creationDate);
+        // MODIFY DATE
+        dico.setModificationDate(modifyDate);
+        xmp.setModifyDate(modifyDate);
+
+        // Launching synchronization test
+        try
+        {
+            ve = sync.validateMetadataSynchronization(doc, metadata);
+            for (ValidationError valid : ve)
+            {
+                Assert.assertEquals(PreflightConstants.ERROR_METADATA_WRONG_NS_PREFIX, valid.getErrorCode());
+            }
+        }
+        catch (ValidationException e)
+        {
+            throw new Exception(e.getMessage());
+        }
+
+    }
+
+    /**
+     * Check reaction when metadata are well-formed
+     * 
+     * @throws Exception
+     */
+    @Test
+    public void testdoublePrefixSchemas() throws Exception
+    {
+        title = "TITLE";
+        author = "AUTHOR(S)";
+        subject = "SUBJECTS";
+        keywords = "KEYWORD(S)";
+        creator = "CREATOR";
+        producer = "PRODUCER";
+        creationDate = Calendar.getInstance();
+        modifyDate = Calendar.getInstance();
+
+        // building temporary XMP metadata
+        DublinCoreSchema dc = metadata.createAndAddDublinCoreSchema();
+        DublinCoreSchema dc2 = new DublinCoreSchema(metadata, "dctest");
+        metadata.addSchema(dc2);
+        XMPBasicSchema xmp = metadata.createAndAddXMPBasicSchema();
+        XMPBasicSchema xmp2 = new XMPBasicSchema(metadata, "xmptest");
+        metadata.addSchema(xmp2);
+        AdobePDFSchema pdf = metadata.createAndAddAdobePDFSchema();
+        AdobePDFSchema pdf2 = new AdobePDFSchema(metadata, "pdftest");
+        metadata.addSchema(pdf2);
+
+        // write some temp info in 'false' schemas
+        dc2.setCoverage("tmpcover");
+        xmp2.setCreatorTool("tmpcreator");
+        pdf2.setKeywords("tmpkeys");
+
+        // Writing info in XMP and Document Information dictionary
+        // TITLE
+        dico.setTitle(title);
+        dc.setTitle("x-default", title);
+        // AUTHOR
+        dico.setAuthor(author);
+        dc.addCreator(author);
+        // SUBJECT
+        dico.setSubject(subject);
+        dc.addDescription("x-default", subject);
+        // KEYWORDS
+        dico.setKeywords(keywords);
+        pdf.setKeywords(keywords);
+        // CREATOR
+        dico.setCreator(creator);
+        xmp.setCreatorTool(creator);
+        // PRODUCER
+        dico.setProducer(producer);
+        pdf.setProducer(producer);
+        // CREATION DATE
+        dico.setCreationDate(creationDate);
+        xmp.setCreateDate(creationDate);
+        // MODIFY DATE
+        dico.setModificationDate(modifyDate);
+        xmp.setModifyDate(modifyDate);
+
+        // Launching synchronization test
+        try
+        {
+            ve = sync.validateMetadataSynchronization(doc, metadata);
+            Assert.assertTrue(ve.isEmpty());
+        }
+        catch (ValidationException e)
+        {
+            throw new Exception(e.getMessage());
+        }
+
+    }
+
+    @After
+    public void checkErrors() throws Exception
+    {
+        try
+        {
+            doc.close();
+        }
+        catch (IOException e)
+        {
+            throw new Exception("Error while closing PDF Document");
+        }
+        /*
+         * Iterator<ValidationError> it=ve.iterator(); while(it.hasNext()){ ValidationError tmp=it.next();
+         * System.out.println("Error:"+ tmp.getDetails()+"\n code: "+tmp.getErrorCode()); }
+         */
+    }
 
 }

Modified: pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/parser/TestPreflightConfiguration.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/parser/TestPreflightConfiguration.java?rev=1453416&r1=1453415&r2=1453416&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/parser/TestPreflightConfiguration.java (original)
+++ pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/parser/TestPreflightConfiguration.java Wed Mar  6 16:46:35 2013
@@ -30,40 +30,48 @@ import org.apache.pdfbox.preflight.excep
 import org.apache.pdfbox.preflight.process.ValidationProcess;
 import org.junit.Test;
 
-public class TestPreflightConfiguration {
+public class TestPreflightConfiguration
+{
 
-	@Test(expected=MissingValidationProcessException.class)
-	public void testGetValidationProcess_MissingProcess() throws Exception {
-		PreflightConfiguration configuration = PreflightConfiguration.createPdfA1BConfiguration();
-		configuration.getInstanceOfProcess("unknownProcess");
-	}
-
-	@Test
-	public void testGetValidationProcess_MissingProcess_NoError() throws Exception {
-		PreflightConfiguration configuration = PreflightConfiguration.createPdfA1BConfiguration();
-		configuration.setErrorOnMissingProcess(false);
-		configuration.getInstanceOfProcess("unknownProcess");
-	}
-	
-	@Test
-	public void testReplaceValidationProcess() throws Exception {
-		PreflightConfiguration configuration = PreflightConfiguration.createPdfA1BConfiguration();
-		
-		String processName = "mock-process";
-		configuration.replaceProcess(processName, MockProcess.class);
-		assertEquals(MockProcess.class, configuration.getInstanceOfProcess(processName).getClass());
-		
-		configuration.replaceProcess(processName, MockProcess2.class);
-		assertEquals(MockProcess2.class, configuration.getInstanceOfProcess(processName).getClass());
-	}
-
-	public static class MockProcess implements ValidationProcess {
-		public void validate(PreflightContext ctx) throws ValidationException {
-		}
-	}
-	
-	public static class MockProcess2 extends MockProcess {
-		public void validate(PreflightContext ctx) throws ValidationException {
-		}
-	}
+    @Test(expected = MissingValidationProcessException.class)
+    public void testGetValidationProcess_MissingProcess() throws Exception
+    {
+        PreflightConfiguration configuration = PreflightConfiguration.createPdfA1BConfiguration();
+        configuration.getInstanceOfProcess("unknownProcess");
+    }
+
+    @Test
+    public void testGetValidationProcess_MissingProcess_NoError() throws Exception
+    {
+        PreflightConfiguration configuration = PreflightConfiguration.createPdfA1BConfiguration();
+        configuration.setErrorOnMissingProcess(false);
+        configuration.getInstanceOfProcess("unknownProcess");
+    }
+
+    @Test
+    public void testReplaceValidationProcess() throws Exception
+    {
+        PreflightConfiguration configuration = PreflightConfiguration.createPdfA1BConfiguration();
+
+        String processName = "mock-process";
+        configuration.replaceProcess(processName, MockProcess.class);
+        assertEquals(MockProcess.class, configuration.getInstanceOfProcess(processName).getClass());
+
+        configuration.replaceProcess(processName, MockProcess2.class);
+        assertEquals(MockProcess2.class, configuration.getInstanceOfProcess(processName).getClass());
+    }
+
+    public static class MockProcess implements ValidationProcess
+    {
+        public void validate(PreflightContext ctx) throws ValidationException
+        {
+        }
+    }
+
+    public static class MockProcess2 extends MockProcess
+    {
+        public void validate(PreflightContext ctx) throws ValidationException
+        {
+        }
+    }
 }

Modified: pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/util/ByteArrayDataSource.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/util/ByteArrayDataSource.java?rev=1453416&r1=1453415&r2=1453416&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/util/ByteArrayDataSource.java (original)
+++ pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/util/ByteArrayDataSource.java Wed Mar  6 16:46:35 2013
@@ -31,47 +31,55 @@ import javax.activation.DataSource;
 
 import org.apache.commons.io.IOUtils;
 
-public class ByteArrayDataSource implements DataSource {
-  private ByteArrayOutputStream data;
-  private String type = null;
-  private String name = null;
-
-  public ByteArrayDataSource(InputStream is) throws IOException {
-    data = new ByteArrayOutputStream();
-    IOUtils.copyLarge(is, data);
-    IOUtils.closeQuietly(is);
-  }
-
-  public String getContentType() {
-    return this.type;
-  }
-
-  /**
-   * @param type
-   *          the type to set
-   */
-  public void setType(String type) {
-    this.type = type;
-  }
-
-  /**
-   * @param name
-   *          the name to set
-   */
-  public void setName(String name) {
-    this.name = name;
-  }
-
-  public InputStream getInputStream() throws IOException {
-    return new ByteArrayInputStream(data.toByteArray());
-  }
-
-  public String getName() {
-    return this.name;
-  }
-
-  public OutputStream getOutputStream() throws IOException {
-    this.data = new ByteArrayOutputStream();
-    return data;
-  }
+public class ByteArrayDataSource implements DataSource
+{
+    private ByteArrayOutputStream data;
+    private String type = null;
+    private String name = null;
+
+    public ByteArrayDataSource(InputStream is) throws IOException
+    {
+        data = new ByteArrayOutputStream();
+        IOUtils.copyLarge(is, data);
+        IOUtils.closeQuietly(is);
+    }
+
+    public String getContentType()
+    {
+        return this.type;
+    }
+
+    /**
+     * @param type
+     *            the type to set
+     */
+    public void setType(String type)
+    {
+        this.type = type;
+    }
+
+    /**
+     * @param name
+     *            the name to set
+     */
+    public void setName(String name)
+    {
+        this.name = name;
+    }
+
+    public InputStream getInputStream() throws IOException
+    {
+        return new ByteArrayInputStream(data.toByteArray());
+    }
+
+    public String getName()
+    {
+        return this.name;
+    }
+
+    public OutputStream getOutputStream() throws IOException
+    {
+        this.data = new ByteArrayOutputStream();
+        return data;
+    }
 }

Modified: pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/util/IsartorPdfProvider.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/util/IsartorPdfProvider.java?rev=1453416&r1=1453415&r2=1453416&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/util/IsartorPdfProvider.java (original)
+++ pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/util/IsartorPdfProvider.java Wed Mar  6 16:46:35 2013
@@ -23,37 +23,39 @@ package org.apache.pdfbox.preflight.util
 
 import java.io.InputStream;
 
-public class IsartorPdfProvider {
-//  public static File path;
-//  static {
-//    String ip = System.getProperty("isartor.path", null);
-//    if (ip != null) {
-//      path = new File(ip);
-//      if (!path.exists() || !path.isDirectory()) {
-//        path = null;
-//      }
-//    }
-//  }
+public class IsartorPdfProvider
+{
+    // public static File path;
+    // static {
+    // String ip = System.getProperty("isartor.path", null);
+    // if (ip != null) {
+    // path = new File(ip);
+    // if (!path.exists() || !path.isDirectory()) {
+    // path = null;
+    // }
+    // }
+    // }
 
-  public static InputStream getIsartorDocument(String name) {
-    return IsartorPdfProvider.class.getResourceAsStream(name);
-//    
-//    if (path == null) {
-//      return null;
-//    }
-//
-//    String[] ext = { "pdf" };
-//    Iterator<?> iter = FileUtils.iterateFiles(path, ext, true);
-//    while (iter.hasNext()) {
-//      Object o = iter.next();
-//      if (o instanceof File) {
-//        File isartorFile = (File) o;
-//        if (isartorFile.isFile() && name.equals(isartorFile.getName())) {
-//          return isartorFile;
-//        }
-//      }
-//    }
-//    return null;
-//  }
-  }
+    public static InputStream getIsartorDocument(String name)
+    {
+        return IsartorPdfProvider.class.getResourceAsStream(name);
+        //
+        // if (path == null) {
+        // return null;
+        // }
+        //
+        // String[] ext = { "pdf" };
+        // Iterator<?> iter = FileUtils.iterateFiles(path, ext, true);
+        // while (iter.hasNext()) {
+        // Object o = iter.next();
+        // if (o instanceof File) {
+        // File isartorFile = (File) o;
+        // if (isartorFile.isFile() && name.equals(isartorFile.getName())) {
+        // return isartorFile;
+        // }
+        // }
+        // }
+        // return null;
+        // }
+    }
 }

Modified: pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/util/NOCatalogDocument.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/util/NOCatalogDocument.java?rev=1453416&r1=1453415&r2=1453416&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/util/NOCatalogDocument.java (original)
+++ pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/util/NOCatalogDocument.java Wed Mar  6 16:46:35 2013
@@ -27,17 +27,21 @@ import org.apache.pdfbox.cos.COSDocument
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
 
-public class NOCatalogDocument extends PDDocument {
-  public NOCatalogDocument() throws IOException {
-    super();
-  }
+public class NOCatalogDocument extends PDDocument
+{
+    public NOCatalogDocument() throws IOException
+    {
+        super();
+    }
 
-  public NOCatalogDocument(COSDocument doc) {
-    super(doc);
-  }
+    public NOCatalogDocument(COSDocument doc)
+    {
+        super(doc);
+    }
 
-  @Override
-  public PDDocumentCatalog getDocumentCatalog() {
-    return null;
-  }
+    @Override
+    public PDDocumentCatalog getDocumentCatalog()
+    {
+        return null;
+    }
 }

Modified: pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/utils/TestCOSUtils.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/utils/TestCOSUtils.java?rev=1453416&r1=1453415&r2=1453416&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/utils/TestCOSUtils.java (original)
+++ pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/utils/TestCOSUtils.java Wed Mar  6 16:46:35 2013
@@ -43,168 +43,206 @@ import org.apache.pdfbox.persistence.uti
 import org.apache.pdfbox.preflight.utils.COSUtils;
 import org.junit.Test;
 
-public class TestCOSUtils {
+public class TestCOSUtils
+{
 
-  @Test
-  public void testIsInteger() {
-    try {
-      COSObject co = new COSObject(new COSInteger(10));
-      co.setGenerationNumber(COSInteger.ZERO);
-      co.setObjectNumber(new COSInteger(10));
-
-      assertFalse(COSUtils.isInteger(co, new IOCOSDocument()));
-
-      COSDocument doc = new COSDocument();
-      addToXref(doc,new COSObjectKey(co), 1000);
-      COSUtils.isInteger(co, doc);
-      doc.close();
-    } catch (IOException e) {
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void testIsFloat() {
-    try {
-      COSObject co = new COSObject(new COSFloat(10.0f));
-      co.setGenerationNumber(COSInteger.ZERO);
-      co.setObjectNumber(new COSInteger(10));
-
-      assertFalse(COSUtils.isFloat(co, new IOCOSDocument()));
-
-      COSDocument doc = new COSDocument();
-      addToXref(doc,new COSObjectKey(co), 1000);
-      COSUtils.isFloat(co, doc);
-      doc.close();
-    } catch (IOException e) {
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void testIsString() {
-    try {
-      COSObject co = new COSObject(new COSString(""));
-      co.setGenerationNumber(COSInteger.ZERO);
-      co.setObjectNumber(new COSInteger(10));
-
-      assertFalse(COSUtils.isString(co, new IOCOSDocument()));
-
-      COSDocument doc = new COSDocument();
-      addToXref(doc,new COSObjectKey(co), 1000);
-      COSUtils.isString(co, doc);
-      doc.close();
-    } catch (IOException e) {
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void testIsStream() {
-    try {
-      COSObject co = new COSObject(new COSStream(null));
-      co.setGenerationNumber(COSInteger.ZERO);
-      co.setObjectNumber(new COSInteger(10));
-
-      assertFalse(COSUtils.isStream(co, new IOCOSDocument()));
-
-      COSDocument doc = new COSDocument();
-      addToXref(doc,new COSObjectKey(co), 1000);
-      COSUtils.isStream(co, doc);
-      doc.close();
-    } catch (IOException e) {
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void testIsDictionary() {
-    try {
-      COSObject co = new COSObject(new COSDictionary());
-      co.setGenerationNumber(COSInteger.ZERO);
-      co.setObjectNumber(new COSInteger(10));
-
-      assertFalse(COSUtils.isDictionary(co, new IOCOSDocument()));
-
-      COSDocument doc = new COSDocument();
-      addToXref(doc,new COSObjectKey(co), 1000);
-      COSUtils.isDictionary(co, doc);
-      doc.close();
-    } catch (IOException e) {
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void testIsArray() {
-    try {
-      COSObject co = new COSObject(new COSArray());
-      co.setGenerationNumber(COSInteger.ZERO);
-      co.setObjectNumber(new COSInteger(10));
-
-      assertFalse(COSUtils.isArray(co, new IOCOSDocument()));
-
-      COSDocument doc = new COSDocument();
-      addToXref(doc,new COSObjectKey(co), 1000);
-      COSUtils.isArray(co, doc);
-      doc.close();
-    } catch (IOException e) {
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void testCloseCOSDocumentNull() {
-    COSUtils.closeDocumentQuietly((COSDocument) null);
-  }
-
-  @Test
-  public void testClosePDDocumentNull() {
-    COSUtils.closeDocumentQuietly((PDDocument) null);
-  }
-
-  @Test
-  public void testCloseCOSDocumentIO() {
-    try {
-      COSUtils.closeDocumentQuietly(new IOCOSDocument());
-    } catch (IOException e) {
-      fail(e.getMessage());
-    }
-  }
-
-  protected void addToXref( COSDocument doc, COSObjectKey key, long value) {
-    Map<COSObjectKey, Long>  xrefTable = new HashMap<COSObjectKey, Long>(1);
-    xrefTable.put(key, value);
-    doc.addXRefTable(xrefTable);
-  }
-
-  /**
-   * Class used to check the catch block in COSUtils methods
-   */
-  private class IOCOSDocument extends COSDocument {
-
-    IOCOSDocument() throws IOException {
-      super();
-    }
-
-    IOCOSDocument(File scratchDir) throws IOException {
-      super(scratchDir);
-    }
-
-    IOCOSDocument(RandomAccess file) {
-      super(file);
-    }
-
-    @Override
-    public void close() throws IOException {
-      super.close();
-      throw new IOException("Exception for code coverage");
-    }
-
-    @Override
-    public COSObject getObjectFromPool(COSObjectKey key) throws IOException {
-      super.close();
-      throw new IOException("Exception for code coverage");
+    @Test
+    public void testIsInteger()
+    {
+        try
+        {
+            COSObject co = new COSObject(new COSInteger(10));
+            co.setGenerationNumber(COSInteger.ZERO);
+            co.setObjectNumber(new COSInteger(10));
+
+            assertFalse(COSUtils.isInteger(co, new IOCOSDocument()));
+
+            COSDocument doc = new COSDocument();
+            addToXref(doc, new COSObjectKey(co), 1000);
+            COSUtils.isInteger(co, doc);
+            doc.close();
+        }
+        catch (IOException e)
+        {
+            fail(e.getMessage());
+        }
+    }
+
+    @Test
+    public void testIsFloat()
+    {
+        try
+        {
+            COSObject co = new COSObject(new COSFloat(10.0f));
+            co.setGenerationNumber(COSInteger.ZERO);
+            co.setObjectNumber(new COSInteger(10));
+
+            assertFalse(COSUtils.isFloat(co, new IOCOSDocument()));
+
+            COSDocument doc = new COSDocument();
+            addToXref(doc, new COSObjectKey(co), 1000);
+            COSUtils.isFloat(co, doc);
+            doc.close();
+        }
+        catch (IOException e)
+        {
+            fail(e.getMessage());
+        }
+    }
+
+    @Test
+    public void testIsString()
+    {
+        try
+        {
+            COSObject co = new COSObject(new COSString(""));
+            co.setGenerationNumber(COSInteger.ZERO);
+            co.setObjectNumber(new COSInteger(10));
+
+            assertFalse(COSUtils.isString(co, new IOCOSDocument()));
+
+            COSDocument doc = new COSDocument();
+            addToXref(doc, new COSObjectKey(co), 1000);
+            COSUtils.isString(co, doc);
+            doc.close();
+        }
+        catch (IOException e)
+        {
+            fail(e.getMessage());
+        }
+    }
+
+    @Test
+    public void testIsStream()
+    {
+        try
+        {
+            COSObject co = new COSObject(new COSStream(null));
+            co.setGenerationNumber(COSInteger.ZERO);
+            co.setObjectNumber(new COSInteger(10));
+
+            assertFalse(COSUtils.isStream(co, new IOCOSDocument()));
+
+            COSDocument doc = new COSDocument();
+            addToXref(doc, new COSObjectKey(co), 1000);
+            COSUtils.isStream(co, doc);
+            doc.close();
+        }
+        catch (IOException e)
+        {
+            fail(e.getMessage());
+        }
+    }
+
+    @Test
+    public void testIsDictionary()
+    {
+        try
+        {
+            COSObject co = new COSObject(new COSDictionary());
+            co.setGenerationNumber(COSInteger.ZERO);
+            co.setObjectNumber(new COSInteger(10));
+
+            assertFalse(COSUtils.isDictionary(co, new IOCOSDocument()));
+
+            COSDocument doc = new COSDocument();
+            addToXref(doc, new COSObjectKey(co), 1000);
+            COSUtils.isDictionary(co, doc);
+            doc.close();
+        }
+        catch (IOException e)
+        {
+            fail(e.getMessage());
+        }
+    }
+
+    @Test
+    public void testIsArray()
+    {
+        try
+        {
+            COSObject co = new COSObject(new COSArray());
+            co.setGenerationNumber(COSInteger.ZERO);
+            co.setObjectNumber(new COSInteger(10));
+
+            assertFalse(COSUtils.isArray(co, new IOCOSDocument()));
+
+            COSDocument doc = new COSDocument();
+            addToXref(doc, new COSObjectKey(co), 1000);
+            COSUtils.isArray(co, doc);
+            doc.close();
+        }
+        catch (IOException e)
+        {
+            fail(e.getMessage());
+        }
+    }
+
+    @Test
+    public void testCloseCOSDocumentNull()
+    {
+        COSUtils.closeDocumentQuietly((COSDocument) null);
+    }
+
+    @Test
+    public void testClosePDDocumentNull()
+    {
+        COSUtils.closeDocumentQuietly((PDDocument) null);
+    }
+
+    @Test
+    public void testCloseCOSDocumentIO()
+    {
+        try
+        {
+            COSUtils.closeDocumentQuietly(new IOCOSDocument());
+        }
+        catch (IOException e)
+        {
+            fail(e.getMessage());
+        }
+    }
+
+    protected void addToXref(COSDocument doc, COSObjectKey key, long value)
+    {
+        Map<COSObjectKey, Long> xrefTable = new HashMap<COSObjectKey, Long>(1);
+        xrefTable.put(key, value);
+        doc.addXRefTable(xrefTable);
+    }
+
+    /**
+     * Class used to check the catch block in COSUtils methods
+     */
+    private class IOCOSDocument extends COSDocument
+    {
+
+        IOCOSDocument() throws IOException
+        {
+            super();
+        }
+
+        IOCOSDocument(File scratchDir) throws IOException
+        {
+            super(scratchDir);
+        }
+
+        IOCOSDocument(RandomAccess file)
+        {
+            super(file);
+        }
+
+        @Override
+        public void close() throws IOException
+        {
+            super.close();
+            throw new IOException("Exception for code coverage");
+        }
+
+        @Override
+        public COSObject getObjectFromPool(COSObjectKey key) throws IOException
+        {
+            super.close();
+            throw new IOException("Exception for code coverage");
+        }
     }
-  }
 }