summaryrefslogtreecommitdiffstats
path: root/tests/auto/gui/painting
diff options
context:
space:
mode:
authorSzabolcs David <davidsz@inf.u-szeged.hu>2019-04-08 13:25:54 +0200
committerSzabolcs David <davidsz@inf.u-szeged.hu>2020-04-09 16:45:32 +0200
commit926a0886d1961a3f384d3e6c36919e6dd8055dce (patch)
tree8512058bcec7250a4828f9244b4b431c02eecfa7 /tests/auto/gui/painting
parent4c66b75c894cf2cc7ec15896729d0f93de92f310 (diff)
Support multiple page ranges in QPrinter
Add a new QRangeCollection type to store and manage multiple page ranges. This moves out the parser and validator logic from the platform dependent (UNIX) dialog and makes it publicly available from QPrinter. This improves the usability of QPrinter in those applications which doesn't use print dialog to configure printer. (e.g.: QTextDocument, QWebEnginePage) Change-Id: I0be5a8a64781c411f83b96a24f216605a84958e5 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Diffstat (limited to 'tests/auto/gui/painting')
-rw-r--r--tests/auto/gui/painting/painting.pro1
-rw-r--r--tests/auto/gui/painting/qrangecollection/qrangecollection.pro6
-rw-r--r--tests/auto/gui/painting/qrangecollection/tst_qrangecollection.cpp75
3 files changed, 82 insertions, 0 deletions
diff --git a/tests/auto/gui/painting/painting.pro b/tests/auto/gui/painting/painting.pro
index 3fdb0db760..4bc172e240 100644
--- a/tests/auto/gui/painting/painting.pro
+++ b/tests/auto/gui/painting/painting.pro
@@ -13,6 +13,7 @@ SUBDIRS=\
qpdfwriter \
qpen \
qpaintengine \
+ qrangecollection \
qtransform \
qpolygon \
diff --git a/tests/auto/gui/painting/qrangecollection/qrangecollection.pro b/tests/auto/gui/painting/qrangecollection/qrangecollection.pro
new file mode 100644
index 0000000000..782e8ee59c
--- /dev/null
+++ b/tests/auto/gui/painting/qrangecollection/qrangecollection.pro
@@ -0,0 +1,6 @@
+CONFIG += testcase
+TARGET = tst_qrangecollection
+
+QT += testlib gui-private core-private
+
+SOURCES += tst_qrangecollection.cpp
diff --git a/tests/auto/gui/painting/qrangecollection/tst_qrangecollection.cpp b/tests/auto/gui/painting/qrangecollection/tst_qrangecollection.cpp
new file mode 100644
index 0000000000..826b2fe38b
--- /dev/null
+++ b/tests/auto/gui/painting/qrangecollection/tst_qrangecollection.cpp
@@ -0,0 +1,75 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** 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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include <qrangecollection.h>
+
+typedef QList<QPair<int, int>> PageRangeList;
+
+class tst_QRangeCollection : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void parseFromString_data();
+ void parseFromString();
+};
+
+void tst_QRangeCollection::parseFromString_data()
+{
+ QTest::addColumn<QString>("rangeString");
+ QTest::addColumn<QList<QPair<int, int>>>("rangeList");
+
+ QList<QPair<int, int>> invalid;
+ QTest::newRow("invalid") << QString(",-8")
+ << invalid;
+
+ QList<QPair<int, int>> overlapping;
+ overlapping << qMakePair(1, 3)
+ << qMakePair(5, 11);
+ QTest::newRow("overlapping") << QString("1-3,5-9,6-7,8-11")
+ << overlapping;
+}
+
+void tst_QRangeCollection::parseFromString()
+{
+ QFETCH(QString, rangeString);
+ QFETCH(PageRangeList, rangeList);
+
+ QRangeCollection rangeCollection;
+ rangeCollection.parse(rangeString);
+ QList<QPair<int, int>> result = rangeCollection.toList();
+ QCOMPARE(result.length(), rangeList.length());
+ for (const QPair<int, int> &pair : result) {
+ QVERIFY(rangeList.contains(pair));
+ }
+}
+
+QTEST_APPLESS_MAIN(tst_QRangeCollection)
+
+#include "tst_qrangecollection.moc"