From 60c2eac401b4ca4c484fb348aa9df73ed26d1ee7 Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Mon, 17 Mar 2025 19:20:16 +0100 Subject: [PATCH] tst_QTextStream: convert macros to templates called inline Change-Id: Iacb92a91c4684185e6bff77f13b5ef0f2a41ce40 Reviewed-by: Thiago Macieira --- .../qtextstream/tst_qtextstream.cpp | 218 ++++++++---------- 1 file changed, 98 insertions(+), 120 deletions(-) diff --git a/tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp b/tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp index 3d87d3dda1f..af4464d1119 100644 --- a/tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp +++ b/tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp @@ -77,31 +77,31 @@ private slots: // natural number read operator void signedShort_read_operator_FromDevice_data() { generateNaturalNumbersData(false); } - void signedShort_read_operator_FromDevice(); + void signedShort_read_operator_FromDevice() { integral_read_operator_FromDevice(); } void unsignedShort_read_operator_FromDevice_data() { generateNaturalNumbersData(false); } - void unsignedShort_read_operator_FromDevice(); + void unsignedShort_read_operator_FromDevice() { integral_read_operator_FromDevice(); } void signedInt_read_operator_FromDevice_data() { generateNaturalNumbersData(false); } - void signedInt_read_operator_FromDevice(); + void signedInt_read_operator_FromDevice() { integral_read_operator_FromDevice(); } void unsignedInt_read_operator_FromDevice_data() { generateNaturalNumbersData(false); } - void unsignedInt_read_operator_FromDevice(); + void unsignedInt_read_operator_FromDevice() { integral_read_operator_FromDevice(); } void qlonglong_read_operator_FromDevice_data() { generateNaturalNumbersData(false); } - void qlonglong_read_operator_FromDevice(); + void qlonglong_read_operator_FromDevice() { integral_read_operator_FromDevice(); } void qulonglong_read_operator_FromDevice_data() { generateNaturalNumbersData(false); } - void qulonglong_read_operator_FromDevice(); + void qulonglong_read_operator_FromDevice() { integral_read_operator_FromDevice(); } // natural number write operator void signedShort_write_operator_ToDevice_data(); - void signedShort_write_operator_ToDevice(); + void signedShort_write_operator_ToDevice() { integral_write_operator_ToDevice(); } void unsignedShort_write_operator_ToDevice_data(); - void unsignedShort_write_operator_ToDevice(); + void unsignedShort_write_operator_ToDevice() { integral_write_operator_ToDevice(); } void signedInt_write_operator_ToDevice_data(); - void signedInt_write_operator_ToDevice(); + void signedInt_write_operator_ToDevice() { integral_write_operator_ToDevice(); } void unsignedInt_write_operator_ToDevice_data(); - void unsignedInt_write_operator_ToDevice(); + void unsignedInt_write_operator_ToDevice() { integral_write_operator_ToDevice(); } void qlonglong_write_operator_ToDevice_data(); - void qlonglong_write_operator_ToDevice(); + void qlonglong_write_operator_ToDevice() { integral_write_operator_ToDevice(); } void qulonglong_write_operator_ToDevice_data(); - void qulonglong_write_operator_ToDevice(); + void qulonglong_write_operator_ToDevice() { integral_write_operator_ToDevice(); } void int_read_with_locale_data(); void int_read_with_locale(); @@ -111,15 +111,15 @@ private slots: // real number read operator void float_read_operator_FromDevice_data() { generateRealNumbersData(false); } - void float_read_operator_FromDevice(); + void float_read_operator_FromDevice() { real_read_operator_FromDevice(); } void double_read_operator_FromDevice_data() { generateRealNumbersData(false); } - void double_read_operator_FromDevice(); + void double_read_operator_FromDevice() { real_read_operator_FromDevice(); } // real number write operator void float_write_operator_ToDevice_data() { generateRealNumbersDataWrite(); } - void float_write_operator_ToDevice(); + void float_write_operator_ToDevice() { real_write_operator_ToDevice(); } void double_write_operator_ToDevice_data() { generateRealNumbersDataWrite(); } - void double_write_operator_ToDevice(); + void double_write_operator_ToDevice() { real_write_operator_ToDevice(); } void double_write_with_flags_data(); void double_write_with_flags(); @@ -213,9 +213,13 @@ private: void generateLineData(bool for_QString) const; void generateAllData(bool for_QString) const; void generateOperatorCharData(bool for_QString) const; + template void integral_read_operator_FromDevice() const; void generateNaturalNumbersData(bool for_QString) const; + template void integral_write_operator_ToDevice() const; + template void real_read_operator_FromDevice() const; void generateRealNumbersData(bool for_QString) const; void generateStringData(bool for_QString) const; + template void real_write_operator_ToDevice() const; void generateRealNumbersDataWrite() const; QTemporaryDir tempDir; @@ -2032,23 +2036,16 @@ void tst_QTextStream::generateNaturalNumbersData(bool for_QString) const } // ------------------------------------------------------------------------------ -#define IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(texttype, type) \ - void tst_QTextStream:: texttype##_read_operator_FromDevice() \ - { \ - QFETCH(QByteArray, input); \ - QFETCH(qulonglong, output); \ - type sh; \ - QTextStream stream(&input); \ - stream >> sh; \ - QCOMPARE(sh, (type)output); \ - } -IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(signedShort, signed short) -IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(unsignedShort, unsigned short) -IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(signedInt, signed int) -IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(unsignedInt, unsigned int) -IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(qlonglong, qlonglong) -IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(qulonglong, qulonglong) - ; +template +void tst_QTextStream::integral_read_operator_FromDevice() const +{ + QFETCH(QByteArray, input); + QFETCH(qulonglong, output); + QTextStream stream(&input); + Whole sh; + stream >> sh; + QCOMPARE(sh, Whole(output)); +} // ------------------------------------------------------------------------------ void tst_QTextStream::generateRealNumbersData(bool for_QString) const @@ -2078,19 +2075,16 @@ void tst_QTextStream::generateRealNumbersData(bool for_QString) const } // ------------------------------------------------------------------------------ -#define IMPLEMENT_STREAM_RIGHT_REAL_OPERATOR_TEST(texttype, type) \ - void tst_QTextStream:: texttype##_read_operator_FromDevice() \ - { \ - QFETCH(QByteArray, input); \ - QFETCH(double, output); \ - type sh; \ - QTextStream stream(&input); \ - stream >> sh; \ - QCOMPARE(sh, (type)output); \ - } -IMPLEMENT_STREAM_RIGHT_REAL_OPERATOR_TEST(float, float) -IMPLEMENT_STREAM_RIGHT_REAL_OPERATOR_TEST(double, double) - ; +template +void tst_QTextStream::real_read_operator_FromDevice() const +{ + QFETCH(QByteArray, input); + QFETCH(double, output); + QTextStream stream(&input); + Real sh; + stream >> sh; + QCOMPARE(sh, Real(output)); +} // ------------------------------------------------------------------------------ void tst_QTextStream::generateStringData(bool for_QString) const @@ -2180,42 +2174,42 @@ void tst_QTextStream::byteArray_read_operator_FromDevice() } // ------------------------------------------------------------------------------ -#define IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(texttype, type) \ - void tst_QTextStream:: texttype##_write_operator_ToDevice() \ - { \ - QFETCH(qulonglong, number); \ - QFETCH(QByteArray, data); \ - QFETCH(QByteArray, dataWithSeparators); \ - \ - QBuffer buffer; \ - buffer.open(QBuffer::WriteOnly); \ - QTextStream stream(&buffer); \ - stream.setLocale(QLocale::c()); \ - QVERIFY(stream << (type)number); \ - stream.flush(); \ - QCOMPARE(buffer.data().constData(), data.constData()); \ - \ - QLocale locale("en-US"); \ - buffer.reset(); buffer.buffer().clear(); \ - stream.setLocale(locale); \ - QVERIFY(stream << (type)number); \ - stream.flush(); \ - QCOMPARE(buffer.data(), dataWithSeparators); \ - \ - locale.setNumberOptions(QLocale::OmitGroupSeparator); \ - buffer.reset(); buffer.buffer().clear(); \ - stream.setLocale(locale); \ - QVERIFY(stream << (type)number); \ - stream.flush(); \ - QCOMPARE(buffer.data().constData(), data.constData()); \ - \ - locale = QLocale("de-DE"); \ - buffer.reset(); buffer.buffer().clear(); \ - stream.setLocale(locale); \ - QVERIFY(stream << (type)number); \ - stream.flush(); \ - QCOMPARE(buffer.data(), dataWithSeparators.replace(',', '.')); \ - } +template +void tst_QTextStream::integral_write_operator_ToDevice() const +{ + QFETCH(qulonglong, number); + QFETCH(QByteArray, data); + QFETCH(QByteArray, dataWithSeparators); + + QBuffer buffer; + buffer.open(QBuffer::WriteOnly); + QTextStream stream(&buffer); + stream.setLocale(QLocale::c()); + QVERIFY(stream << Whole(number)); + stream.flush(); + QCOMPARE(buffer.data().constData(), data.constData()); + + QLocale locale("en-US"); + buffer.reset(); buffer.buffer().clear(); + stream.setLocale(locale); + QVERIFY(stream << Whole(number)); + stream.flush(); + QCOMPARE(buffer.data(), dataWithSeparators); + + locale.setNumberOptions(QLocale::OmitGroupSeparator); + buffer.reset(); buffer.buffer().clear(); + stream.setLocale(locale); + QVERIFY(stream << Whole(number)); + stream.flush(); + QCOMPARE(buffer.data().constData(), data.constData()); + + locale = QLocale("de-DE"); + buffer.reset(); buffer.buffer().clear(); + stream.setLocale(locale); + QVERIFY(stream << Whole(number)); + stream.flush(); + QCOMPARE(buffer.data(), dataWithSeparators.replace(',', '.')); +} // ------------------------------------------------------------------------------ void tst_QTextStream::signedShort_write_operator_ToDevice_data() @@ -2235,8 +2229,6 @@ void tst_QTextStream::signedShort_write_operator_ToDevice_data() QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("1") << QByteArray("1"); QTest::newRow("-32768") << quint64(-32768) << QByteArray("-32768") << QByteArray("-32,768"); } -IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(signedShort, signed short) - ; // ------------------------------------------------------------------------------ void tst_QTextStream::unsignedShort_write_operator_ToDevice_data() @@ -2255,8 +2247,6 @@ void tst_QTextStream::unsignedShort_write_operator_ToDevice_data() QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("0") << QByteArray("0"); QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("1") << QByteArray("1"); } -IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(unsignedShort, unsigned short) - ; // ------------------------------------------------------------------------------ void tst_QTextStream::signedInt_write_operator_ToDevice_data() @@ -2282,8 +2272,6 @@ void tst_QTextStream::signedInt_write_operator_ToDevice_data() QTest::newRow("4294967297") << Q_UINT64_C(4294967297) << QByteArray("1") << QByteArray("1"); QTest::newRow("-2147483648") << quint64(-2147483648) << QByteArray("-2147483648") << QByteArray("-2,147,483,648"); } -IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(signedInt, signed int) - ; // ------------------------------------------------------------------------------ void tst_QTextStream::unsignedInt_write_operator_ToDevice_data() @@ -2308,8 +2296,6 @@ void tst_QTextStream::unsignedInt_write_operator_ToDevice_data() QTest::newRow("4294967296") << Q_UINT64_C(4294967296) << QByteArray("0") << QByteArray("0"); QTest::newRow("4294967297") << Q_UINT64_C(4294967297) << QByteArray("1") << QByteArray("1"); } -IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(unsignedInt, unsigned int) - ; // ------------------------------------------------------------------------------ void tst_QTextStream::qlonglong_write_operator_ToDevice_data() @@ -2339,8 +2325,6 @@ void tst_QTextStream::qlonglong_write_operator_ToDevice_data() QTest::newRow("18446744073709551615") << Q_UINT64_C(18446744073709551615) << QByteArray("-1") << QByteArray("-1"); QTest::newRow("-9223372036854775808") << quint64(Q_INT64_C(-9223372036854775807) - 1) << QByteArray("-9223372036854775808") << QByteArray("-9,223,372,036,854,775,808"); } -IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(qlonglong, qlonglong) - ; // ------------------------------------------------------------------------------ void tst_QTextStream::qulonglong_write_operator_ToDevice_data() @@ -2369,9 +2353,6 @@ void tst_QTextStream::qulonglong_write_operator_ToDevice_data() QTest::newRow("9223372036854775809") << Q_UINT64_C(9223372036854775809) << QByteArray("9223372036854775809") << QByteArray("9,223,372,036,854,775,809"); QTest::newRow("18446744073709551615") << Q_UINT64_C(18446744073709551615) << QByteArray("18446744073709551615") << QByteArray("18,446,744,073,709,551,615"); } -IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(qulonglong, qulonglong) - ; - // ------------------------------------------------------------------------------ void tst_QTextStream::generateRealNumbersDataWrite() const @@ -2389,31 +2370,28 @@ void tst_QTextStream::generateRealNumbersDataWrite() const } // ------------------------------------------------------------------------------ -#define IMPLEMENT_STREAM_LEFT_REAL_OPERATOR_TEST(texttype, type) \ - void tst_QTextStream:: texttype##_write_operator_ToDevice() \ - { \ - QFETCH(double, number); \ - QFETCH(QByteArray, data); \ - QFETCH(QByteArray, dataWithSeparators); \ - \ - QBuffer buffer; \ - buffer.open(QBuffer::WriteOnly); \ - QTextStream stream(&buffer); \ - stream.setLocale(QLocale::c()); \ - type f = type(number); \ - QVERIFY(stream << f); \ - stream.flush(); \ - QCOMPARE(buffer.data().constData(), data.constData()); \ - \ - buffer.reset(); \ - stream.setLocale(QLocale("en-US")); \ - QVERIFY(stream << f); \ - stream.flush(); \ - QCOMPARE(buffer.data(), dataWithSeparators); \ - } -IMPLEMENT_STREAM_LEFT_REAL_OPERATOR_TEST(float, float) -IMPLEMENT_STREAM_LEFT_REAL_OPERATOR_TEST(double, double) - ; +template +void tst_QTextStream::real_write_operator_ToDevice() const +{ + QFETCH(double, number); + QFETCH(QByteArray, data); + QFETCH(QByteArray, dataWithSeparators); + + QBuffer buffer; + buffer.open(QBuffer::WriteOnly); + QTextStream stream(&buffer); + stream.setLocale(QLocale::c()); + Real f = Real(number); + QVERIFY(stream << f); + stream.flush(); + QCOMPARE(buffer.data().constData(), data.constData()); + + buffer.reset(); + stream.setLocale(QLocale("en-US")); + QVERIFY(stream << f); + stream.flush(); + QCOMPARE(buffer.data(), dataWithSeparators); +} // ------------------------------------------------------------------------------ void tst_QTextStream::string_write_operator_ToDevice_data()