summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp')
-rw-r--r--tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp124
1 files changed, 95 insertions, 29 deletions
diff --git a/tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp b/tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp
index 8197c386c5..7ada913778 100644
--- a/tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp
+++ b/tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp
@@ -28,12 +28,13 @@
#include <QtTest/QtTest>
#include <QtGui/QBitmap>
+#include <QtGui/QPainter>
+#include <QtGui/QPainterPath>
#include <QtGui/QPalette>
-#include <QtGui/QPixmap>
+#include <QtGui/QPen>
#include <QtGui/QPicture>
+#include <QtGui/QPixmap>
#include <QtGui/QTextLength>
-#include <QtGui/QPainter>
-#include <QtGui/QPen>
class tst_QDataStream : public QObject
{
@@ -1170,18 +1171,18 @@ void tst_QDataStream::readQCursor(QDataStream *s)
QVERIFY(d5.shape() == test.shape()); //## lacks operator==
QCOMPARE(d5.hotSpot(), test.hotSpot());
- QVERIFY((d5.bitmap() != 0 && test.bitmap() != 0) || (d5.bitmap() == 0 && test.bitmap() == 0));
- if (d5.bitmap() != 0) {
- QPixmap actual = *(d5.bitmap());
- QPixmap expected = *(test.bitmap());
- QCOMPARE(actual, expected);
- }
- QVERIFY((d5.mask() != 0 && test.mask() != 0) || (d5.mask() == 0 && test.mask() == 0));
- if (d5.mask() != 0) {
- QPixmap actual = *(d5.mask());
- QPixmap expected = *(test.mask());
- QCOMPARE(actual, expected);
- }
+
+ // Comparing non-null QBitmaps will fail. Upcast them first to pass.
+ QCOMPARE(d5.bitmap(Qt::ReturnByValue).isNull(), test.bitmap(Qt::ReturnByValue).isNull());
+ QCOMPARE(
+ static_cast<QPixmap>(d5.bitmap(Qt::ReturnByValue)),
+ static_cast<QPixmap>(test.bitmap(Qt::ReturnByValue))
+ );
+ QCOMPARE(d5.mask(Qt::ReturnByValue).isNull(), test.mask(Qt::ReturnByValue).isNull());
+ QCOMPARE(
+ static_cast<QPixmap>(d5.mask(Qt::ReturnByValue)),
+ static_cast<QPixmap>(test.mask(Qt::ReturnByValue))
+ );
}
#endif
@@ -3064,39 +3065,45 @@ void tst_QDataStream::status_QHash_QMap()
} \
} \
{ \
- LinkedList expectedLinkedList; \
+ Vector expectedVector; \
for (int i = 0; i < expectedList.count(); ++i) \
- expectedLinkedList << expectedList.at(i); \
+ expectedVector << expectedList.at(i); \
QByteArray ba = byteArray; \
QDataStream stream(&ba, QIODevice::ReadOnly); \
if (inTransaction) \
stream.startTransaction(); \
stream.setStatus(initialStatus); \
- stream >> linkedList; \
+ stream >> vector; \
QCOMPARE((int)stream.status(), (int)expectedStatus); \
if (!inTransaction || stream.commitTransaction()) { \
- QCOMPARE(linkedList.size(), expectedLinkedList.size()); \
- QCOMPARE(linkedList, expectedLinkedList); \
+ QCOMPARE(vector.size(), expectedVector.size()); \
+ QCOMPARE(vector, expectedVector); \
} else { \
- QVERIFY(linkedList.isEmpty()); \
+ QVERIFY(vector.isEmpty()); \
} \
} \
+ if (inTransaction) \
+ break; \
+ }
+
+#define LINKED_LIST_TEST(byteArray, initialStatus, expectedStatus, expectedList) \
+ for (bool inTransaction = false;; inTransaction = true) { \
{ \
- Vector expectedVector; \
+ LinkedList expectedLinkedList; \
for (int i = 0; i < expectedList.count(); ++i) \
- expectedVector << expectedList.at(i); \
+ expectedLinkedList << expectedList.at(i); \
QByteArray ba = byteArray; \
QDataStream stream(&ba, QIODevice::ReadOnly); \
if (inTransaction) \
stream.startTransaction(); \
stream.setStatus(initialStatus); \
- stream >> vector; \
+ stream >> linkedList; \
QCOMPARE((int)stream.status(), (int)expectedStatus); \
if (!inTransaction || stream.commitTransaction()) { \
- QCOMPARE(vector.size(), expectedVector.size()); \
- QCOMPARE(vector, expectedVector); \
+ QCOMPARE(linkedList.size(), expectedLinkedList.size()); \
+ QCOMPARE(linkedList, expectedLinkedList); \
} else { \
- QVERIFY(vector.isEmpty()); \
+ QVERIFY(linkedList.isEmpty()); \
} \
} \
if (inTransaction) \
@@ -3105,10 +3112,8 @@ void tst_QDataStream::status_QHash_QMap()
void tst_QDataStream::status_QLinkedList_QList_QVector()
{
- typedef QLinkedList<QString> LinkedList;
typedef QList<QString> List;
typedef QVector<QString> Vector;
- LinkedList linkedList;
List list;
Vector vector;
@@ -3155,6 +3160,61 @@ void tst_QDataStream::status_QLinkedList_QList_QVector()
LIST_TEST(QByteArray("\x00\x00\x00\x01", 4), QDataStream::ReadCorruptData, QDataStream::ReadCorruptData, List());
LIST_TEST(QByteArray("\x00\x00\x00\x01\x00\x00\x00\x01", 8), QDataStream::ReadPastEnd, QDataStream::ReadPastEnd, List());
}
+
+#if QT_DEPRECATED_SINCE(5, 15)
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
+ // The same as above with QLinkedList
+
+ typedef QLinkedList<QString> LinkedList;
+ LinkedList linkedList;
+
+ // ok
+ {
+ List listWithEmptyString;
+ listWithEmptyString.append("");
+
+ List someList;
+ someList.append("J");
+ someList.append("MN");
+
+ LINKED_LIST_TEST(QByteArray("\x00\x00\x00\x00", 4), QDataStream::Ok, QDataStream::Ok, List());
+ LINKED_LIST_TEST(QByteArray("\x00\x00\x00\x01\x00\x00\x00\x00", 8), QDataStream::Ok, QDataStream::Ok, listWithEmptyString);
+ LINKED_LIST_TEST(QByteArray("\x00\x00\x00\x02\x00\x00\x00\x02\x00J"
+ "\x00\x00\x00\x04\x00M\x00N", 18), QDataStream::Ok, QDataStream::Ok, someList);
+ }
+
+ // past end
+ {
+ LINKED_LIST_TEST(QByteArray(), QDataStream::Ok, QDataStream::ReadPastEnd, List());
+ LINKED_LIST_TEST(QByteArray("\x00", 1), QDataStream::Ok, QDataStream::ReadPastEnd, List());
+ LINKED_LIST_TEST(QByteArray("\x00\x00", 2), QDataStream::Ok, QDataStream::ReadPastEnd, List());
+ LINKED_LIST_TEST(QByteArray("\x00\x00\x00", 3), QDataStream::Ok, QDataStream::ReadPastEnd, List());
+ LINKED_LIST_TEST(QByteArray("\x00\x00\x00\x01", 4), QDataStream::Ok, QDataStream::ReadPastEnd, List());
+ for (int i = 4; i < 12; ++i) {
+ LINKED_LIST_TEST(QByteArray("\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00", i), QDataStream::Ok, QDataStream::ReadPastEnd, List());
+ }
+ }
+
+ // corrupt data
+ {
+ LINKED_LIST_TEST(QByteArray("\x00\x00\x00\x01\x00\x00\x00\x01", 8), QDataStream::Ok, QDataStream::ReadCorruptData, List());
+ LINKED_LIST_TEST(QByteArray("\x00\x00\x00\x02\x00\x00\x00\x01\x00J"
+ "\x00\x00\x00\x02\x00M\x00N", 18), QDataStream::Ok, QDataStream::ReadCorruptData, List());
+ }
+
+ // test the previously latched error status is not affected by reading
+ {
+ List listWithEmptyString;
+ listWithEmptyString.append("");
+
+ LINKED_LIST_TEST(QByteArray("\x00\x00\x00\x01\x00\x00\x00\x00", 8), QDataStream::ReadPastEnd, QDataStream::ReadPastEnd, listWithEmptyString);
+ LINKED_LIST_TEST(QByteArray("\x00\x00\x00\x01", 4), QDataStream::ReadCorruptData, QDataStream::ReadCorruptData, List());
+ LINKED_LIST_TEST(QByteArray("\x00\x00\x00\x01\x00\x00\x00\x01", 8), QDataStream::ReadPastEnd, QDataStream::ReadPastEnd, List());
+ }
+
+QT_WARNING_POP
+#endif
}
void tst_QDataStream::streamToAndFromQByteArray()
@@ -3296,7 +3356,10 @@ void tst_QDataStream::streamRealDataTypes()
QCOMPARE(col, color);
stream >> rGrad;
QCOMPARE(rGrad.style(), radialBrush.style());
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
QCOMPARE(rGrad.matrix(), radialBrush.matrix());
+QT_WARNING_POP
QCOMPARE(rGrad.gradient()->type(), radialBrush.gradient()->type());
QCOMPARE(rGrad.gradient()->stops(), radialBrush.gradient()->stops());
QCOMPARE(rGrad.gradient()->spread(), radialBrush.gradient()->spread());
@@ -3305,7 +3368,10 @@ void tst_QDataStream::streamRealDataTypes()
QCOMPARE(((QRadialGradient *)rGrad.gradient())->radius(), ((QRadialGradient *)radialBrush.gradient())->radius());
stream >> cGrad;
QCOMPARE(cGrad.style(), conicalBrush.style());
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
QCOMPARE(cGrad.matrix(), conicalBrush.matrix());
+QT_WARNING_POP
QCOMPARE(cGrad.gradient()->type(), conicalBrush.gradient()->type());
QCOMPARE(cGrad.gradient()->stops(), conicalBrush.gradient()->stops());
QCOMPARE(cGrad.gradient()->spread(), conicalBrush.gradient()->spread());