summaryrefslogtreecommitdiff
path: root/tests/auto
diff options
context:
space:
mode:
authorToby Tomkins <toby.tomkins@nokia.com>2012-02-08 15:51:07 +1000
committerQt by Nokia <qt-info@nokia.com>2012-02-09 05:57:57 +0100
commitfe0bc6a5663a4f0d95d62243639049f3fef3eb50 (patch)
tree72926619851a61dcdd2de46ee8cb81807cfe3b6e /tests/auto
parent2419aeff9c72090157d056df5ce2f6212a715457 (diff)
downloadqtsvg-fe0bc6a5663a4f0d95d62243639049f3fef3eb50.tar.gz
Add QIcon SVG specific tests to QtSVG module.
These tests used to reside in the qtbase module. As they rely on the presence of the QtSVG module to execute they are not run as part of the autotest suite. It makes more sense to place these autotest where they can provide meaningful feedback to commits. Task-number: QTBUG-24139 Task-number: QTBUG-22360 Change-Id: Ib7061598245673ac281e4b10cbe2243977264b6d Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/auto.pro1
-rw-r--r--tests/auto/qicon_svg/icons/heart.svg55
-rw-r--r--tests/auto/qicon_svg/icons/heart.svgzbin0 -> 1506 bytes
-rw-r--r--tests/auto/qicon_svg/icons/image.pngbin0 -> 14743 bytes
-rw-r--r--tests/auto/qicon_svg/icons/rect.svg76
-rw-r--r--tests/auto/qicon_svg/icons/trash.svg58
-rw-r--r--tests/auto/qicon_svg/qicon_svg.pro12
-rw-r--r--tests/auto/qicon_svg/tst_qicon_svg.cpp158
-rw-r--r--tests/auto/qicon_svg/tst_qicon_svg.qrc9
9 files changed, 369 insertions, 0 deletions
diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro
index 9a7e229..7052605 100644
--- a/tests/auto/auto.pro
+++ b/tests/auto/auto.pro
@@ -3,5 +3,6 @@ SUBDIRS=\
qsvgdevice \
qsvggenerator \
qsvgrenderer \
+ qicon_svg \
!cross_compile: SUBDIRS += host.pro
diff --git a/tests/auto/qicon_svg/icons/heart.svg b/tests/auto/qicon_svg/icons/heart.svg
new file mode 100644
index 0000000..8c982cd
--- /dev/null
+++ b/tests/auto/qicon_svg/icons/heart.svg
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) --><svg viewBox="100 200 550 500" height="841.88976pt" id="svg1" inkscape:version="0.40+cvs" sodipodi:docbase="C:\Documents and Settings\Jon Phillips\My Documents\projects\clipart-project\submissions" sodipodi:docname="heart-left-highlight.svg" sodipodi:version="0.32" width="595.27559pt" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg">
+<metadata>
+<rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<cc:Work rdf:about="">
+<dc:title>Heart Left-Highlight</dc:title>
+<dc:description>This is a normal valentines day heart.</dc:description>
+<dc:subject>
+<rdf:Bag>
+<rdf:li>holiday</rdf:li>
+<rdf:li>valentines</rdf:li>
+<rdf:li></rdf:li>
+<rdf:li>valentine</rdf:li>
+<rdf:li>hash(0x8a091c0)</rdf:li>
+<rdf:li>hash(0x8a0916c)</rdf:li>
+<rdf:li>signs_and_symbols</rdf:li>
+<rdf:li>hash(0x8a091f0)</rdf:li>
+<rdf:li>day</rdf:li>
+</rdf:Bag>
+</dc:subject>
+<dc:publisher>
+<cc:Agent rdf:about="http://www.openclipart.org">
+<dc:title>Jon Phillips</dc:title>
+</cc:Agent>
+</dc:publisher>
+<dc:creator>
+<cc:Agent>
+<dc:title>Jon Phillips</dc:title>
+</cc:Agent>
+</dc:creator>
+<dc:rights>
+<cc:Agent>
+<dc:title>Jon Phillips</dc:title>
+</cc:Agent>
+</dc:rights>
+<dc:date></dc:date>
+<dc:format>image/svg+xml</dc:format>
+<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+<cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+<dc:language>en</dc:language>
+</cc:Work>
+<cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+<cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+<cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+<cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+</cc:License>
+</rdf:RDF>
+</metadata>
+<defs id="defs3"/>
+<sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:current-layer="layer1" inkscape:cx="549.40674" inkscape:cy="596.00159" inkscape:document-units="px" inkscape:guide-bbox="true" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="615" inkscape:window-width="866" inkscape:window-x="88" inkscape:window-y="116" inkscape:zoom="0.35000000" pagecolor="#ffffff" showguides="true"/>
+<g id="layer1" inkscape:groupmode="layer" inkscape:label="Layer 1">
+<path d="M 263.41570,235.14588 C 197.17570,235.14588 143.41575,288.90587 143.41575,355.14588 C 143.41575,489.90139 279.34890,525.23318 371.97820,658.45392 C 459.55244,526.05056 600.54070,485.59932 600.54070,355.14588 C 600.54070,288.90588 546.78080,235.14587 480.54070,235.14588 C 432.49280,235.14588 391.13910,263.51631 371.97820,304.33338 C 352.81740,263.51630 311.46370,235.14587 263.41570,235.14588 z " id="path7" sodipodi:nodetypes="ccccccc" style="fill:#e60000;fill-opacity:1.0000000;stroke:#000000;stroke-width:18.700001;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/>
+<path d="M 265.00000,253.59375 C 207.04033,253.59375 160.00000,300.63407 160.00000,358.59375 C 160.00000,476.50415 278.91857,507.43251 359.96875,624.00000 C 366.52868,614.08205 220.00000,478.47309 220.00000,378.59375 C 220.00000,320.63407 267.04033,273.59375 325.00000,273.59375 C 325.50453,273.59375 325.99718,273.64912 326.50000,273.65625 C 309.22436,261.07286 288.00557,253.59374 265.00000,253.59375 z " id="path220" sodipodi:nodetypes="ccccccc" style="fill:#e6e6e6;fill-opacity:0.64556962;stroke:none;stroke-width:18.700001;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/>
+</g>
+</svg>
diff --git a/tests/auto/qicon_svg/icons/heart.svgz b/tests/auto/qicon_svg/icons/heart.svgz
new file mode 100644
index 0000000..0f0913f
--- /dev/null
+++ b/tests/auto/qicon_svg/icons/heart.svgz
Binary files differ
diff --git a/tests/auto/qicon_svg/icons/image.png b/tests/auto/qicon_svg/icons/image.png
new file mode 100644
index 0000000..8d70364
--- /dev/null
+++ b/tests/auto/qicon_svg/icons/image.png
Binary files differ
diff --git a/tests/auto/qicon_svg/icons/rect.svg b/tests/auto/qicon_svg/icons/rect.svg
new file mode 100644
index 0000000..8eb2472
--- /dev/null
+++ b/tests/auto/qicon_svg/icons/rect.svg
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ width="40px"
+ height="5px"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docname="test.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview
+ inkscape:window-height="1005"
+ inkscape:window-width="1280"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ guidetolerance="10.0"
+ gridtolerance="10.0"
+ objecttolerance="10.0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base"
+ showgrid="false"
+ inkscape:zoom="13.6"
+ inkscape:cx="20"
+ inkscape:cy="2.5"
+ inkscape:window-x="-4"
+ inkscape:window-y="-4"
+ inkscape:current-layer="svg2" />
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 2.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="40 : 2.5 : 1"
+ inkscape:persp3d-origin="20 : 1.6666667 : 1"
+ id="perspective9" />
+ </defs>
+ <g
+ id="layer1">
+ <rect
+ width="40px"
+ height="5px"
+ x="0px"
+ y="0px"
+ id="rect2393"
+ style="fill:#ff0000" />
+ </g>
+ <rect
+ style="fill:#000000"
+ id="rect2382"
+ width="2"
+ height="2"
+ x="19"
+ y="1.5" />
+</svg>
diff --git a/tests/auto/qicon_svg/icons/trash.svg b/tests/auto/qicon_svg/icons/trash.svg
new file mode 100644
index 0000000..c44e4c7
--- /dev/null
+++ b/tests/auto/qicon_svg/icons/trash.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 10, SVG Export Plug-In . SVG Version: 3.0.0 Build 76) --><svg enable-background="new 0 0 347 348" height="348" i:pageBounds="0 792 612 0" i:rulerOrigin="0 0" i:viewOrigin="131 567" overflow="visible" space="preserve" viewBox="-20 -20 387 388" width="347" xmlns="http://www.w3.org/2000/svg" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/" xmlns:graph="http://ns.adobe.com/Graphs/1.0/" xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/" xmlns:x="http://ns.adobe.com/Extensibility/1.0/" xmlns:xlink="http://www.w3.org/1999/xlink">
+<metadata>
+<rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<cc:Work rdf:about="">
+<dc:title>Keep Tidy Inside</dc:title>
+<dc:description></dc:description>
+<dc:subject>
+<rdf:Bag>
+<rdf:li></rdf:li>
+<rdf:li>symbol</rdf:li>
+<rdf:li>bin</rdf:li>
+<rdf:li>signs_and_symbols</rdf:li>
+<rdf:li>clean</rdf:li>
+<rdf:li>rubish</rdf:li>
+<rdf:li>trash</rdf:li>
+<rdf:li>inside</rdf:li>
+<rdf:li>garbage</rdf:li>
+<rdf:li>sign</rdf:li>
+</rdf:Bag>
+</dc:subject>
+<dc:publisher>
+<cc:Agent rdf:about="http://www.openclipart.org">
+<dc:title>Martin Owens</dc:title>
+</cc:Agent>
+</dc:publisher>
+<dc:creator>
+<cc:Agent>
+<dc:title>Martin Owens</dc:title>
+</cc:Agent>
+</dc:creator>
+<dc:rights>
+<cc:Agent>
+<dc:title>Martin Owens</dc:title>
+</cc:Agent>
+</dc:rights>
+<dc:date></dc:date>
+<dc:format>image/svg+xml</dc:format>
+<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+<cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+<dc:language>en</dc:language>
+</cc:Work>
+<cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+<cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+<cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+<cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+</cc:License>
+</rdf:RDF>
+</metadata>
+<g i:dimmedPercent="50" i:knockout="Off" i:layer="yes" i:rgbTrio="#4F008000FFFF" id="Layer_1">
+<path d="M347,174c0,96.098-77.679,174-173.5,174C77.679,348,0,270.098,0,174 C0,77.902,77.679,0,173.5,0C269.321,0,347,77.902,347,174z" fill="#10A040" i:knockout="Off"/>
+<path d="M238,53c0,13.807-11.864,25-26.5,25S185,66.807,185,53s11.864-25,26.5-25 S238,39.193,238,53z" fill="#FFFFFF" i:knockout="Off"/>
+<path d="M66,175c1.055,6.355,19.333,126.417,19.333,126.417h68.333 c0,0,14.105-122.524,14.333-126.417c6.224-0.622,6.667-13-2-13c-12.164,0-89.205-0.059-98,0S61.167,174.487,66,175z" fill="#FFFFFF" i:knockout="Off"/>
+<path d="M78,141c17.292-5.325,24.179-23.532,27-31c14.513,6.596,40.333,12.265,59,8 c3.683,19.419-28.043,19.31-23,37C132.577,145.705,89.404,167.292,78,141z" fill="#FFFFFF" i:knockout="Off"/>
+<path d="M103,82l139-1c-0.6,3.421,33.633,57.497,29,67c-4.089,0.418-67,5-67,5 c6.109-9.379-13-43-13-43L103,82z" fill="#FFFFFF" i:knockout="Off"/>
+<path d="M270,156l-66-3c0,0-23.565,143.355-24,145s1.855,2.536,3,1s51-82,51-82 s19.754,80.701,20,82s3.721,1.209,4,0S270,156,270,156z" fill="#FFFFFF" i:knockout="Off"/>
+</g>
+</svg>
diff --git a/tests/auto/qicon_svg/qicon_svg.pro b/tests/auto/qicon_svg/qicon_svg.pro
new file mode 100644
index 0000000..6ea218b
--- /dev/null
+++ b/tests/auto/qicon_svg/qicon_svg.pro
@@ -0,0 +1,12 @@
+CONFIG += testcase
+TARGET = tst_qicon_svg
+
+QT += widgets testlib
+SOURCES += tst_qicon_svg.cpp
+RESOURCES = tst_qicon_svg.qrc
+
+wince* {
+ QT += xml svg
+ DEPLOYMENT_PLUGIN += qsvg
+}
+TESTDATA += icons/*
diff --git a/tests/auto/qicon_svg/tst_qicon_svg.cpp b/tests/auto/qicon_svg/tst_qicon_svg.cpp
new file mode 100644
index 0000000..c986e13
--- /dev/null
+++ b/tests/auto/qicon_svg/tst_qicon_svg.cpp
@@ -0,0 +1,158 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** 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, Nokia gives you certain additional
+** rights. These rights are described in the Nokia 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.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <QImageReader>
+#include <QtGui>
+
+class tst_QIcon_Svg : public QObject
+{
+ Q_OBJECT
+public:
+
+public slots:
+ void initTestCase();
+
+private slots:
+ void svgActualSize();
+ void svg();
+ void availableSizes();
+
+private:
+ QString prefix;
+};
+
+void tst_QIcon_Svg::initTestCase()
+{
+ prefix = QFINDTESTDATA("icons/");
+ if (prefix.isEmpty())
+ QFAIL("Can't find images directory!");
+ if (!QImageReader::supportedImageFormats().contains("svg"))
+ QFAIL("SVG support is not available");
+}
+
+void tst_QIcon_Svg::svgActualSize()
+{
+ QIcon icon(prefix + "rect.svg");
+ QCOMPARE(icon.actualSize(QSize(16, 2)), QSize(16, 2));
+ QCOMPARE(icon.pixmap(QSize(16, 16)).size(), QSize(16, 2));
+
+ QPixmap p(16, 16);
+ p.fill(Qt::cyan);
+ icon.addPixmap(p);
+
+ QCOMPARE(icon.actualSize(QSize(16, 16)), QSize(16, 16));
+ QCOMPARE(icon.pixmap(QSize(16, 16)).size(), QSize(16, 16));
+
+ QEXPECT_FAIL("", "QTBUG-24139 - Test fails due to possible change in IconEngine", Abort);
+ QCOMPARE(icon.actualSize(QSize(16, 14)), QSize(16, 2));
+ QCOMPARE(icon.pixmap(QSize(16, 14)).size(), QSize(16, 2));
+}
+
+void tst_QIcon_Svg::svg()
+{
+ QIcon icon1(prefix + "heart.svg");
+ QVERIFY(!icon1.pixmap(32).isNull());
+ QImage img1 = icon1.pixmap(32).toImage();
+ QVERIFY(!icon1.pixmap(32, QIcon::Disabled).isNull());
+ QImage img2 = icon1.pixmap(32, QIcon::Disabled).toImage();
+
+ icon1.addFile(prefix + "trash.svg", QSize(), QIcon::Disabled);
+ QVERIFY(!icon1.pixmap(32, QIcon::Disabled).isNull());
+ QImage img3 = icon1.pixmap(32, QIcon::Disabled).toImage();
+ QVERIFY(img3 != img2);
+ QVERIFY(img3 != img1);
+
+ QPixmap pm(prefix + "image.png");
+ icon1.addPixmap(pm, QIcon::Normal, QIcon::On);
+ QVERIFY(!icon1.pixmap(128, QIcon::Normal, QIcon::On).isNull());
+ QImage img4 = icon1.pixmap(128, QIcon::Normal, QIcon::On).toImage();
+ QVERIFY(img4 != img3);
+ QVERIFY(img4 != img2);
+ QVERIFY(img4 != img1);
+
+ QIcon icon2;
+ icon2.addFile(prefix + "heart.svg");
+ QVERIFY(icon2.pixmap(57).toImage() == icon1.pixmap(57).toImage());
+
+ QIcon icon3(prefix + "trash.svg");
+ icon3.addFile(prefix + "heart.svg");
+ QEXPECT_FAIL("", "QTBUG-24139 - Test fails due to possible change in IconEngine", Abort);
+ QVERIFY(icon3.pixmap(57).toImage() == icon1.pixmap(57).toImage());
+
+ QIcon icon4(prefix + "heart.svg");
+ icon4.addFile(prefix + "image.png", QSize(), QIcon::Active);
+ QVERIFY(!icon4.pixmap(32).isNull());
+ QVERIFY(!icon4.pixmap(32, QIcon::Active).isNull());
+ QVERIFY(icon4.pixmap(32).toImage() == img1);
+ QIcon pmIcon(pm);
+ QVERIFY(icon4.pixmap(pm.size(), QIcon::Active).toImage() == pmIcon.pixmap(pm.size(), QIcon::Active).toImage());
+
+#ifndef QT_NO_COMPRESS
+ QIcon icon5("heart.svgz");
+ QVERIFY(!icon5.pixmap(32).isNull());
+#endif
+}
+
+void tst_QIcon_Svg::availableSizes()
+{
+ {
+ // checks that there are no availableSizes for scalable images.
+ QIcon icon(prefix + "heart.svg");
+ QList<QSize> availableSizes = icon.availableSizes();
+ qDebug() << availableSizes;
+ QEXPECT_FAIL("", "QTBUG-24139 - Test fails due to possible change in IconEngine", Abort);
+ QVERIFY(availableSizes.isEmpty());
+ }
+
+ {
+ // even if an a scalable image contain added pixmaps,
+ // availableSizes still should be empty.
+ QIcon icon(prefix + "heart.svg");
+ icon.addFile(prefix + "image.png", QSize(32,32));
+ QList<QSize> availableSizes = icon.availableSizes();
+ QVERIFY(availableSizes.isEmpty());
+ }
+}
+
+QTEST_MAIN(tst_QIcon_Svg)
+#include "tst_qicon_svg.moc"
diff --git a/tests/auto/qicon_svg/tst_qicon_svg.qrc b/tests/auto/qicon_svg/tst_qicon_svg.qrc
new file mode 100644
index 0000000..fd9422b
--- /dev/null
+++ b/tests/auto/qicon_svg/tst_qicon_svg.qrc
@@ -0,0 +1,9 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource prefix="/">
+<file>./icons/heart.svg</file>
+<file>./icons/heart.svgz</file>
+<file>./icons/image.png</file>
+<file>./icons/rect.svg</file>
+<file>./icons/trash.svg</file>
+</qresource>
+</RCC>