qtquick: port more tests

This commit is contained in:
Sergio Martins
2020-10-19 20:53:40 +01:00
parent f70722934c
commit 5f333f0934
2 changed files with 83 additions and 82 deletions

View File

@@ -122,6 +122,9 @@ private Q_SLOTS:
void tst_setAstCurrentTab();
void tst_placeholderDisappearsOnReadd();
void tst_placeholdersAreRemovedProperly();
void tst_crash2_data();
void tst_crash2();
};
void TestCommon::tst_simple1()
@@ -1819,4 +1822,84 @@ void TestCommon::tst_placeholdersAreRemovedProperly()
delete window1;
}
void TestCommon::tst_crash2_data()
{
QTest::addColumn<bool>("show");
QTest::newRow("true") << true;
QTest::newRow("false") << false;
}
void TestCommon::tst_crash2()
{
QFETCH(bool, show);
{
EnsureTopLevelsDeleted e;
auto m = new MainWindowType("m1", MainWindowOption_None);
auto layout = m->multiSplitter();
m->setVisible(show);
DockWidgetBase::List docks;
const int num = 4;
for (int i = 0; i < num; ++i)
docks << new DockWidgetType(QString::number(i));
QVector<KDDockWidgets::Location> locations = {Location_OnLeft,
Location_OnRight, Location_OnRight, Location_OnRight};
QVector<KDDockWidgets::AddingOption> options = { AddingOption_StartHidden,
AddingOption_StartHidden, AddingOption_None, AddingOption_StartHidden};
QVector<bool> floatings = {true, false, false, false};
for (int i = 0; i < num; ++i) {
m->addDockWidget(docks[i], locations[i], nullptr, options[i]);
layout->checkSanity();
docks[i]->setFloating(floatings[i]);
}
qDeleteAll(docks);
qDeleteAll(DockRegistry::self()->frames());
delete m;
}
{
EnsureTopLevelsDeleted e;
auto m = new MainWindowType("m1", MainWindowOption_HasCentralFrame);
auto layout = m->multiSplitter();
m->show();
const int num = 3;
DockWidgetBase::List docks;
for (int i = 0; i < num; ++i)
docks << new DockWidgetType(QString::number(i));
QVector<KDDockWidgets::Location> locations = {Location_OnLeft, Location_OnLeft,
Location_OnRight};
QVector<KDDockWidgets::AddingOption> options = { AddingOption_None, AddingOption_None,
AddingOption_StartHidden};
QVector<bool> floatings = {true, false, false};
for (int i = 0; i < num; ++i) {
m->addDockWidget(docks[i], locations[i], nullptr, options[i]);
layout->checkSanity();
if (i == 2) {
// Wait for the resizes. This used to make the app crash.
QTest::qWait(1000);
}
docks[i]->setFloating(floatings[i]);
}
layout->checkSanity();
qDeleteAll(docks);
qDeleteAll(DockRegistry::self()->frames());
delete m;
}
}
#include "tst_common.moc"

View File

@@ -305,8 +305,6 @@ private Q_SLOTS:
void tst_notClosable();
void tst_constraintsAfterPlaceholder();
void tst_crash2_data();
void tst_crash2();
void tst_setFloatingWhenWasTabbed();
void tst_setFloatingWhenSideBySide();
void tst_setFloatingAfterDraggedFromTabToSideBySide();
@@ -1859,86 +1857,6 @@ void TestDocks::tst_constraintsAfterPlaceholder()
Testing::waitForDeleted(dock1);
}
void TestDocks::tst_crash2_data()
{
QTest::addColumn<bool>("show");
QTest::newRow("true") << true;
QTest::newRow("false") << false;
}
void TestDocks::tst_crash2()
{
QFETCH(bool, show);
{
EnsureTopLevelsDeleted e;
auto m = new MainWindow("m1", MainWindowOption_None);
auto layout = m->multiSplitter();
m->setVisible(show);
DockWidget::List docks;
const int num = 4;
for (int i = 0; i < num; ++i)
docks << new DockWidgetType(QString::number(i));
QVector<KDDockWidgets::Location> locations = {Location_OnLeft,
Location_OnRight, Location_OnRight, Location_OnRight};
QVector<KDDockWidgets::AddingOption> options = { AddingOption_StartHidden,
AddingOption_StartHidden, AddingOption_None, AddingOption_StartHidden};
QVector<bool> floatings = {true, false, false, false};
for (int i = 0; i < num; ++i) {
m->addDockWidget(docks[i], locations[i], nullptr, options[i]);
layout->checkSanity();
docks[i]->setFloating(floatings[i]);
}
qDeleteAll(docks);
qDeleteAll(DockRegistry::self()->frames());
delete m;
}
{
EnsureTopLevelsDeleted e;
auto m = new MainWindow("m1", MainWindowOption_HasCentralFrame);
auto layout = m->multiSplitter();
m->show();
const int num = 3;
DockWidget::List docks;
for (int i = 0; i < num; ++i)
docks << new DockWidgetType(QString::number(i));
QVector<KDDockWidgets::Location> locations = {Location_OnLeft, Location_OnLeft,
Location_OnRight};
QVector<KDDockWidgets::AddingOption> options = { AddingOption_None, AddingOption_None,
AddingOption_StartHidden};
QVector<bool> floatings = {true, false, false};
for (int i = 0; i < num; ++i) {
m->addDockWidget(docks[i], locations[i], nullptr, options[i]);
layout->checkSanity();
if (i == 2) {
// Wait for the resizes. This used to make the app crash.
QTest::qWait(1000);
}
docks[i]->setFloating(floatings[i]);
}
layout->checkSanity();
qDeleteAll(docks);
qDeleteAll(DockRegistry::self()->frames());
delete m;
}
}
void TestDocks::tst_setFloatingWhenWasTabbed()
{
// Tests DockWidget::isTabbed() and DockWidget::setFloating(false|true) when tabbed (it should redock)