Warning, file /network/neochat/autotests/delegatesizehelpertest.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

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 
0007 #include "delegatesizehelper.h"
0008 
0009 class DelegateSizeHelperTest : public QObject
0010 {
0011     Q_OBJECT
0012 
0013 private Q_SLOTS:
0014     void risingPercentage_data();
0015     void risingPercentage();
0016 
0017     void fallingPercentage_data();
0018     void fallingPercentage();
0019 
0020     void equalPercentage_data();
0021     void equalPercentage();
0022 
0023     void equalBreakpoint_data();
0024     void equalBreakpoint();
0025 };
0026 
0027 void DelegateSizeHelperTest::risingPercentage_data()
0028 {
0029     QTest::addColumn<qreal>("parentWidth");
0030     QTest::addColumn<int>("currentPercentageWidth");
0031     QTest::addColumn<qreal>("currentWidth");
0032 
0033     QTest::newRow("zero") << qreal(0) << int(0) << qreal(0);
0034     QTest::newRow("one hundred") << qreal(100) << int(0) << qreal(0);
0035     QTest::newRow("one fifty") << qreal(150) << int(50) << qreal(75);
0036     QTest::newRow("two hundred") << qreal(200) << int(100) << qreal(200);
0037     QTest::newRow("three hundred") << qreal(300) << int(100) << qreal(300);
0038 }
0039 
0040 void DelegateSizeHelperTest::risingPercentage()
0041 {
0042     QFETCH(qreal, parentWidth);
0043     QFETCH(int, currentPercentageWidth);
0044     QFETCH(qreal, currentWidth);
0045 
0046     DelegateSizeHelper delegateSizeHelper;
0047     delegateSizeHelper.setStartBreakpoint(100);
0048     delegateSizeHelper.setEndBreakpoint(200);
0049     delegateSizeHelper.setStartPercentWidth(0);
0050     delegateSizeHelper.setEndPercentWidth(100);
0051 
0052     delegateSizeHelper.setParentWidth(parentWidth);
0053 
0054     QCOMPARE(delegateSizeHelper.currentPercentageWidth(), currentPercentageWidth);
0055     QCOMPARE(delegateSizeHelper.currentWidth(), currentWidth);
0056 }
0057 
0058 void DelegateSizeHelperTest::fallingPercentage_data()
0059 {
0060     QTest::addColumn<qreal>("parentWidth");
0061     QTest::addColumn<int>("currentPercentageWidth");
0062     QTest::addColumn<qreal>("currentWidth");
0063 
0064     QTest::newRow("zero") << qreal(0) << int(100) << qreal(0);
0065     QTest::newRow("one hundred") << qreal(100) << int(100) << qreal(100);
0066     QTest::newRow("one fifty") << qreal(150) << int(50) << qreal(75);
0067     QTest::newRow("two hundred") << qreal(200) << int(0) << qreal(0);
0068     QTest::newRow("three hundred") << qreal(300) << int(0) << qreal(0);
0069 }
0070 
0071 void DelegateSizeHelperTest::fallingPercentage()
0072 {
0073     QFETCH(qreal, parentWidth);
0074     QFETCH(int, currentPercentageWidth);
0075     QFETCH(qreal, currentWidth);
0076 
0077     DelegateSizeHelper delegateSizeHelper;
0078     delegateSizeHelper.setStartBreakpoint(100);
0079     delegateSizeHelper.setEndBreakpoint(200);
0080     delegateSizeHelper.setStartPercentWidth(100);
0081     delegateSizeHelper.setEndPercentWidth(0);
0082 
0083     delegateSizeHelper.setParentWidth(parentWidth);
0084 
0085     QCOMPARE(delegateSizeHelper.currentPercentageWidth(), currentPercentageWidth);
0086     QCOMPARE(delegateSizeHelper.currentWidth(), currentWidth);
0087 }
0088 
0089 void DelegateSizeHelperTest::equalPercentage_data()
0090 {
0091     QTest::addColumn<qreal>("parentWidth");
0092     QTest::addColumn<int>("currentPercentageWidth");
0093     QTest::addColumn<qreal>("currentWidth");
0094 
0095     QTest::newRow("zero") << qreal(0) << int(50) << qreal(0);
0096     QTest::newRow("one hundred") << qreal(100) << int(50) << qreal(50);
0097     QTest::newRow("one fifty") << qreal(150) << int(50) << qreal(75);
0098     QTest::newRow("two hundred") << qreal(200) << int(50) << qreal(100);
0099     QTest::newRow("three hundred") << qreal(300) << int(50) << qreal(150);
0100 }
0101 
0102 void DelegateSizeHelperTest::equalPercentage()
0103 {
0104     QFETCH(qreal, parentWidth);
0105     QFETCH(int, currentPercentageWidth);
0106     QFETCH(qreal, currentWidth);
0107 
0108     DelegateSizeHelper delegateSizeHelper;
0109     delegateSizeHelper.setStartBreakpoint(100);
0110     delegateSizeHelper.setEndBreakpoint(200);
0111     delegateSizeHelper.setStartPercentWidth(50);
0112     delegateSizeHelper.setEndPercentWidth(50);
0113 
0114     delegateSizeHelper.setParentWidth(parentWidth);
0115 
0116     QCOMPARE(delegateSizeHelper.currentPercentageWidth(), currentPercentageWidth);
0117     QCOMPARE(delegateSizeHelper.currentWidth(), currentWidth);
0118 }
0119 
0120 void DelegateSizeHelperTest::equalBreakpoint_data()
0121 {
0122     QTest::addColumn<int>("startPercentageWidth");
0123     QTest::addColumn<int>("endPercentageWidth");
0124     QTest::addColumn<int>("currentPercentageWidth");
0125     QTest::addColumn<qreal>("currentWidth");
0126 
0127     QTest::newRow("start higher") << int(100) << int(0) << int(-1) << qreal(0);
0128     QTest::newRow("equal") << int(50) << int(50) << int(50) << qreal(500);
0129     QTest::newRow("end higher") << int(0) << int(100) << int(-1) << qreal(0);
0130 }
0131 
0132 /**
0133  * We expect a default return except in the case where the the two percentages are
0134  * equal as that case can be calculated without dividing by zero.
0135  */
0136 void DelegateSizeHelperTest::equalBreakpoint()
0137 {
0138     QFETCH(int, startPercentageWidth);
0139     QFETCH(int, endPercentageWidth);
0140     QFETCH(int, currentPercentageWidth);
0141     QFETCH(qreal, currentWidth);
0142 
0143     DelegateSizeHelper delegateSizeHelper;
0144     delegateSizeHelper.setStartBreakpoint(100);
0145     delegateSizeHelper.setEndBreakpoint(100);
0146     delegateSizeHelper.setStartPercentWidth(startPercentageWidth);
0147     delegateSizeHelper.setEndPercentWidth(endPercentageWidth);
0148 
0149     delegateSizeHelper.setParentWidth(1000);
0150 
0151     QCOMPARE(delegateSizeHelper.currentPercentageWidth(), currentPercentageWidth);
0152     QCOMPARE(delegateSizeHelper.currentWidth(), currentWidth);
0153 }
0154 
0155 QTEST_GUILESS_MAIN(DelegateSizeHelperTest)
0156 #include "delegatesizehelpertest.moc"