diff options
Diffstat (limited to 'tests/auto/gui/text/qtextformat/tst_qtextformat.cpp')
-rw-r--r-- | tests/auto/gui/text/qtextformat/tst_qtextformat.cpp | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/tests/auto/gui/text/qtextformat/tst_qtextformat.cpp b/tests/auto/gui/text/qtextformat/tst_qtextformat.cpp index 4ab80bdcfe..4e5ef7c555 100644 --- a/tests/auto/gui/text/qtextformat/tst_qtextformat.cpp +++ b/tests/auto/gui/text/qtextformat/tst_qtextformat.cpp @@ -40,6 +40,10 @@ #include <qtextlayout.h> #include <qabstracttextdocumentlayout.h> +#ifndef QT_NO_DATASTREAM +# include <qdatastream.h> +#endif + class tst_QTextFormat : public QObject { Q_OBJECT @@ -61,6 +65,10 @@ private slots: void setFont_collection_data(); void setFont_collection(); void clearCollection(); + +#ifndef QT_NO_DATASTREAM + void dataStreamCompatibility(); +#endif }; /*! \internal @@ -677,5 +685,125 @@ void tst_QTextFormat::clearCollection() QCOMPARE(collection.defaultFont(), f); // kept, QTextDocument::clear or setPlainText should not reset the font set by setDefaultFont } +#ifndef QT_NO_DATASTREAM +void tst_QTextFormat::dataStreamCompatibility() +{ + // Make sure that we are still compatible with the old values of QTextFormat::FontLetterSpacingType + // and QTextFormat::FontStretch, when used with earlier QDataStream versions + QTextCharFormat format; + format.setFontStretch(42); + format.setFontLetterSpacingType(QFont::AbsoluteSpacing); + + // Sanity check + { + QMap<int, QVariant> properties = format.properties(); + QVERIFY(properties.contains(QTextFormat::FontLetterSpacingType)); + QVERIFY(properties.contains(QTextFormat::FontStretch)); + QVERIFY(!properties.contains(QTextFormat::OldFontLetterSpacingType)); + QVERIFY(!properties.contains(QTextFormat::OldFontStretch)); + } + + QByteArray memory; + + // Current stream version + { + { + QBuffer buffer(&memory); + buffer.open(QIODevice::WriteOnly); + + QDataStream stream(&buffer); + stream << format; + } + + { + QBuffer buffer(&memory); + buffer.open(QIODevice::ReadOnly); + + QDataStream stream(&buffer); + + QTextFormat other; + stream >> other; + + { + QMap<int, QVariant> properties = other.properties(); + QVERIFY(properties.contains(QTextFormat::FontLetterSpacingType)); + QVERIFY(properties.contains(QTextFormat::FontStretch)); + QVERIFY(!properties.contains(QTextFormat::OldFontLetterSpacingType)); + QVERIFY(!properties.contains(QTextFormat::OldFontStretch)); + } + } + + { + QBuffer buffer(&memory); + buffer.open(QIODevice::ReadOnly); + + QDataStream stream(&buffer); + + quint32 type; + stream >> type; + + QMap<qint32, QVariant> properties; + stream >> properties; + QVERIFY(properties.contains(QTextFormat::FontLetterSpacingType)); + QVERIFY(properties.contains(QTextFormat::FontStretch)); + QVERIFY(!properties.contains(QTextFormat::OldFontLetterSpacingType)); + QVERIFY(!properties.contains(QTextFormat::OldFontStretch)); + } + } + + // Qt 5.15 stream version + memory.clear(); + { + { + QBuffer buffer(&memory); + buffer.open(QIODevice::WriteOnly); + + QDataStream stream(&buffer); + stream.setVersion(QDataStream::Qt_5_15); + stream << format; + } + + { + QBuffer buffer(&memory); + buffer.open(QIODevice::ReadOnly); + + QDataStream stream(&buffer); + stream.setVersion(QDataStream::Qt_5_15); + + QTextFormat other; + stream >> other; + + { + QMap<int, QVariant> properties = other.properties(); + QVERIFY(properties.contains(QTextFormat::FontLetterSpacingType)); + QVERIFY(properties.contains(QTextFormat::FontStretch)); + QVERIFY(!properties.contains(QTextFormat::OldFontLetterSpacingType)); + QVERIFY(!properties.contains(QTextFormat::OldFontStretch)); + } + } + + { + QBuffer buffer(&memory); + buffer.open(QIODevice::ReadOnly); + + QDataStream stream(&buffer); + stream.setVersion(QDataStream::Qt_5_15); + + quint32 type; + stream >> type; + + // Verify that old data stream still has the compatibility values + QMap<qint32, QVariant> properties; + stream >> properties; + QVERIFY(!properties.contains(QTextFormat::FontLetterSpacingType)); + QVERIFY(!properties.contains(QTextFormat::FontStretch)); + QVERIFY(properties.contains(QTextFormat::OldFontLetterSpacingType)); + QVERIFY(properties.contains(QTextFormat::OldFontStretch)); + } + } + +} +#endif // QT_NO_DATASTREAM + QTEST_MAIN(tst_QTextFormat) #include "tst_qtextformat.moc" |