Zurück |  | Weiter

## 13.5. Behandlung von Whitespaces

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.

Zurück | Nach oben | Weiter
13.4. Textvergleich | Zum Anfang | 13.6. Anführungszeichen in Suchbegriffen