Add focused cache and prepared media rendering checks to desktop tests
This commit is contained in:
1 parent
ed19adc1ba
commit
ba44c31f42
2 files changed
+25
No files matched your search
@@ -145,6 +145,11 @@ target_include_directories(chatgui_preview_cache PRIVATE ${FFMPEG_INCLUDE_DIRS})
|
||||
if(FFMPEG_FOUND)
|
||||
target_compile_definitions(chatgui_preview_cache PRIVATE HAVE_FFMPEG)
|
||||
endif()
|
||||
add_executable(test_media_preview_cache tests/test_media_preview_cache.cpp)
|
||||
target_link_libraries(test_media_preview_cache PRIVATE chatgui_preview_cache ${QT_TEST_LIB})
|
||||
target_compile_definitions(test_media_preview_cache PRIVATE TEST_PREVIEW_FFMPEG=$<BOOL:${FFMPEG_FOUND}>)
|
||||
add_test(NAME test_media_preview_cache COMMAND test_media_preview_cache)
|
||||
set_tests_properties(test_media_preview_cache PROPERTIES TIMEOUT 30)
|
||||
|
||||
add_library(chatgui_live_video STATIC src/live_video_encoder.cpp src/call_video_encoder.cpp src/call_video_decoder.cpp)
|
||||
target_link_libraries(chatgui_live_video PUBLIC ${QT_LIBS} utun PRIVATE ${FFMPEG_TARGET} ${FFMPEG_LIBRARIES})
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include <QPainter>
|
||||
#include <QDir>
|
||||
#include <QScopedValueRollback>
|
||||
#include <QTemporaryDir>
|
||||
extern "C" {
|
||||
#include "chat/invite_link.h"
|
||||
#include "chat/chat_member.h"
|
||||
@@ -19,6 +20,25 @@ extern "C" {
|
||||
class InviteLinksTest : public QObject {
|
||||
Q_OBJECT
|
||||
private slots:
|
||||
void preparedMediaPaint_data() {
|
||||
QTest::addColumn<QString>("type"); QTest::newRow("image") << QString("image/png"); QTest::newRow("video") << QString("video/mp4");
|
||||
}
|
||||
void preparedMediaPaint() {
|
||||
QFETCH(QString, type); QTemporaryDir temporary; QVERIFY(temporary.isValid());
|
||||
QStandardItemModel model; auto* item = new QStandardItem;
|
||||
item->setData(type, MsgContentTypeRole); item->setData("Alice", MsgAuthorRole); item->setData("12:34", MsgTimeRole);
|
||||
item->setData(temporary.filePath("removed-original"), MsgVoiceFileRole); item->setData(2, MsgFileDownloadStateRole);
|
||||
item->setData(1234, MsgFileSizeRole); item->setData(120, MsgImageWidthRole); item->setData(80, MsgImageHeightRole);
|
||||
const QColor green(35, 170, 95); QImage preview(120, 80, QImage::Format_RGB32); preview.fill(green);
|
||||
item->setData(preview, MsgImagePreviewRole); model.appendRow(item);
|
||||
MessageDelegate delegate; QStyleOptionViewItem option; option.font = QApplication::font(); option.rect = QRect(0, 0, 600, 400);
|
||||
QImage output(option.rect.size(), QImage::Format_ARGB32); output.fill(Qt::white);
|
||||
QPainter painter(&output); delegate.paint(&painter, option, model.index(0, 0)); painter.end();
|
||||
int preparedPixels = 0;
|
||||
for (int y = 0; y < output.height(); ++y) for (int x = 0; x < output.width(); ++x)
|
||||
if (output.pixelColor(x, y) == green) ++preparedPixels;
|
||||
QVERIFY(preparedPixels > 100); // Готовые пиксели рисуются даже без оригинала и соседнего .jpg.
|
||||
}
|
||||
void replyClick_data() {
|
||||
QTest::addColumn<QString>("type"); QTest::addColumn<bool>("outgoing"); QTest::addColumn<int>("width");
|
||||
for (const auto* type : {"text/plain", "audio/opus", "image/png", "video/mp4", "application/octet-stream", "poll", "emoji"})
|
||||
|
||||
Reference in new issue
Block a user