summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp8
-rw-r--r--tests/auto/gui/painting/painting.pro3
-rw-r--r--tests/auto/gui/painting/qpagelayout/.gitignore1
-rw-r--r--tests/auto/gui/painting/qpagelayout/qpagelayout.pro9
-rw-r--r--tests/auto/gui/painting/qpagelayout/tst_qpagelayout.cpp277
-rw-r--r--tests/auto/gui/painting/qpagesize/.gitignore1
-rw-r--r--tests/auto/gui/painting/qpagesize/qpagesize.pro9
-rw-r--r--tests/auto/gui/painting/qpagesize/tst_qpagesize.cpp258
-rw-r--r--tests/auto/gui/painting/qpdfwriter/.gitignore1
-rw-r--r--tests/auto/gui/painting/qpdfwriter/qpdfwriter.pro9
-rw-r--r--tests/auto/gui/painting/qpdfwriter/tst_qpdfwriter.cpp265
-rw-r--r--tests/auto/printsupport/kernel/kernel.pro1
-rw-r--r--tests/auto/printsupport/kernel/qprintdevice/.gitignore1
-rw-r--r--tests/auto/printsupport/kernel/qprintdevice/qprintdevice.pro9
-rw-r--r--tests/auto/printsupport/kernel/qprintdevice/tst_qprintdevice.cpp111
-rw-r--r--tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp462
-rw-r--r--tests/auto/printsupport/kernel/qprinterinfo/tst_qprinterinfo.cpp94
-rw-r--r--tests/manual/qprintdevice_dump/main.cpp181
-rw-r--r--tests/manual/qprintdevice_dump/qprintdevice_dump.pro6
19 files changed, 1489 insertions, 217 deletions
diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
index 0e3ea86165..959c79ed60 100644
--- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
+++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
@@ -278,15 +278,21 @@ void tst_QMetaType::threadSafety()
namespace TestSpace
{
struct Foo { double d; };
-
+ struct QungTfu {};
}
Q_DECLARE_METATYPE(TestSpace::Foo)
+#define ADD_TESTSPACE(F) TestSpace::F
+Q_DECLARE_METATYPE(ADD_TESTSPACE(QungTfu))
+
void tst_QMetaType::namespaces()
{
TestSpace::Foo nf = { 11.12 };
QVariant v = QVariant::fromValue(nf);
QCOMPARE(qvariant_cast<TestSpace::Foo>(v).d, 11.12);
+
+ int qungTfuId = qRegisterMetaType<ADD_TESTSPACE(QungTfu)>();
+ QCOMPARE(QMetaType::typeName(qungTfuId), "TestSpace::QungTfu");
}
void tst_QMetaType::qMetaTypeId()
diff --git a/tests/auto/gui/painting/painting.pro b/tests/auto/gui/painting/painting.pro
index 8f018fd921..0f7595c871 100644
--- a/tests/auto/gui/painting/painting.pro
+++ b/tests/auto/gui/painting/painting.pro
@@ -5,8 +5,11 @@ SUBDIRS=\
qcolor \
qbrush \
qregion \
+ qpagelayout \
+ qpagesize \
qpainter \
qpathclipper \
+ qpdfwriter \
qpen \
qpaintengine \
qtransform \
diff --git a/tests/auto/gui/painting/qpagelayout/.gitignore b/tests/auto/gui/painting/qpagelayout/.gitignore
new file mode 100644
index 0000000000..7c7dcd262b
--- /dev/null
+++ b/tests/auto/gui/painting/qpagelayout/.gitignore
@@ -0,0 +1 @@
+tst_qpagelayout
diff --git a/tests/auto/gui/painting/qpagelayout/qpagelayout.pro b/tests/auto/gui/painting/qpagelayout/qpagelayout.pro
new file mode 100644
index 0000000000..38a1064357
--- /dev/null
+++ b/tests/auto/gui/painting/qpagelayout/qpagelayout.pro
@@ -0,0 +1,9 @@
+CONFIG += testcase
+CONFIG += parallel_test
+TARGET = tst_qpagelayout
+SOURCES += tst_qpagelayout.cpp
+
+QT += gui-private testlib
+
+DEFINES += QT_USE_USING_NAMESPACE
+DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
diff --git a/tests/auto/gui/painting/qpagelayout/tst_qpagelayout.cpp b/tests/auto/gui/painting/qpagelayout/tst_qpagelayout.cpp
new file mode 100644
index 0000000000..30d25f00d2
--- /dev/null
+++ b/tests/auto/gui/painting/qpagelayout/tst_qpagelayout.cpp
@@ -0,0 +1,277 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 John Layt <jlayt@kde.org>
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 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 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include <QtGui/qpagelayout.h>
+
+class tst_QPageLayout : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void invalid();
+ void basics();
+ void setGetMargins();
+};
+
+void tst_QPageLayout::invalid()
+{
+ // Invalid
+ QPageLayout invalid = QPageLayout();
+ QCOMPARE(invalid.isValid(), false);
+ invalid = QPageLayout(QPageSize(), QPageLayout::Portrait, QMarginsF());
+ QCOMPARE(invalid.isValid(), false);
+}
+
+void tst_QPageLayout::basics()
+{
+ // Simple A4, no margins
+ QPageLayout simple = QPageLayout(QPageSize(QPageSize::A4), QPageLayout::Portrait, QMarginsF(0, 0, 0, 0));
+ QCOMPARE(simple.isValid(), true);
+ QCOMPARE(simple.pageSize().id(), QPageSize::A4);
+ QCOMPARE(simple.orientation(), QPageLayout::Portrait);
+ QCOMPARE(simple.margins(), QMarginsF(0, 0, 0, 0));
+ QCOMPARE(simple.margins(QPageLayout::Millimeter), QMarginsF(0, 0, 0, 0));
+ QCOMPARE(simple.marginsPoints(), QMargins(0, 0, 0, 0));
+ QCOMPARE(simple.marginsPixels(72), QMargins(0, 0, 0, 0));
+ QCOMPARE(simple.minimumMargins(), QMarginsF(0, 0, 0, 0));
+ QCOMPARE(simple.maximumMargins(), QMarginsF(595, 842, 595, 842));
+ QCOMPARE(simple.fullRect(), QRectF(0, 0, 595, 842));
+ QCOMPARE(simple.fullRect(QPageLayout::Millimeter), QRectF(0, 0, 210, 297));
+ QCOMPARE(simple.fullRectPoints(), QRect(0, 0, 595, 842));
+ QCOMPARE(simple.fullRectPixels(72), QRect(0, 0, 595, 842));
+ QCOMPARE(simple.paintRect(), QRectF(0, 0, 595, 842));
+ QCOMPARE(simple.paintRect(QPageLayout::Millimeter), QRectF(0, 0, 210, 297));
+ QCOMPARE(simple.paintRectPoints(), QRect(0, 0, 595, 842));
+ QCOMPARE(simple.paintRectPixels(72), QRect(0, 0, 595, 842));
+
+ // Change orientation
+ simple.setOrientation(QPageLayout::Landscape);
+ QCOMPARE(simple.orientation(), QPageLayout::Landscape);
+ QCOMPARE(simple.margins(), QMarginsF(0, 0, 0, 0));
+ QCOMPARE(simple.minimumMargins(), QMarginsF(0, 0, 0, 0));
+ QCOMPARE(simple.maximumMargins(), QMarginsF(842, 595, 842, 595));
+ QCOMPARE(simple.fullRect(), QRectF(0, 0, 842, 595));
+ QCOMPARE(simple.fullRect(QPageLayout::Millimeter), QRectF(0, 0, 297, 210));
+ QCOMPARE(simple.fullRectPoints(), QRect(0, 0, 842, 595));
+ QCOMPARE(simple.fullRectPixels(72), QRect(0, 0, 842, 595));
+ QCOMPARE(simple.paintRect(), QRectF(0, 0, 842, 595));
+ QCOMPARE(simple.paintRect(QPageLayout::Millimeter), QRectF(0, 0, 297, 210));
+ QCOMPARE(simple.paintRectPoints(), QRect(0, 0, 842, 595));
+ QCOMPARE(simple.paintRectPixels(72), QRect(0, 0, 842, 595));
+
+ // Change mode
+ QCOMPARE(simple.mode(), QPageLayout::StandardMode);
+ simple.setMode(QPageLayout::FullPageMode);
+ QCOMPARE(simple.mode(), QPageLayout::FullPageMode);
+ QCOMPARE(simple.orientation(), QPageLayout::Landscape);
+ QCOMPARE(simple.margins(), QMarginsF(0, 0, 0, 0));
+ QCOMPARE(simple.minimumMargins(), QMarginsF(0, 0, 0, 0));
+ QCOMPARE(simple.maximumMargins(), QMarginsF(842, 595, 842, 595));
+ QCOMPARE(simple.fullRect(), QRectF(0, 0, 842, 595));
+ QCOMPARE(simple.fullRect(QPageLayout::Millimeter), QRectF(0, 0, 297, 210));
+ QCOMPARE(simple.fullRectPoints(), QRect(0, 0, 842, 595));
+ QCOMPARE(simple.fullRectPixels(72), QRect(0, 0, 842, 595));
+ QCOMPARE(simple.paintRect(), QRectF(0, 0, 842, 595));
+ QCOMPARE(simple.paintRect(QPageLayout::Millimeter), QRectF(0, 0, 297, 210));
+ QCOMPARE(simple.paintRectPoints(), QRect(0, 0, 842, 595));
+ QCOMPARE(simple.paintRectPixels(72), QRect(0, 0, 842, 595));
+
+ // A4, 10pt margins
+ QPageLayout tenpoint = QPageLayout(QPageSize(QPageSize::A4), QPageLayout::Portrait, QMarginsF(10, 10, 10, 10));
+ QCOMPARE(tenpoint.isValid(), true);
+ QCOMPARE(tenpoint.margins(), QMarginsF(10, 10, 10, 10));
+ QCOMPARE(tenpoint.margins(QPageLayout::Millimeter), QMarginsF(3.53, 3.53, 3.53, 3.53));
+ QCOMPARE(tenpoint.marginsPoints(), QMargins(10, 10, 10, 10));
+ QCOMPARE(tenpoint.marginsPixels(72), QMargins(10, 10, 10, 10));
+ QCOMPARE(tenpoint.minimumMargins(), QMarginsF(0, 0, 0, 0));
+ QCOMPARE(tenpoint.maximumMargins(), QMarginsF(595, 842, 595, 842));
+ QCOMPARE(tenpoint.fullRect(), QRectF(0, 0, 595, 842));
+ QCOMPARE(tenpoint.fullRect(QPageLayout::Millimeter), QRectF(0, 0, 210, 297));
+ QCOMPARE(tenpoint.fullRectPoints(), QRect(0, 0, 595, 842));
+ QCOMPARE(tenpoint.fullRectPixels(72), QRect(0, 0, 595, 842));
+ QCOMPARE(tenpoint.paintRect(), QRectF(10, 10, 575, 822));
+ QCOMPARE(tenpoint.paintRect(QPageLayout::Millimeter), QRectF(3.53, 3.53, 202.94, 289.94));
+ QCOMPARE(tenpoint.paintRect(QPageLayout::Millimeter).x(), 3.53);
+ QCOMPARE(tenpoint.paintRect(QPageLayout::Millimeter).y(), 3.53);
+ QCOMPARE(tenpoint.paintRect(QPageLayout::Millimeter).width(), 202.94);
+ QCOMPARE(tenpoint.paintRect(QPageLayout::Millimeter).height(), 289.94);
+ QCOMPARE(tenpoint.paintRect(QPageLayout::Millimeter).left(), 3.53);
+ QCOMPARE(tenpoint.paintRect(QPageLayout::Millimeter).right(), 206.47);
+ QCOMPARE(tenpoint.paintRect(QPageLayout::Millimeter).top(), 3.53);
+ QCOMPARE(tenpoint.paintRect(QPageLayout::Millimeter).bottom(), 293.47);
+ QCOMPARE(tenpoint.paintRectPoints(), QRect(10, 10, 575, 822));
+ QCOMPARE(tenpoint.paintRectPixels(72), QRect(10, 10, 575, 822));
+
+ // Change orientation
+ tenpoint.setOrientation(QPageLayout::Landscape);
+ QCOMPARE(tenpoint.orientation(), QPageLayout::Landscape);
+ QCOMPARE(tenpoint.margins(), QMarginsF(10, 10, 10, 10));
+ QCOMPARE(tenpoint.minimumMargins(), QMarginsF(0, 0, 0, 0));
+ QCOMPARE(tenpoint.maximumMargins(), QMarginsF(842, 595, 842, 595));
+ QCOMPARE(tenpoint.fullRect(), QRectF(0, 0, 842, 595));
+ QCOMPARE(tenpoint.fullRect(QPageLayout::Millimeter), QRectF(0, 0, 297, 210));
+ QCOMPARE(tenpoint.fullRectPoints(), QRect(0, 0, 842, 595));
+ QCOMPARE(tenpoint.fullRectPixels(72), QRect(0, 0, 842, 595));
+ QCOMPARE(tenpoint.paintRect(), QRectF(10, 10, 822, 575));
+ QCOMPARE(tenpoint.paintRect(QPageLayout::Millimeter), QRectF(3.53, 3.53, 289.94, 202.94));
+ QCOMPARE(tenpoint.paintRectPoints(), QRect(10, 10, 822, 575));
+ QCOMPARE(tenpoint.paintRectPixels(72), QRect(10, 10, 822, 575));
+
+ // Change mode
+ QCOMPARE(tenpoint.mode(), QPageLayout::StandardMode);
+ tenpoint.setMode(QPageLayout::FullPageMode);
+ QCOMPARE(tenpoint.mode(), QPageLayout::FullPageMode);
+ QCOMPARE(tenpoint.orientation(), QPageLayout::Landscape);
+ QCOMPARE(tenpoint.margins(), QMarginsF(10, 10, 10, 10));
+ QCOMPARE(tenpoint.minimumMargins(), QMarginsF(0, 0, 0, 0));
+ QCOMPARE(tenpoint.maximumMargins(), QMarginsF(842, 595, 842, 595));
+ QCOMPARE(tenpoint.fullRect(), QRectF(0, 0, 842, 595));
+ QCOMPARE(tenpoint.fullRect(QPageLayout::Millimeter), QRectF(0, 0, 297, 210));
+ QCOMPARE(tenpoint.fullRectPoints(), QRect(0, 0, 842, 595));
+ QCOMPARE(tenpoint.fullRectPixels(72), QRect(0, 0, 842, 595));
+ QCOMPARE(tenpoint.paintRect(), QRectF(0, 0, 842, 595));
+ QCOMPARE(tenpoint.paintRect(QPageLayout::Millimeter), QRectF(0, 0, 297, 210));
+ QCOMPARE(tenpoint.paintRectPoints(), QRect(0, 0, 842, 595));
+ QCOMPARE(tenpoint.paintRectPixels(72), QRect(0, 0, 842, 595));
+}
+
+void tst_QPageLayout::setGetMargins()
+{
+ // A4, 20pt margins
+ QMarginsF margins = QMarginsF(10, 10, 10, 10);
+ QMarginsF min = QMarginsF(10, 10, 10, 10);
+ QMarginsF max = QMarginsF(585, 832, 585, 832);
+ QPageLayout change = QPageLayout(QPageSize(QPageSize::A4), QPageLayout::Portrait, margins, QPageLayout::Point, min);
+ QCOMPARE(change.isValid(), true);
+ QCOMPARE(change.margins(), margins);
+ QCOMPARE(change.margins(QPageLayout::Millimeter), QMarginsF(3.53, 3.53, 3.53, 3.53));
+ QCOMPARE(change.marginsPoints(), QMargins(10, 10, 10, 10));
+ QCOMPARE(change.marginsPixels(72), QMargins(10, 10, 10, 10));
+ QCOMPARE(change.minimumMargins(), min);
+ QCOMPARE(change.maximumMargins(), max);
+
+ // Set magins within min/max ok
+ margins = QMarginsF(20, 20, 20, 20);
+ change.setMargins(margins);
+ QCOMPARE(change.margins(QPageLayout::Millimeter), QMarginsF(7.06, 7.06, 7.06, 7.06));
+ QCOMPARE(change.marginsPoints(), QMargins(20, 20, 20, 20));
+ QCOMPARE(change.marginsPixels(72), QMargins(20, 20, 20, 20));
+ QCOMPARE(change.margins(), margins);
+
+ // Set margins all below min is rejected
+ change.setMargins(QMarginsF(0, 0, 0, 0));
+ QCOMPARE(change.margins(), margins);
+
+ // Set margins all above max is rejected
+ change.setMargins(QMarginsF(1000, 1000, 1000, 1000));
+ QCOMPARE(change.margins(), margins);
+
+ // Only 1 wrong, set still rejects
+ change.setMargins(QMarginsF(50, 50, 50, 0));
+ QCOMPARE(change.margins(), margins);
+
+ // Set page size resets min/max, clamps existing margins
+ change.setMargins(change.maximumMargins());
+ change.setPageSize(QPageSize(QPageSize::A5));
+ QCOMPARE(change.margins(), QMarginsF(420, 595, 420, 595));
+ QCOMPARE(change.minimumMargins(), QMarginsF(0, 0, 0, 0));
+ QCOMPARE(change.maximumMargins(), QMarginsF(420, 595, 420, 595));
+
+ // Set page size, sets min/max, clamps existing margins
+ margins = QMarginsF(20, 500, 20, 500);
+ change.setMargins(margins);
+ QCOMPARE(change.margins(), margins);
+ min = QMarginsF(30, 30, 30, 30);
+ max = QMarginsF(267, 390, 267, 390);
+ change.setPageSize(QPageSize(QPageSize::A6));
+ change.setMinimumMargins(min);
+ QCOMPARE(change.margins(), QMarginsF(30, 390, 30, 390));
+ QCOMPARE(change.minimumMargins(), min);
+ QCOMPARE(change.maximumMargins(), max);
+
+ // A4, 20pt margins
+ margins = QMarginsF(20, 20, 20, 20);
+ min = QMarginsF(10, 10, 10, 10);
+ max = QMarginsF(585, 832, 585, 832);
+ QPageLayout fullPage = QPageLayout(QPageSize(QPageSize::A4), QPageLayout::Portrait, margins, QPageLayout::Point, min);
+ fullPage.setMode(QPageLayout::FullPageMode);
+ QCOMPARE(fullPage.isValid(), true);
+ QCOMPARE(fullPage.margins(), margins);
+ QCOMPARE(fullPage.minimumMargins(), min);
+ QCOMPARE(fullPage.maximumMargins(), max);
+
+ // Set margins within min/max ok
+ margins = QMarginsF(50, 50, 50, 50);
+ fullPage.setMargins(margins);
+ QCOMPARE(fullPage.margins(), margins);
+
+ // Set margins all below min is accepted
+ margins = QMarginsF(0, 0, 0, 0);
+ fullPage.setMargins(margins);
+ QCOMPARE(fullPage.margins(), margins);
+
+ // Set margins all above max is rejected
+ margins = QMarginsF(1000, 1000, 1000, 1000);
+ fullPage.setMargins(margins);
+ QCOMPARE(fullPage.margins(), margins);
+
+ // Only 1 wrong, set still accepts
+ margins = QMarginsF(50, 50, 50, 0);
+ fullPage.setMargins(margins);
+ QCOMPARE(fullPage.margins(), margins);
+
+ // Set page size, sets min/max, clamps existing margins
+ margins = QMarginsF(20, 500, 20, 500);
+ fullPage.setMargins(margins);
+ QCOMPARE(fullPage.margins(), margins);
+ min = QMarginsF(30, 30, 30, 30);
+ max = QMarginsF(267, 390, 267, 390);
+ fullPage.setPageSize(QPageSize(QPageSize::A6));
+ fullPage.setMinimumMargins(min);
+ QCOMPARE(fullPage.margins(), margins);
+ QCOMPARE(fullPage.minimumMargins(), min);
+ QCOMPARE(fullPage.maximumMargins(), max);
+}
+
+QTEST_APPLESS_MAIN(tst_QPageLayout)
+
+#include "tst_qpagelayout.moc"
diff --git a/tests/auto/gui/painting/qpagesize/.gitignore b/tests/auto/gui/painting/qpagesize/.gitignore
new file mode 100644
index 0000000000..773a466f6d
--- /dev/null
+++ b/tests/auto/gui/painting/qpagesize/.gitignore
@@ -0,0 +1 @@
+tst_qpagesize
diff --git a/tests/auto/gui/painting/qpagesize/qpagesize.pro b/tests/auto/gui/painting/qpagesize/qpagesize.pro
new file mode 100644
index 0000000000..5836dc9ba0
--- /dev/null
+++ b/tests/auto/gui/painting/qpagesize/qpagesize.pro
@@ -0,0 +1,9 @@
+CONFIG += testcase
+CONFIG += parallel_test
+TARGET = tst_qpagesize
+SOURCES += tst_qpagesize.cpp
+
+QT += testlib
+
+DEFINES += QT_USE_USING_NAMESPACE
+DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
diff --git a/tests/auto/gui/painting/qpagesize/tst_qpagesize.cpp b/tests/auto/gui/painting/qpagesize/tst_qpagesize.cpp
new file mode 100644
index 0000000000..968c5ff617
--- /dev/null
+++ b/tests/auto/gui/painting/qpagesize/tst_qpagesize.cpp
@@ -0,0 +1,258 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 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 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include <QtGlobal>
+#include <QtAlgorithms>
+#include <QtGui/QPageSize>
+
+#ifdef Q_OS_WIN
+#include <QtCore/qt_windows.h>
+#endif // Q_OS_WIN
+
+class tst_QPageSize : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void basics();
+ void fuzzy();
+ void custom();
+ void statics();
+};
+
+void tst_QPageSize::basics()
+{
+ // Invalid
+ QPageSize invalid = QPageSize(QPageSize::Custom);
+ QCOMPARE(invalid.isValid(), false);
+ invalid = QPageSize(QSize());
+ QCOMPARE(invalid.isValid(), false);
+ invalid = QPageSize(QSizeF(), QPageSize::Millimeter);
+ QCOMPARE(invalid.isValid(), false);
+
+ // Simple QPageSize::PaperSizeId
+ QPageSize a4 = QPageSize(QPageSize::A4);
+ QCOMPARE(a4.isValid(), true);
+ QCOMPARE(a4.key(), QString("A4"));
+ QCOMPARE(a4.name(), QString("A4"));
+ QCOMPARE(a4.id(), QPageSize::A4);
+#ifdef Q_OS_WIN
+ QCOMPARE(a4.windowsId(), DMPAPER_A4);
+#else
+ QCOMPARE(a4.windowsId(), 9); // DMPAPER_A4
+#endif
+ QCOMPARE(a4.definitionSize(), QSizeF(210, 297));
+ QCOMPARE(a4.definitionUnits(), QPageSize::Millimeter);
+ QCOMPARE(a4.size(QPageSize::Millimeter), QSizeF(210, 297));
+ QCOMPARE(a4.size(QPageSize::Inch), QSizeF(8.27, 11.69));
+ QCOMPARE(a4.size(QPageSize::Pica), QSizeF(49.58, 70.17));
+ QCOMPARE(a4.sizePoints(), QSize(595, 842));
+ QCOMPARE(a4.sizePixels(72), QSize(595, 842));
+ QCOMPARE(a4.rect(QPageSize::Millimeter), QRectF(0, 0, 210, 297));
+ QCOMPARE(a4.rect(QPageSize::Inch), QRectF(0, 0, 8.27, 11.69));
+ QCOMPARE(a4.rect(QPageSize::Pica), QRectF(0, 0, 49.58, 70.17));
+ QCOMPARE(a4.rectPoints(), QRect(0, 0, 595, 842));
+ QCOMPARE(a4.rectPixels(72), QRect(0, 0, 595, 842));
+
+ // Simple QPageSize::PaperSizeId later in list
+ QPageSize folio = QPageSize(QPageSize::Folio);
+ QCOMPARE(folio.isValid(), true);
+ QCOMPARE(folio.key(), QString("Folio"));
+ QCOMPARE(folio.name(), QString("Folio (8.27 x 13 in)"));
+ QCOMPARE(folio.id(), QPageSize::Folio);
+ QCOMPARE(folio.definitionSize(), QSizeF(210, 330));
+ QCOMPARE(folio.definitionUnits(), QPageSize::Millimeter);
+ QCOMPARE(folio.size(QPageSize::Millimeter), QSizeF(210, 330));
+ QCOMPARE(folio.sizePoints(), QSize(595, 935));
+ QCOMPARE(folio.sizePixels(72), QSize(595, 935));
+ QCOMPARE(folio.size(QPageSize::Inch), QSizeF(8.27, 13));
+
+ // Simple QPageSize::PaperSizeId last in list
+ QPageSize you4 = QPageSize(QPageSize::EnvelopeYou4);
+ QCOMPARE(you4.isValid(), true);
+ QCOMPARE(you4.key(), QString("EnvYou4"));
+ QCOMPARE(you4.name(), QString("Envelope You 4"));
+ QCOMPARE(you4.id(), QPageSize::EnvelopeYou4);
+#ifdef Q_OS_WIN
+ QCOMPARE(you4.windowsId(), DMPAPER_JENV_YOU4);
+#else
+ QCOMPARE(you4.windowsId(), 91);
+#endif
+ QCOMPARE(you4.size(QPageSize::Millimeter), QSizeF(105, 235));
+ QCOMPARE(you4.size(QPageSize::Inch), QSizeF(4.13, 9.25));
+ QCOMPARE(you4.sizePoints(), QSize(298, 666));
+ QCOMPARE(you4.sizePixels(72), QSize(298, 666));
+
+ // Simple QSize in Points
+ QPageSize a4b = QPageSize(QSize(595, 842));
+ QCOMPARE(a4b.isValid(), true);
+ QCOMPARE(a4b.id(), QPageSize::A4);
+ QCOMPARE(a4b.sizePoints(), QSize(595, 842));
+
+ // Simple QSize in Points later in list, custom name
+ QPageSize folio2 = QPageSize(QSize(595, 935), QStringLiteral("Folio2"));
+ QCOMPARE(folio2.isValid(), true);
+ QCOMPARE(folio2.name(), QString("Folio2"));
+ QCOMPARE(folio2.id(), QPageSize::Folio);
+ QCOMPARE(folio2.sizePoints(), QSize(595, 935));
+
+ // Comparisons
+ QCOMPARE((a4 == folio), false);
+ QCOMPARE((a4.isEquivalentTo(folio)), false);
+ QCOMPARE((a4 == a4b), true);
+ QCOMPARE((a4.isEquivalentTo(a4b)), true);
+ QCOMPARE((folio == folio2), false); // Name different
+ QCOMPARE((folio.isEquivalentTo(folio2)), true);
+
+ // Simple QSize in Millimeters
+ QPageSize folio3 = QPageSize(QSizeF(210, 330), QPageSize::Millimeter);
+ QCOMPARE(folio3.isValid(), true);
+ QCOMPARE(folio3.id(), QPageSize::Folio);
+ QCOMPARE(folio3.sizePoints(), QSize(595, 935));
+}
+
+void tst_QPageSize::fuzzy()
+{
+ // Using FuzzyMatch by default
+
+ // Simple QSize within 3 Points
+ QPageSize a4a = QPageSize(QSize(592, 845));
+ QCOMPARE(a4a.isValid(), true);
+ QCOMPARE(a4a.id(), QPageSize::A4);
+ QCOMPARE(a4a.sizePoints(), QSize(595, 842));
+
+ // Simple QSizeF within 1mm
+ QPageSize a4b = QPageSize(QSizeF(211, 298), QPageSize::Millimeter);
+ QCOMPARE(a4b.isValid(), true);
+ QCOMPARE(a4b.id(), QPageSize::A4);
+ QCOMPARE(a4b.size(QPageSize::Millimeter), QSizeF(210, 297));
+ QCOMPARE(a4b.sizePoints(), QSize(595, 842));
+
+ // Using FuzzyOrientationMatch
+
+ // Exact A4 in landscape mode
+ QPageSize a4l = QPageSize(QSize(842, 595));
+ QCOMPARE(a4l.isValid(), true);
+ QCOMPARE(a4l.id(), QPageSize::Custom);
+ QCOMPARE(a4l.sizePoints(), QSize(842, 595));
+
+ a4l = QPageSize(QSize(842, 595), QString(), QPageSize::FuzzyOrientationMatch);
+ QCOMPARE(a4l.isValid(), true);
+ QCOMPARE(a4l.id(), QPageSize::A4);
+ QCOMPARE(a4l.sizePoints(), QSize(595, 842));
+
+ // Using ExactMatch
+
+ // Simple QSize within 3 Points
+ QPageSize a4d = QPageSize(QSize(592, 845), QString(), QPageSize::ExactMatch);
+ QCOMPARE(a4d.isValid(), true);
+ QCOMPARE(a4d.id(), QPageSize::Custom);
+ QCOMPARE(a4d.sizePoints(), QSize(592, 845));
+
+ // Simple QSizeF within 1mm
+ QPageSize a4e = QPageSize(QSizeF(211, 298), QPageSize::Millimeter, QString(), QPageSize::ExactMatch);
+ QCOMPARE(a4e.isValid(), true);
+ QCOMPARE(a4e.id(), QPageSize::Custom);
+ QCOMPARE(a4e.size(QPageSize::Millimeter), QSizeF(211, 298));
+ QCOMPARE(a4e.sizePoints(), QSize(598, 845));
+}
+
+void tst_QPageSize::custom()
+{
+ // Simple non-standard Points QSize
+ QPageSize custom1 = QPageSize(QSize(500, 600));
+ QCOMPARE(custom1.isValid(), true);
+ QCOMPARE(custom1.key(), QString("Custom.500x600"));
+ QCOMPARE(custom1.name(), QString("Custom (500pt x 600pt)"));
+ QCOMPARE(custom1.id(), QPageSize::Custom);
+ QCOMPARE(custom1.definitionSize(), QSizeF(500, 600));
+ QCOMPARE(custom1.definitionUnits(), QPageSize::Point);
+ QCOMPARE(custom1.size(QPageSize::Millimeter), QSizeF(176.39, 211.67));
+ QCOMPARE(custom1.size(QPageSize::Pica), QSizeF(41.67, 50));
+ QCOMPARE(custom1.sizePoints(), QSize(500, 600));
+ QCOMPARE(custom1.sizePixels(72), QSize(500, 600));
+
+ // Simple non-standard MM QSizeF
+ QPageSize custom2 = QPageSize(QSizeF(500.3, 600.57), QPageSize::Millimeter);
+ QCOMPARE(custom2.isValid(), true);
+ QCOMPARE(custom2.key(), QString("Custom.500.3x600.57mm"));
+ QCOMPARE(custom2.name(), QString("Custom (500.3mm x 600.57mm)"));
+ QCOMPARE(custom2.id(), QPageSize::Custom);
+ QCOMPARE(custom2.definitionSize(), QSizeF(500.3, 600.57));
+ QCOMPARE(custom2.definitionUnits(), QPageSize::Millimeter);
+ QCOMPARE(custom2.size(QPageSize::Millimeter), QSizeF(500.3, 600.57));
+ QCOMPARE(custom2.size(QPageSize::Pica), QSizeF(118.18, 141.87));
+ QCOMPARE(custom2.sizePoints(), QSize(1418, 1702));
+ QCOMPARE(custom2.sizePixels(72), QSize(1418, 1702));
+}
+
+void tst_QPageSize::statics()
+{
+ QCOMPARE(QPageSize::key(QPageSize::EnvelopeYou4), QString("EnvYou4"));
+ QCOMPARE(QPageSize::name(QPageSize::EnvelopeYou4), QString("Envelope You 4"));
+
+#ifdef Q_OS_WIN
+ QCOMPARE(QPageSize::windowsId(QPageSize::EnvelopeYou4), DMPAPER_JENV_YOU4);
+ QCOMPARE(QPageSize::id(DMPAPER_JENV_YOU4), QPageSize::EnvelopeYou4);
+ QCOMPARE(QPageSize::id(DMPAPER_A4_ROTATED), QPageSize::A4);
+#else
+ QCOMPARE(QPageSize::windowsId(QPageSize::EnvelopeYou4), 91);
+ QCOMPARE(QPageSize::id(91), QPageSize::EnvelopeYou4);
+ QCOMPARE(QPageSize::id(77), QPageSize::A4);
+#endif
+
+ QCOMPARE(QPageSize::id(QSize(298, 666)), QPageSize::EnvelopeYou4);
+ QCOMPARE(QPageSize::id(QSizeF(105, 235), QPageSize::Millimeter), QPageSize::EnvelopeYou4);
+
+ QCOMPARE(QPageSize::definitionSize(QPageSize::Letter), QSizeF(8.5, 11));
+ QCOMPARE(QPageSize::definitionUnits(QPageSize::Letter), QPageSize::Inch);
+ QCOMPARE(QPageSize::definitionSize(QPageSize::EnvelopeYou4), QSizeF(105, 235));
+ QCOMPARE(QPageSize::definitionUnits(QPageSize::EnvelopeYou4), QPageSize::Millimeter);
+
+ QCOMPARE(QPageSize::size(QPageSize::EnvelopeYou4, QPageSize::Millimeter), QSizeF(105, 235));
+ QCOMPARE(QPageSize::sizePoints(QPageSize::EnvelopeYou4), QSize(298, 666));
+ QCOMPARE(QPageSize::sizePixels(QPageSize::EnvelopeYou4, 72), QSize(298, 666));
+}
+
+QTEST_APPLESS_MAIN(tst_QPageSize)
+
+#include "tst_qpagesize.moc"
diff --git a/tests/auto/gui/painting/qpdfwriter/.gitignore b/tests/auto/gui/painting/qpdfwriter/.gitignore
new file mode 100644
index 0000000000..5307a5ed2a
--- /dev/null
+++ b/tests/auto/gui/painting/qpdfwriter/.gitignore
@@ -0,0 +1 @@
+tst_qpdfwriter
diff --git a/tests/auto/gui/painting/qpdfwriter/qpdfwriter.pro b/tests/auto/gui/painting/qpdfwriter/qpdfwriter.pro
new file mode 100644
index 0000000000..fda0fad3b5
--- /dev/null
+++ b/tests/auto/gui/painting/qpdfwriter/qpdfwriter.pro
@@ -0,0 +1,9 @@
+CONFIG += testcase
+CONFIG += parallel_test
+TARGET = tst_qpdfwriter
+SOURCES += tst_qpdfwriter.cpp
+
+QT += gui-private testlib
+
+DEFINES += QT_USE_USING_NAMESPACE
+DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
diff --git a/tests/auto/gui/painting/qpdfwriter/tst_qpdfwriter.cpp b/tests/auto/gui/painting/qpdfwriter/tst_qpdfwriter.cpp
new file mode 100644
index 0000000000..f06351b7b7
--- /dev/null
+++ b/tests/auto/gui/painting/qpdfwriter/tst_qpdfwriter.cpp
@@ -0,0 +1,265 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 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 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include <QtGlobal>
+#include <QtAlgorithms>
+#include <QtGui/QPageLayout>
+#include <QtGui/QPdfWriter>
+
+class tst_QPdfWriter : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void basics();
+ void testPageMetrics_data();
+ void testPageMetrics();
+};
+
+void tst_QPdfWriter::basics()
+{
+ QTemporaryFile file;
+ if (!file.open())
+ QSKIP("Couldn't open temp file!");
+ QPdfWriter writer(file.fileName());
+
+ QCOMPARE(writer.title(), QString());
+ writer.setTitle(QString("Test Title"));
+ QCOMPARE(writer.title(), QString("Test Title"));
+
+ QCOMPARE(writer.creator(), QString());
+ writer.setCreator(QString("Test Creator"));
+ QCOMPARE(writer.creator(), QString("Test Creator"));
+
+ QCOMPARE(writer.resolution(), 1200);
+ writer.setResolution(600);
+ QCOMPARE(writer.resolution(), 600);
+
+ QCOMPARE(writer.pageLayout().pageSize().id(), QPageSize::A4);
+ QCOMPARE(writer.pageSize(), QPdfWriter::A4);
+ QCOMPARE(writer.pageSizeMM(), QSizeF(210, 297));
+
+ writer.setPageSize(QPageSize(QPageSize::A5));
+ QCOMPARE(writer.pageLayout().pageSize().id(), QPageSize::A5);
+ QCOMPARE(writer.pageSize(), QPdfWriter::A5);
+ QCOMPARE(writer.pageSizeMM(), QSizeF(148, 210));
+
+ writer.setPageSize(QPdfWriter::A3);
+ QCOMPARE(writer.pageLayout().pageSize().id(), QPageSize::A3);
+ QCOMPARE(writer.pageSize(), QPdfWriter::A3);
+ QCOMPARE(writer.pageSizeMM(), QSizeF(297, 420));
+
+ writer.setPageSizeMM(QSize(210, 297));
+ QCOMPARE(writer.pageLayout().pageSize().id(), QPageSize::A4);
+ QCOMPARE(writer.pageSize(), QPdfWriter::A4);
+ QCOMPARE(writer.pageSizeMM(), QSizeF(210, 297));
+
+ QCOMPARE(writer.pageLayout().orientation(), QPageLayout::Portrait);
+ writer.setPageOrientation(QPageLayout::Landscape);
+ QCOMPARE(writer.pageLayout().orientation(), QPageLayout::Landscape);
+ QCOMPARE(writer.pageSizeMM(), QSizeF(210, 297));
+
+ QCOMPARE(writer.pageLayout().margins(), QMarginsF(10, 10, 10, 10));
+ QCOMPARE(writer.pageLayout().units(), QPageLayout::Point);
+ QCOMPARE(writer.margins().left, 3.53); // mm
+ QCOMPARE(writer.margins().right, 3.53);
+ QCOMPARE(writer.margins().top, 3.53);
+ QCOMPARE(writer.margins().bottom, 3.53);
+ writer.setPageMargins(QMarginsF(20, 20, 20, 20), QPageLayout::Millimeter);
+ QCOMPARE(writer.pageLayout().margins(), QMarginsF(20, 20, 20, 20));
+ QCOMPARE(writer.pageLayout().units(), QPageLayout::Millimeter);
+ QCOMPARE(writer.margins().left, 20.0);
+ QCOMPARE(writer.margins().right, 20.0);
+ QCOMPARE(writer.margins().top, 20.0);
+ QCOMPARE(writer.margins().bottom, 20.0);
+ QPdfWriter::Margins margins = {50, 50, 50, 50};
+ writer.setMargins(margins);
+ QCOMPARE(writer.pageLayout().margins(), QMarginsF(50, 50, 50, 50));
+ QCOMPARE(writer.pageLayout().units(), QPageLayout::Millimeter);
+ QCOMPARE(writer.margins().left, 50.0);
+ QCOMPARE(writer.margins().right, 50.0);
+ QCOMPARE(writer.margins().top, 50.0);
+ QCOMPARE(writer.margins().bottom, 50.0);
+
+ QCOMPARE(writer.pageLayout().fullRect(QPageLayout::Millimeter), QRectF(0, 0, 297, 210));
+ QCOMPARE(writer.pageLayout().paintRect(QPageLayout::Millimeter), QRectF(50, 50, 197, 110));
+}
+
+// Test the old page metrics methods, see also QPrinter tests for the same.
+void tst_QPdfWriter::testPageMetrics_data()
+{
+ QTest::addColumn<int>("pageSize");
+ QTest::addColumn<qreal>("widthMMf");
+ QTest::addColumn<qreal>("heightMMf");
+ QTest::addColumn<bool>("setMargins");
+ QTest::addColumn<qreal>("leftMMf");
+ QTest::addColumn<qreal>("rightMMf");
+ QTest::addColumn<qreal>("topMMf");
+ QTest::addColumn<qreal>("bottomMMf");
+
+ QTest::newRow("A4") << int(QPdfWriter::A4) << 210.0 << 297.0 << false << 3.53 << 3.53 << 3.53 << 3.53;
+ QTest::newRow("A4 Margins") << int(QPdfWriter::A4) << 210.0 << 297.0 << true << 20.0 << 30.0 << 40.0 << 50.0;
+ QTest::newRow("Portrait") << -1 << 345.0 << 678.0 << false << 3.53 << 3.53 << 3.53 << 3.53;
+ QTest::newRow("Portrait Margins") << -1 << 345.0 << 678.0 << true << 20.0 << 30.0 << 40.0 << 50.0;
+ QTest::newRow("Landscape") << -1 << 678.0 << 345.0 << false << 3.53 << 3.53 << 3.53 << 3.53;
+ QTest::newRow("Landscape Margins") << -1 << 678.0 << 345.0 << true << 20.0 << 30.0 << 40.0 << 50.0;
+}
+
+void tst_QPdfWriter::testPageMetrics()
+{
+ QFETCH(int, pageSize);
+ QFETCH(qreal, widthMMf);
+ QFETCH(qreal, heightMMf);
+ QFETCH(bool, setMargins);
+ QFETCH(qreal, leftMMf);
+ QFETCH(qreal, rightMMf);
+ QFETCH(qreal, topMMf);
+ QFETCH(qreal, bottomMMf);
+
+ QSizeF sizeMMf = QSizeF(widthMMf, heightMMf);
+
+ QTemporaryFile file;
+ if (!file.open())
+ QSKIP("Couldn't open temp file!");
+ QPdfWriter writer(file.fileName());
+ QCOMPARE(writer.pageLayout().orientation(), QPageLayout::Portrait);
+
+ if (setMargins) {
+ // Setup the given margins
+ QPdfWriter::Margins margins;
+ margins.left = leftMMf;
+ margins.right = rightMMf;
+ margins.top = topMMf;
+ margins.bottom = bottomMMf;
+ writer.setMargins(margins);
+ QCOMPARE(writer.margins().left, leftMMf);
+ QCOMPARE(writer.margins().right, rightMMf);
+ QCOMPARE(writer.margins().top, topMMf);
+ QCOMPARE(writer.margins().bottom, bottomMMf);
+ }
+
+
+ // Set the given size, in Portrait mode
+ if (pageSize < 0) {
+ writer.setPageSizeMM(sizeMMf);
+ QCOMPARE(writer.pageSize(), QPdfWriter::Custom);
+ QCOMPARE(writer.pageLayout().pageSize().id(), QPageSize::Custom);
+ } else {
+ writer.setPageSize(QPdfWriter::PageSize(pageSize));
+ QCOMPARE(writer.pageSize(), QPdfWriter::PageSize(pageSize));
+ QCOMPARE(writer.pageLayout().pageSize().id(), QPageSize::PageSizeId(pageSize));
+ }
+ QCOMPARE(writer.pageLayout().orientation(), QPageLayout::Portrait);
+ QCOMPARE(writer.margins().left, leftMMf);
+ QCOMPARE(writer.margins().right, rightMMf);
+ QCOMPARE(writer.margins().top, topMMf);
+ QCOMPARE(writer.margins().bottom, bottomMMf);
+
+ // QPagedPaintDevice::pageSizeMM() always returns Portrait
+ QCOMPARE(writer.pageSizeMM(), sizeMMf);
+
+ // QPagedPaintDevice::widthMM() and heightMM() are paint metrics and always return set orientation
+ QCOMPARE(writer.widthMM(), qRound(widthMMf - leftMMf - rightMMf));
+ QCOMPARE(writer.heightMM(), qRound(heightMMf - topMMf - bottomMMf));
+
+ // Now switch to Landscape mode, size should be unchanged, but rect and metrics should change
+ writer.setPageOrientation(QPageLayout::Landscape);
+ if (pageSize < 0) {
+ QCOMPARE(writer.pageSize(), QPdfWriter::Custom);
+ QCOMPARE(writer.pageLayout().pageSize().id(), QPageSize::Custom);
+ } else {
+ QCOMPARE(writer.pageSize(), QPdfWriter::PageSize(pageSize));
+ QCOMPARE(writer.pageLayout().pageSize().id(), QPageSize::PageSizeId(pageSize));
+ }
+ QCOMPARE(writer.pageLayout().orientation(), QPageLayout::Landscape);
+ QCOMPARE(writer.margins().left, leftMMf);
+ QCOMPARE(writer.margins().right, rightMMf);
+ QCOMPARE(writer.margins().top, topMMf);
+ QCOMPARE(writer.margins().bottom, bottomMMf);
+
+ // QPagedPaintDevice::pageSizeMM() always returns Portrait
+ QCOMPARE(writer.pageSizeMM(), sizeMMf);
+
+ // QPagedPaintDevice::widthMM() and heightMM() are paint metrics and always return set orientation
+ QCOMPARE(writer.widthMM(), qRound(heightMMf - leftMMf - rightMMf));
+ QCOMPARE(writer.heightMM(), qRound(widthMMf - topMMf - bottomMMf));
+
+ // QPdfWriter::fullRect() always returns set orientation
+ QCOMPARE(writer.pageLayout().fullRect(QPageLayout::Millimeter), QRectF(0, 0, heightMMf, widthMMf));
+
+ // QPdfWriter::paintRect() always returns set orientation
+ QCOMPARE(writer.pageLayout().paintRect(QPageLayout::Millimeter), QRectF(leftMMf, topMMf, heightMMf - leftMMf - rightMMf, widthMMf - topMMf - bottomMMf));
+
+
+ // Now while in Landscape mode, set the size again, results should be the same
+ if (pageSize < 0) {
+ writer.setPageSizeMM(sizeMMf);
+ QCOMPARE(writer.pageSize(), QPdfWriter::Custom);
+ QCOMPARE(writer.pageLayout().pageSize().id(), QPageSize::Custom);
+ } else {
+ writer.setPageSize(QPdfWriter::PageSize(pageSize));
+ QCOMPARE(writer.pageSize(), QPdfWriter::PageSize(pageSize));
+ QCOMPARE(writer.pageLayout().pageSize().id(), QPageSize::PageSizeId(pageSize));
+ }
+ QCOMPARE(writer.pageLayout().orientation(), QPageLayout::Landscape);
+ QCOMPARE(writer.margins().left, leftMMf);
+ QCOMPARE(writer.margins().right, rightMMf);
+ QCOMPARE(writer.margins().top, topMMf);
+ QCOMPARE(writer.margins().bottom, bottomMMf);
+
+ // QPagedPaintDevice::pageSizeMM() always returns Portrait
+ QCOMPARE(writer.pageSizeMM(), sizeMMf);
+
+ // QPagedPaintDevice::widthMM() and heightMM() are paint metrics and always return set orientation
+ QCOMPARE(writer.widthMM(), qRound(heightMMf - leftMMf - rightMMf));
+ QCOMPARE(writer.heightMM(), qRound(widthMMf - topMMf - bottomMMf));
+
+ // QPdfWriter::fullRect() always returns set orientation
+ QCOMPARE(writer.pageLayout().fullRect(QPageLayout::Millimeter), QRectF(0, 0, heightMMf, widthMMf));
+
+ // QPdfWriter::paintRect() always returns set orientation
+ QCOMPARE(writer.pageLayout().paintRect(QPageLayout::Millimeter), QRectF(leftMMf, topMMf, heightMMf - leftMMf - rightMMf, widthMMf - topMMf - bottomMMf));
+}
+
+QTEST_MAIN(tst_QPdfWriter)
+
+#include "tst_qpdfwriter.moc"
diff --git a/tests/auto/printsupport/kernel/kernel.pro b/tests/auto/printsupport/kernel/kernel.pro
index 6f5802bf3e..0566556e01 100644
--- a/tests/auto/printsupport/kernel/kernel.pro
+++ b/tests/auto/printsupport/kernel/kernel.pro
@@ -1,4 +1,5 @@
TEMPLATE=subdirs
SUBDIRS=\
+ qprintdevice \
qprinter \
qprinterinfo \
diff --git a/tests/auto/printsupport/kernel/qprintdevice/.gitignore b/tests/auto/printsupport/kernel/qprintdevice/.gitignore
new file mode 100644
index 0000000000..fcef7c1997
--- /dev/null
+++ b/tests/auto/printsupport/kernel/qprintdevice/.gitignore
@@ -0,0 +1 @@
+tst_qprinterinfo
diff --git a/tests/auto/printsupport/kernel/qprintdevice/qprintdevice.pro b/tests/auto/printsupport/kernel/qprintdevice/qprintdevice.pro
new file mode 100644
index 0000000000..fb11b0361e
--- /dev/null
+++ b/tests/auto/printsupport/kernel/qprintdevice/qprintdevice.pro
@@ -0,0 +1,9 @@
+CONFIG += testcase
+CONFIG += parallel_test
+TARGET = tst_qprintdevice
+SOURCES += tst_qprintdevice.cpp
+
+QT += printsupport-private network testlib
+
+DEFINES += QT_USE_USING_NAMESPACE
+DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
diff --git a/tests/auto/printsupport/kernel/qprintdevice/tst_qprintdevice.cpp b/tests/auto/printsupport/kernel/qprintdevice/tst_qprintdevice.cpp
new file mode 100644
index 0000000000..1064b18168
--- /dev/null
+++ b/tests/auto/printsupport/kernel/qprintdevice/tst_qprintdevice.cpp
@@ -0,0 +1,111 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 John Layt <jlayt@kde.org>
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 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 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+
+#include <qpa/qplatformprintplugin.h>
+#include <qpa/qplatformprintersupport.h>
+
+#include <private/qprintdevice_p.h>
+
+class tst_QPrintDevice : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void basics();
+};
+
+void tst_QPrintDevice::basics()
+{
+#ifndef QT_NO_PRINTER
+ QPlatformPrinterSupport *ps = QPlatformPrinterSupportPlugin::get();
+ if (!ps)
+ QSKIP("Could not load platform plugin");
+
+ QString defaultId = ps->defaultPrintDeviceId();
+ if (defaultId.isEmpty()) {
+ qDebug() << "No default printer found";
+ } else {
+ qDebug() << "Default Printer ID :" << defaultId;
+ QVERIFY(ps->availablePrintDeviceIds().contains(defaultId));
+ }
+
+ qDebug() << "Available Printer IDs :" << ps->availablePrintDeviceIds();
+
+ // Just exercise the api for now as we don't know what is installed
+ foreach (const QString id, ps->availablePrintDeviceIds()) {
+ QPrintDevice printDevice = ps->createPrintDevice(id);
+ qDebug() << "Created printer" << id;
+ QCOMPARE(printDevice.isValid(), true);
+ printDevice.id();
+ printDevice.name();
+ printDevice.location();
+ printDevice.makeAndModel();
+ printDevice.isValid();
+ printDevice.isDefault();
+ printDevice.isRemote();
+ printDevice.state();
+ printDevice.supportsMultipleCopies();
+ printDevice.supportsCollateCopies();
+ printDevice.defaultPageSize();
+ printDevice.supportedPageSizes();
+ printDevice.supportsCustomPageSizes();
+ printDevice.minimumPhysicalPageSize();
+ printDevice.maximumPhysicalPageSize();
+ printDevice.defaultResolution();
+ printDevice.supportedResolutions();
+ printDevice.defaultInputSlot();
+ printDevice.supportedInputSlots();
+ printDevice.defaultOutputBin();
+ printDevice.supportedOutputBins();
+ printDevice.defaultDuplexMode();
+ printDevice.supportedDuplexModes();
+ printDevice.defaultColorMode();
+ printDevice.supportedColorModes();
+ printDevice.supportedMimeTypes();
+ }
+#endif // QT_NO_PRINTER
+}
+
+QTEST_MAIN(tst_QPrintDevice)
+
+#include "tst_qprintdevice.moc"
diff --git a/tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp b/tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp
index b138f34967..5d99cca8d9 100644
--- a/tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp
+++ b/tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp
@@ -51,6 +51,7 @@
#include <qvariant.h>
#include <qpainter.h>
#include <qprintengine.h>
+#include <qpagelayout.h>
#include <math.h>
@@ -88,9 +89,6 @@ public slots:
void cleanupTestCase();
#else
private slots:
-#ifdef Q_OS_WIN
- void testNonExistentPrinter();
-#endif
void testPageRectAndPaperRect();
void testPageRectAndPaperRect_data();
void testSetOptions();
@@ -103,7 +101,6 @@ private slots:
void testPageMargins_data();
void testPageMargins();
void outputFormatFromSuffix();
- void setGetPaperSize();
void errorReporting();
void testCustomPageSizes();
void customPaperSizeAndMargins_data();
@@ -116,8 +113,6 @@ private slots:
void testCurrentPage();
void taskQTBUG4497_reusePrinterOnDifferentFiles();
void testPdfTitle();
- void testPageMetrics_data();
- void testPageMetrics();
// Test QPrintEngine keys and their QPrinter setters/getters
void testMultipleKeys();
@@ -148,6 +143,9 @@ private slots:
// Test QPrinter setters/getters for non-QPrintEngine options
void outputFormat();
void fromToPage();
+
+ void testPageMetrics_data();
+ void testPageMetrics();
#endif
};
@@ -356,40 +354,6 @@ void tst_QPrinter::testMargins()
QFile::remove("silly");
}
-#ifdef Q_OS_WIN
-// QPrinter::testNonExistentPrinter() is not relevant for this platform
-void tst_QPrinter::testNonExistentPrinter()
-{
- QPrinter printer;
- QPainter painter;
-
- // Make sure it doesn't crash on setting or getting properties
- printer.printEngine()->setProperty(QPrintEngine::PPK_PrinterName, "some non existing printer");
- printer.setPageSize(QPrinter::A4);
- printer.setOrientation(QPrinter::Portrait);
- printer.setFullPage(true);
- printer.pageSize();
- printer.orientation();
- printer.fullPage();
- printer.setCopyCount(1);
- printer.printerName();
-
- // nor metrics
- QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmWidth), 0);
- QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmHeight), 0);
- QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmWidthMM), 0);
- QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmHeightMM), 0);
- QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmNumColors), 0);
- QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmDepth), 0);
- QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmDpiX), 0);
- QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmDpiY), 0);
- QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmPhysicalDpiX), 0);
- QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmPhysicalDpiY), 0);
-
- QVERIFY(!painter.begin(&printer));
-}
-#endif
-
void tst_QPrinter::testMulitpleSets_data()
{
QTest::addColumn<int>("resolution");
@@ -477,20 +441,6 @@ void tst_QPrinter::outputFormatFromSuffix()
QVERIFY(p.outputFormat() == QPrinter::NativeFormat);
}
-void tst_QPrinter::setGetPaperSize()
-{
- QPrinter p;
- p.setOutputFormat(QPrinter::PdfFormat);
- QSizeF size(500, 10);
- p.setPaperSize(size, QPrinter::Millimeter);
- QCOMPARE(p.paperSize(QPrinter::Millimeter), size);
- QCOMPARE(p.pageSizeMM(), size);
- QSizeF ptSize = p.paperSize(QPrinter::Point);
- //qDebug() << ptSize;
- QVERIFY(qAbs(ptSize.width() - size.width() * (72/25.4)) < 1E-4);
- QVERIFY(qAbs(ptSize.height() - size.height() * (72/25.4)) < 1E-4);
-}
-
void tst_QPrinter::testPageMargins_data()
{
QTest::addColumn<qreal>("left");
@@ -499,11 +449,12 @@ void tst_QPrinter::testPageMargins_data()
QTest::addColumn<qreal>("bottom");
QTest::addColumn<int>("unit");
- QTest::newRow("data0") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Millimeter);
- QTest::newRow("data1") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Point);
+ // Use custom margins that will exceed most printers minimum allowed
+ QTest::newRow("data0") << qreal(25.5) << qreal(26.5) << qreal(27.5) << qreal(28.5) << static_cast<int>(QPrinter::Millimeter);
+ QTest::newRow("data1") << qreal(55.5) << qreal(56.5) << qreal(57.5) << qreal(58.5) << static_cast<int>(QPrinter::Point);
QTest::newRow("data2") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Inch);
QTest::newRow("data3") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Pica);
- QTest::newRow("data4") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Didot);
+ QTest::newRow("data4") << qreal(55.5) << qreal(56.5) << qreal(57.5) << qreal(58.5) << static_cast<int>(QPrinter::Didot);
QTest::newRow("data5") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Cicero);
}
@@ -511,61 +462,54 @@ void tst_QPrinter::testPageMargins()
{
QPrinter obj1;
- qreal toMillimeters[6];
- toMillimeters[QPrinter::Millimeter] = 1;
- toMillimeters[QPrinter::Point] = 0.352777778;
- toMillimeters[QPrinter::Inch] = 25.4;
- toMillimeters[QPrinter::Pica] = 4.23333333;
- toMillimeters[QPrinter::Didot] = 0.376;
- toMillimeters[QPrinter::Cicero] = 4.51166667;
-
QFETCH(qreal, left);
QFETCH(qreal, top);
QFETCH(qreal, right);
QFETCH(qreal, bottom);
QFETCH(int, unit);
- qreal nLeft, nTop, nRight, nBottom;
+ QPageLayout layout = QPageLayout(QPageSize(QPageSize::A0), QPageLayout::Portrait,
+ QMarginsF(left, top, right, bottom), QPageLayout::Unit(unit));
- obj1.setPageMargins(left, top, right, bottom, static_cast<QPrinter::Unit>(unit));
+ qreal nLeft, nTop, nRight, nBottom;
- qreal tolerance = 0.05;
+ obj1.setPageMargins(left, top, right, bottom, QPrinter::Unit(unit));
obj1.getPageMargins(&nLeft, &nTop, &nRight, &nBottom, QPrinter::Millimeter);
- QVERIFY(fabs(left*toMillimeters[unit] - nLeft*toMillimeters[QPrinter::Millimeter]) < tolerance);
- QVERIFY(fabs(top*toMillimeters[unit] - nTop*toMillimeters[QPrinter::Millimeter]) < tolerance);
- QVERIFY(fabs(right*toMillimeters[unit] - nRight*toMillimeters[QPrinter::Millimeter]) < tolerance);
- QVERIFY(fabs(bottom*toMillimeters[unit] - nBottom*toMillimeters[QPrinter::Millimeter]) < tolerance);
+ QCOMPARE(nLeft, layout.margins(QPageLayout::Millimeter).left());
+ QCOMPARE(nRight, layout.margins(QPageLayout::Millimeter).right());
+ QCOMPARE(nTop, layout.margins(QPageLayout::Millimeter).top());
+ QCOMPARE(nBottom, layout.margins(QPageLayout::Millimeter).bottom());
obj1.getPageMargins(&nLeft, &nTop, &nRight, &nBottom, QPrinter::Point);
- QVERIFY(fabs(left*toMillimeters[unit] - nLeft*toMillimeters[QPrinter::Point]) < tolerance);
- QVERIFY(fabs(top*toMillimeters[unit] - nTop*toMillimeters[QPrinter::Point]) < tolerance);
- QVERIFY(fabs(right*toMillimeters[unit] - nRight*toMillimeters[QPrinter::Point]) < tolerance);
- QVERIFY(fabs(bottom*toMillimeters[unit] - nBottom*toMillimeters[QPrinter::Point]) < tolerance);
+ QCOMPARE(nLeft, layout.margins(QPageLayout::Point).left());
+ QCOMPARE(nRight, layout.margins(QPageLayout::Point).right());
+ QCOMPARE(nTop, layout.margins(QPageLayout::Point).top());
+ QCOMPARE(nBottom, layout.margins(QPageLayout::Point).bottom());
obj1.getPageMargins(&nLeft, &nTop, &nRight, &nBottom, QPrinter::Inch);
- QVERIFY(fabs(left*toMillimeters[unit] - nLeft*toMillimeters[QPrinter::Inch]) < tolerance);
- QVERIFY(fabs(top*toMillimeters[unit] - nTop*toMillimeters[QPrinter::Inch]) < tolerance);
- QVERIFY(fabs(right*toMillimeters[unit] - nRight*toMillimeters[QPrinter::Inch]) < tolerance);
- QVERIFY(fabs(bottom*toMillimeters[unit] - nBottom*toMillimeters[QPrinter::Inch]) < tolerance);
+ QCOMPARE(nLeft, layout.margins(QPageLayout::Inch).left());
+ QCOMPARE(nRight, layout.margins(QPageLayout::Inch).right());
+ QCOMPARE(nTop, layout.margins(QPageLayout::Inch).top());
+ QCOMPARE(nBottom, layout.margins(QPageLayout::Inch).bottom());
obj1.getPageMargins(&nLeft, &nTop, &nRight, &nBottom, QPrinter::Pica);
- QVERIFY(fabs(left*toMillimeters[unit] - nLeft*toMillimeters[QPrinter::Pica]) < tolerance);
- QVERIFY(fabs(top*toMillimeters[unit] - nTop*toMillimeters[QPrinter::Pica]) < tolerance);
- QVERIFY(fabs(right*toMillimeters[unit] - nRight*toMillimeters[QPrinter::Pica]) < tolerance);
- QVERIFY(fabs(bottom*toMillimeters[unit] - nBottom*toMillimeters[QPrinter::Pica]) < tolerance);
+ QCOMPARE(nLeft, layout.margins(QPageLayout::Pica).left());
+ QCOMPARE(nRight, layout.margins(QPageLayout::Pica).right());
+ QCOMPARE(nTop, layout.margins(QPageLayout::Pica).top());
+ QCOMPARE(nBottom, layout.margins(QPageLayout::Pica).bottom());
obj1.getPageMargins(&nLeft, &nTop, &nRight, &nBottom, QPrinter::Didot);
- QVERIFY(fabs(left*toMillimeters[unit] - nLeft*toMillimeters[QPrinter::Didot]) < tolerance);
- QVERIFY(fabs(top*toMillimeters[unit] - nTop*toMillimeters[QPrinter::Didot]) < tolerance);
- QVERIFY(fabs(right*toMillimeters[unit] - nRight*toMillimeters[QPrinter::Didot]) < tolerance);
- QVERIFY(fabs(bottom*toMillimeters[unit] - nBottom*toMillimeters[QPrinter::Didot]) < tolerance);
+ QCOMPARE(nLeft, layout.margins(QPageLayout::Didot).left());
+ QCOMPARE(nRight, layout.margins(QPageLayout::Didot).right());
+ QCOMPARE(nTop, layout.margins(QPageLayout::Didot).top());
+ QCOMPARE(nBottom, layout.margins(QPageLayout::Didot).bottom());
obj1.getPageMargins(&nLeft, &nTop, &nRight, &nBottom, QPrinter::Cicero);
- QVERIFY(fabs(left*toMillimeters[unit] - nLeft*toMillimeters[QPrinter::Cicero]) < tolerance);
- QVERIFY(fabs(top*toMillimeters[unit] - nTop*toMillimeters[QPrinter::Cicero]) < tolerance);
- QVERIFY(fabs(right*toMillimeters[unit] - nRight*toMillimeters[QPrinter::Cicero]) < tolerance);
- QVERIFY(fabs(bottom*toMillimeters[unit] - nBottom*toMillimeters[QPrinter::Cicero]) < tolerance);
+ QCOMPARE(nLeft, layout.margins(QPageLayout::Cicero).left());
+ QCOMPARE(nRight, layout.margins(QPageLayout::Cicero).right());
+ QCOMPARE(nTop, layout.margins(QPageLayout::Cicero).top());
+ QCOMPARE(nBottom, layout.margins(QPageLayout::Cicero).bottom());
}
void tst_QPrinter::errorReporting()
@@ -586,13 +530,6 @@ void tst_QPrinter::errorReporting()
painter.end();
}
-static QByteArray msgSizeMismatch(const QSizeF &actual, const QSizeF &expected)
-{
- QString result;
- QDebug(&result) << "Paper size mismatch" << actual << "!=" << expected;
- return result.toLocal8Bit();
-}
-
void tst_QPrinter::testCustomPageSizes()
{
QPrinter p;
@@ -601,16 +538,14 @@ void tst_QPrinter::testCustomPageSizes()
p.setPaperSize(customSize, QPrinter::Inch);
QSizeF paperSize = p.paperSize(QPrinter::Inch);
- // Due to the different calculations, the sizes may be off by a fraction so we have to check it manually
- // instead of relying on QSizeF comparison
- QVERIFY2(sqrt(pow(paperSize.width() - customSize.width(), 2.0) + pow(paperSize.height() - customSize.height(), 2.0)) < 0.01,
- msgSizeMismatch(paperSize, customSize));
+ QCOMPARE(paperSize.width(), customSize.width());
+ QCOMPARE(paperSize.height(), customSize.height());
QPrinter p2(QPrinter::HighResolution);
p2.setPaperSize(customSize, QPrinter::Inch);
paperSize = p.paperSize(QPrinter::Inch);
- QVERIFY2(sqrt(pow(paperSize.width() - customSize.width(), 2.0) + pow(paperSize.height() - customSize.height(), 2.0)) < 0.01,
- msgSizeMismatch(paperSize, customSize));
+ QCOMPARE(paperSize.width(), customSize.width());
+ QCOMPARE(paperSize.height(), customSize.height());
}
void tst_QPrinter::customPaperSizeAndMargins_data()
@@ -622,10 +557,11 @@ void tst_QPrinter::customPaperSizeAndMargins_data()
QTest::addColumn<qreal>("right");
QTest::addColumn<qreal>("bottom");
- QTest::newRow("beforeNoPDF") << false << true << qreal(2) << qreal(2) << qreal(2) << qreal(2);
- QTest::newRow("beforePDF") << true << true << qreal(2) << qreal(2) << qreal(2) << qreal(2);
- QTest::newRow("afterNoPDF") << false << false << qreal(2) << qreal(2) << qreal(2) << qreal(2);
- QTest::newRow("afterAfterPDF") << true << false << qreal(2) << qreal(2) << qreal(2) << qreal(2);
+ // Use custom margins that will exceed most printers minimum allowed
+ QTest::newRow("beforeNoPDF") << false << true << qreal(30) << qreal(30) << qreal(30) << qreal(30);
+ QTest::newRow("beforePDF") << true << true << qreal(30) << qreal(30) << qreal(30) << qreal(30);
+ QTest::newRow("afterNoPDF") << false << false << qreal(30) << qreal(30) << qreal(30) << qreal(30);
+ QTest::newRow("afterAfterPDF") << true << false << qreal(30) << qreal(30) << qreal(30) << qreal(30);
}
void tst_QPrinter::customPaperSizeAndMargins()
@@ -642,7 +578,9 @@ void tst_QPrinter::customPaperSizeAndMargins()
qreal getRight = 0;
qreal getTop = 0;
qreal getBottom = 0;
- QSizeF customSize(8.5, 11.0);
+ // Use a custom page size that most printers should support, A4 is 210x297
+ // TODO Use print device api when available
+ QSizeF customSize(200.0, 300.0);
QPrinter p;
if (pdf)
@@ -657,10 +595,6 @@ void tst_QPrinter::customPaperSizeAndMargins()
QVERIFY(fabs(left - getRight) < tolerance);
QVERIFY(fabs(left - getBottom) < tolerance);
} else {
- QVERIFY(getLeft == 0);
- QVERIFY(getTop == 0);
- QVERIFY(getRight == 0);
- QVERIFY(getBottom == 0);
p.setPageMargins(left, top, right, bottom, QPrinter::Millimeter);
p.getPageMargins(&getLeft, &getTop, &getRight, &getBottom, QPrinter::Millimeter);
QVERIFY(fabs(left - getLeft) < tolerance);
@@ -781,100 +715,62 @@ void tst_QPrinter::testPdfTitle()
QVERIFY(file.readAll().contains(QByteArray(expected, 26)));
}
-void tst_QPrinter::testPageMetrics_data()
-{
- QTest::addColumn<int>("pageSize");
- QTest::addColumn<int>("widthMM");
- QTest::addColumn<int>("heightMM");
- QTest::addColumn<float>("widthMMf");
- QTest::addColumn<float>("heightMMf");
-
- QTest::newRow("A4") << int(QPrinter::A4) << 210 << 297 << 210.0f << 297.0f;
- QTest::newRow("A5") << int(QPrinter::A5) << 148 << 210 << 148.0f << 210.0f;
- QTest::newRow("Letter") << int(QPrinter::Letter) << 216 << 279 << 215.9f << 279.4f;
-}
-
-void tst_QPrinter::testPageMetrics()
-{
- QFETCH(int, pageSize);
- QFETCH(int, widthMM);
- QFETCH(int, heightMM);
- QFETCH(float, widthMMf);
- QFETCH(float, heightMMf);
-
- QPrinter printer(QPrinter::HighResolution);
- printer.setFullPage(true);
- printer.setPageSize(QPrinter::PageSize(pageSize));
-
- if (printer.pageSize() != pageSize) {
- QSKIP("Current page size is not supported on this printer");
- return;
- }
-
- QCOMPARE(printer.widthMM(), int(widthMM));
- QCOMPARE(printer.heightMM(), int(heightMM));
- QCOMPARE(printer.pageSizeMM(), QSizeF(widthMMf, heightMMf));
-}
-
void tst_QPrinter::customPaperNameSettingBySize()
{
-#ifndef Q_OS_WIN
- QSKIP("Currently this triggers a problem on non Windows platforms, this will be fixed separately - QTBUG-34521");
-#endif
QPrinter printer(QPrinter::HighResolution);
QPrinterInfo info(printer);
- QList<QPair<QString, QSizeF> > sizes = info.supportedSizesWithNames();
+ QList<QPageSize> sizes = info.supportedPageSizes();
if (sizes.size() == 0)
QSKIP("No printers installed on this machine");
for (int i=0; i<sizes.size(); i++) {
- printer.setPaperSize(sizes.at(i).second, QPrinter::Millimeter);
- QCOMPARE(sizes.at(i).second, printer.paperSize(QPrinter::Millimeter));
+ printer.setPaperSize(sizes.at(i).size(QPageSize::Millimeter), QPrinter::Millimeter);
+ QCOMPARE(sizes.at(i).size(QPageSize::Millimeter), printer.paperSize(QPrinter::Millimeter));
// Some printers have the same size under different names which can cause a problem for the test
- // So we iterate up to the current position to check
- QSizeF paperSize = sizes.at(i).second;
+ // So we look at all the other sizes to see if one also matches as we don't know which order they are in
+ QSizeF paperSize = sizes.at(i).size(QPageSize::Millimeter);
QString paperName = printer.paperName();
- bool paperNameFound = (sizes.at(i).first == paperName);
+ bool paperNameFound = (sizes.at(i).name() == paperName);
if (!paperNameFound) {
- for (int j=0; j<i; j++) {
- if (sizes.at(j).second == paperSize && sizes.at(j).first == paperName) {
+ for (int j = 0; j < sizes.size(); ++j) {
+ if (j != i
+ && sizes.at(j).size(QPageSize::Millimeter) == paperSize
+ && sizes.at(j).name() == paperName) {
paperNameFound = true;
break;
}
}
}
// Fail with the original values
- if (!paperNameFound)
- QCOMPARE(sizes.at(i).first, printer.paperName());
+ if (!paperNameFound) {
+ qDebug() << "supportedPageSizes() = " << sizes;
+ QEXPECT_FAIL("", "Paper Name mismatch: please report this failure at bugreports.qt-project.org", Continue);
+ QCOMPARE(sizes.at(i).name(), printer.paperName());
+ }
}
// Check setting a custom size after setting a standard one works
- QSizeF customSize(200, 200);
+ QSizeF customSize(200, 300);
printer.setPaperSize(customSize, QPrinter::Millimeter);
QCOMPARE(printer.paperSize(QPrinter::Millimeter), customSize);
QCOMPARE(printer.paperSize(), QPrinter::Custom);
// Finally check setting a standard size after a custom one works
- printer.setPaperSize(sizes.at(0).second, QPrinter::Millimeter);
- QCOMPARE(printer.paperName(), sizes.at(0).first);
- QCOMPARE(printer.paperSize(QPrinter::Millimeter), sizes.at(0).second);
+ printer.setPaperSize(sizes.at(0).size(QPageSize::Millimeter), QPrinter::Millimeter);
+ QCOMPARE(printer.paperName(), sizes.at(0).name());
+ QCOMPARE(printer.paperSize(QPrinter::Millimeter), sizes.at(0).size(QPageSize::Millimeter));
}
void tst_QPrinter::customPaperNameSettingByName()
{
-#ifndef Q_OS_WIN
- QSKIP("Currently this triggers a problem on non Windows platforms, this will be fixed separately - QTBUG-34521");
-#endif
QPrinter printer(QPrinter::HighResolution);
QPrinterInfo info(printer);
- QList<QPair<QString, QSizeF> > sizes = info.supportedSizesWithNames();
+ QList<QPageSize> sizes = info.supportedPageSizes();
if (sizes.size() == 0)
QSKIP("No printers installed on this machine");
for (int i=0; i<sizes.size(); i++) {
- printer.setPaperName(sizes.at(i).first);
- QCOMPARE(sizes.at(i).first, printer.paperName());
- QSizeF paperSize = printer.paperSize(QPrinter::Millimeter);
- QVERIFY2(sqrt(pow(sizes.at(i).second.width() - paperSize.width(), 2.0) + pow(sizes.at(i).second.height() - paperSize.height(), 2.0)) < 0.01,
- msgSizeMismatch(sizes.at(i).second, paperSize));
+ printer.setPaperName(sizes.at(i).name());
+ QCOMPARE(sizes.at(i).name(), printer.paperName());
+ QCOMPARE(sizes.at(i).size(QPageSize::Millimeter), printer.paperSize(QPrinter::Millimeter));
}
}
@@ -1794,43 +1690,46 @@ void tst_QPrinter::supportedResolutions()
void tst_QPrinter::windowsPageSize()
{
// winPageSize() / setWinPageSize() / PPK_WindowsPageSize
- // PdfFormat: ifdef'd out TODO remove ifdef
- // NativeFormat, Cups: ifdef'd out TODO remove ifdef
+ // PdfFormat: Supported, defaults to printer default
+ // NativeFormat, Cups: Supported, defaults to printer default
// NativeFormat, Win: Supported, defaults to printer default
- // NativeFormat, Mac: ifdef'd out TODO remove ifdef
+ // NativeFormat, Mac: Supported, defaults to printer default
+
+ QPrinter pdf;
+ pdf.setOutputFormat(QPrinter::PdfFormat);
+ QCOMPARE(pdf.winPageSize(), 9); // DMPAPER_A4
+ pdf.setWinPageSize(1); // DMPAPER_LETTER
+ QCOMPARE(pdf.winPageSize(), 1);
-#ifdef Q_OS_WIN
QPrinter native;
if (native.outputFormat() == QPrinter::NativeFormat) {
// Test set/get
native.setPaperSize(QPrinter::A4);
QCOMPARE(native.pageSize(), QPrinter::A4);
- QCOMPARE(native.winPageSize(), DMPAPER_A4);
+ QCOMPARE(native.winPageSize(), 9); // DMPAPER_A4
native.setPaperSize(QPrinter::Letter);
QCOMPARE(native.pageSize(), QPrinter::Letter);
- QCOMPARE(native.winPageSize(), DMPAPER_LETTER);
+ QCOMPARE(native.winPageSize(), 1); // DMPAPER_LETTER
- native.setWinPageSize(DMPAPER_A4);
+ native.setWinPageSize(9); // DMPAPER_A4
QCOMPARE(native.pageSize(), QPrinter::A4);
- QCOMPARE(native.winPageSize(), DMPAPER_A4);
+ QCOMPARE(native.winPageSize(), 9); // DMPAPER_A4
- native.setWinPageSize(DMPAPER_LETTER);
+ native.setWinPageSize(1); // DMPAPER_LETTER
QCOMPARE(native.pageSize(), QPrinter::Letter);
- QCOMPARE(native.winPageSize(), DMPAPER_LETTER);
+ QCOMPARE(native.winPageSize(), 1); // DMPAPER_LETTER
// Test value preservation
native.setOutputFormat(QPrinter::PdfFormat);
QCOMPARE(native.pageSize(), QPrinter::Letter);
- QEXPECT_FAIL("", "Win paper size doesn't persist over format change", Continue);
- QCOMPARE(native.winPageSize(), DMPAPER_LETTER);
+ QCOMPARE(native.winPageSize(), 1); // DMPAPER_LETTER
native.setOutputFormat(QPrinter::NativeFormat);
QCOMPARE(native.pageSize(), QPrinter::Letter);
- QCOMPARE(native.winPageSize(), DMPAPER_LETTER);
+ QCOMPARE(native.winPageSize(), 1); // DMPAPER_LETTER
} else {
QSKIP("No printers installed, cannot test NativeFormat, please install printers to test");
}
-#endif // Q_OS_WIN
}
// Test QPrinter setters/getters for non-QPrintEngine options
@@ -1861,6 +1760,191 @@ void tst_QPrinter::fromToPage()
QCOMPARE(printer.toPage(), 7);
}
+void tst_QPrinter::testPageMetrics_data()
+{
+ QTest::addColumn<int>("outputFormat");
+ QTest::addColumn<int>("pageSize");
+ QTest::addColumn<qreal>("widthMMf");
+ QTest::addColumn<qreal>("heightMMf");
+ QTest::addColumn<bool>("setMargins");
+ QTest::addColumn<qreal>("leftMMf");
+ QTest::addColumn<qreal>("rightMMf");
+ QTest::addColumn<qreal>("topMMf");
+ QTest::addColumn<qreal>("bottomMMf");
+
+ QTest::newRow("PDF A4") << int(QPrinter::PdfFormat) << int(QPrinter::A4) << 210.0 << 297.0 << false << 0.0 << 0.0 << 0.0 << 0.0;
+ QTest::newRow("PDF A4 Margins") << int(QPrinter::PdfFormat) << int(QPrinter::A4) << 210.0 << 297.0 << true << 20.0 << 30.0 << 40.0 << 50.0;
+ QTest::newRow("Native A4") << int(QPrinter::NativeFormat) << int(QPrinter::A4) << 210.0 << 297.0 << false << 0.0 << 0.0 << 0.0 << 0.0;
+ QTest::newRow("Native A4 Margins") << int(QPrinter::NativeFormat) << int(QPrinter::A4) << 210.0 << 297.0 << true << 20.0 << 30.0 << 40.0 << 50.0;
+
+ QTest::newRow("PDF Portrait") << int(QPrinter::PdfFormat) << -1 << 200.0 << 300.0 << false << 0.0 << 0.0 << 0.0 << 0.0;
+ QTest::newRow("PDF Portrait Margins") << int(QPrinter::PdfFormat) << -1 << 200.0 << 300.0 << true << 20.0 << 30.0 << 40.0 << 50.0;
+ QTest::newRow("PDF Landscape") << int(QPrinter::PdfFormat) << -1 << 300.0 << 200.0 << false << 0.0 << 0.0 << 0.0 << 0.0;
+ QTest::newRow("PDF Landscape Margins") << int(QPrinter::PdfFormat) << -1 << 300.0 << 200.0 << true << 20.0 << 30.0 << 40.0 << 50.0;
+ QTest::newRow("Native Portrait") << int(QPrinter::NativeFormat) << -1 << 200.0 << 300.0 << false << 0.0 << 0.0 << 0.0 << 0.0;
+ QTest::newRow("Native Portrait Margins") << int(QPrinter::NativeFormat) << -1 << 200.0 << 300.0 << true << 20.0 << 30.0 << 40.0 << 50.0;
+ QTest::newRow("Native Landscape") << int(QPrinter::NativeFormat) << -1 << 300.0 << 200.0 << false << 0.0 << 0.0 << 0.0 << 0.0;
+ QTest::newRow("Native Landscape Margins") << int(QPrinter::NativeFormat) << -1 << 300.0 << 200.0 << true << 20.0 << 30.0 << 40.0 << 50.0;
+}
+
+void tst_QPrinter::testPageMetrics()
+{
+ QFETCH(int, outputFormat);
+ QFETCH(int, pageSize);
+ QFETCH(qreal, widthMMf);
+ QFETCH(qreal, heightMMf);
+ QFETCH(bool, setMargins);
+ QFETCH(qreal, leftMMf);
+ QFETCH(qreal, rightMMf);
+ QFETCH(qreal, topMMf);
+ QFETCH(qreal, bottomMMf);
+
+ QSizeF sizeMMf = QSizeF(widthMMf, heightMMf);
+
+ QPrinter printer;
+ printer.setOutputFormat(QPrinter::OutputFormat(outputFormat));
+ if (printer.outputFormat() != QPrinter::OutputFormat(outputFormat))
+ QSKIP("Please install a native printer to run this test");
+ QCOMPARE(printer.outputFormat(), QPrinter::OutputFormat(outputFormat));
+ QCOMPARE(printer.orientation(), QPrinter::Portrait);
+
+ if (setMargins) {
+ // Setup the given margins
+ QPrinter::Margins margins;
+ margins.left = leftMMf;
+ margins.right = rightMMf;
+ margins.top = topMMf;
+ margins.bottom = bottomMMf;
+ printer.setMargins(margins);
+ QCOMPARE(printer.margins().left, leftMMf);
+ QCOMPARE(printer.margins().right, rightMMf);
+ QCOMPARE(printer.margins().top, topMMf);
+ QCOMPARE(printer.margins().bottom, bottomMMf);
+ }
+
+
+ // Set the given size, in Portrait mode
+ if (pageSize < 0) {
+ printer.setPageSizeMM(sizeMMf);
+ QCOMPARE(printer.pageSize(), QPrinter::Custom);
+ } else {
+ printer.setPageSize(QPrinter::PageSize(pageSize));
+ QCOMPARE(printer.pageSize(), QPrinter::PageSize(pageSize));
+ }
+ QCOMPARE(printer.orientation(), QPrinter::Portrait);
+ if (setMargins) {
+ // Check margins unchanged from page size change
+ QCOMPARE(printer.margins().left, leftMMf);
+ QCOMPARE(printer.margins().right, rightMMf);
+ QCOMPARE(printer.margins().top, topMMf);
+ QCOMPARE(printer.margins().bottom, bottomMMf);
+ } else {
+ // Fetch the default margins for the printer and page size
+ // TODO Check against margins from print device when api added
+ leftMMf = printer.margins().left;
+ rightMMf = printer.margins().right;
+ topMMf = printer.margins().top;
+ bottomMMf = printer.margins().bottom;
+ }
+
+ // QPagedPaintDevice::pageSizeMM() always returns Portrait
+ QCOMPARE(printer.pageSizeMM(), sizeMMf);
+
+ // QPrinter::paperSize() always returns set orientation
+ QCOMPARE(printer.paperSize(QPrinter::Millimeter), sizeMMf);
+
+ // QPagedPaintDevice::widthMM() and heightMM() are paint metrics and always return set orientation
+ QCOMPARE(printer.widthMM(), qRound(widthMMf - leftMMf - rightMMf));
+ QCOMPARE(printer.heightMM(), qRound(heightMMf - topMMf - bottomMMf));
+
+ // QPrinter::paperRect() always returns set orientation
+ QCOMPARE(printer.paperRect(QPrinter::Millimeter), QRectF(0, 0, widthMMf, heightMMf));
+
+ // QPrinter::pageRect() always returns set orientation
+ QCOMPARE(printer.pageRect(QPrinter::Millimeter), QRectF(leftMMf, topMMf, widthMMf - leftMMf - rightMMf, heightMMf - topMMf - bottomMMf));
+
+
+ // Now switch to Landscape mode, size should be unchanged, but rect and metrics should change
+ printer.setOrientation(QPrinter::Landscape);
+ if (pageSize < 0) {
+ QCOMPARE(printer.pageSize(), QPrinter::Custom);
+ } else {
+ QCOMPARE(printer.pageSize(), QPrinter::PageSize(pageSize));
+ }
+ QCOMPARE(printer.orientation(), QPrinter::Landscape);
+ if (setMargins) {
+ // Check margins unchanged from page size change
+ QCOMPARE(printer.margins().left, leftMMf);
+ QCOMPARE(printer.margins().right, rightMMf);
+ QCOMPARE(printer.margins().top, topMMf);
+ QCOMPARE(printer.margins().bottom, bottomMMf);
+ } else {
+ // Fetch the default margins for the printer and page size
+ // TODO Check against margins from print device when api added
+ leftMMf = printer.margins().left;
+ rightMMf = printer.margins().right;
+ topMMf = printer.margins().top;
+ bottomMMf = printer.margins().bottom;
+ }
+
+ // QPagedPaintDevice::pageSizeMM() always returns Portrait
+ QCOMPARE(printer.pageSizeMM(), sizeMMf);
+
+ // QPrinter::paperSize() always returns set orientation
+ QCOMPARE(printer.paperSize(QPrinter::Millimeter), sizeMMf.transposed());
+
+ // QPagedPaintDevice::widthMM() and heightMM() are paint metrics and always return set orientation
+ QCOMPARE(printer.widthMM(), qRound(heightMMf - leftMMf - rightMMf));
+ QCOMPARE(printer.heightMM(), qRound(widthMMf - topMMf - bottomMMf));
+
+ // QPrinter::paperRect() always returns set orientation
+ QCOMPARE(printer.paperRect(QPrinter::Millimeter), QRectF(0, 0, heightMMf, widthMMf));
+
+ // QPrinter::pageRect() always returns set orientation
+ QCOMPARE(printer.pageRect(QPrinter::Millimeter), QRectF(leftMMf, topMMf, heightMMf - leftMMf - rightMMf, widthMMf - topMMf - bottomMMf));
+
+
+ // Now while in Landscape mode, set the size again, results should be the same
+ if (pageSize < 0) {
+ printer.setPageSizeMM(sizeMMf);
+ QCOMPARE(printer.pageSize(), QPrinter::Custom);
+ } else {
+ printer.setPageSize(QPrinter::PageSize(pageSize));
+ QCOMPARE(printer.pageSize(), QPrinter::PageSize(pageSize));
+ }
+ QCOMPARE(printer.orientation(), QPrinter::Landscape);
+ if (setMargins) {
+ // Check margins unchanged from page size change
+ QCOMPARE(printer.margins().left, leftMMf);
+ QCOMPARE(printer.margins().right, rightMMf);
+ QCOMPARE(printer.margins().top, topMMf);
+ QCOMPARE(printer.margins().bottom, bottomMMf);
+ } else {
+ // Fetch the default margins for the printer and page size
+ // TODO Check against margins from print device when api added
+ leftMMf = printer.margins().left;
+ rightMMf = printer.margins().right;
+ topMMf = printer.margins().top;
+ bottomMMf = printer.margins().bottom;
+ }
+
+ // QPagedPaintDevice::pageSizeMM() always returns Portrait
+ QCOMPARE(printer.pageSizeMM(), sizeMMf);
+
+ // QPrinter::paperSize() always returns set orientation
+ QCOMPARE(printer.paperSize(QPrinter::Millimeter), sizeMMf.transposed());
+
+ // QPagedPaintDevice::widthMM() and heightMM() are paint metrics and always return set orientation
+ QCOMPARE(printer.widthMM(), qRound(heightMMf - leftMMf - rightMMf));
+ QCOMPARE(printer.heightMM(), qRound(widthMMf - topMMf - bottomMMf));
+
+ // QPrinter::paperRect() always returns set orientation
+ QCOMPARE(printer.paperRect(QPrinter::Millimeter), QRectF(0, 0, heightMMf, widthMMf));
+
+ // QPrinter::pageRect() always returns set orientation
+ QCOMPARE(printer.pageRect(QPrinter::Millimeter), QRectF(leftMMf, topMMf, heightMMf - leftMMf - rightMMf, widthMMf - topMMf - bottomMMf));
+}
+
#endif // QT_NO_PRINTER
QTEST_MAIN(tst_QPrinter)
diff --git a/tests/auto/printsupport/kernel/qprinterinfo/tst_qprinterinfo.cpp b/tests/auto/printsupport/kernel/qprinterinfo/tst_qprinterinfo.cpp
index fb2609b7ec..294c90fdd3 100644
--- a/tests/auto/printsupport/kernel/qprinterinfo/tst_qprinterinfo.cpp
+++ b/tests/auto/printsupport/kernel/qprinterinfo/tst_qprinterinfo.cpp
@@ -267,8 +267,14 @@ void tst_QPrinterInfo::testForPaperSizes()
// In the meantime just exercise the code path and print-out for inspection.
QList<QPrinterInfo> printers = QPrinterInfo::availablePrinters();
- for (int i = 0; i < printers.size(); ++i)
- qDebug() << "Printer: " << printers.at(i).printerName() << " Paper Sizes: " << printers.at(i).supportedPaperSizes();
+ for (int i = 0; i < printers.size(); ++i) {
+ qDebug() << "Printer : " << printers.at(i).printerName() << printers.at(i).defaultPageSize();
+ qDebug() << "Paper Sizes : " << printers.at(i).supportedPageSizes();
+ qDebug() << "Custom Sizes : " << printers.at(i).supportsCustomPageSizes();
+ qDebug() << "Physical Sizes: " << printers.at(i).minimumPhysicalPageSize()
+ << printers.at(i).maximumPhysicalPageSize();
+ qDebug() << "";
+ }
}
void tst_QPrinterInfo::testConstructors()
@@ -284,17 +290,41 @@ void tst_QPrinterInfo::testConstructors()
for (int i = 0; i < printers.size(); ++i) {
QPrinterInfo copy1(printers.at(i));
- QCOMPARE(copy1.printerName(), printers.at(i).printerName());
- QCOMPARE(copy1.isNull(), printers.at(i).isNull());
- QCOMPARE(copy1.isDefault(), printers.at(i).isDefault());
- QCOMPARE(copy1.supportedPaperSizes(), printers.at(i).supportedPaperSizes());
+ QCOMPARE(copy1.printerName(), printers.at(i).printerName());
+ QCOMPARE(copy1.description(), printers.at(i).description());
+ QCOMPARE(copy1.location(), printers.at(i).location());
+ QCOMPARE(copy1.makeAndModel(), printers.at(i).makeAndModel());
+ QCOMPARE(copy1.isNull(), printers.at(i).isNull());
+ QCOMPARE(copy1.isDefault(), printers.at(i).isDefault());
+ QCOMPARE(copy1.isRemote(), printers.at(i).isRemote());
+ QCOMPARE(copy1.state(), printers.at(i).state());
+ QCOMPARE(copy1.supportedPageSizes(), printers.at(i).supportedPageSizes());
+ QCOMPARE(copy1.defaultPageSize(), printers.at(i).defaultPageSize());
+ QCOMPARE(copy1.supportsCustomPageSizes(), printers.at(i).supportsCustomPageSizes());
+ QCOMPARE(copy1.minimumPhysicalPageSize(), printers.at(i).minimumPhysicalPageSize());
+ QCOMPARE(copy1.maximumPhysicalPageSize(), printers.at(i).maximumPhysicalPageSize());
+ QCOMPARE(copy1.supportedPaperSizes(), printers.at(i).supportedPaperSizes());
+ QCOMPARE(copy1.supportedSizesWithNames(), printers.at(i).supportedSizesWithNames());
+ QCOMPARE(copy1.supportedResolutions(), printers.at(i).supportedResolutions());
QPrinter printer(printers.at(i));
QPrinterInfo copy2(printer);
- QCOMPARE(copy2.printerName(), printers.at(i).printerName());
- QCOMPARE(copy2.isNull(), printers.at(i).isNull());
- QCOMPARE(copy2.isDefault(), printers.at(i).isDefault());
- QCOMPARE(copy2.supportedPaperSizes(), printers.at(i).supportedPaperSizes());
+ QCOMPARE(copy2.printerName(), printers.at(i).printerName());
+ QCOMPARE(copy2.description(), printers.at(i).description());
+ QCOMPARE(copy2.location(), printers.at(i).location());
+ QCOMPARE(copy2.makeAndModel(), printers.at(i).makeAndModel());
+ QCOMPARE(copy2.isNull(), printers.at(i).isNull());
+ QCOMPARE(copy2.isDefault(), printers.at(i).isDefault());
+ QCOMPARE(copy2.isRemote(), printers.at(i).isRemote());
+ QCOMPARE(copy2.state(), printers.at(i).state());
+ QCOMPARE(copy2.supportedPageSizes(), printers.at(i).supportedPageSizes());
+ QCOMPARE(copy2.defaultPageSize(), printers.at(i).defaultPageSize());
+ QCOMPARE(copy2.supportsCustomPageSizes(), printers.at(i).supportsCustomPageSizes());
+ QCOMPARE(copy2.minimumPhysicalPageSize(), printers.at(i).minimumPhysicalPageSize());
+ QCOMPARE(copy2.maximumPhysicalPageSize(), printers.at(i).maximumPhysicalPageSize());
+ QCOMPARE(copy2.supportedPaperSizes(), printers.at(i).supportedPaperSizes());
+ QCOMPARE(copy2.supportedSizesWithNames(), printers.at(i).supportedSizesWithNames());
+ QCOMPARE(copy2.supportedResolutions(), printers.at(i).supportedResolutions());
}
}
@@ -311,13 +341,20 @@ void tst_QPrinterInfo::testAssignment()
for (int i = 0; i < printers.size(); ++i) {
QPrinterInfo copy;
copy = printers.at(i);
- QCOMPARE(copy.printerName(), printers.at(i).printerName());
- QCOMPARE(copy.isNull(), printers.at(i).isNull());
- QCOMPARE(copy.isDefault(), printers.at(i).isDefault());
- QCOMPARE(copy.description(), printers.at(i).description());
- QCOMPARE(copy.location(), printers.at(i).location());
- QCOMPARE(copy.makeAndModel(), printers.at(i).makeAndModel());
- QCOMPARE(copy.supportedPaperSizes(), printers.at(i).supportedPaperSizes());
+ QCOMPARE(copy.printerName(), printers.at(i).printerName());
+ QCOMPARE(copy.description(), printers.at(i).description());
+ QCOMPARE(copy.location(), printers.at(i).location());
+ QCOMPARE(copy.makeAndModel(), printers.at(i).makeAndModel());
+ QCOMPARE(copy.isNull(), printers.at(i).isNull());
+ QCOMPARE(copy.isDefault(), printers.at(i).isDefault());
+ QCOMPARE(copy.isRemote(), printers.at(i).isRemote());
+ QCOMPARE(copy.state(), printers.at(i).state());
+ QCOMPARE(copy.supportedPageSizes(), printers.at(i).supportedPageSizes());
+ QCOMPARE(copy.defaultPageSize(), printers.at(i).defaultPageSize());
+ QCOMPARE(copy.supportsCustomPageSizes(), printers.at(i).supportsCustomPageSizes());
+ QCOMPARE(copy.minimumPhysicalPageSize(), printers.at(i).minimumPhysicalPageSize());
+ QCOMPARE(copy.maximumPhysicalPageSize(), printers.at(i).maximumPhysicalPageSize());
+ QCOMPARE(copy.supportedResolutions(), printers.at(i).supportedResolutions());
}
}
@@ -329,16 +366,19 @@ void tst_QPrinterInfo::namedPrinter()
foreach (const QPrinterInfo &pi, printers) {
QPrinterInfo pi2 = QPrinterInfo::printerInfo(pi.printerName());
- qDebug() << "Printer: " << pi2.printerName() << " : " << pi2.description() << " : "
- << pi2.location() << " : " << pi2.makeAndModel() << " : "
- << pi2.isNull() << " : " << pi2.isDefault();
- QCOMPARE(pi2.printerName(), pi.printerName());
- QCOMPARE(pi2.description(), pi.description());
- QCOMPARE(pi2.location(), pi.location());
- QCOMPARE(pi2.makeAndModel(), pi.makeAndModel());
- QCOMPARE(pi2.supportedPaperSizes(), pi.supportedPaperSizes());
- QCOMPARE(pi2.isNull(), pi.isNull());
- QCOMPARE(pi2.isDefault(), pi.isDefault());
+ QCOMPARE(pi2.printerName(), pi.printerName());
+ QCOMPARE(pi2.description(), pi.description());
+ QCOMPARE(pi2.location(), pi.location());
+ QCOMPARE(pi2.makeAndModel(), pi.makeAndModel());
+ QCOMPARE(pi2.isNull(), pi.isNull());
+ QCOMPARE(pi2.isDefault(), pi.isDefault());
+ QCOMPARE(pi2.isRemote(), pi.isRemote());
+ QCOMPARE(pi2.supportedPageSizes(), pi.supportedPageSizes());
+ QCOMPARE(pi2.defaultPageSize(), pi.defaultPageSize());
+ QCOMPARE(pi2.supportsCustomPageSizes(), pi.supportsCustomPageSizes());
+ QCOMPARE(pi2.minimumPhysicalPageSize(), pi.minimumPhysicalPageSize());
+ QCOMPARE(pi2.maximumPhysicalPageSize(), pi.maximumPhysicalPageSize());
+ QCOMPARE(pi2.supportedResolutions(), pi.supportedResolutions());
}
}
#endif // QT_NO_PRINTER
diff --git a/tests/manual/qprintdevice_dump/main.cpp b/tests/manual/qprintdevice_dump/main.cpp
new file mode 100644
index 0000000000..930c851d65
--- /dev/null
+++ b/tests/manual/qprintdevice_dump/main.cpp
@@ -0,0 +1,181 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 John Layt <jlayt@kde.org>
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 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 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qpa/qplatformprintplugin.h>
+#include <qpa/qplatformprintersupport.h>
+
+#include <private/qprintdevice_p.h>
+
+#include <QApplication>
+#include <QMimeType>
+#include <QDebug>
+
+/*
+ This test is designed to dump the current printer configuration details
+ to output, to assist in debugging of print device problems.
+*/
+
+static QString stateToString(QPrint::DeviceState state)
+{
+ switch (state) {
+ case QPrint::Idle:
+ return QStringLiteral("Idle");
+ case QPrint::Active:
+ return QStringLiteral("Active");
+ case QPrint::Aborted:
+ return QStringLiteral("Aborted");
+ case QPrint::Error:
+ return QStringLiteral("Error");
+ }
+ return QStringLiteral("Invalid DeviceState");
+}
+
+static QString duplexToString(QPrint::DuplexMode duplex)
+{
+ switch (duplex) {
+ case QPrint::DuplexNone:
+ return QStringLiteral("DuplexNone");
+ case QPrint::DuplexAuto:
+ return QStringLiteral("DuplexAuto");
+ case QPrint::DuplexLongSide:
+ return QStringLiteral("DuplexLongSide");
+ case QPrint::DuplexShortSide:
+ return QStringLiteral("DuplexShortSide");
+ }
+ return QStringLiteral("Invalid DuplexMode");
+}
+
+static QString colorToString(QPrint::ColorMode color)
+{
+ switch (color) {
+ case QPrint::GrayScale:
+ return QStringLiteral("GrayScale");
+ case QPrint::Color:
+ return QStringLiteral("Color");
+ }
+ return QStringLiteral("Invalid ColorMode");
+}
+
+int main(int argc, char *argv[])
+{
+ QApplication a(argc, argv);
+
+ qDebug() << "\n********************************";
+ qDebug() << "***** QPrintDevice Details *****";
+ qDebug() << "********************************\n";
+
+ QPlatformPrinterSupport *ps = QPlatformPrinterSupportPlugin::get();
+ if (!ps) {
+ qDebug() << "Could not load platform plugin!";
+ return -1;
+ }
+
+ QString defaultId = ps->defaultPrintDeviceId();
+ if (defaultId.isEmpty())
+ qDebug() << "No default printer found";
+ else
+ qDebug() << "Default Printer ID :" << defaultId;
+ qDebug() << "Available Printer IDs :" << ps->availablePrintDeviceIds() << "\n";
+
+ foreach (const QString id, ps->availablePrintDeviceIds()) {
+ QPrintDevice printDevice = ps->createPrintDevice(id);
+ if (printDevice.isValid()) {
+ qDebug() << "===" << printDevice.id() << "===\n";
+ qDebug() << "Device ID :" << printDevice.id();
+ qDebug() << "Device Name :" << printDevice.name();
+ qDebug() << "Device Location :" << printDevice.location();
+ qDebug() << "Device Make :" << printDevice.makeAndModel();
+ qDebug() << "";
+ qDebug() << "isValid :" << printDevice.isValid();
+ qDebug() << "isDefault :" << printDevice.isDefault();
+ qDebug() << "isRemote :" << printDevice.isRemote();
+ qDebug() << "";
+ qDebug() << "state :" << stateToString(printDevice.state());
+ qDebug() << "";
+ qDebug() << "supportsMultipleCopies :" << printDevice.supportsMultipleCopies();
+ qDebug() << "supportsCollateCopies :" << printDevice.supportsCollateCopies();
+ qDebug() << "";
+ qDebug() << "defaultPageSize :" << printDevice.defaultPageSize();
+ qDebug() << "supportedPageSizes :";
+ foreach (const QPageSize &page, printDevice.supportedPageSizes())
+ qDebug() << " " << page << printDevice.printableMargins(page, QPageLayout::Portrait, 300);
+ qDebug() << "";
+ qDebug() << "supportsCustomPageSizes :" << printDevice.supportsCustomPageSizes();
+ qDebug() << "";
+ qDebug() << "minimumPhysicalPageSize :" << printDevice.minimumPhysicalPageSize();
+ qDebug() << "maximumPhysicalPageSize :" << printDevice.maximumPhysicalPageSize();
+ qDebug() << "";
+ qDebug() << "defaultResolution :" << printDevice.defaultResolution();
+ qDebug() << "supportedResolutions :" << printDevice.supportedResolutions();
+ qDebug() << "";
+ qDebug() << "defaultInputSlot :" << printDevice.defaultInputSlot().key
+ << printDevice.defaultInputSlot().name
+ << printDevice.defaultInputSlot().id;
+ qDebug() << "supportedInputSlots :";
+ foreach (const QPrint::InputSlot &slot, printDevice.supportedInputSlots())
+ qDebug() << " " << slot.key << slot.name << slot.id;
+ qDebug() << "";
+ qDebug() << "defaultOutputBin :" << printDevice.defaultOutputBin().key
+ << printDevice.defaultOutputBin().name
+ << printDevice.defaultOutputBin().id;
+ qDebug() << "supportedOutputBins :";
+ foreach (const QPrint::OutputBin &bin, printDevice.supportedOutputBins())
+ qDebug() << " " << bin.key << bin.name << bin.id;
+ qDebug() << "";
+ qDebug() << "defaultDuplexMode :" << duplexToString(printDevice.defaultDuplexMode());
+ qDebug() << "supportedDuplexModes :";
+ foreach (QPrint::DuplexMode mode, printDevice.supportedDuplexModes())
+ qDebug() << " " << duplexToString(mode);
+ qDebug() << "";
+ qDebug() << "defaultColorMode :" << colorToString(printDevice.defaultColorMode());
+ qDebug() << "supportedColorModes :";
+ foreach (QPrint::ColorMode mode, printDevice.supportedColorModes())
+ qDebug() << " " << colorToString(mode);
+ qDebug() << "";
+ qDebug() << "supportedMimeTypes :";
+ foreach (const QMimeType &type, printDevice.supportedMimeTypes())
+ qDebug() << " " << type.name();
+ } else {
+ qDebug() << "Create printer failed" << id;
+ }
+ qDebug() << "\n";
+ }
+}
diff --git a/tests/manual/qprintdevice_dump/qprintdevice_dump.pro b/tests/manual/qprintdevice_dump/qprintdevice_dump.pro
new file mode 100644
index 0000000000..c9d36d1d1f
--- /dev/null
+++ b/tests/manual/qprintdevice_dump/qprintdevice_dump.pro
@@ -0,0 +1,6 @@
+QT += printsupport-private
+
+TARGET = qprintdevice_dump
+TEMPLATE = app
+
+SOURCES += main.cpp