summaryrefslogtreecommitdiffstats
path: root/tests/auto/pdf/qpdfbookmarkmodel/tst_qpdfbookmarkmodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/pdf/qpdfbookmarkmodel/tst_qpdfbookmarkmodel.cpp')
-rw-r--r--tests/auto/pdf/qpdfbookmarkmodel/tst_qpdfbookmarkmodel.cpp287
1 files changed, 287 insertions, 0 deletions
diff --git a/tests/auto/pdf/qpdfbookmarkmodel/tst_qpdfbookmarkmodel.cpp b/tests/auto/pdf/qpdfbookmarkmodel/tst_qpdfbookmarkmodel.cpp
new file mode 100644
index 000000000..fddc98011
--- /dev/null
+++ b/tests/auto/pdf/qpdfbookmarkmodel/tst_qpdfbookmarkmodel.cpp
@@ -0,0 +1,287 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <QPdfDocument>
+#include <QPdfBookmarkModel>
+
+class tst_QPdfBookmarkModel: public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QPdfBookmarkModel()
+ {
+ qRegisterMetaType<QPdfDocument::Status>();
+ }
+
+private slots:
+ void emptyModel();
+ void setEmptyDocument();
+ void setEmptyDocumentAndLoad();
+ void setLoadedDocument();
+ void unloadDocument();
+ void testTreeStructure();
+ void testListStructure();
+ void testPageNumberRole();
+};
+
+void tst_QPdfBookmarkModel::emptyModel()
+{
+ QPdfBookmarkModel model;
+
+ QVERIFY(!model.document());
+ QCOMPARE(model.structureMode(), QPdfBookmarkModel::TreeMode);
+ QCOMPARE(model.rowCount(), 0);
+ QCOMPARE(model.columnCount(), 1);
+ QCOMPARE(model.index(0, 0).isValid(), false);
+}
+
+void tst_QPdfBookmarkModel::setEmptyDocument()
+{
+ QPdfDocument document;
+ QPdfBookmarkModel model;
+
+ model.setDocument(&document);
+
+ QCOMPARE(model.document(), &document);
+ QCOMPARE(model.structureMode(), QPdfBookmarkModel::TreeMode);
+ QCOMPARE(model.rowCount(), 0);
+ QCOMPARE(model.columnCount(), 1);
+ QCOMPARE(model.index(0, 0).isValid(), false);
+}
+
+void tst_QPdfBookmarkModel::setEmptyDocumentAndLoad()
+{
+ QPdfDocument document;
+ QPdfBookmarkModel model;
+
+ model.setDocument(&document);
+
+ QSignalSpy modelAboutToBeResetSpy(&model, SIGNAL(modelAboutToBeReset()));
+ QSignalSpy modelResetSpy(&model, SIGNAL(modelReset()));
+
+ QCOMPARE(document.load(QFINDTESTDATA("pdf-sample.bookmarks.pdf")), QPdfDocument::NoError);
+
+ QCOMPARE(modelAboutToBeResetSpy.count(), 1);
+ QCOMPARE(modelResetSpy.count(), 1);
+
+ QCOMPARE(model.rowCount(), 3);
+}
+
+void tst_QPdfBookmarkModel::setLoadedDocument()
+{
+ QPdfDocument document;
+ QCOMPARE(document.load(QFINDTESTDATA("pdf-sample.bookmarks.pdf")), QPdfDocument::NoError);
+
+ QPdfBookmarkModel model;
+
+ QSignalSpy modelAboutToBeResetSpy(&model, SIGNAL(modelAboutToBeReset()));
+ QSignalSpy modelResetSpy(&model, SIGNAL(modelReset()));
+
+ model.setDocument(&document);
+
+ QCOMPARE(modelAboutToBeResetSpy.count(), 1);
+ QCOMPARE(modelResetSpy.count(), 1);
+
+ QCOMPARE(model.rowCount(), 3);
+}
+
+void tst_QPdfBookmarkModel::unloadDocument()
+{
+ QPdfDocument document;
+ QCOMPARE(document.load(QFINDTESTDATA("pdf-sample.bookmarks.pdf")), QPdfDocument::NoError);
+
+ QPdfBookmarkModel model;
+ model.setDocument(&document);
+
+ QCOMPARE(model.rowCount(), 3);
+
+ QSignalSpy modelAboutToBeResetSpy(&model, SIGNAL(modelAboutToBeReset()));
+ QSignalSpy modelResetSpy(&model, SIGNAL(modelReset()));
+
+ document.close();
+
+ QCOMPARE(modelAboutToBeResetSpy.count(), 1);
+ QCOMPARE(modelResetSpy.count(), 1);
+
+ QCOMPARE(model.rowCount(), 0);
+}
+
+void tst_QPdfBookmarkModel::testTreeStructure()
+{
+ QPdfDocument document;
+ QCOMPARE(document.load(QFINDTESTDATA("pdf-sample.bookmarks.pdf")), QPdfDocument::NoError);
+
+ QPdfBookmarkModel model;
+ model.setDocument(&document);
+
+ QCOMPARE(model.rowCount(), 3);
+
+ const QModelIndex index1 = model.index(0, 0);
+ QCOMPARE(index1.data(QPdfBookmarkModel::TitleRole).toString(), QLatin1String("Section 1"));
+ QCOMPARE(index1.data(QPdfBookmarkModel::LevelRole).toInt(), 0);
+ QCOMPARE(model.rowCount(index1), 2);
+
+ const QModelIndex index1_1 = model.index(0, 0, index1);
+ QCOMPARE(index1_1.data(QPdfBookmarkModel::TitleRole).toString(), QLatin1String("Section 1.1"));
+ QCOMPARE(index1_1.data(QPdfBookmarkModel::LevelRole).toInt(), 1);
+ QCOMPARE(model.rowCount(index1_1), 0);
+
+ const QModelIndex index1_2 = model.index(1, 0, index1);
+ QCOMPARE(index1_2.data(QPdfBookmarkModel::TitleRole).toString(), QLatin1String("Section 1.2"));
+ QCOMPARE(index1_2.data(QPdfBookmarkModel::LevelRole).toInt(), 1);
+ QCOMPARE(model.rowCount(index1_2), 0);
+
+ const QModelIndex index2 = model.index(1, 0);
+ QCOMPARE(index2.data(QPdfBookmarkModel::TitleRole).toString(), QLatin1String("Section 2"));
+ QCOMPARE(index2.data(QPdfBookmarkModel::LevelRole).toInt(), 0);
+ QCOMPARE(model.rowCount(index2), 2);
+
+ const QModelIndex index2_1 = model.index(0, 0, index2);
+ QCOMPARE(index2_1.data(QPdfBookmarkModel::TitleRole).toString(), QLatin1String("Section 2.1"));
+ QCOMPARE(index2_1.data(QPdfBookmarkModel::LevelRole).toInt(), 1);
+ QCOMPARE(model.rowCount(index2_1), 1);
+
+ const QModelIndex index2_1_1 = model.index(0, 0, index2_1);
+ QCOMPARE(index2_1_1.data(QPdfBookmarkModel::TitleRole).toString(), QLatin1String("Section 2.1.1"));
+ QCOMPARE(index2_1_1.data(QPdfBookmarkModel::LevelRole).toInt(), 2);
+ QCOMPARE(model.rowCount(index2_1_1), 0);
+
+ const QModelIndex index2_2 = model.index(1, 0, index2);
+ QCOMPARE(index2_2.data(QPdfBookmarkModel::TitleRole).toString(), QLatin1String("Section 2.2"));
+ QCOMPARE(index2_2.data(QPdfBookmarkModel::LevelRole).toInt(), 1);
+ QCOMPARE(model.rowCount(index2_2), 0);
+
+ const QModelIndex index3 = model.index(2, 0);
+ QCOMPARE(index3.data(QPdfBookmarkModel::TitleRole).toString(), QLatin1String("Section 3"));
+ QCOMPARE(index3.data(QPdfBookmarkModel::LevelRole).toInt(), 0);
+ QCOMPARE(model.rowCount(index3), 0);
+
+ const QModelIndex index4 = model.index(3, 0);
+ QCOMPARE(index4, QModelIndex());
+}
+
+void tst_QPdfBookmarkModel::testListStructure()
+{
+ QPdfDocument document;
+ QCOMPARE(document.load(QFINDTESTDATA("pdf-sample.bookmarks.pdf")), QPdfDocument::NoError);
+
+ QPdfBookmarkModel model;
+ model.setDocument(&document);
+
+ QSignalSpy modelAboutToBeResetSpy(&model, SIGNAL(modelAboutToBeReset()));
+ QSignalSpy modelResetSpy(&model, SIGNAL(modelReset()));
+
+ model.setStructureMode(QPdfBookmarkModel::ListMode);
+
+ QCOMPARE(modelAboutToBeResetSpy.count(), 1);
+ QCOMPARE(modelResetSpy.count(), 1);
+
+ QCOMPARE(model.rowCount(), 8);
+
+ const QModelIndex index1 = model.index(0, 0);
+ QCOMPARE(index1.data(QPdfBookmarkModel::TitleRole).toString(), QLatin1String("Section 1"));
+ QCOMPARE(index1.data(QPdfBookmarkModel::LevelRole).toInt(), 0);
+ QCOMPARE(model.rowCount(index1), 0);
+
+ const QModelIndex index1_1 = model.index(1, 0);
+ QCOMPARE(index1_1.data(QPdfBookmarkModel::TitleRole).toString(), QLatin1String("Section 1.1"));
+ QCOMPARE(index1_1.data(QPdfBookmarkModel::LevelRole).toInt(), 1);
+ QCOMPARE(model.rowCount(index1_1), 0);
+
+ const QModelIndex index1_2 = model.index(2, 0);
+ QCOMPARE(index1_2.data(QPdfBookmarkModel::TitleRole).toString(), QLatin1String("Section 1.2"));
+ QCOMPARE(index1_2.data(QPdfBookmarkModel::LevelRole).toInt(), 1);
+ QCOMPARE(model.rowCount(index1_2), 0);
+
+ const QModelIndex index2 = model.index(3, 0);
+ QCOMPARE(index2.data(QPdfBookmarkModel::TitleRole).toString(), QLatin1String("Section 2"));
+ QCOMPARE(index2.data(QPdfBookmarkModel::LevelRole).toInt(), 0);
+ QCOMPARE(model.rowCount(index2), 0);
+
+ const QModelIndex index2_1 = model.index(4, 0);
+ QCOMPARE(index2_1.data(QPdfBookmarkModel::TitleRole).toString(), QLatin1String("Section 2.1"));
+ QCOMPARE(index2_1.data(QPdfBookmarkModel::LevelRole).toInt(), 1);
+ QCOMPARE(model.rowCount(index2_1), 0);
+
+ const QModelIndex index2_1_1 = model.index(5, 0);
+ QCOMPARE(index2_1_1.data(QPdfBookmarkModel::TitleRole).toString(), QLatin1String("Section 2.1.1"));
+ QCOMPARE(index2_1_1.data(QPdfBookmarkModel::LevelRole).toInt(), 2);
+ QCOMPARE(model.rowCount(index2_1_1), 0);
+
+ const QModelIndex index2_2 = model.index(6, 0);
+ QCOMPARE(index2_2.data(QPdfBookmarkModel::TitleRole).toString(), QLatin1String("Section 2.2"));
+ QCOMPARE(index2_2.data(QPdfBookmarkModel::LevelRole).toInt(), 1);
+ QCOMPARE(model.rowCount(index2_2), 0);
+
+ const QModelIndex index3 = model.index(7, 0);
+ QCOMPARE(index3.data(QPdfBookmarkModel::TitleRole).toString(), QLatin1String("Section 3"));
+ QCOMPARE(index3.data(QPdfBookmarkModel::LevelRole).toInt(), 0);
+ QCOMPARE(model.rowCount(index3), 0);
+
+ const QModelIndex index4 = model.index(8, 0);
+ QCOMPARE(index4, QModelIndex());
+}
+
+void tst_QPdfBookmarkModel::testPageNumberRole()
+{
+ QPdfDocument document;
+ QCOMPARE(document.load(QFINDTESTDATA("pdf-sample.bookmarks_pages.pdf")), QPdfDocument::NoError);
+
+ QPdfBookmarkModel model;
+ model.setDocument(&document);
+
+ QCOMPARE(model.rowCount(), 3);
+
+ const QModelIndex index1 = model.index(0, 0);
+ QCOMPARE(index1.data(QPdfBookmarkModel::PageNumberRole).toInt(), 0);
+
+ const QModelIndex index2 = model.index(1, 0);
+ QCOMPARE(index2.data(QPdfBookmarkModel::PageNumberRole).toInt(), 1);
+
+ const QModelIndex index2_1 = model.index(0, 0, index2);
+ QCOMPARE(index2_1.data(QPdfBookmarkModel::PageNumberRole).toInt(), 1);
+
+ const QModelIndex index3 = model.index(2, 0);
+ QCOMPARE(index3.data(QPdfBookmarkModel::PageNumberRole).toInt(), 2);
+}
+
+QTEST_MAIN(tst_QPdfBookmarkModel)
+
+#include "tst_qpdfbookmarkmodel.moc"