1 /* 2 This file is part of the KDE frameworks 3 SPDX-FileCopyrightText: 2014 Aurélien Gâteau <agateau@kde.org> 4 5 SPDX-License-Identifier: LGPL-2.1-or-later 6 */ 7 8 #include <kcolumnresizertest.h> 9 10 #include <KColumnResizer> 11 12 #include "ui_kcolumnresizertest-forms.h" 13 #include "ui_kcolumnresizertest-grid-and-form.h" 14 #include "ui_kcolumnresizertest-grids.h" 15 #include <QTest> 16 QTEST_MAIN(KColumnResizerTest)17QTEST_MAIN(KColumnResizerTest) 18 19 void KColumnResizerTest::test_data() 20 { 21 QTest::addColumn<QWidget *>("parent"); 22 23 QWidget *forms = new QWidget; 24 Ui::KColumnResizerTestForms().setupUi(forms); 25 QTest::newRow("forms") << forms; 26 27 QWidget *grids = new QWidget; 28 Ui::KColumnResizerTestGrids().setupUi(grids); 29 QTest::newRow("grids") << grids; 30 31 QWidget *gridAndForm = new QWidget; 32 Ui::KColumnResizerTestGridAndForms().setupUi(gridAndForm); 33 QTest::newRow("grid-and-form") << gridAndForm; 34 } 35 test()36void KColumnResizerTest::test() 37 { 38 // This test checks the x coordinate of the widgets from the column 39 // immediately after the resized column, rather than checking the width of 40 // the resized column itself because checking the width of the column cannot 41 // be done the same way for all layout types. 42 QFETCH(QWidget *, parent); 43 QVERIFY(parent); 44 45 auto layout1 = parent->findChild<QLayout *>(QStringLiteral("layout1")); 46 auto layout2 = parent->findChild<QLayout *>(QStringLiteral("layout2")); 47 auto widget1 = parent->findChild<QWidget *>(QStringLiteral("widget1")); 48 auto widget2 = parent->findChild<QWidget *>(QStringLiteral("widget2")); 49 QVERIFY(layout1); 50 QVERIFY(layout2); 51 QVERIFY(widget1); 52 QVERIFY(widget2); 53 54 // Show the widget so that geometries are updated 55 parent->show(); 56 57 int widget1x = widget1->x(); 58 int widget2x = widget2->x(); 59 QVERIFY(widget1x < widget2x); 60 61 auto resizer = new KColumnResizer(parent); 62 resizer->addWidgetsFromLayout(layout1); 63 resizer->addWidgetsFromLayout(layout2); 64 65 // Wait for resizer to do the work 66 QCoreApplication::processEvents(); 67 // Now wait for the layout change to propagate 68 QCoreApplication::processEvents(); 69 70 QCOMPARE(widget1->x(), widget2x); 71 QCOMPARE(widget2->x(), widget2x); 72 73 delete parent; 74 } 75