diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/auto.pro | 1 | ||||
-rw-r--r-- | tests/auto/qsvggenerator/referenceSvgs/radial_gradient.svg | 4 | ||||
-rw-r--r-- | tests/auto/qsvggenerator/tst_qsvggenerator.cpp | 42 | ||||
-rw-r--r-- | tests/auto/qsvgplugin/.gitignore | 1 | ||||
-rw-r--r-- | tests/auto/qsvgplugin/qsvgplugin.pro | 8 | ||||
-rw-r--r-- | tests/auto/qsvgplugin/resources.qrc | 16 | ||||
-rw-r--r-- | tests/auto/qsvgplugin/square.svg | 5 | ||||
-rw-r--r-- | tests/auto/qsvgplugin/square_size.svg | 5 | ||||
-rw-r--r-- | tests/auto/qsvgplugin/square_size_viewbox.svg | 5 | ||||
-rw-r--r-- | tests/auto/qsvgplugin/square_viewbox.svg | 5 | ||||
-rw-r--r-- | tests/auto/qsvgplugin/tall.svg | 5 | ||||
-rw-r--r-- | tests/auto/qsvgplugin/tall_size.svg | 5 | ||||
-rw-r--r-- | tests/auto/qsvgplugin/tall_size_viewbox.svg | 5 | ||||
-rw-r--r-- | tests/auto/qsvgplugin/tall_viewbox.svg | 5 | ||||
-rw-r--r-- | tests/auto/qsvgplugin/tst_qsvgplugin.cpp | 108 | ||||
-rw-r--r-- | tests/auto/qsvgplugin/wide.svg | 5 | ||||
-rw-r--r-- | tests/auto/qsvgplugin/wide_size.svg | 5 | ||||
-rw-r--r-- | tests/auto/qsvgplugin/wide_size_viewbox.svg | 5 | ||||
-rw-r--r-- | tests/auto/qsvgplugin/wide_viewbox.svg | 5 |
19 files changed, 238 insertions, 2 deletions
diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro index 43ff500..e2d84ec 100644 --- a/tests/auto/auto.pro +++ b/tests/auto/auto.pro @@ -4,6 +4,7 @@ qtHaveModule(widgets) { qsvgdevice \ qsvggenerator \ qsvgrenderer \ + qsvgplugin \ qicon_svg \ cmake \ installed_cmake diff --git a/tests/auto/qsvggenerator/referenceSvgs/radial_gradient.svg b/tests/auto/qsvggenerator/referenceSvgs/radial_gradient.svg index a56674c..13fc6f1 100644 --- a/tests/auto/qsvggenerator/referenceSvgs/radial_gradient.svg +++ b/tests/auto/qsvggenerator/referenceSvgs/radial_gradient.svg @@ -4,11 +4,11 @@ <title>Qt SVG Document</title> <desc>Generated with Qt</desc> <defs> -<radialGradient gradientUnits="objectBoundingBox" cx="0.5" cy="0.5" r="0.5" fx="0.5" fy="0.5" xml:id="gradient1"> +<radialGradient gradientUnits="objectBoundingBox" cx="0.5" cy="0.5" r="0.5" fx="0.5" fy="0.5" id="gradient1"> <stop offset="0" stop-color="#ff0000" stop-opacity="1" /> <stop offset="1" stop-color="#0000ff" stop-opacity="1" /> </radialGradient> -<radialGradient gradientUnits="userSpaceOnUse" cx="150" cy="50" r="50" fx="150" fy="50" xml:id="gradient2"> +<radialGradient gradientUnits="userSpaceOnUse" cx="150" cy="50" r="50" fx="150" fy="50" id="gradient2"> <stop offset="0" stop-color="#ff0000" stop-opacity="1" /> <stop offset="1" stop-color="#0000ff" stop-opacity="1" /> </radialGradient> diff --git a/tests/auto/qsvggenerator/tst_qsvggenerator.cpp b/tests/auto/qsvggenerator/tst_qsvggenerator.cpp index 4795b55..b55b687 100644 --- a/tests/auto/qsvggenerator/tst_qsvggenerator.cpp +++ b/tests/auto/qsvggenerator/tst_qsvggenerator.cpp @@ -58,6 +58,7 @@ private slots: void fractionalFontSize(); void titleAndDescription(); void gradientInterpolation(); + void patternBrush(); }; tst_QSvgGenerator::tst_QSvgGenerator() @@ -423,5 +424,46 @@ void tst_QSvgGenerator::gradientInterpolation() QVERIFY(sqrImageDiff(image, refImage) < 2); // pixel error < 1.41 (L2-norm) } +void tst_QSvgGenerator::patternBrush() +{ + { // Pattern brush should create mask and pattern used as fill + QSvgGenerator generator; + QByteArray byteArray; + QBuffer buffer(&byteArray); + generator.setOutputDevice(&buffer); + QPainter painter(&generator); + painter.setBrush(Qt::CrossPattern); + painter.drawRect(0, 0, 100, 100); + painter.end(); + + QVERIFY(byteArray.contains("<mask id=\"patternmask")); + QVERIFY(byteArray.contains("<pattern id=\"fillpattern")); + QVERIFY(byteArray.contains("<g fill=\"url(#fillpattern")); + } + + { // Masks and patterns should be reused, not regenerated + QSvgGenerator generator; + QByteArray byteArray; + QBuffer buffer(&byteArray); + generator.setOutputDevice(&buffer); + QPainter painter(&generator); + painter.setBrush(QBrush(Qt::red, Qt::Dense3Pattern)); + painter.drawRect(0, 0, 100, 100); + painter.drawEllipse(200, 50, 50, 50); + painter.setBrush(QBrush(Qt::green, Qt::Dense3Pattern)); + painter.drawRoundedRect(0, 200, 100, 100, 10, 10); + painter.setBrush(QBrush(Qt::blue, Qt::Dense4Pattern)); + painter.drawRect(200, 200, 100, 100); + painter.setBrush(QBrush(Qt::red, Qt::Dense3Pattern)); + painter.drawRoundedRect(120, 120, 60, 60, 5, 5); + painter.end(); + + QCOMPARE(byteArray.count("<mask id=\"patternmask"), 2); + QCOMPARE(byteArray.count("<pattern id=\"fillpattern"), 3); + QVERIFY(byteArray.count("<g fill=\"url(#fillpattern") >= 4); + } + +} + QTEST_MAIN(tst_QSvgGenerator) #include "tst_qsvggenerator.moc" diff --git a/tests/auto/qsvgplugin/.gitignore b/tests/auto/qsvgplugin/.gitignore new file mode 100644 index 0000000..c41c448 --- /dev/null +++ b/tests/auto/qsvgplugin/.gitignore @@ -0,0 +1 @@ +tst_qsvgplugin diff --git a/tests/auto/qsvgplugin/qsvgplugin.pro b/tests/auto/qsvgplugin/qsvgplugin.pro new file mode 100644 index 0000000..3fec52e --- /dev/null +++ b/tests/auto/qsvgplugin/qsvgplugin.pro @@ -0,0 +1,8 @@ +TARGET = tst_qsvgplugin +CONFIG += testcase +QT += svg testlib widgets gui-private + +SOURCES += tst_qsvgplugin.cpp +RESOURCES += resources.qrc + +DEFINES += SRCDIR=\\\"$$PWD/\\\" diff --git a/tests/auto/qsvgplugin/resources.qrc b/tests/auto/qsvgplugin/resources.qrc new file mode 100644 index 0000000..fcb311a --- /dev/null +++ b/tests/auto/qsvgplugin/resources.qrc @@ -0,0 +1,16 @@ +<!DOCTYPE RCC><RCC version="1.0"> +<qresource> + <file>square.svg</file> + <file>square_size.svg</file> + <file>square_size_viewbox.svg</file> + <file>square_viewbox.svg</file> + <file>tall.svg</file> + <file>tall_size.svg</file> + <file>tall_size_viewbox.svg</file> + <file>tall_viewbox.svg</file> + <file>wide.svg</file> + <file>wide_size.svg</file> + <file>wide_size_viewbox.svg</file> + <file>wide_viewbox.svg</file> +</qresource> +</RCC> diff --git a/tests/auto/qsvgplugin/square.svg b/tests/auto/qsvgplugin/square.svg new file mode 100644 index 0000000..f35fb87 --- /dev/null +++ b/tests/auto/qsvgplugin/square.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg version="1.0" xmlns="http://www.w3.org/2000/svg"> + <circle cx="50" cy="50" r="25" fill="#00ff00" /> +</svg> diff --git a/tests/auto/qsvgplugin/square_size.svg b/tests/auto/qsvgplugin/square_size.svg new file mode 100644 index 0000000..f4aeb67 --- /dev/null +++ b/tests/auto/qsvgplugin/square_size.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="200px" height="200px"> + <circle cx="50" cy="50" r="25" fill="#00ff00" /> +</svg> diff --git a/tests/auto/qsvgplugin/square_size_viewbox.svg b/tests/auto/qsvgplugin/square_size_viewbox.svg new file mode 100644 index 0000000..cf39bd7 --- /dev/null +++ b/tests/auto/qsvgplugin/square_size_viewbox.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="200px" height="200px" viewBox="0 0 100 100"> + <circle cx="50" cy="50" r="25" fill="#00ff00" /> +</svg> diff --git a/tests/auto/qsvgplugin/square_viewbox.svg b/tests/auto/qsvgplugin/square_viewbox.svg new file mode 100644 index 0000000..5811505 --- /dev/null +++ b/tests/auto/qsvgplugin/square_viewbox.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"> + <circle cx="50" cy="50" r="25" fill="#00ff00" /> +</svg> diff --git a/tests/auto/qsvgplugin/tall.svg b/tests/auto/qsvgplugin/tall.svg new file mode 100644 index 0000000..b243b62 --- /dev/null +++ b/tests/auto/qsvgplugin/tall.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg version="1.0" xmlns="http://www.w3.org/2000/svg"> + <ellipse cx="25" cy="50" rx="12.5" ry="25" fill="#00ff00" /> +</svg> diff --git a/tests/auto/qsvgplugin/tall_size.svg b/tests/auto/qsvgplugin/tall_size.svg new file mode 100644 index 0000000..6121451 --- /dev/null +++ b/tests/auto/qsvgplugin/tall_size.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="100px" height="200px"> + <ellipse cx="25" cy="50" rx="12.5" ry="25" fill="#00ff00" /> +</svg> diff --git a/tests/auto/qsvgplugin/tall_size_viewbox.svg b/tests/auto/qsvgplugin/tall_size_viewbox.svg new file mode 100644 index 0000000..9d82492 --- /dev/null +++ b/tests/auto/qsvgplugin/tall_size_viewbox.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="100px" height="200px" viewBox="0 0 50 100"> + <ellipse cx="25" cy="50" rx="12.5" ry="25" fill="#00ff00" /> +</svg> diff --git a/tests/auto/qsvgplugin/tall_viewbox.svg b/tests/auto/qsvgplugin/tall_viewbox.svg new file mode 100644 index 0000000..8ed61a9 --- /dev/null +++ b/tests/auto/qsvgplugin/tall_viewbox.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 100"> + <ellipse cx="25" cy="50" rx="12.5" ry="25" fill="#00ff00" /> +</svg> diff --git a/tests/auto/qsvgplugin/tst_qsvgplugin.cpp b/tests/auto/qsvgplugin/tst_qsvgplugin.cpp new file mode 100644 index 0000000..4ec1737 --- /dev/null +++ b/tests/auto/qsvgplugin/tst_qsvgplugin.cpp @@ -0,0 +1,108 @@ +/**************************************************************************** +** +** 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> + +#include "../../../src/plugins/imageformats/svg/qsvgiohandler.cpp" +#include <QImage> +#include <QStringList> +#include <QVector> + +#ifndef SRCDIR +#define SRCDIR +#endif + + +class tst_QSvgPlugin : public QObject +{ +Q_OBJECT + +public: + tst_QSvgPlugin(); + virtual ~tst_QSvgPlugin(); + +private slots: + void checkSize_data(); + void checkSize(); +}; + + + +tst_QSvgPlugin::tst_QSvgPlugin() +{ +} + +tst_QSvgPlugin::~tst_QSvgPlugin() +{ +} + +void tst_QSvgPlugin::checkSize_data() +{ + QTest::addColumn<QString>("filename"); + QTest::addColumn<int>("imageHeight"); + QTest::addColumn<int>("imageWidth"); + + QTest::newRow("square") << SRCDIR "square.svg" << 50 << 50; + QTest::newRow("square_size") << SRCDIR "square_size.svg" << 200 << 200; + QTest::newRow("square_size_viewbox") << SRCDIR "square_size_viewbox.svg" << 200 << 200; + QTest::newRow("square_viewbox") << SRCDIR "square_viewbox.svg" << 100 << 100; + QTest::newRow("tall") << SRCDIR "tall.svg" << 50 << 25; + QTest::newRow("tall_size") << SRCDIR "tall_size.svg" << 200 << 100; + QTest::newRow("tall_size_viewbox") << SRCDIR "tall_size_viewbox.svg" << 200 << 100; + QTest::newRow("tall_viewbox") << SRCDIR "tall_viewbox.svg" << 100 << 50; + QTest::newRow("wide") << SRCDIR "wide.svg" << 25 << 50; + QTest::newRow("wide_size") << SRCDIR "wide_size.svg" << 100 << 200; + QTest::newRow("wide_size_viewbox") << SRCDIR "wide_size_viewbox.svg" << 100 << 200; + QTest::newRow("wide_viewbox") << SRCDIR "wide_viewbox.svg" << 50 << 100; +} + +void tst_QSvgPlugin::checkSize() +{ + QFETCH(QString, filename); + QFETCH(int, imageHeight); + QFETCH(int, imageWidth); + + QFile file(filename); + file.open(QIODevice::ReadOnly); + + QSvgIOHandler plugin; + plugin.setDevice(&file); + + QImage image; + plugin.read(&image); + + file.close(); + + QCOMPARE(imageHeight, image.height()); + QCOMPARE(imageWidth, image.width()); +} + + +QTEST_MAIN(tst_QSvgPlugin) +#include "tst_qsvgplugin.moc" diff --git a/tests/auto/qsvgplugin/wide.svg b/tests/auto/qsvgplugin/wide.svg new file mode 100644 index 0000000..9166606 --- /dev/null +++ b/tests/auto/qsvgplugin/wide.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg version="1.0" xmlns="http://www.w3.org/2000/svg"> + <ellipse cx="50" cy="25" rx="25" ry="12.5" fill="#00ff00" /> +</svg> diff --git a/tests/auto/qsvgplugin/wide_size.svg b/tests/auto/qsvgplugin/wide_size.svg new file mode 100644 index 0000000..e816154 --- /dev/null +++ b/tests/auto/qsvgplugin/wide_size.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="200px" height="100px"> + <ellipse cx="50" cy="25" rx="25" ry="12.5" fill="#00ff00" /> +</svg> diff --git a/tests/auto/qsvgplugin/wide_size_viewbox.svg b/tests/auto/qsvgplugin/wide_size_viewbox.svg new file mode 100644 index 0000000..3d9b044 --- /dev/null +++ b/tests/auto/qsvgplugin/wide_size_viewbox.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="200px" height="100px" viewBox="0 0 100 50"> + <ellipse cx="50" cy="25" rx="25" ry="12.5" fill="#00ff00" /> +</svg> diff --git a/tests/auto/qsvgplugin/wide_viewbox.svg b/tests/auto/qsvgplugin/wide_viewbox.svg new file mode 100644 index 0000000..aface45 --- /dev/null +++ b/tests/auto/qsvgplugin/wide_viewbox.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 50"> + <ellipse cx="50" cy="25" rx="25" ry="12.5" fill="#00ff00" /> +</svg> |