Modernize comparisons in tst_QLocale

QCOMPARE() can report enum values by name just fine, no need to
laboriously convert them to strings. While comparing all tags in one
go did allow a more comprehensive report, it's enough to know we
failed; this is testing cross-platform code, so a debugger can tell us
all those extra details if we get a failure.

Testing qHash() doesn't distinguish equal things is fairly low value;
at least avoid duplicating the construction of the reference value.

Replace a bunch of other QVERIFY()s with the new cousins of QCOMPARE()
for ordered and different comparisons.

In the process, mark some of the QLocale objects as const.

Change-Id: Ic93b8ed60c6f2cc846fbba428983778896d61291
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
bb10
Edward Welbourne 2024-01-09 19:19:29 +01:00
parent 5d451d514c
commit b0cb4a80e5
1 changed files with 23 additions and 34 deletions

View File

@ -392,9 +392,9 @@ void tst_QLocale::defaulted_ctor()
#define TEST_CTOR(req_lang, req_country, exp_lang, exp_country) \
do { \
QLocale l(QLocale::req_lang, QLocale::req_country); \
QCOMPARE((int)l.language(), (int)exp_lang); \
QCOMPARE((int)l.territory(), (int)exp_country); \
const QLocale l(QLocale::req_lang, QLocale::req_country); \
QCOMPARE(l.language(), exp_lang); \
QCOMPARE(l.territory(), exp_country); \
} while (false)
TEST_CTOR(AnyLanguage, AnyTerritory, default_lang, default_country);
@ -478,15 +478,12 @@ void tst_QLocale::defaulted_ctor()
#undef TEST_CTOR
#define TEST_CTOR(req_lc, exp_lang, exp_country) \
do { \
QLocale l(req_lc); \
QVERIFY2(l.language() == QLocale::exp_lang \
&& l.territory() == QLocale::exp_country, \
QString("requested: \"" + QString(req_lc) + "\", got: " \
+ QLocale::languageToString(l.language()) \
+ QLatin1Char('/') \
+ QLocale::territoryToString(l.territory())).toUtf8().constData()); \
QCOMPARE(l, QLocale(QLocale::exp_lang, QLocale::exp_country)); \
QCOMPARE(qHash(l), qHash(QLocale(QLocale::exp_lang, QLocale::exp_country))); \
const QLocale l(req_lc); \
QCOMPARE(l.language(), QLocale::exp_lang); \
QCOMPARE(l.territory(), QLocale::exp_country); \
const QLocale m(QLocale::exp_lang, QLocale::exp_country); \
QCOMPARE(l, m); \
QCOMPARE(qHash(l), qHash(m)); \
} while (false)
QLocale::setDefault(QLocale(QLocale::C));
@ -541,14 +538,10 @@ void tst_QLocale::defaulted_ctor()
#undef TEST_CTOR
#define TEST_CTOR(req_lc, exp_lang, exp_script, exp_country) \
do { \
QLocale l(req_lc); \
QVERIFY2(l.language() == QLocale::exp_lang \
&& l.script() == QLocale::exp_script \
&& l.territory() == QLocale::exp_country, \
QString("requested: \"" + QString(req_lc) + "\", got: " \
+ QLocale::languageToString(l.language()) \
+ QLatin1Char('/') + QLocale::scriptToString(l.script()) \
+ QLatin1Char('/') + QLocale::territoryToString(l.territory())).toUtf8().constData()); \
const QLocale l(req_lc); \
QCOMPARE(l.language(), QLocale::exp_lang); \
QCOMPARE(l.script(), QLocale::exp_script); \
QCOMPARE(l.territory(), QLocale::exp_country); \
} while (false)
TEST_CTOR("zh_CN", Chinese, SimplifiedHanScript, China);
@ -731,13 +724,9 @@ void tst_QLocale::legacyNames()
#define TEST_CTOR(req_lc, exp_lang, exp_country) \
do { \
QLocale l(req_lc); \
QVERIFY2(l.language() == QLocale::exp_lang \
&& l.territory() == QLocale::exp_country, \
QString("requested: \"" + QString(req_lc) + "\", got: " \
+ QLocale::languageToString(l.language()) \
+ QLatin1Char('/') \
+ QLocale::territoryToString(l.territory())).toUtf8().constData()); \
const QLocale l(req_lc); \
QCOMPARE(l.language(), QLocale::exp_lang); \
QCOMPARE(l.territory(), QLocale::exp_country); \
} while (false)
TEST_CTOR("mo_MD", Romanian, Moldova);
@ -1055,7 +1044,7 @@ void tst_QLocale::stringToDouble()
QCOMPARE(d, num);
if (std::isfinite(num)) {
double diff = d > num ? d - num : num - d;
QVERIFY(diff <= MY_DOUBLE_EPSILON);
QCOMPARE_LE(diff, MY_DOUBLE_EPSILON);
}
}
@ -1066,7 +1055,7 @@ void tst_QLocale::stringToDouble()
QCOMPARE(d, num);
if (std::isfinite(num)) {
double diff = d > num ? d - num : num - d;
QVERIFY(diff <= MY_DOUBLE_EPSILON);
QCOMPARE_LE(diff, MY_DOUBLE_EPSILON);
}
}
#undef MY_DOUBLE_EPSILON
@ -1163,7 +1152,7 @@ void tst_QLocale::stringToFloat()
QCOMPARE(f, fnum);
if (std::isfinite(fnum)) {
float diff = f > fnum ? f - fnum : fnum - f;
QVERIFY(diff <= MY_FLOAT_EPSILON);
QCOMPARE_LE(diff, MY_FLOAT_EPSILON);
}
}
@ -1174,7 +1163,7 @@ void tst_QLocale::stringToFloat()
QCOMPARE(f, fnum);
if (std::isfinite(fnum)) {
float diff = f > fnum ? f - fnum : fnum - f;
QVERIFY(diff <= MY_FLOAT_EPSILON);
QCOMPARE_LE(diff, MY_FLOAT_EPSILON);
}
}
#undef MY_FLOAT_EPSILON
@ -2722,7 +2711,7 @@ void tst_QLocale::macDefaultLocale()
|| locale.groupSeparator() == QStringView(u"\xA0") // no-breaking space
|| locale.groupSeparator() == QStringView(u"'")
|| locale.groupSeparator().isEmpty());
QVERIFY(locale.decimalPoint() != locale.groupSeparator());
QCOMPARE_NE(locale.decimalPoint(), locale.groupSeparator());
// make sure we are using the system to parse them
QCOMPARE(locale.toString(1234.56), systemLocaleFormatNumber(QString("1,234.56")));
@ -3099,7 +3088,7 @@ void tst_QLocale::testNames()
if (language != QLocale::C) {
const int idx = name.indexOf(QLatin1Char('_'));
QVERIFY(idx != -1);
QCOMPARE_NE(idx, -1);
const QString lang = name.left(idx);
QCOMPARE(QLocale(lang).language(), language);
@ -3395,7 +3384,7 @@ void tst_QLocale::monthName()
QCOMPARE(ru.monthName(1, QLocale::NarrowFormat), QString::fromUtf8("\320\257"));
const auto sys = QLocale::system();
if (sys.language() == QLocale::Russian) // QTBUG-92018
QVERIFY(sys.monthName(3) != sys.standaloneMonthName(3));
QCOMPARE_NE(sys.monthName(3), sys.standaloneMonthName(3));
const QLocale ir("ga_IE");
QCOMPARE(ir.monthName(1, QLocale::ShortFormat), QLatin1String("Ean"));