Skip to content

Commit 899b007

Browse files
committed
Round command line options correctly
Squashed commit of the following: commit 4c35b8a Author: Paul Colby <git@colby.id.au> Date: Fri Oct 11 20:01:32 2024 +1100 Update i18n files commit 9dd6856 Author: Paul Colby <git@colby.id.au> Date: Fri Oct 11 19:55:24 2024 +1100 Restore all other build configurations commit 279f81e Author: Paul Colby <git@colby.id.au> Date: Fri Oct 11 19:48:06 2024 +1100 Use std::llround() commit f5945c1 Author: Paul Colby <git@colby.id.au> Date: Fri Oct 11 19:27:15 2024 +1100 Try std::llround() commit e172d76 Author: Paul Colby <git@colby.id.au> Date: Fri Oct 11 19:14:54 2024 +1100 Add more debugging commit 5b9cdbc Author: Paul Colby <git@colby.id.au> Date: Fri Oct 11 19:02:20 2024 +1100 Add more debugging commit 53f255e Author: Paul Colby <git@colby.id.au> Date: Fri Oct 11 18:43:13 2024 +1100 Add some debugging commit c4143c0 Author: Paul Colby <git@colby.id.au> Date: Fri Oct 11 17:03:57 2024 +1100 Correct Workflow syntax commit a70947a Author: Paul Colby <git@colby.id.au> Date: Fri Oct 11 17:02:42 2024 +1100 Strip down to just the 32-bit MinGW builds So we explore this rounding error.
1 parent 44106ac commit 899b007

File tree

5 files changed

+25
-39
lines changed

5 files changed

+25
-39
lines changed

src/cli/abstractcommand.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include <QLocale>
1010
#include <QTimer>
1111

12+
#include <cmath>
1213
#include <ratio>
1314

1415
/*!
@@ -211,7 +212,7 @@ quint32 AbstractCommand::parseNumber(const QString &value, const QString &unit,
211212
if (!ratio.isValid()) {
212213
for (ratio = makeRatio<R>(); DOKIT_RESULT(dbl) < sensibleMinimum; ratio.num *= 1000);
213214
}
214-
return (quint32)DOKIT_RESULT(dbl);
215+
return std::llround(DOKIT_RESULT(dbl));
215216
}
216217
#undef DOKIT_RESULT
217218
return 0; // Failed to parse as either integer, or float.

src/cli/i18n/en_AU.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,37 +4,37 @@
44
<context>
55
<name>AbstractCommand</name>
66
<message>
7-
<location filename="../abstractcommand.cpp" line="37"/>
7+
<location filename="../abstractcommand.cpp" line="38"/>
88
<source>Bluetooth discovery error:</source>
99
<translation type="unfinished"></translation>
1010
</message>
1111
<message>
12-
<location filename="../abstractcommand.cpp" line="272"/>
12+
<location filename="../abstractcommand.cpp" line="273"/>
1313
<source>Ignoring option: %1</source>
1414
<translation type="unfinished"></translation>
1515
</message>
1616
<message>
17-
<location filename="../abstractcommand.cpp" line="294"/>
17+
<location filename="../abstractcommand.cpp" line="295"/>
1818
<source>Unknown output format: %1</source>
1919
<translation type="unfinished"></translation>
2020
</message>
2121
<message>
22-
<location filename="../abstractcommand.cpp" line="302"/>
22+
<location filename="../abstractcommand.cpp" line="303"/>
2323
<source>Invalid timeout: %1</source>
2424
<translation type="unfinished"></translation>
2525
</message>
2626
<message>
27-
<location filename="../abstractcommand.cpp" line="304"/>
27+
<location filename="../abstractcommand.cpp" line="305"/>
2828
<source>Platform does not support Bluetooth scan timeout</source>
2929
<translation type="unfinished"></translation>
3030
</message>
3131
<message>
32-
<location filename="../abstractcommand.cpp" line="307"/>
32+
<location filename="../abstractcommand.cpp" line="308"/>
3333
<source>Set scan timeout to %1</source>
3434
<translation type="unfinished"></translation>
3535
</message>
3636
<message>
37-
<location filename="../abstractcommand.cpp" line="316"/>
37+
<location filename="../abstractcommand.cpp" line="317"/>
3838
<source>Missing required option: %1</source>
3939
<translation type="unfinished"></translation>
4040
</message>

src/cli/i18n/en_GB.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,37 +4,37 @@
44
<context>
55
<name>AbstractCommand</name>
66
<message>
7-
<location filename="../abstractcommand.cpp" line="37"/>
7+
<location filename="../abstractcommand.cpp" line="38"/>
88
<source>Bluetooth discovery error:</source>
99
<translation type="unfinished"></translation>
1010
</message>
1111
<message>
12-
<location filename="../abstractcommand.cpp" line="272"/>
12+
<location filename="../abstractcommand.cpp" line="273"/>
1313
<source>Ignoring option: %1</source>
1414
<translation type="unfinished"></translation>
1515
</message>
1616
<message>
17-
<location filename="../abstractcommand.cpp" line="294"/>
17+
<location filename="../abstractcommand.cpp" line="295"/>
1818
<source>Unknown output format: %1</source>
1919
<translation type="unfinished"></translation>
2020
</message>
2121
<message>
22-
<location filename="../abstractcommand.cpp" line="302"/>
22+
<location filename="../abstractcommand.cpp" line="303"/>
2323
<source>Invalid timeout: %1</source>
2424
<translation type="unfinished"></translation>
2525
</message>
2626
<message>
27-
<location filename="../abstractcommand.cpp" line="304"/>
27+
<location filename="../abstractcommand.cpp" line="305"/>
2828
<source>Platform does not support Bluetooth scan timeout</source>
2929
<translation type="unfinished"></translation>
3030
</message>
3131
<message>
32-
<location filename="../abstractcommand.cpp" line="307"/>
32+
<location filename="../abstractcommand.cpp" line="308"/>
3333
<source>Set scan timeout to %1</source>
3434
<translation type="unfinished"></translation>
3535
</message>
3636
<message>
37-
<location filename="../abstractcommand.cpp" line="316"/>
37+
<location filename="../abstractcommand.cpp" line="317"/>
3838
<source>Missing required option: %1</source>
3939
<translation type="unfinished"></translation>
4040
</message>

src/cli/i18n/en_US.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,37 +4,37 @@
44
<context>
55
<name>AbstractCommand</name>
66
<message>
7-
<location filename="../abstractcommand.cpp" line="37"/>
7+
<location filename="../abstractcommand.cpp" line="38"/>
88
<source>Bluetooth discovery error:</source>
99
<translation type="unfinished"></translation>
1010
</message>
1111
<message>
12-
<location filename="../abstractcommand.cpp" line="272"/>
12+
<location filename="../abstractcommand.cpp" line="273"/>
1313
<source>Ignoring option: %1</source>
1414
<translation type="unfinished"></translation>
1515
</message>
1616
<message>
17-
<location filename="../abstractcommand.cpp" line="294"/>
17+
<location filename="../abstractcommand.cpp" line="295"/>
1818
<source>Unknown output format: %1</source>
1919
<translation type="unfinished"></translation>
2020
</message>
2121
<message>
22-
<location filename="../abstractcommand.cpp" line="302"/>
22+
<location filename="../abstractcommand.cpp" line="303"/>
2323
<source>Invalid timeout: %1</source>
2424
<translation type="unfinished"></translation>
2525
</message>
2626
<message>
27-
<location filename="../abstractcommand.cpp" line="304"/>
27+
<location filename="../abstractcommand.cpp" line="305"/>
2828
<source>Platform does not support Bluetooth scan timeout</source>
2929
<translation type="unfinished"></translation>
3030
</message>
3131
<message>
32-
<location filename="../abstractcommand.cpp" line="307"/>
32+
<location filename="../abstractcommand.cpp" line="308"/>
3333
<source>Set scan timeout to %1</source>
3434
<translation type="unfinished"></translation>
3535
</message>
3636
<message>
37-
<location filename="../abstractcommand.cpp" line="316"/>
37+
<location filename="../abstractcommand.cpp" line="317"/>
3838
<source>Missing required option: %1</source>
3939
<translation type="unfinished"></translation>
4040
</message>

test/unit/cli/testabstractcommand.cpp

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -89,14 +89,9 @@ void TestAbstractCommand::parseMicroValue_data()
8989

9090
// Floats work the same.
9191
QTest::addRow("123.0") << QStringLiteral("123.0") << QString() << (quint32)100 << (quint32)123;
92-
QTest::addRow("123.0s") << QStringLiteral("123.0s") << QStringLiteral("s") << (quint32)100 << (quint32)123000000;
93-
#if defined(Q_CC_MINGW) && !defined(__MINGW64__) // 32-bit MinGW has a persistent rounding error.
94-
QTest::addRow("1.230") << QStringLiteral("1.230") << QString() << (quint32)100 << (quint32)1229;
95-
QTest::addRow("1.230s") << QStringLiteral("1.230s") << QStringLiteral("s") << (quint32)100 << (quint32)1229999;
96-
#else
9792
QTest::addRow("1.230") << QStringLiteral("1.230") << QString() << (quint32)100 << (quint32)1230;
93+
QTest::addRow("123.0s") << QStringLiteral("123.0s") << QStringLiteral("s") << (quint32)100 << (quint32)123000000;
9894
QTest::addRow("1.230s") << QStringLiteral("1.230s") << QStringLiteral("s") << (quint32)100 << (quint32)1230000;
99-
#endif
10095

10196
// Invalid numbers return 0.
10297
QTest::addRow("xxx") << QStringLiteral("xxx") << QString() << (quint32)100 << (quint32)0;
@@ -134,14 +129,9 @@ void TestAbstractCommand::parseMilliValue_data()
134129

135130
// Floats work the same.
136131
QTest::addRow("123.0") << QStringLiteral("123.0") << QString() << (quint32)100 << (quint32)123;
137-
QTest::addRow("123.0s") << QStringLiteral("123.0s") << QStringLiteral("s") << (quint32)100 << (quint32)123000;
138-
#if defined(Q_CC_MINGW) && !defined(__MINGW64__) // 32-bit MinGW has a persistent rounding error.
139-
QTest::addRow("1.230") << QStringLiteral("1.230") << QString() << (quint32)100 << (quint32)1229;
140-
QTest::addRow("1.230s") << QStringLiteral("1.230s") << QStringLiteral("s") << (quint32)100 << (quint32)1229;
141-
#else
142132
QTest::addRow("1.230") << QStringLiteral("1.230") << QString() << (quint32)100 << (quint32)1230;
133+
QTest::addRow("123.0s") << QStringLiteral("123.0s") << QStringLiteral("s") << (quint32)100 << (quint32)123000;
143134
QTest::addRow("1.230s") << QStringLiteral("1.230s") << QStringLiteral("s") << (quint32)100 << (quint32)1230;
144-
#endif
145135

146136
// Invalid numbers return 0.
147137
QTest::addRow("xxx") << QStringLiteral("xxx") << QString() << (quint32)100 << (quint32)0;
@@ -179,13 +169,8 @@ void TestAbstractCommand::parseWholeValue_data()
179169

180170
// Floats work the same.
181171
QTest::addRow("123.0") << QStringLiteral("123.0") << QString() << (quint32)123;
182-
#if defined(Q_CC_MINGW) && !defined(__MINGW64__) // 32-bit MinGW has a persistent rounding error.
183-
QTest::addRow("1.23K") << QStringLiteral("1.23K") << QString() << (quint32)1229;
184-
QTest::addRow("1.23M") << QStringLiteral("1.23M") << QString() << (quint32)1229999;
185-
#else
186172
QTest::addRow("1.23K") << QStringLiteral("1.23K") << QString() << (quint32)1230;
187173
QTest::addRow("1.23M") << QStringLiteral("1.23M") << QString() << (quint32)1230000;
188-
#endif
189174

190175
// Invalid numbers return 0.
191176
QTest::addRow("xxx") << QStringLiteral("xxx") << QString() << (quint32)0;

0 commit comments

Comments
 (0)