summaryrefslogtreecommitdiffstats
path: root/tests/auto/printsupport
diff options
context:
space:
mode:
authorJohn Layt <jlayt@kde.org>2014-03-17 17:59:55 +0100
committerAndy Shaw <andy.shaw@digia.com>2014-10-24 21:34:21 +0200
commit74a51d590f4acd189f8d0594a5a706cbf97c805b (patch)
tree7be62ff9cdf58e36851576f0a79493f2943abc0b /tests/auto/printsupport
parentddf3fc0deb906ee591fc01ecc2a74768a49950f8 (diff)
QPrinter - Fix DuplexMode on all platforms
Add support to get/set the DuplexMode on Windows and Mac, improve the CUPS duplex handling, ensure support is the same on all platforms. [ChangeLog][QtPrintSupport][QPrinter] Added duplex support for Windows and OS X. Task-number: QTBUG-11332 Change-Id: I9d61d63233d828c3b1fd6df54072c6049f3c6298 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'tests/auto/printsupport')
-rw-r--r--tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp46
-rw-r--r--tests/auto/printsupport/kernel/qprinterinfo/tst_qprinterinfo.cpp8
2 files changed, 34 insertions, 20 deletions
diff --git a/tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp b/tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp
index c42450607d..1be570e4b8 100644
--- a/tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp
+++ b/tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp
@@ -1022,9 +1022,9 @@ void tst_QPrinter::duplex()
{
// duplex()) / setDuplex() / PPK_Duplex
// PdfFormat: Supported, default QPrinter::DuplexNone
- // NativeFormat, Cups: Supported, default QPrinter::DuplexNone
- // NativeFormat, Win: Unsupported, always QPrinter::DuplexNone
- // NativeFormat, Mac: Unsupported, always QPrinter::DuplexNone
+ // NativeFormat, Cups: Supported, default to printer default
+ // NativeFormat, Win: Supported, default to printer default
+ // NativeFormat, Mac: Supported, default to printer default
QPrinter pdf;
pdf.setOutputFormat(QPrinter::PdfFormat);
@@ -1035,15 +1035,17 @@ void tst_QPrinter::duplex()
QPrinter native;
if (native.outputFormat() == QPrinter::NativeFormat) {
// Test default
- // TODO Printer specific, need QPrinterInfo::duplex()
- //QCOMPARE(native.duplex(), QPrinter::DuplexNone);
-
- // Test set/get
- QPrinter::DuplexMode expected = QPrinter::DuplexAuto;
+ QPrinterInfo printerInfo = QPrinterInfo::defaultPrinter();
+ QPrinter::DuplexMode expected = printerInfo.defaultDuplexMode();
+ QCOMPARE(native.duplex(), expected);
+ // Test set/get (skipping Auto as that will return something different)
+ foreach (QPrinter::DuplexMode mode, printerInfo.supportedDuplexModes()) {
+ if (mode != expected && mode != QPrinter::DuplexAuto) {
+ expected = mode;
+ break;
+ }
+ }
native.setDuplex(expected);
-#if defined Q_OS_MAC || defined Q_OS_WIN
- expected = QPrinter::DuplexNone;
-#endif // Q_OS_MAC || Q_OS_WIN
QCOMPARE(native.duplex(), expected);
// Test value preservation
@@ -1051,6 +1053,12 @@ void tst_QPrinter::duplex()
QCOMPARE(native.duplex(), expected);
native.setOutputFormat(QPrinter::NativeFormat);
QCOMPARE(native.duplex(), expected);
+
+ // Test setting invalid option
+ if (!printerInfo.supportedDuplexModes().contains(QPrinter::DuplexLongSide)) {
+ native.setDuplex(QPrinter::DuplexLongSide);
+ QCOMPARE(native.duplex(), expected);
+ }
} else {
QSKIP("No printers installed, cannot test NativeFormat, please install printers to test");
}
@@ -1059,9 +1067,9 @@ void tst_QPrinter::duplex()
void tst_QPrinter::doubleSidedPrinting()
{
// PdfFormat: Supported, default false
- // NativeFormat, Cups: Supported, default false
- // NativeFormat, Win: Unsupported, always false
- // NativeFormat, Mac: Unsupported, always false
+ // NativeFormat, Cups: Supported, default to printer default
+ // NativeFormat, Win: Supported, default to printer default
+ // NativeFormat, Mac: Supported, default to printer default
QPrinter pdf;
pdf.setOutputFormat(QPrinter::PdfFormat);
@@ -1072,15 +1080,13 @@ void tst_QPrinter::doubleSidedPrinting()
QPrinter native;
if (native.outputFormat() == QPrinter::NativeFormat) {
// Test default
- // TODO Printer specific, need QPrinterInfo::duplex()
- //QCOMPARE(native.doubleSidedPrinting(), false);
+ QPrinterInfo printerInfo;
+ bool expected = (printerInfo.defaultDuplexMode() != QPrinter::DuplexNone);
+ QCOMPARE(native.doubleSidedPrinting(), false);
// Test set/get
- bool expected = true;
+ expected = (printerInfo.supportedDuplexModes().count() > 1);
native.setDoubleSidedPrinting(expected);
-#if defined Q_OS_MAC || defined Q_OS_WIN
- expected = false;
-#endif // Q_OS_MAC || Q_OS_WIN
QCOMPARE(native.doubleSidedPrinting(), expected);
// Test value preservation
diff --git a/tests/auto/printsupport/kernel/qprinterinfo/tst_qprinterinfo.cpp b/tests/auto/printsupport/kernel/qprinterinfo/tst_qprinterinfo.cpp
index 88a526ba17..f3e8b9209d 100644
--- a/tests/auto/printsupport/kernel/qprinterinfo/tst_qprinterinfo.cpp
+++ b/tests/auto/printsupport/kernel/qprinterinfo/tst_qprinterinfo.cpp
@@ -298,6 +298,8 @@ void tst_QPrinterInfo::testConstructors()
QCOMPARE(copy1.supportedPaperSizes(), printers.at(i).supportedPaperSizes());
QCOMPARE(copy1.supportedSizesWithNames(), printers.at(i).supportedSizesWithNames());
QCOMPARE(copy1.supportedResolutions(), printers.at(i).supportedResolutions());
+ QCOMPARE(copy1.defaultDuplexMode(), printers.at(i).defaultDuplexMode());
+ QCOMPARE(copy1.supportedDuplexModes(), printers.at(i).supportedDuplexModes());
QPrinter printer(printers.at(i));
QPrinterInfo copy2(printer);
@@ -317,6 +319,8 @@ void tst_QPrinterInfo::testConstructors()
QCOMPARE(copy2.supportedPaperSizes(), printers.at(i).supportedPaperSizes());
QCOMPARE(copy2.supportedSizesWithNames(), printers.at(i).supportedSizesWithNames());
QCOMPARE(copy2.supportedResolutions(), printers.at(i).supportedResolutions());
+ QCOMPARE(copy2.defaultDuplexMode(), printers.at(i).defaultDuplexMode());
+ QCOMPARE(copy2.supportedDuplexModes(), printers.at(i).supportedDuplexModes());
}
}
@@ -347,6 +351,8 @@ void tst_QPrinterInfo::testAssignment()
QCOMPARE(copy.minimumPhysicalPageSize(), printers.at(i).minimumPhysicalPageSize());
QCOMPARE(copy.maximumPhysicalPageSize(), printers.at(i).maximumPhysicalPageSize());
QCOMPARE(copy.supportedResolutions(), printers.at(i).supportedResolutions());
+ QCOMPARE(copy.defaultDuplexMode(), printers.at(i).defaultDuplexMode());
+ QCOMPARE(copy.supportedDuplexModes(), printers.at(i).supportedDuplexModes());
}
}
@@ -371,6 +377,8 @@ void tst_QPrinterInfo::namedPrinter()
QCOMPARE(pi2.minimumPhysicalPageSize(), pi.minimumPhysicalPageSize());
QCOMPARE(pi2.maximumPhysicalPageSize(), pi.maximumPhysicalPageSize());
QCOMPARE(pi2.supportedResolutions(), pi.supportedResolutions());
+ QCOMPARE(pi2.defaultDuplexMode(), pi.defaultDuplexMode());
+ QCOMPARE(pi2.supportedDuplexModes(), pi.supportedDuplexModes());
}
}
#endif // QT_NO_PRINTER