diff options
Diffstat (limited to 'tests/auto/gui/image/qimagewriter')
-rw-r--r-- | tests/auto/gui/image/qimagewriter/CMakeLists.txt | 43 | ||||
-rw-r--r-- | tests/auto/gui/image/qimagewriter/qimagewriter.pro | 7 | ||||
-rw-r--r-- | tests/auto/gui/image/qimagewriter/qimagewriter.qrc | 16 | ||||
-rw-r--r-- | tests/auto/gui/image/qimagewriter/tst_qimagewriter.cpp | 106 |
4 files changed, 83 insertions, 89 deletions
diff --git a/tests/auto/gui/image/qimagewriter/CMakeLists.txt b/tests/auto/gui/image/qimagewriter/CMakeLists.txt index 9e5c7362a8..06273ce7e4 100644 --- a/tests/auto/gui/image/qimagewriter/CMakeLists.txt +++ b/tests/auto/gui/image/qimagewriter/CMakeLists.txt @@ -1,50 +1,27 @@ -# Generated from qimagewriter.pro. +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause ##################################################################### ## tst_qimagewriter Test: ##################################################################### +if(NOT QT_BUILD_STANDALONE_TESTS AND NOT QT_BUILDING_QT) + cmake_minimum_required(VERSION 3.16) + project(tst_qimagewriter LANGUAGES CXX) + find_package(Qt6BuildInternals REQUIRED COMPONENTS STANDALONE_TEST) +endif() + # Collect test data file(GLOB_RECURSE test_data_glob RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} images/*) list(APPEND test_data ${test_data_glob}) -qt_add_test(tst_qimagewriter +qt_internal_add_test(tst_qimagewriter SOURCES tst_qimagewriter.cpp - PUBLIC_LIBRARIES + LIBRARIES Qt::Gui TESTDATA ${test_data} ) -#### Keys ignored in scope 1:.:.:qimagewriter.pro:<TRUE>: -# MOC_DIR = "tmp" - -## Scopes: -##################################################################### - -if(ANDROID AND NOT ANDROID_EMBEDDED) - # Resources: - set(qimagewriter_resource_files - "images/YCbCr_cmyk.jpg" - "images/YCbCr_rgb.jpg" - "images/beavis.jpg" - "images/colorful.bmp" - "images/earth.gif" - "images/font.bmp" - "images/gnus.xbm" - "images/kollada.png" - "images/marble.xpm" - "images/ship63.pbm" - "images/teapot.ppm" - "images/trolltech.gif" - ) - - qt_add_resource(tst_qimagewriter "qimagewriter" - PREFIX - "/" - FILES - ${qimagewriter_resource_files} - ) -endif() diff --git a/tests/auto/gui/image/qimagewriter/qimagewriter.pro b/tests/auto/gui/image/qimagewriter/qimagewriter.pro deleted file mode 100644 index e63e57886c..0000000000 --- a/tests/auto/gui/image/qimagewriter/qimagewriter.pro +++ /dev/null @@ -1,7 +0,0 @@ -CONFIG += testcase -TARGET = tst_qimagewriter -QT += testlib -SOURCES += tst_qimagewriter.cpp -MOC_DIR=tmp -android:!android-embedded: RESOURCES += qimagewriter.qrc -TESTDATA += images/* diff --git a/tests/auto/gui/image/qimagewriter/qimagewriter.qrc b/tests/auto/gui/image/qimagewriter/qimagewriter.qrc deleted file mode 100644 index 29b036e303..0000000000 --- a/tests/auto/gui/image/qimagewriter/qimagewriter.qrc +++ /dev/null @@ -1,16 +0,0 @@ -<RCC> - <qresource prefix="/"> - <file>images/beavis.jpg</file> - <file>images/colorful.bmp</file> - <file>images/earth.gif</file> - <file>images/font.bmp</file> - <file>images/gnus.xbm</file> - <file>images/kollada.png</file> - <file>images/marble.xpm</file> - <file>images/ship63.pbm</file> - <file>images/teapot.ppm</file> - <file>images/trolltech.gif</file> - <file>images/YCbCr_cmyk.jpg</file> - <file>images/YCbCr_rgb.jpg</file> - </qresource> -</RCC> diff --git a/tests/auto/gui/image/qimagewriter/tst_qimagewriter.cpp b/tests/auto/gui/image/qimagewriter/tst_qimagewriter.cpp index e4708f358b..1059cc48ab 100644 --- a/tests/auto/gui/image/qimagewriter/tst_qimagewriter.cpp +++ b/tests/auto/gui/image/qimagewriter/tst_qimagewriter.cpp @@ -1,35 +1,7 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - -#include <QtTest/QtTest> - +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only +#include <QTest> #include <QDebug> #include <QFile> #include <QImage> @@ -38,12 +10,18 @@ #include <QPainter> #include <QSet> #include <QTemporaryDir> +#include <QTemporaryFile> +#include <QSaveFile> #ifdef Q_OS_UNIX // for geteuid() # include <sys/types.h> # include <unistd.h> #endif +#ifdef Q_OS_INTEGRITY +#include "qplatformdefs.h" +#endif + #include <algorithm> typedef QMap<QString, QString> QStringMap; @@ -77,6 +55,7 @@ private slots: void saveWithNoFormat(); void saveToTemporaryFile(); + void saveToSaveFile(); void writeEmpty(); @@ -123,7 +102,7 @@ void tst_QImageWriter::getSetCheck() QCOMPARE((QIODevice *) var1, obj1.device()); // The class should possibly handle a 0-pointer as a device, since - // there is a default contructor, so it's "handling" a 0 device by default. + // there is a default constructor, so it's "handling" a 0 device by default. // For example: QMovie::setDevice(0) works just fine obj1.setDevice((QIODevice *)0); QCOMPARE((QIODevice *) 0, obj1.device()); @@ -277,6 +256,8 @@ void tst_QImageWriter::writeImage2() QFETCH(QByteArray, format); QFETCH(QImage, image); + SKIP_IF_UNSUPPORTED(format); + //we reduce the scope of writer so that it closes the associated file // and QFile::remove can actually work { @@ -293,7 +274,13 @@ void tst_QImageWriter::writeImage2() QVERIFY(reader.read(&written)); } - written = written.convertToFormat(image.format()); + // The 8-bit input value might have turned into a fraction in 16-bit grayscale + // which can't be preserved in file formats that doesn't support 16bpc. + if (image.format() == QImage::Format_Grayscale16 && + written.format() != QImage::Format_Grayscale16 && written.depth() <= 32) + image.convertTo(QImage::Format_Grayscale8); + + written.convertTo(image.format()); if (!equalImageContents(written, image)) { qDebug() << "image" << image.format() << image.width() << image.height() << image.depth() @@ -526,6 +513,59 @@ void tst_QImageWriter::saveToTemporaryFile() } } +void tst_QImageWriter::saveToSaveFile() +{ + QImage image(prefix + "kollada.png"); + QVERIFY(!image.isNull()); + + { + // Check canWrite + QImageWriter writer; + QSaveFile file(writePrefix + "savefile0.png"); + writer.setDevice(&file); + QVERIFY2(writer.canWrite(), qPrintable(writer.errorString())); + } + + QString fileName1(writePrefix + "savefile1.garble"); + { + // Check failing canWrite + QVERIFY(!QFileInfo(fileName1).exists()); + QImageWriter writer; + QSaveFile file(fileName1); + writer.setDevice(&file); + QVERIFY(!writer.canWrite()); + QCOMPARE(writer.error(), QImageWriter::UnsupportedFormatError); + } + QVERIFY(!QFileInfo(fileName1).exists()); + + QString fileName2(writePrefix + "savefile2.png"); + { + QImageWriter writer; + QSaveFile file(fileName2); + writer.setDevice(&file); + QCOMPARE(writer.fileName(), fileName2); + QVERIFY2(writer.write(image), qPrintable(writer.errorString())); + QVERIFY(file.commit()); + } + { + QImage tmp; + QVERIFY(tmp.load(fileName2, "PNG")); + QCOMPARE(tmp, image); + } + + QString fileName3(writePrefix + "savefile3.png"); + { + QSaveFile file(fileName3); + QVERIFY(image.save(&file)); + QVERIFY(file.commit()); + } + { + QImage tmp; + QVERIFY(tmp.load(fileName3, "PNG")); + QCOMPARE(tmp, image); + } +} + void tst_QImageWriter::writeEmpty() { // check writing a null QImage errors gracefully |