summaryrefslogtreecommitdiff
path: root/qt4
diff options
context:
space:
mode:
authorPino Toscano <pino@kde.org>2009-05-13 17:38:00 +0200
committerPino Toscano <pino@kde.org>2009-05-13 17:38:00 +0200
commit51f6cc26fc5fdccce1ba4d4816dec374ce85d67a (patch)
tree1fad36458b45017d37ba58563de8a633f353ab2d /qt4
parent174f8087f5e09c5d1915de128b7a15acf47c1e13 (diff)
[Qt4] start a (basic) unit test for links & destinations
Diffstat (limited to 'qt4')
-rw-r--r--qt4/tests/CMakeLists.txt1
-rw-r--r--qt4/tests/Makefile.am5
-rw-r--r--qt4/tests/check_links.cpp96
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"