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(..)
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.