diff options
Diffstat (limited to 'tests/auto/qsvgrenderer')
-rw-r--r-- | tests/auto/qsvgrenderer/CMakeLists.txt | 10 | ||||
-rw-r--r-- | tests/auto/qsvgrenderer/resources.qrc | 5 | ||||
-rw-r--r-- | tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp | 75 |
3 files changed, 50 insertions, 40 deletions
diff --git a/tests/auto/qsvgrenderer/CMakeLists.txt b/tests/auto/qsvgrenderer/CMakeLists.txt index 26d263e..c67c14b 100644 --- a/tests/auto/qsvgrenderer/CMakeLists.txt +++ b/tests/auto/qsvgrenderer/CMakeLists.txt @@ -1,4 +1,5 @@ -# Generated from qsvgrenderer.pro. +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause ##################################################################### ## tst_qsvgrenderer Test: @@ -8,8 +9,8 @@ qt_internal_add_test(tst_qsvgrenderer SOURCES tst_qsvgrenderer.cpp DEFINES - SRCDIR=\\\"${CMAKE_CURRENT_SOURCE_DIR}/\\\" - PUBLIC_LIBRARIES + SRCDIR="${CMAKE_CURRENT_SOURCE_DIR}/" + LIBRARIES Qt::Gui Qt::GuiPrivate Qt::Svg @@ -19,6 +20,8 @@ qt_internal_add_test(tst_qsvgrenderer # Resources: set(resources_resource_files "heart.svgz" + "large.svg" + "large.svgz" ) qt_internal_add_resource(tst_qsvgrenderer "resources" @@ -27,4 +30,3 @@ qt_internal_add_resource(tst_qsvgrenderer "resources" FILES ${resources_resource_files} ) - diff --git a/tests/auto/qsvgrenderer/resources.qrc b/tests/auto/qsvgrenderer/resources.qrc deleted file mode 100644 index d666bcf..0000000 --- a/tests/auto/qsvgrenderer/resources.qrc +++ /dev/null @@ -1,5 +0,0 @@ -<!DOCTYPE RCC><RCC version="1.0"> -<qresource> - <file>heart.svgz</file> -</qresource> -</RCC> diff --git a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp index e27ee51..7e4a5ae 100644 --- a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp +++ b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp @@ -1,30 +1,5 @@ -/**************************************************************************** -** -** 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$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #include <QtTest/QtTest> @@ -74,6 +49,7 @@ private slots: void fillRule(); void opacity(); void paths(); + void paths2(); void displayMode(); void strokeInherit(); void testFillInheritance(); @@ -86,6 +62,8 @@ private slots: void oss_fuzz_24131(); void oss_fuzz_24738(); void imageRendering(); + void illegalAnimateTransform_data(); + void illegalAnimateTransform(); #ifndef QT_NO_COMPRESS void testGzLoading(); @@ -598,6 +576,8 @@ void tst_QSvgRenderer::boundsOnElement() const "<use x=\"0\" y=\"0\" transform=\"rotate(45)\" xlink:href=\"#baconost\"/>" "</g>" "</g>" + "<text id=\"textA\" x=\"50\" y=\"100\">Lorem ipsum</text>" + "<text id=\"textB\" transform=\"matrix(1 0 0 1 50 100)\">Lorem ipsum</text>" "</svg>"); qreal sqrt2 = qSqrt(2); @@ -609,6 +589,10 @@ void tst_QSvgRenderer::boundsOnElement() const QCOMPARE(renderer.boundsOnElement(QLatin1String("baconost")), QRectF(-10 * sqrt2, -10 * sqrt2, 20 * sqrt2, 20 * sqrt2)); QCOMPARE(renderer.boundsOnElement(QLatin1String("hapaa")), QRectF(-13, -9, 22, 22)); QCOMPARE(renderer.boundsOnElement(QLatin1String("prim")), QRectF(-10 * sqrt2 - 3, -10 * sqrt2 + 1, 20 * sqrt2, 20 * sqrt2)); + + QRectF textBoundsA = renderer.boundsOnElement(QLatin1String("textA")); + QVERIFY(!textBoundsA.isEmpty()); + QCOMPARE(renderer.boundsOnElement(QLatin1String("textB")), textBoundsA); } void tst_QSvgRenderer::gradientStops() const @@ -802,13 +786,13 @@ void tst_QSvgRenderer::recursiveRefs() #ifndef QT_NO_COMPRESS void tst_QSvgRenderer::testGzLoading() { - QSvgRenderer renderer(QLatin1String(SRCDIR "heart.svgz")); + QSvgRenderer renderer(QFINDTESTDATA("heart.svgz")); QVERIFY(renderer.isValid()); QSvgRenderer resourceRenderer(QLatin1String(":/heart.svgz")); QVERIFY(resourceRenderer.isValid()); - QFile largeFileGz(SRCDIR "large.svgz"); + QFile largeFileGz(QFINDTESTDATA("large.svgz")); largeFileGz.open(QIODevice::ReadOnly); QByteArray data = largeFileGz.readAll(); QSvgRenderer autoDetectGzData(data); @@ -830,9 +814,9 @@ void tst_QSvgRenderer::testGzHelper_data() QTest::newRow("small") << QByteArray::fromHex(QByteArray("1f8b08005819934800034b" "cbcfe70200a865327e04000000")) << QByteArray("foo\n"); - QFile largeFileGz("large.svgz"); + QFile largeFileGz(QFINDTESTDATA("large.svgz")); largeFileGz.open(QIODevice::ReadOnly); - QFile largeFile("large.svg"); + QFile largeFile(QFINDTESTDATA("large.svg")); largeFile.open(QIODevice::ReadOnly); QTest::newRow("large") << largeFileGz.readAll() << largeFile.readAll(); @@ -1051,6 +1035,19 @@ void tst_QSvgRenderer::paths() } } +void tst_QSvgRenderer::paths2() +{ + const char *svg = + "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\">" + "<path d=\"M 3 8 A 5 5 0 1013 8\" id=\"path1\"/>" + "</svg>"; + + QByteArray data(svg); + QSvgRenderer renderer(data); + QVERIFY(renderer.isValid()); + QCOMPARE(renderer.boundsOnElement(QLatin1String("path1")).toRect(), QRect(3, 8, 10, 5)); +} + void tst_QSvgRenderer::displayMode() { static const char *svgs[] = { @@ -1682,6 +1679,22 @@ void tst_QSvgRenderer::imageRendering() { } } +void tst_QSvgRenderer::illegalAnimateTransform_data() +{ + QTest::addColumn<QByteArray>("svg"); + + QTest::newRow("case1") << QByteArray("<svg><animateTransform type=\"rotate\" begin=\"1\" dur=\"2\" values=\"8,0,5,0\">"); + QTest::newRow("case2") << QByteArray("<svg><animateTransform type=\"rotate\" begin=\"1\" dur=\"2\" values=\"1,2\">"); + QTest::newRow("case3") << QByteArray("<svg><animateTransform type=\"rotate\" begin=\"1\" dur=\"2\" from=\".. 5 2\" to=\"f\">"); + QTest::newRow("case4") << QByteArray("<svg><animateTransform type=\"scale\" begin=\"1\" dur=\"2\" by=\"--,..\">"); +} + +void tst_QSvgRenderer::illegalAnimateTransform() +{ + QFETCH(QByteArray, svg); + QSvgRenderer renderer; + QVERIFY(!renderer.load(svg)); // also shouldn't assert +} QTEST_MAIN(tst_QSvgRenderer) #include "tst_qsvgrenderer.moc" |