PDF::PDFUnit - Perl interface to the Java PDFUnit testing framework
This Module is not useable on its own!
It it "just" a Perl wrapper around Carsten Siedentop's awesome PDFUnit (a PDF testing framework written in Java).
use PDF::PDFUnit; AssertThat ->document("test.pdf") ->hasNumberOfPages(1) ;
...or (more typical):
use Test::More; use Test::Exception; use PDF::PDFUnit; lives_ok { AssertThat ->document("test.pdf") ->hasNumberOfPages(1) ; } "Document has one page";
...or (nearly everything is possible):
use Test::More; use Test::Exception; use PDF::PDFUnit; lives_ok { my $leftX = 0; my $upperY = 30; my $width = 210; my $height = 235; my $textBody = PageRegion->new($leftX, $upperY, $width, $height); AssertThat ->document("test.pl") ->restrictedTo(LAST_PAGE) ->restrictedTo($textBody) ->hasNoImage() ->hasNoText() ; } "Last page body should be empty";
As mentioned above, PDF::PDFUnit is just a wrapper. Therefore, we won't repeat the excellent documentation you can find at http://pdfunit.com/en/documentation/java/.
Ok, it's Java, but if you find an example like
@Test public void hasOnePage_en() throws Exception { String filename = "test.pdf"; AssertThat.document(filename) .hasNumberOfPages(1) ; }
it should not be too hard to translate it into the real language:
lives_ok { my $filename = "test.pdf"; AssertThat ->document($filename) ->hasNumberOfPages(1) ; } "Document has one page";
Every method call behind AssertThat is essentially one test. But typically you will use the very convenient fluent interface.
AssertThat
The Java people throw exceptions when their tests fail. Like it or not, PDF::PDFUnit does the same for technical reasons.
Occasionally you want to peek into the thrown PDFUnitValidationException object, because it should contain a helpful message.
PDFUnitValidationException
Under Test::More, you could do something like
diag $@->getMessage() if $@;
Just use print or say otherwise.
print
say
PDF::PDFUnit knows two import tags. Both of them are not intended for public use:
:skip_on_error
This is intended for the distribution tests: If something fails during initialization, then all tests will be skipped. (Trivial case: No configuration file available.)
:noinit
Use this if you want to start the initialization process later. At some point you could then call
PDF::PDFUnit->init();
or even instead
PDF::PDFUnit->load_config(); PDF::PDFUnit->build_classpath(); PDF::PDFUnit->attach_java();
pdfunit-perl.pl uses this. You will probably never need it.
Axel Miesen <miesen@quadraginta-duo.de>
Carsten Siedentop <info@pdfunit.com> for writing PDFUnit-Java
Inline::Java, PDFUnit
To install PDF::PDFUnit, copy and paste the appropriate command in to your terminal.
cpanm
cpanm PDF::PDFUnit
CPAN shell
perl -MCPAN -e shell install PDF::PDFUnit
For more information on module installation, please visit the detailed CPAN module installation guide.