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 folgenden Konstanten zur Verfügung:
// Constants for whitespace processing: com.pdfunit.Constants.IGNORE_WHITESPACES com.pdfunit.Constants.IGNORE com.pdfunit.Constants.KEEP_WHITESPACES com.pdfunit.Constants.KEEP com.pdfunit.Constants.NORMALIZE_WHITESPACES com.pdfunit.Constants.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. |
Jeweils zwei Konstanten haben die gleiche Bedeutung. Sie werden redundant angeboten, um verschiedene sprachliche Vorlieben zu bedienen.
Ein Beispiel:
@Test public void hasText_WithLineBreaks_UsingIGNORE() throws Exception { String filename = "documentUnderTest.pdf"; String expected = "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"; AssertThat.document(filename) .restrictedTo(FIRST_PAGE) .hasText() .equalsTo(expected, IGNORE_WHITESPACES) ; }
In diesem Beispiel wird die erwartete Zeichenkette vollständig ohne Zeilenumbrüche formuliert,
obwohl die PDF-Seite mehrere davon enthält.
Durch die Angabe IGNORE_WHITESPACES
funktioniert der Test trotzdem bestens.
NORMALIZE_WHITESPACES
ist die Standardbehandlung, falls nichts anderes
angegeben wird. Testmethoden, bei denen eine flexible Behandlung von Whitespaces nicht
sinnvoll ist, bieten keine Möglichkeit für eine benutzergesteuerte Whitespace-Behandlung.
Testmethoden, die Reguläre Ausdrücke verarbeiten, verändern Whitespaces nicht. Bei Bedarf muss die Behandlung der Whitespaces in den regulären Ausdruck integriert werden, beispielsweise so:
(?ms).*print(.*)
Der Teilausdruck (?ms)
bedeutet, dass die Suche über mehrere Zeilen
reicht. Zeilenumbrüche werden als 'Character' interpretiert.