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
1719public:
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
2445private 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+
68112private:
69- std::unique_ptr<Gui::QuantitySpinBox> qsb;
113+ Gui::QuantitySpinBox* qsb;
114+ QMainWindow* mainWindow;
70115};
71116
72117// NOLINTEND(readability-magic-numbers)
0 commit comments