diff options
author | Pino Toscano <pino@kde.org> | 2009-05-13 17:38:00 +0200 |
---|---|---|
committer | Pino Toscano <pino@kde.org> | 2009-05-13 17:38:00 +0200 |
commit | 51f6cc26fc5fdccce1ba4d4816dec374ce85d67a (patch) | |
tree | 1fad36458b45017d37ba58563de8a633f353ab2d /qt4 | |
parent | 174f8087f5e09c5d1915de128b7a15acf47c1e13 (diff) |
[Qt4] start a (basic) unit test for links & destinations
Diffstat (limited to 'qt4')
-rw-r--r-- | qt4/tests/CMakeLists.txt | 1 | ||||
-rw-r--r-- | qt4/tests/Makefile.am | 5 | ||||
-rw-r--r-- | qt4/tests/check_links.cpp | 96 |
3 files changed, 102 insertions, 0 deletions
diff --git a/qt4/tests/CMakeLists.txt b/qt4/tests/CMakeLists.txt index 3faa28d5..892ec66c 100644 --- a/qt4/tests/CMakeLists.txt +++ b/qt4/tests/CMakeLists.txt @@ -45,6 +45,7 @@ qt4_add_simpletest(stress-poppler-dir stress-poppler-dir.cpp) qt4_add_qtest(check_attachments check_attachments.cpp) qt4_add_qtest(check_dateConversion check_dateConversion.cpp) qt4_add_qtest(check_fonts check_fonts.cpp) +qt4_add_qtest(check_links check_links.cpp) qt4_add_qtest(check_metadata check_metadata.cpp) qt4_add_qtest(check_optcontent check_optcontent.cpp) qt4_add_qtest(check_pagelayout check_pagelayout.cpp) diff --git a/qt4/tests/Makefile.am b/qt4/tests/Makefile.am index 99c35ef7..ac8213cb 100644 --- a/qt4/tests/Makefile.am +++ b/qt4/tests/Makefile.am @@ -64,6 +64,7 @@ TESTS = \ check_actualtext \ check_dateConversion \ check_fonts \ + check_links \ check_metadata \ check_optcontent \ check_permissions \ @@ -90,6 +91,10 @@ check_fonts_SOURCES = check_fonts.cpp check_fonts.$(OBJEXT): check_fonts.moc check_fonts_LDADD = $(LDADDS) $(POPPLER_QT4_TEST_LIBS) +check_links_SOURCES = check_links.cpp +check_links.$(OBJEXT): check_links.moc +check_links_LDADD = $(LDADDS) $(POPPLER_QT4_TEST_LIBS) + check_metadata_SOURCES = check_metadata.cpp check_metadata.$(OBJEXT): check_metadata.moc check_metadata_LDADD = $(LDADDS) $(POPPLER_QT4_TEST_LIBS) diff --git a/qt4/tests/check_links.cpp b/qt4/tests/check_links.cpp new file mode 100644 index 00000000..2f69a828 --- /dev/null +++ b/qt4/tests/check_links.cpp @@ -0,0 +1,96 @@ +#include <QtTest/QtTest> + +#include <poppler-qt4.h> + +#include <memory> + +class TestLinks : public QObject +{ + Q_OBJECT +private slots: + void checkDocumentWithNoDests(); + void checkDests_xr01(); + void checkDests_xr02(); +}; + +bool isDestinationValid_pageNumber( const Poppler::LinkDestination *dest, const Poppler::Document *doc ) +{ + return dest->pageNumber() > 0 && dest->pageNumber() <= doc->numPages(); +} + +bool isDestinationValid_name( const Poppler::LinkDestination *dest ) +{ + return !dest->destinationName().isEmpty(); +} + + +void TestLinks::checkDocumentWithNoDests() +{ + Poppler::Document *doc; + doc = Poppler::Document::load("../../../test/unittestcases/WithAttachments.pdf"); + QVERIFY( doc ); + + std::auto_ptr< Poppler::LinkDestination > dest; + dest.reset( doc->linkDestination("no.dests.in.this.document") ); + QVERIFY( !isDestinationValid_pageNumber( dest.get(), doc ) ); + QVERIFY( isDestinationValid_name( dest.get() ) ); + + delete doc; +} + +void TestLinks::checkDests_xr01() +{ + Poppler::Document *doc; + doc = Poppler::Document::load("../../../test/unittestcases/xr01.pdf"); + QVERIFY( doc ); + + Poppler::Page *page = doc->page(0); + QVERIFY( page ); + + QList< Poppler::Link* > links = page->links(); + QCOMPARE( links.count(), 2 ); + + { + QCOMPARE( links.at(0)->linkType(), Poppler::Link::Goto ); + Poppler::LinkGoto *link = static_cast< Poppler::LinkGoto * >( links.at(0) ); + const Poppler::LinkDestination dest = link->destination(); + QVERIFY( !isDestinationValid_pageNumber( &dest, doc ) ); + QVERIFY( isDestinationValid_name( &dest ) ); + QCOMPARE( dest.destinationName(), QString::fromLatin1("section.1") ); + } + + { + QCOMPARE( links.at(1)->linkType(), Poppler::Link::Goto ); + Poppler::LinkGoto *link = static_cast< Poppler::LinkGoto * >( links.at(1) ); + const Poppler::LinkDestination dest = link->destination(); + QVERIFY( !isDestinationValid_pageNumber( &dest, doc ) ); + QVERIFY( isDestinationValid_name( &dest ) ); + QCOMPARE( dest.destinationName(), QString::fromLatin1("section.2") ); + } + + delete doc; +} + +void TestLinks::checkDests_xr02() +{ + Poppler::Document *doc; + doc = Poppler::Document::load("../../../test/unittestcases/xr02.pdf"); + QVERIFY( doc ); + + std::auto_ptr< Poppler::LinkDestination > dest; + dest.reset( doc->linkDestination("section.1") ); + QVERIFY( isDestinationValid_pageNumber( dest.get(), doc ) ); + QVERIFY( !isDestinationValid_name( dest.get() ) ); + dest.reset( doc->linkDestination("section.2") ); + QVERIFY( isDestinationValid_pageNumber( dest.get(), doc ) ); + QVERIFY( !isDestinationValid_name( dest.get() ) ); + dest.reset( doc->linkDestination("section.3") ); + QVERIFY( !isDestinationValid_pageNumber( dest.get(), doc ) ); + QVERIFY( isDestinationValid_name( dest.get() ) ); + + delete doc; +} + +QTEST_MAIN(TestLinks) + +#include "check_links.moc" |