3.33. Texte - von rechts nach links (RTL)

Überblick

Tests mit RTL-Text unterscheiden sich nicht von Tests mit LTR-Text. Somit stehen alle Vergleichsmethoden für Texte zur Verfügung, wie für LTR-Text:

// Testing page content:
.hasText()                 // pages and regions has to be specified before

// Validating expected text:
.hasText().containing(..) 
.hasText().containing(.., WhitespaceProcessing)
.hasText().endingWith(..)
.hasText().endingWith(.., WhitespaceProcessing)
.hasText().equalsTo(..) 
.hasText().equalsTo(.., WhitespaceProcessing)
.hasText().matchingRegex(..) 
.hasText().startingWith(..) 

// Prove the absence of defined text:
.hasText().notContaining(..) 
.hasText().notContaining(.., WhitespaceProcessing)
.hasText().notEndingWith(..)
.hasText().notMatchingRegex(..) 
.hasText().notStartingWith(..)

// Validate multiple text in an expected order:
.hasText().inOrder(..)
.hasText().containingFirst(..).then(..)

Beispiel - 'hello, world' von rechts nach links

Die nachfolgenden Testbeispiele beziehen sich auf zwei PDF-Dokumente, die den Text 'hello, world' auf Arabisch und auf Hebräisch enthalten:

// Testing RTL text:
@Test
public void hasRTLText_HelloWorld_Arabic() throws Exception {
  String filename = "helloworld_ar.pdf";
  String rtlHelloWorld = "مرحبا، العالم";  // english: 'hello, world!'
  
  int leftX  = 97;
  int upperY = 69;
  int width  = 69;
  int height = 16;
  PageRegion pageRegion = new PageRegion(leftX, upperY, width, height);
  AssertThat.document(filename)
            .restrictedTo(FIRST_PAGE)
            .restrictedTo(pageRegion)
            .hasText()
            .startingWith(rtlHelloWorld)
  ;
}
// Testing RTL text:
@Test
public void hasRTLText_HelloWorld_Hebrew() throws Exception {
  String filename = "helloworld_iw.pdf";
  String rtlHelloWorld = "שלום, עולם";   // english: 'hello, world!'
  
  int leftX  = 97;
  int upperY = 69;
  int width  = 69;
  int height = 16;
  PageRegion pageRegion = new PageRegion(leftX, upperY, width, height);
  AssertThat.document(filename)
            .restrictedTo(FIRST_PAGE)
            .restrictedTo(pageRegion)
            .hasText()
            .endingWith(rtlHelloWorld)
  ;
}

Es ist durchaus nicht uninteressant, dass der Eclipse-Editor die unterschiedlichen Schriften und Schreibrichtungen problemlos umsetzt. Hier ein Screenshot mit dem Java-Code aus dem vorhergehenden Beispiel:

PDFUnit benutzt als PDF-Parser PDFBox. PDFBox erkennt rechts-links ausgerichteten Text und wandelt ihn in einen Java String um, ohne dass Entwickler dafür besondere Methoden aufrufen. Gratulation dafür an das Entwickler-Team.