Kapitel 3. Funktionsumfang

3.1. Überblick

Syntaktischer Einstieg

Jeder Test beginnt mit dem Tag <testcase name=".." />, das als Attribut den Namen des Tests angibt. Darin enthalten ist immer das Tag <assertThat testDocument=".." /> mit dem Namen der zu testenden PDF-Datei.

Innerhalb von <assertThat> folgen dann weitere Tags, die jeweils unterschiedliche Testbereiche, wie z.B. Inhalt, Schriften, Layout etc. abdecken.

Die nachfolgenden Beispiele zeigen verschiedene Einstiege in einen Test:

<!-- Instantiating a test document for specific tests: -->

<testcase name="test111">
  <assertThat testDocument="documentUnderTest.pdf">
    <hasXXX>   <!-- Switch to one of many test scopes. -->
      ...      <!-- Use test scope specific tags here. -->
    </hasXXX>
  </assertThat>
</testcase>
<!-- Comparing a test document with a master document: -->

<testcase name="test222">
  <assertThat testDocument="documentUnderTest.pdf"
              masterDocument="masterDocument.pdf"
  >
    <haveSameXXX /> <!-- Comparing many parts of a PDF. -->
  </assertThat>
</testcase>
<!-- Using encrypted PDF documents: -->

<testcase name="test333">
  <assertThat testDocument="documentUnderTest.pdf"
              testPassword="test-password"
  >
    ...
  </assertThat>
</testcase>
<!-- Set a test to 'ignore': -->

<testcase name="test555"
          ignore="No suitable document available"
>
  <assertThat testDocument="documentUnderTest.pdf"
  >
    ...
  </assertThat>
</testcase>

Es können auch mehrere PDF-Dokumente in einen Test einfließen. Solche Tests beginnen mit dem Tag <assertThatEachDocument>:

<testcase name="textInMultipleDocuments">
    <assertThatEachDocument>              
      <pdf name="&pdfdir;/multipleDocuments/document_en.pdf" />
      <pdf name="&pdfdir;/multipleDocuments/document_es.pdf" />
      <pdf name="&pdfdir;/multipleDocuments/document_de.pdf" />
      <hasText on="FIRST_PAGE" >
        <containing>28.09.2014</containing>
        <containing>XX-123</containing>
      </hasText>
    </assertThatEachDocument>
  </testcase>

Das Kapitel 5: „Tests mit mehreren Dokumenten“ gibt ausführliche Informationen über Tests mit mehreren Dokumenten.

Syntax für erwartete Fehler

Tests, die einen Fehler erwarten, müssen dies über das Attribut errorExpected="YES" deklarieren:

<testcase name="hasSignature_DocumentNotSigned"
            errorExpected="YES"
  >
    <assertThat testDocument="signed/notSigned.pdf">
      <hasSignature name="Signature2" />
    </assertThat>
  </testcase>

Testbereiche

Die folgende Liste gibt einen vollständigen Überblick über die Testgebiete von PDFUnit. Der jeweilige Link hinter einem Tag verweist auf das Kapitel, das jedes Testgebiet ausführlich beschreibt. Die Kapitel sind alphabetisch sortiert.

<!-- Each of the following tags opens a new test scope:  -->

<areBothForFastWebView />       
4.20: „Sonstige Vergleiche“

<asRenderedPage />               3.15: „Layout - gerenderte volle Seiten“ 

<containsImage />                3.6: „Bilder in Dokumenten“ 
<containsOneOfTheseImages />     3.6: „Bilder in Dokumenten“ 

<hasAnyAction />                 3.2: „Aktionen (Actions)“ 
<hasAuthor />                    3.8: „Dokumenteneigenschaften“ 
<hasBookmark />                  3.17: „Lesezeichen (Bookmarks) und Sprungziele“ 
<hasBookmarks />                 3.17: „Lesezeichen (Bookmarks) und Sprungziele“ 
<hasChainedAction />             3.2: „Aktionen (Actions)“ 
<hasCloseAction />               3.2: „Aktionen (Actions)“ 
<hasCreationDate />              3.7: „Datum“ 
<hasCreationDateAfter />         3.7: „Datum“ 
<hasCreationDateBefore />        3.7: „Datum“ 
<hasCreator />                   3.7: „Datum“ 
<hasEmbeddedFile />              3.3: „Anhänge (Attachments)“ 
<hasEmbeddedFileContent />       3.3: „Anhänge (Attachments)“ 
<hasEncryptionLength />          3.18: „Passwort“ 
<hasField />                     3.11: „Formularfelder“ 
<hasFields />                    3.11: „Formularfelder“ 
<hasFont />                      3.19: „Schriften“ 
<hasFonts />                     3.19: „Schriften“ 
<hasFormat />                    3.10: „Format“ 
<hasImportDataAction />          3.2: „Aktionen (Actions)“ 
<hasJavaScript />                3.13: „JavaScript“ 
<hasJavaScriptAction />          3.2: „Aktionen (Actions)“ 
<hasKeywords />                  3.8: „Dokumenteneigenschaften“ 
<hasLaunchAction />              3.2: „Aktionen (Actions)“ 
<hasLayer />                     3.14: „Layer“ 
<hasLayers />                    3.14: „Layer“ 
<hasLessPages />                 3.20: „Seitenzahlen als Testziel“ 
<hasLocale />                    3.22: „Sprachinformation (Language)“ 
<hasLocalGotoAction />           3.2: „Aktionen (Actions)“ 
<hasModificationDate />          3.7: „Datum“ 
<hasModificationDateAfter />     3.7: „Datum“ 
<hasModificationDateBefore />    3.7: „Datum“ 
<hasMorePages />                 3.20: „Seitenzahlen als Testziel“ 
<hasNamedAction />               3.2: „Aktionen (Actions)“ 
<hasNamedDestination />          3.17: „Lesezeichen (Bookmarks) und Sprungziele“ 

...  continued
... continuation:

<hasNoAuthor />                  3.8: „Dokumenteneigenschaften“ 
<hasNoCreationDate />            3.7: „Datum“ 
<hasNoCreator />                 3.8: „Dokumenteneigenschaften“ 
<hasNoKeywords />                3.8: „Dokumenteneigenschaften“ 
<hasNoLocale />                  3.22: „Sprachinformation (Language)“ 
<hasNoModificationDate />        3.7: „Datum“ 
<hasNoProducer />                3.8: „Dokumenteneigenschaften“ 
<hasNoProperty />                3.8: „Dokumenteneigenschaften“ 
<hasNoSubject />                 3.8: „Dokumenteneigenschaften“ 
<hasNoText />                    3.23: „Texte“ 
<hasNoTitle />                   3.8: „Dokumenteneigenschaften“ 
<hasNoXFAData />                 3.29: „XFA Daten“ 
<hasNoXMPData />                 3.30: „XMP-Daten“ 

<hasNumberOfXXX />               3.4: „Anzahl verschiedener PDF-Bestandteile“ 

<hasOCG />                       3.14: „Layer“ 
<hasOCGs />                      3.14: „Layer“ 
<hasOpenAction />                3.2: „Aktionen (Actions)“ 
<hasOwnerPassword />             3.18: „Passwort“ 
<hasPermission />                3.5: „Berechtigungen“ 
<hasPrintAction />               3.2: „Aktionen (Actions)“ 
<hasProducer />                  3.8: „Dokumenteneigenschaften“ 
<hasProperty />                  3.8: „Dokumenteneigenschaften“ 
<hasRemoteGotoActionTo />        3.2: „Aktionen (Actions)“ 
<hasResetFormAction />           3.2: „Aktionen (Actions)“ 
<hasSaveAction />                3.2: „Aktionen (Actions)“ 
<hasSignature />                 3.21: „Signaturen und Zertifikate“ 
<hasSignatures />                3.21: „Signaturen und Zertifikate“ 
<hasSignedSignatureFields />     3.21: „Signaturen und Zertifikate“ 
<hasSubject />                   3.8: „Dokumenteneigenschaften“ 
<hasSubmitFormAction />          3.2: „Aktionen (Actions)“ 
<hasText />                      3.23: „Texte“ 
<hasTitle />                     3.8: „Dokumenteneigenschaften“ 
<hasTrappingInfo />              3.27: „Trapping-Info“ 
<hasUnsignedSignatureFields />   3.21: „Signaturen und Zertifikate“ 
<hasURIAction />                 3.2: „Aktionen (Actions)“ 
<hasUserPassword />              3.18: „Passwort“ 
<hasVersion />                   3.28: „Version“ 
<hasXFAData />                   3.29: „XFA Daten“ 
<hasXMPData />                   3.30: „XMP-Daten“ 

<haveSame... />                  4.1: „Überblick“ 

<isCertified />                  3.31: „Zertifiziertes PDF“ 
<isLinearizedForFastWebView />   3.9: „Fast Web View“ 
<isSigned />                     3.21: „Signaturen und Zertifikate“ 
<isTagged />                     3.26: „Tagging“ 

...  (end of list)

PDFUnit wird ständig weiterentwickelt und die Dokumentation aktuell gehalten. Sollten Sie Tests vermissen, schicken Sie Ihre Wünsche und Vorschläge an request[at]pdfunit.com.