|
@@ -21,6 +21,7 @@
|
|
|
// Qt includes
|
|
|
#include <QApplication>
|
|
|
#include <QDoubleSpinBox>
|
|
|
+#include <QLineEdit>
|
|
|
#include <QString>
|
|
|
#include <QStyle>
|
|
|
#include <QStyleOptionSlider>
|
|
@@ -43,6 +44,9 @@ private slots:
|
|
|
|
|
|
void testDecimalsByValue();
|
|
|
void testDecimalsByValue_data();
|
|
|
+
|
|
|
+ void testDecimalsByKey();
|
|
|
+ void testDecimalsByKey_data();
|
|
|
private:
|
|
|
void testDecimals(ctkCoordinatesWidget* coordinatesWidget, int decimals);
|
|
|
};
|
|
@@ -140,6 +144,92 @@ void ctkCoordinatesWidgetTester::testDecimalsByValue_data()
|
|
|
QTest::newRow("same value more digits") << QVector3D(0.001, 0.002, 0.0004) << 4;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+// ----------------------------------------------------------------------------
|
|
|
+void ctkCoordinatesWidgetTester::testDecimalsByKey()
|
|
|
+{
|
|
|
+ ctkCoordinatesWidget coordinatesWidget;
|
|
|
+ coordinatesWidget.setDecimalsOption(
|
|
|
+ ctkDoubleSpinBox::DecimalsByValue | ctkDoubleSpinBox::DecimalsByKey);
|
|
|
+ coordinatesWidget.setDecimals(3);
|
|
|
+ coordinatesWidget.setCoordinates(1.,1.,1.3);
|
|
|
+
|
|
|
+ QFETCH(QVector3D, coordinates);
|
|
|
+ coordinatesWidget.setCoordinates(coordinates.x(), coordinates.y(), coordinates.z());
|
|
|
+
|
|
|
+ QFETCH(int, expectedDecimals);
|
|
|
+ testDecimals(&coordinatesWidget, expectedDecimals);
|
|
|
+
|
|
|
+ // Simulate decimals by key
|
|
|
+ QFETCH(int, decimalsOffset);
|
|
|
+ QList<QDoubleSpinBox*> spinBoxes =
|
|
|
+ coordinatesWidget.findChildren<QDoubleSpinBox*>();
|
|
|
+ QList<QLineEdit*> lineEdits =
|
|
|
+ spinBoxes[0]->findChildren<QLineEdit*>();
|
|
|
+ QString text = lineEdits[0]->text();
|
|
|
+ switch (decimalsOffset)
|
|
|
+ {
|
|
|
+ case 1:
|
|
|
+ if (!text.contains('.'))
|
|
|
+ {
|
|
|
+ text += '.';
|
|
|
+ }
|
|
|
+ text += '7';
|
|
|
+ break;
|
|
|
+ case 0:
|
|
|
+ text = QString("7") + text;
|
|
|
+ break;
|
|
|
+ case -1:
|
|
|
+ text.chop(1);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ lineEdits[0]->setText(text);
|
|
|
+
|
|
|
+ QFETCH(QVector3D, finalDecimals);
|
|
|
+ QCOMPARE(spinBoxes[0]->decimals(), static_cast<int>(finalDecimals.x()));
|
|
|
+ QCOMPARE(spinBoxes[1]->decimals(), static_cast<int>(finalDecimals.y()));
|
|
|
+ QCOMPARE(spinBoxes[2]->decimals(), static_cast<int>(finalDecimals.z()));
|
|
|
+}
|
|
|
+
|
|
|
+// ----------------------------------------------------------------------------
|
|
|
+void ctkCoordinatesWidgetTester::testDecimalsByKey_data()
|
|
|
+{
|
|
|
+ QTest::addColumn<QVector3D>("coordinates");
|
|
|
+ QTest::addColumn<int>("expectedDecimals");
|
|
|
+ QTest::addColumn<int>("decimalsOffset");
|
|
|
+ QTest::addColumn<QVector3D>("finalDecimals");
|
|
|
+
|
|
|
+ QTest::newRow("(1, 1, 1) +1") << QVector3D(1., 1., 1.) << 0 << 1 << QVector3D(1,1,1);
|
|
|
+ QTest::newRow("(1, 1, 1) +0") << QVector3D(1., 1., 1.) << 0 << 0 << QVector3D(0,0,0);
|
|
|
+ QTest::newRow("(1, 1, 1) -1") << QVector3D(1., 1., 1.) << 0 << -1 << QVector3D(0,0,0);
|
|
|
+
|
|
|
+ QTest::newRow("(1, 1, 1.3) +1") << QVector3D(1., 1., 1.3) << 1 << 1 << QVector3D(2,2,2);
|
|
|
+ QTest::newRow("(1, 1, 1.3) +0") << QVector3D(1., 1., 1.3) << 1 << 0 << QVector3D(1,1,1);
|
|
|
+ QTest::newRow("(1, 1, 1.3) -1") << QVector3D(1., 1., 1.3) << 1 << -1 << QVector3D(0,1,1);
|
|
|
+
|
|
|
+ QTest::newRow("(1.3, 1, 1) +1") << QVector3D(1.3, 1., 1.) << 1 << 1 << QVector3D(2,2,2);
|
|
|
+ QTest::newRow("(1.3, 1, 1) +0") << QVector3D(1.3, 1., 1.) << 1 << 0 << QVector3D(1,1,1);
|
|
|
+ QTest::newRow("(1.3, 1, 1) -1") << QVector3D(1.3, 1., 1.) << 1 << -1 << QVector3D(0,0,0);
|
|
|
+
|
|
|
+ QTest::newRow("(1.3, 1, 1.3) +1") << QVector3D(1.3, 1., 1.3) << 1 << 1 << QVector3D(2,2,2);
|
|
|
+ QTest::newRow("(1.3, 1, 1.3) +0") << QVector3D(1.3, 1., 1.3) << 1 << 0 << QVector3D(1,1,1);
|
|
|
+ QTest::newRow("(1.3, 1, 1.3) -1") << QVector3D(1.3, 1., 1.3) << 1 << -1 << QVector3D(0,1,1);
|
|
|
+
|
|
|
+ QTest::newRow("(1.*, 1, 1.3) +1") << QVector3D(1.12345678910121416, 1., 1.3) << 3 << 1 << QVector3D(4,4,4);
|
|
|
+ QTest::newRow("(1.*, 1, 1.3) +0") << QVector3D(1.12345678910121416, 1., 1.3) << 3 << 0 << QVector3D(3,3,3);
|
|
|
+ QTest::newRow("(1.*, 1, 1.3) -1") << QVector3D(1.12345678910121416, 1., 1.3) << 3 << -1 << QVector3D(2,2,2);
|
|
|
+
|
|
|
+ QTest::newRow("(1, 1.*, 1.3) +1") << QVector3D(1., 1.12345678910121416, 1.3) << 3 << 1 << QVector3D(4,4,4);
|
|
|
+ QTest::newRow("(1, 1.*, 1.3) +0") << QVector3D(1., 1.12345678910121416, 1.3) << 3 << 0 << QVector3D(3,3,3);
|
|
|
+ QTest::newRow("(1, 1.*, 1.3) -1") << QVector3D(1., 1.12345678910121416, 1.3) << 3 << -1 << QVector3D(2,3,3);
|
|
|
+
|
|
|
+ QTest::newRow("(1.*, 1.*, 1.3) +1") << QVector3D(1., 1.12345678910121416, 1.3) << 3 << 1 << QVector3D(4,4,4);
|
|
|
+ QTest::newRow("(1.*, 1.*, 1.3) +0") << QVector3D(1., 1.12345678910121416, 1.3) << 3 << 0 << QVector3D(3,3,3);
|
|
|
+ QTest::newRow("(1.*, 1.*, 1.3) -1") << QVector3D(1., 1.12345678910121416, 1.3) << 3 << -1 << QVector3D(2,3,3);
|
|
|
+}
|
|
|
+
|
|
|
// ----------------------------------------------------------------------------
|
|
|
CTK_TEST_MAIN(ctkCoordinatesWidgetTest)
|
|
|
#include "moc_ctkCoordinatesWidgetTest.cpp"
|