From a67e7e3bb71cb6693b806692440f94a7012e90cb Mon Sep 17 00:00:00 2001 From: Ahmad Samir Date: Mon, 16 Jan 2023 23:55:27 +0200 Subject: [PATCH] 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 --- src/corelib/text/qlocale_tools.cpp | 4 +++- tests/auto/corelib/text/qlocale/tst_qlocale.cpp | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/corelib/text/qlocale_tools.cpp b/src/corelib/text/qlocale_tools.cpp index a123714f7f3..53e70ac984a 100644 --- a/src/corelib/text/qlocale_tools.cpp +++ b/src/corelib/text/qlocale_tools.cpp @@ -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) { diff --git a/tests/auto/corelib/text/qlocale/tst_qlocale.cpp b/tests/auto/corelib/text/qlocale/tst_qlocale.cpp index 3fb9831705f..52be69e30a3 100644 --- a/tests/auto/corelib/text/qlocale/tst_qlocale.cpp +++ b/tests/auto/corelib/text/qlocale/tst_qlocale.cpp @@ -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;