diff options
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/auto.pro | 1 | ||||
-rw-r--r-- | tests/auto/qicon_svg/icons/heart.svg | 55 | ||||
-rw-r--r-- | tests/auto/qicon_svg/icons/heart.svgz | bin | 0 -> 1506 bytes | |||
-rw-r--r-- | tests/auto/qicon_svg/icons/image.png | bin | 0 -> 14743 bytes | |||
-rw-r--r-- | tests/auto/qicon_svg/icons/rect.svg | 76 | ||||
-rw-r--r-- | tests/auto/qicon_svg/icons/trash.svg | 58 | ||||
-rw-r--r-- | tests/auto/qicon_svg/qicon_svg.pro | 12 | ||||
-rw-r--r-- | tests/auto/qicon_svg/tst_qicon_svg.cpp | 158 | ||||
-rw-r--r-- | tests/auto/qicon_svg/tst_qicon_svg.qrc | 9 |
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 Binary files differnew file mode 100644 index 0000000..0f0913f --- /dev/null +++ b/tests/auto/qicon_svg/icons/heart.svgz diff --git a/tests/auto/qicon_svg/icons/image.png b/tests/auto/qicon_svg/icons/image.png Binary files differnew file mode 100644 index 0000000..8d70364 --- /dev/null +++ b/tests/auto/qicon_svg/icons/image.png 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> |