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"