File indexing completed on 2024-04-28 15:31:51

0001 /*
0002     This file is part of the KDE frameworks
0003     SPDX-FileCopyrightText: 2014 Aurélien Gâteau <agateau@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.1-or-later
0006 */
0007 
0008 #include <kcolumnresizertest.h>
0009 
0010 #include <KColumnResizer>
0011 
0012 #include "ui_kcolumnresizertest-forms.h"
0013 #include "ui_kcolumnresizertest-grid-and-form.h"
0014 #include "ui_kcolumnresizertest-grids.h"
0015 #include <QTest>
0016 
0017 QTEST_MAIN(KColumnResizerTest)
0018 
0019 void KColumnResizerTest::test_data()
0020 {
0021     QTest::addColumn<QWidget *>("parent");
0022 
0023     QWidget *forms = new QWidget;
0024     Ui::KColumnResizerTestForms().setupUi(forms);
0025     QTest::newRow("forms") << forms;
0026 
0027     QWidget *grids = new QWidget;
0028     Ui::KColumnResizerTestGrids().setupUi(grids);
0029     QTest::newRow("grids") << grids;
0030 
0031     QWidget *gridAndForm = new QWidget;
0032     Ui::KColumnResizerTestGridAndForms().setupUi(gridAndForm);
0033     QTest::newRow("grid-and-form") << gridAndForm;
0034 }
0035 
0036 void KColumnResizerTest::test()
0037 {
0038     // This test checks the x coordinate of the widgets from the column
0039     // immediately after the resized column, rather than checking the width of
0040     // the resized column itself because checking the width of the column cannot
0041     // be done the same way for all layout types.
0042     QFETCH(QWidget *, parent);
0043     QVERIFY(parent);
0044 
0045     auto layout1 = parent->findChild<QLayout *>(QStringLiteral("layout1"));
0046     auto layout2 = parent->findChild<QLayout *>(QStringLiteral("layout2"));
0047     auto widget1 = parent->findChild<QWidget *>(QStringLiteral("widget1"));
0048     auto widget2 = parent->findChild<QWidget *>(QStringLiteral("widget2"));
0049     QVERIFY(layout1);
0050     QVERIFY(layout2);
0051     QVERIFY(widget1);
0052     QVERIFY(widget2);
0053 
0054     // Show the widget so that geometries are updated
0055     parent->show();
0056 
0057     int widget1x = widget1->x();
0058     int widget2x = widget2->x();
0059     QVERIFY(widget1x < widget2x);
0060 
0061     auto resizer = new KColumnResizer(parent);
0062     resizer->addWidgetsFromLayout(layout1);
0063     resizer->addWidgetsFromLayout(layout2);
0064 
0065     // Wait for resizer to do the work
0066     QCoreApplication::processEvents();
0067     // Now wait for the layout change to propagate
0068     QCoreApplication::processEvents();
0069 
0070     QCOMPARE(widget1->x(), widget2x);
0071     QCOMPARE(widget2->x(), widget2x);
0072 
0073     delete parent;
0074 }
0075 
0076 #include "moc_kcolumnresizertest.cpp"