Skip to content

Commit 9c57327

Browse files
committed
Start adding GUI tests for QuantitySpinBox
1 parent 886f2a5 commit 9c57327

File tree

1 file changed

+47
-2
lines changed

1 file changed

+47
-2
lines changed

tests/src/Gui/QuantitySpinBox.cpp

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
// SPDX-License-Identifier: LGPL-2.1-or-later
22

33
#include <QDebug>
4+
#include <QLayout>
5+
#include <QMainWindow>
46
#include <QTest>
57

68
#include <App/Application.h>
@@ -16,9 +18,28 @@ class testQuantitySpinBox: public QObject
1618

1719
public:
1820
testQuantitySpinBox()
21+
: qsb(nullptr)
22+
, mainWindow(nullptr)
1923
{
2024
tests::initApplication();
21-
qsb = std::make_unique<Gui::QuantitySpinBox>();
25+
auto topLevel = qApp->topLevelWindows();
26+
27+
for (const auto window : topLevel) {
28+
if (auto mw = qobject_cast<QMainWindow*>(window)) {
29+
mainWindow = mw;
30+
break;
31+
}
32+
}
33+
if (!mainWindow) {
34+
mainWindow = new QMainWindow();
35+
}
36+
qsb = new Gui::QuantitySpinBox;
37+
if (!mainWindow->layout()) {
38+
mainWindow->setLayout(new QVBoxLayout);
39+
}
40+
mainWindow->layout()->addWidget(qsb);
41+
qsb->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
42+
mainWindow->show();
2243
}
2344

2445
private Q_SLOTS:
@@ -65,8 +86,32 @@ private Q_SLOTS:
6586
QCOMPARE(val2.getFormat().precision, 7);
6687
}
6788

89+
void test_DefaultUnitLost()// NOLINT
90+
{
91+
// Arrange
92+
auto foundWindow = QTest::qWaitForWindowActive(mainWindow);
93+
QTEST_ASSERT(foundWindow);
94+
qsb->activateWindow();
95+
qsb->clear();
96+
QTest::keyClicks(qsb, "1um");
97+
QTest::keyClick(qsb, Qt::Key_Enter);
98+
QTEST_ASSERT(qsb->value() == Base::Quantity(1, "um"));
99+
QTest::qWait(5000);
100+
101+
// Act
102+
QTest::mouseClick(qsb, Qt::MouseButton::LeftButton);
103+
QTest::keyClicks(qsb, "3");
104+
QTest::keyClick(qsb, Qt::Key_Enter);
105+
qsb->evaluateExpression();
106+
QTest::qWait(5000);
107+
108+
// Assert
109+
QCOMPARE(qsb->value(), Base::Quantity(3, "um"));
110+
}
111+
68112
private:
69-
std::unique_ptr<Gui::QuantitySpinBox> qsb;
113+
Gui::QuantitySpinBox* qsb;
114+
QMainWindow* mainWindow;
70115
};
71116

72117
// NOLINTEND(readability-magic-numbers)

0 commit comments

Comments
 (0)