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>
77 lines
1.6 KiB
C++
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"
|