Zurück |  | Weiter

## 13.4. Textvergleich

Ein erwarteter Text und der tatsächliche Text einer PDF-Seite können auf folgende Art miteinander verglichen werden:

    // Methods with configurable whitespace processing. Default is NORMALIZE:
    .containing(searchToken                                   )
    .containing(searchToken             , WhitespaceProcessing)
    .containing(String[] searchTokens                         )
    .containing(String[] searchTokens   , WhitespaceProcessing)
    .endingWith(searchToken                                   )
    .endingWith(searchToken             , WhitespaceProcessing)
    .equalsTo(searchToken                                     )
    .equalsTo(searchToken               , WhitespaceProcessing)
    .first(searchToken                                        )
    .first(searchToken                  , WhitespaceProcessing)
    .notContaining(searchToken                                )
    .notContaining(searchToken          , WhitespaceProcessing)
    .notContaining(String[] searchTokens                      )
    .notContaining(String[] searchTokens, WhitespaceProcessing)
    .startingWith(searchToken                                 )
    .startingWith(searchToken           , WhitespaceProcessing)
    .then(searchToken)

    // Methods with whitespace processing NORMALIZE:
    .notEndingWith(searchToken)
    .notStartingWith(searchToken)

    // Methods without whitespace processing:
    .matchingRegex(regex)
    .notMatchingRegex(regex)

| Bei diesen Methoden werden die Whitespaces „normalisiert“. Das heißt, Leerzeichen am Anfang und Ende werden entfernt und alle Whitespaces innerhalb eines Textes werden auf ein Leerzeichen reduziert.
| Die Behandlung von Whitespaces wird über den zweiten Parameter gesteuert. Es stehen die Konstanten `IGNORE`, `NORMALIZE` und `KEEP` zur Verfügung, sie sind in Kapitel 13.5: „Behandlung von Whitespaces“ separat beschrieben. Diese Beeinflussung der Whitespace-Behandlung gilt für alle aufgeführten Methoden mit 'WhitespaceProcessing' als zweitem Parameter.
| Die Whitespace-Behandlung der Methoden `first(..)` und `then(..)` hängen zusammen. Die Method `then(..)` behandelt Whitespace genauso, wie die zuvor aufgerufene Methode `first(..)`.

Vergleiche mit Regulären Ausdrücken folgen den Regeln und Möglichkeiten der Klasse `java.util.regex.Pattern` :

    // Using regular expression to compare page content
    @Test
    public void hasText_MatchingRegex() throws Exception {
      String filename = "documentUnderTest.pdf";

      AssertThat.document(filename)
                .restrictedTo(FIRST_PAGE)
                .hasText()
                .matchingRegex(".*[Cc]ontent.*")
      ;
    }

Die Methoden `containing(String[])` und `notContaining(String[])` können mit mehreren Suchbegriffen aufgerufen werden. Ein Test mit `containing(String[])` gilt als erfolgreich, wenn jeder Suchbegriff auf jeder ausgewählten Seiten auftaucht. Ein Test mit `notContaining(String[])` ist erfolgreich, wenn alle Suchbegriffe auf allen ausgewählten Seite fehlen:

    @Test
    public void hasText_NotContaining_MultipleSearchTokens() throws Exception {
      String filename = "documentUnderTest.pdf";

      AssertThat.document(filename)
                .restrictedTo(FIRST_PAGE)
                .hasText()
                .notContaining("even pagenumber", "Page #2")
      ;
    }

Zurück | Nach oben | Weiter
13.3. Seitenausschnitt definieren | Zum Anfang | 13.5. Behandlung von Whitespaces