Enable and fix the test for QTextImageHandler
Amends 52ce0c177e
, which added the test
without adding it to the parent directory.
Refactor the test code to be data driven, add the image files as
external test data files, and adjust the test code to find the files.
Use the QTextImageFormat from the document rather than a manually
crafted one, as otherwise we don't test a real usecase.
This also makes the test more flexible for adding qrc, resources, and
file URLs.
Task-number: QTBUG-109212
Pick-to: 6.5 6.4 6.2
Change-Id: Id0771037b961d95ec3cadd0cd6467d2448f22884
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io>
This commit is contained in:
parent
0f16c76e83
commit
d8e213a9e6
@ -16,6 +16,7 @@ add_subdirectory(qtextcursor)
|
||||
add_subdirectory(qtextdocumentfragment)
|
||||
add_subdirectory(qtextdocumentlayout)
|
||||
add_subdirectory(qtextformat)
|
||||
add_subdirectory(qtextimagehandler)
|
||||
add_subdirectory(qtextlist)
|
||||
add_subdirectory(qtextobject)
|
||||
# add_subdirectory(qtextscriptengine) # disable until system_harfbuzz feature is available # special case
|
||||
|
16
tests/auto/gui/text/qtextimagehandler/CMakeLists.txt
Normal file
16
tests/auto/gui/text/qtextimagehandler/CMakeLists.txt
Normal file
@ -0,0 +1,16 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
list(APPEND test_data "data/image.png")
|
||||
list(APPEND test_data "data/image@2x.png")
|
||||
|
||||
qt_internal_add_test(tst_qtextimagehandler
|
||||
SOURCES
|
||||
tst_qtextimagehandler.cpp
|
||||
LIBRARIES
|
||||
Qt::CorePrivate
|
||||
Qt::Gui
|
||||
Qt::GuiPrivate
|
||||
TESTDATA
|
||||
${test_data}
|
||||
)
|
@ -1,4 +1,4 @@
|
||||
// Copyright (C) 2020 The Qt Company Ltd.
|
||||
// Copyright (C) 2022 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <QTest>
|
||||
@ -17,6 +17,7 @@ private slots:
|
||||
void init();
|
||||
void cleanup();
|
||||
void cleanupTestCase();
|
||||
void loadAtNImages_data();
|
||||
void loadAtNImages();
|
||||
};
|
||||
|
||||
@ -36,24 +37,37 @@ void tst_QTextImageHandler::cleanupTestCase()
|
||||
{
|
||||
}
|
||||
|
||||
void tst_QTextImageHandler::loadAtNImages_data()
|
||||
{
|
||||
QTest::addColumn<QString>("imageFile");
|
||||
|
||||
QTest::addRow("file") << QFINDTESTDATA("data/image.png");
|
||||
}
|
||||
|
||||
void tst_QTextImageHandler::loadAtNImages()
|
||||
{
|
||||
QFETCH(QString, imageFile);
|
||||
|
||||
QTextDocument doc;
|
||||
QTextCursor c(&doc);
|
||||
c.insertHtml("<img src=\"data/image.png\">");
|
||||
c.insertHtml("<img src=\"" + imageFile + "\">");
|
||||
const auto formats = doc.allFormats();
|
||||
const auto it = std::find_if(formats.begin(), formats.end(), [](const auto &format){
|
||||
return format.objectType() == QTextFormat::ImageObject;
|
||||
});
|
||||
QVERIFY(it != formats.end());
|
||||
const QTextImageFormat format = (*it).toImageFormat();
|
||||
QTextImageHandler handler;
|
||||
QTextImageFormat fmt;
|
||||
fmt.setName("data/image.png");
|
||||
|
||||
for (int i = 1; i < 3; ++i) {
|
||||
for (const auto &dpr : {1, 2}) {
|
||||
QImage img(20, 20, QImage::Format_ARGB32_Premultiplied);
|
||||
img.fill(Qt::white);
|
||||
img.setDevicePixelRatio(i);
|
||||
img.setDevicePixelRatio(dpr);
|
||||
QPainter p(&img);
|
||||
handler.drawObject(&p, QRect(0, 0, 20, 20), &doc, 0, fmt);
|
||||
handler.drawObject(&p, QRect(0, 0, 20, 20), &doc, 0, format);
|
||||
p.end();
|
||||
QVERIFY(!img.isNull());
|
||||
const auto expectedColor = i == 1 ? Qt::red : Qt::green;
|
||||
const auto expectedColor = dpr == 1 ? Qt::red : Qt::green;
|
||||
QCOMPARE(img.pixelColor(0, 0), expectedColor);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user