QTBUG-26035: Remove positive sign from start of string

Updated removeGroupSeparators(QLocalePrivate::CharBuff *num) so that it
removes also positive sign ('+') at the start of the string. Auto test
included.

Task-number: QTBUG-26035

Change-Id: I8e0e071d6c682d9192a8c6bb2f282510e21b3c48
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Denis Dzyubenko <denis.dzyubenko@nokia.com>
bb10
Tarja Sundqvist 2012-06-08 11:33:41 +03:00 committed by Qt by Nokia
parent ed96d199f1
commit 0a6dc44f24
2 changed files with 19 additions and 1 deletions

View File

@ -249,7 +249,7 @@ bool removeGroupSeparators(QLocalePrivate::CharBuff *num)
// Check that we are not missing a separator
if (i < decpt_idx
&& (decpt_idx - i) % 4 == 0
&& !(i == 0 && c == '-')) // check for negative sign at start of string
&& !(i == 0 && (c == '-' || c == '+'))) // check for negative or positive sign at start of string
return false;
++i;
}

View File

@ -134,6 +134,7 @@ private slots:
void listPatterns();
void measurementSystems();
void QTBUG_26035_positivesign();
private:
QString m_decimal, m_thousand, m_sdate, m_ldate, m_time;
@ -2051,5 +2052,22 @@ void tst_QLocale::measurementSystems()
QCOMPARE(locale.measurementSystem(), QLocale::MetricSystem);
}
void tst_QLocale::QTBUG_26035_positivesign()
{
QLocale locale(QLocale::C);
bool ok (false);
QCOMPARE(locale.toInt(QString("+100,000"), &ok), 100000);
QVERIFY(ok);
ok = false;
QCOMPARE(locale.toInt(QString("+100,000,000"), &ok), 100000000);
QVERIFY(ok);
ok = false;
QCOMPARE(locale.toLongLong(QString("+100,000"), &ok), (qlonglong)100000);
QVERIFY(ok);
ok = false;
QCOMPARE(locale.toLongLong(QString("+100,000,000"), &ok), (qlonglong)100000000);
QVERIFY(ok);
}
QTEST_MAIN(tst_QLocale)
#include "tst_qlocale.moc"