QLocale: add unittests for qstrtod of "NaN" and "nan"

The tests pass.

Drive-by change: Amend qstrntod API docs, the addition is heavily
inspired by cppreference's strtod docs.

Change-Id: Ic8e138e117a3249c752ae5ef2a8a21feb010befa
Task-number: QTBUG-74325
Pick-to: 6.5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Ahmad Samir 2023-01-16 23:55:27 +02:00
parent d079ca3429
commit a67e7e3bb7
2 changed files with 7 additions and 1 deletions

View File

@ -552,7 +552,9 @@ QString qulltoa(qulonglong number, int base, const QStringView zero)
/*!
\internal
Converts the initial portion of the string pointed to by \a s00 to a double, using the 'C' locale.
Converts the initial portion of the string pointed to by \a s00 to a double,
using the 'C' locale. The function sets the pointer pointed to by \a se to
point to the character past the last character converted.
*/
double qstrntod(const char *s00, qsizetype len, const char **se, bool *ok)
{

View File

@ -1322,6 +1322,10 @@ void tst_QLocale::strtod_data()
QTest::newRow("1e2000 cruft") << QString("1e2000 cruft") << qInf() << 6 << false;
QTest::newRow("-1e2000 cruft") << QString("-1e2000 cruft") << -qInf() << 7 << false;
// NaN and nan
QTest::newRow("NaN") << QString("NaN") << qQNaN() << 3 << true;
QTest::newRow("nan") << QString("nan") << qQNaN() << 3 << true;
// Underflow, ends with cruft - fails but reports right length:
QTest::newRow("1e-2000 cruft") << QString("1e-2000 cruft") << 0.0 << 7 << false;
QTest::newRow("-1e-2000 cruft") << QString("-1e-2000 cruft") << 0.0 << 8 << false;