File indexing completed on 2024-05-05 05:01:18

0001 // SPDX-FileCopyrightText: 2023 James Graham <james.h.graham@protonmail.com>
0002 // SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0003 
0004 #include <QObject>
0005 #include <QTest>
0006 #include <qglobal.h>
0007 #include <qtestcase.h>
0008 
0009 #include <cmath>
0010 
0011 #include "mediasizehelper.h"
0012 #include "neochatconfig.h"
0013 
0014 class MediaSizeHelperTest : public QObject
0015 {
0016     Q_OBJECT
0017 
0018 private Q_SLOTS:
0019     void uninitialized();
0020 
0021     void limits_data();
0022     void limits();
0023 };
0024 
0025 void MediaSizeHelperTest::uninitialized()
0026 {
0027     MediaSizeHelper mediasizehelper;
0028     QCOMPARE(mediasizehelper.currentSize(), QSize(540, qRound(qreal(NeoChatConfig::self()->mediaMaxWidth()) / qreal(16.0) * qreal(9.0))));
0029 }
0030 
0031 void MediaSizeHelperTest::limits_data()
0032 {
0033     QTest::addColumn<qreal>("mediaWidth");
0034     QTest::addColumn<qreal>("mediaHeight");
0035     QTest::addColumn<qreal>("contentMaxWidth");
0036     QTest::addColumn<qreal>("contentMaxHeight");
0037     QTest::addColumn<QSize>("currentSize");
0038 
0039     QTest::newRow("media smaller than content limits") << qreal(200) << qreal(150) << qreal(400) << qreal(900) << QSize(200, 150);
0040     QTest::newRow("media smaller than max limits") << qreal(200) << qreal(150) << qreal(-1) << qreal(-1) << QSize(200, 150);
0041 
0042     QTest::newRow("limit by max width") << qreal(600) << qreal(50) << qreal(-1) << qreal(-1) << QSize(540, qRound(qreal(540) / (qreal(600) / qreal(50))));
0043     QTest::newRow("limit by max height") << qreal(50) << qreal(600) << qreal(-1) << qreal(-1) << QSize(qRound(qreal(540) * (qreal(50) / qreal(600))), 540);
0044 
0045     QTest::newRow("limit by content width") << qreal(600) << qreal(50) << qreal(300) << qreal(-1) << QSize(300, qRound(qreal(300) / (qreal(600) / qreal(50))));
0046     QTest::newRow("limit by content height") << qreal(50) << qreal(600) << qreal(-1) << qreal(300) << QSize(qRound(qreal(300) * (qreal(50) / qreal(600))), 300);
0047 
0048     QTest::newRow("limit by content width tall media")
0049         << qreal(400) << qreal(600) << qreal(100) << qreal(400) << QSize(100, qRound(qreal(100) / (qreal(400) / qreal(600))));
0050     QTest::newRow("limit by content height wide media")
0051         << qreal(1000) << qreal(600) << qreal(400) << qreal(100) << QSize(qRound(qreal(100) * (qreal(1000) / qreal(600))), 100);
0052 }
0053 
0054 void MediaSizeHelperTest::limits()
0055 {
0056     QFETCH(qreal, mediaWidth);
0057     QFETCH(qreal, mediaHeight);
0058     QFETCH(qreal, contentMaxWidth);
0059     QFETCH(qreal, contentMaxHeight);
0060     QFETCH(QSize, currentSize);
0061 
0062     MediaSizeHelper mediasizehelper;
0063     mediasizehelper.setMediaWidth(mediaWidth);
0064     mediasizehelper.setMediaHeight(mediaHeight);
0065     mediasizehelper.setContentMaxWidth(contentMaxWidth);
0066     mediasizehelper.setContentMaxHeight(contentMaxHeight);
0067 
0068     QCOMPARE(mediasizehelper.currentSize(), currentSize);
0069 }
0070 
0071 QTEST_GUILESS_MAIN(MediaSizeHelperTest)
0072 #include "mediasizehelpertest.moc"