summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/widgets/dialogs/qprogressdialog/tst_qprogressdialog.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/auto/widgets/dialogs/qprogressdialog/tst_qprogressdialog.cpp b/tests/auto/widgets/dialogs/qprogressdialog/tst_qprogressdialog.cpp
index aadc95e640..4ff158f632 100644
--- a/tests/auto/widgets/dialogs/qprogressdialog/tst_qprogressdialog.cpp
+++ b/tests/auto/widgets/dialogs/qprogressdialog/tst_qprogressdialog.cpp
@@ -44,8 +44,11 @@
#include <qapplication.h>
#include <qdebug.h>
+#include <qprogressbar.h>
#include <qprogressdialog.h>
+#include <qpushbutton.h>
#include <qlabel.h>
+#include <qpointer.h>
#include <qthread.h>
class tst_QProgressDialog : public QObject
@@ -59,6 +62,7 @@ private Q_SLOTS:
void getSetCheck();
void task198202();
void QTBUG_31046();
+ void settingCustomWidgets();
};
void tst_QProgressDialog::cleanup()
@@ -184,5 +188,51 @@ void tst_QProgressDialog::QTBUG_31046()
QCOMPARE(50, dlg.value());
}
+void tst_QProgressDialog::settingCustomWidgets()
+{
+ QPointer<QLabel> l = new QLabel;
+ QPointer<QPushButton> btn = new QPushButton;
+ QPointer<QProgressBar> bar = new QProgressBar;
+ QVERIFY(!l->parent());
+ QVERIFY(!btn->parent());
+ QVERIFY(!bar->parent());
+
+ {
+ QProgressDialog dlg;
+
+ QVERIFY(!dlg.isAncestorOf(l));
+ dlg.setLabel(l);
+ QVERIFY(dlg.isAncestorOf(l));
+ QTest::ignoreMessage(QtWarningMsg, "QProgressDialog::setLabel: Attempt to set the same label again");
+ dlg.setLabel(l); // setting the same widget again should not crash
+ QVERIFY(l); // and not delete the (old == new) widget
+
+ QVERIFY(!dlg.isAncestorOf(btn));
+ dlg.setCancelButton(btn);
+ QVERIFY(dlg.isAncestorOf(btn));
+ QTest::ignoreMessage(QtWarningMsg, "QProgressDialog::setCancelButton: Attempt to set the same button again");
+ dlg.setCancelButton(btn); // setting the same widget again should not crash
+ QVERIFY(btn); // and not delete the (old == new) widget
+
+ QVERIFY(!dlg.isAncestorOf(bar));
+ dlg.setBar(bar);
+ QEXPECT_FAIL("", "QProgressBar doesn't adopt custom progress bar as children", Continue);
+ QVERIFY(dlg.isAncestorOf(bar));
+ QTest::ignoreMessage(QtWarningMsg, "QProgressDialog::setBar: Attempt to set the same progress bar again");
+ dlg.setBar(bar); // setting the same widget again should not crash
+ QVERIFY(bar); // and not delete the (old == new) widget
+ }
+
+ QVERIFY(!l);
+ QVERIFY(!btn);
+#if 0
+ QEXPECT_FAIL("", "QProgressBar doesn't clean up custom progress bars", Continue);
+ QVERIFY(!bar);
+#else
+ // make cleanup() pass
+ delete bar;
+#endif
+}
+
QTEST_MAIN(tst_QProgressDialog)
#include "tst_qprogressdialog.moc"