Advance Wayland and KDE package bring-up
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
This file is part of the KDE frameworks
|
||||
SPDX-FileCopyrightText: 2016 Ragnar Thomsen <rthomsen6@gmail.com>
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
*/
|
||||
|
||||
#include "kcollapsiblegroupbox_test.h"
|
||||
|
||||
#include <KCollapsibleGroupBox>
|
||||
|
||||
#include <QCheckBox>
|
||||
#include <QDialog>
|
||||
#include <QLabel>
|
||||
#include <QLineEdit>
|
||||
#include <QTest>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
QTEST_MAIN(KCollapsibleGroupBoxTest)
|
||||
|
||||
void KCollapsibleGroupBoxTest::testDestructorCrash()
|
||||
{
|
||||
// The unittest does not crash the first time,
|
||||
// so we run it twice.
|
||||
int i = 0;
|
||||
while (i != 2) {
|
||||
QDialog *dlg = new QDialog(nullptr);
|
||||
|
||||
QVBoxLayout *mainvlayout = new QVBoxLayout(dlg);
|
||||
KCollapsibleGroupBox *collapsible = new KCollapsibleGroupBox(dlg);
|
||||
collapsible->setTitle(QStringLiteral("A test KCollapsibleGroupBox"));
|
||||
|
||||
QVBoxLayout *collapsiblevlayout = new QVBoxLayout(collapsible);
|
||||
|
||||
QLabel *lbl = new QLabel(QStringLiteral("A test label."), collapsible);
|
||||
collapsiblevlayout->addWidget(lbl);
|
||||
|
||||
collapsible->expand();
|
||||
|
||||
mainvlayout->addWidget(collapsible);
|
||||
|
||||
connect(dlg, &QDialog::finished, dlg, &QObject::deleteLater);
|
||||
|
||||
dlg->open();
|
||||
|
||||
QVERIFY(collapsible);
|
||||
|
||||
// If waiting for less than ~500ms the test crashes every time.
|
||||
// Not waiting or waiting for more than ~500ms is ok.
|
||||
// Using qSleep(400) does NOT provoke the crash.
|
||||
QTest::qWait(400);
|
||||
|
||||
dlg->accept();
|
||||
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
void KCollapsibleGroupBoxTest::testOverrideFocus()
|
||||
{
|
||||
KCollapsibleGroupBox collapsible;
|
||||
QVBoxLayout layout(&collapsible);
|
||||
|
||||
QCheckBox checkBox;
|
||||
QCOMPARE(checkBox.focusPolicy(), Qt::StrongFocus);
|
||||
|
||||
layout.addWidget(&checkBox);
|
||||
// The ChildAdded event is processed asynchronously.
|
||||
qApp->processEvents();
|
||||
// Make sure focus policy has been overridden.
|
||||
collapsible.show();
|
||||
QVERIFY(checkBox.isVisible());
|
||||
QCOMPARE(checkBox.focusPolicy(), Qt::NoFocus);
|
||||
|
||||
// Make sure focus policy is restored on expand event.
|
||||
collapsible.expand();
|
||||
QVERIFY(checkBox.isVisible());
|
||||
QCOMPARE(checkBox.focusPolicy(), Qt::StrongFocus);
|
||||
|
||||
// Make sure focus policy is overridden again on next collapse.
|
||||
collapsible.collapse();
|
||||
QVERIFY(checkBox.isVisible());
|
||||
QCOMPARE(checkBox.focusPolicy(), Qt::NoFocus);
|
||||
}
|
||||
|
||||
void KCollapsibleGroupBoxTest::childShouldGetFocus()
|
||||
{
|
||||
KCollapsibleGroupBox collapsible;
|
||||
auto spinBox = new QLineEdit(&collapsible);
|
||||
// The ChildAdded event is processed asynchronously.
|
||||
// This also "simulates" user who manually expands.
|
||||
qApp->processEvents();
|
||||
collapsible.expand();
|
||||
QCOMPARE(spinBox->focusPolicy(), Qt::StrongFocus);
|
||||
}
|
||||
|
||||
#include "moc_kcollapsiblegroupbox_test.cpp"
|
||||
Reference in New Issue
Block a user