Files
create/tests/src/Gui/QuantitySpinBox.cpp
Ladislav Michl 01b547912f Base: QuantityFormat: avoid storing formatting defaults
User defined precision and fractional inch are stored on QuantityFormat
construction making changes persistent to object life time.
Change that so until not explicitely overriden, user defined values
are always returned.

Co-authored-by: Matthias Danner <28687794+matthiasdanner@users.noreply.github.com>
2025-09-05 17:31:54 +02:00

77 lines
1.6 KiB
C++

// SPDX-License-Identifier: LGPL-2.1-or-later
#include <QDebug>
#include <QTest>
#include <App/Application.h>
#include "Gui/QuantitySpinBox.h"
#include <src/App/InitApplication.h>
// NOLINTBEGIN(readability-magic-numbers)
class testQuantitySpinBox: public QObject
{
Q_OBJECT
public:
testQuantitySpinBox()
{
tests::initApplication();
qsb = std::make_unique<Gui::QuantitySpinBox>();
}
private Q_SLOTS:
void init()
{}
void cleanup()
{}
void test_SimpleBaseUnit() // NOLINT
{
auto result = qsb->valueFromText("1mm");
QCOMPARE(result, Base::Quantity(1, "mm"));
}
void test_UnitInNumerator() // NOLINT
{
auto result = qsb->valueFromText("1mm/10");
QCOMPARE(result, Base::Quantity(0.1, "mm"));
}
void test_UnitInDenominator() // NOLINT
{
auto result = qsb->valueFromText("1/10mm");
QCOMPARE(result, Base::Quantity(0.1, "mm"));
}
void test_KeepFormat() // NOLINT
{
auto quant = qsb->value();
auto format = quant.getFormat();
format.setPrecision(7);
quant.setFormat(format);
qsb->setValue(quant);
auto val1 = qsb->value();
QCOMPARE(val1.getFormat().getPrecision(), 7);
// format shouldn't change after setting a double
qsb->setValue(3.5);
auto val2 = qsb->value();
QCOMPARE(val2.getFormat().getPrecision(), 7);
}
private:
std::unique_ptr<Gui::QuantitySpinBox> qsb;
};
// NOLINTEND(readability-magic-numbers)
QTEST_MAIN(testQuantitySpinBox)
#include "QuantitySpinBox.moc"