In fast allen Tests werden Texte verglichen. Viele Vergleiche würden nicht funktionieren,
wenn die Whitespaces eines Textes „so, wie sie sind“ Teil
des Vergleiches wären. Deshalb gibt es für Tests, bei denen eine flexible Behandlung
von Whitespaces sinnvoll ist, die Möglichkeit einer benutzergesteuerten Whitespace-Behandlung.
PDFUnit stellt drei Konstanten zur Verfügung, von denen NORMALIZE
die Standardbehandlung ist, falls nichts anderes angegeben wird:
<!-- Constants for whitespace processing: --> <xxx whitespaces="IGNORE" /> <xxx whitespaces="KEEP" /> <xxx whitespaces="NORMALIZE" />
Text wird so komprimiert, dass er keine Whitespaces mehr enthält. |
|
Alle Whitespaces bleiben erhalten. |
|
Whitespaces am Anfang und am Ende eines Textes werden gelöscht. Whitespaces innerhalb eines Textes werden auf ein Leerzeichen reduziert. |
Bei diesen Tags kann die Whitespace-Behandlung vorgegeben werden:
<!-- Tags which allow to define the whitespace processing --> <hasXXXAction> <containing whitespaces=".." /> <matchingComplete whitespaces=".." /> </hasXXXAction> <hasText> <containing whitespaces=".." /> <notContaining whitespaces=".." /> <matchingComplete whitespaces=".." /> </hasText>
Ein Beispiel:
<testcase name="hasText_WithLineBreaks_UsingIGNORE"> <assertThat testDocument="content/diverseContentOnMultiplePages.pdf"> <hasText on="FIRST_PAGE"> <matchingComplete whitespaces="IGNORE"> PDFUnit - Automated PDF Tests http://pdfunit.com/ This is a document that is used for unit tests of PDFUnit itself. Content on first page. odd pagenumber Page # 1 of 4 </matchingComplete> </hasText> </assertThat> </testcase>
In diesem Beispiel wird die erwartete Zeichenkette mit zahlreichen
Zeilenumbrüchen formuliert, die so auf der PDF-Seite nicht exisitieren.
Durch die Angabe whitespaces="IGNORE"
funktioniert der Test trotzdem bestens.
Tests, die Reguläre Ausdrücke verarbeiten, verändern Whitespaces nicht. Bei Bedarf muss die Behandlung der Whitespaces in den regulären Ausdruck integriert werden. Hier ein Beispiel:
(?ms).*print(.*)
Der Teilausdruck (?ms)
bedeutet, dass die Suche über mehrere Zeilen
reicht. Zeilenumbrüche werden als 'Character' interpretiert.