diff options
author | John Layt <jlayt@kde.org> | 2014-03-17 17:59:55 +0100 |
---|---|---|
committer | Andy Shaw <andy.shaw@digia.com> | 2014-10-24 21:34:21 +0200 |
commit | 74a51d590f4acd189f8d0594a5a706cbf97c805b (patch) | |
tree | 7be62ff9cdf58e36851576f0a79493f2943abc0b /tests/auto/printsupport | |
parent | ddf3fc0deb906ee591fc01ecc2a74768a49950f8 (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.cpp | 46 | ||||
-rw-r--r-- | tests/auto/printsupport/kernel/qprinterinfo/tst_qprinterinfo.cpp | 8 |
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 |