summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib
diff options
context:
space:
mode:
authorJędrzej Nowacki <jedrzej.nowacki@qt.io>2018-09-03 16:12:44 +0200
committerJędrzej Nowacki <jedrzej.nowacki@qt.io>2018-10-03 14:49:12 +0000
commit4981c2c8b50b988366cc1a6f7a2658433df8021a (patch)
tree9a527142e5d28dd7dae708c9df4a69ed8d2ce2ee /tests/auto/corelib
parentff033830176aaa2e7a525042c5c40a6517cb7858 (diff)
Implement QJsonObject data stream operator
Change-Id: I8528f18ad72828cd97a5ac00e1925958acf73f9f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'tests/auto/corelib')
-rw-r--r--tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp1
-rw-r--r--tests/auto/corelib/serialization/json/tst_qtjson.cpp34
-rw-r--r--tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp25
3 files changed, 59 insertions, 1 deletions
diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
index 8c1ee17daa..ce6ca308ce 100644
--- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
+++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
@@ -1822,7 +1822,6 @@ DECLARE_NONSTREAMABLE(void*)
DECLARE_NONSTREAMABLE(QModelIndex)
DECLARE_NONSTREAMABLE(QPersistentModelIndex)
DECLARE_NONSTREAMABLE(QJsonValue)
-DECLARE_NONSTREAMABLE(QJsonObject)
DECLARE_NONSTREAMABLE(QCborValue)
DECLARE_NONSTREAMABLE(QCborArray)
DECLARE_NONSTREAMABLE(QCborMap)
diff --git a/tests/auto/corelib/serialization/json/tst_qtjson.cpp b/tests/auto/corelib/serialization/json/tst_qtjson.cpp
index 5b03964140..feae858a10 100644
--- a/tests/auto/corelib/serialization/json/tst_qtjson.cpp
+++ b/tests/auto/corelib/serialization/json/tst_qtjson.cpp
@@ -157,6 +157,8 @@ private Q_SLOTS:
void streamSerializationQJsonDocument();
void streamSerializationQJsonArray_data();
void streamSerializationQJsonArray();
+ void streamSerializationQJsonObject_data();
+ void streamSerializationQJsonObject();
void streamVariantSerialization();
private:
@@ -3059,6 +3061,27 @@ void tst_QtJson::streamSerializationQJsonArray()
QCOMPARE(output, array);
}
+void tst_QtJson::streamSerializationQJsonObject_data()
+{
+ QTest::addColumn<QJsonObject>("object");
+ QTest::newRow("empty") << QJsonObject();
+ QTest::newRow("non-empty") << QJsonObject{{"foo", 665}, {"bar", 666}};
+}
+
+void tst_QtJson::streamSerializationQJsonObject()
+{
+ // Check interface only, implementation is tested through to and from
+ // json functions.
+ QByteArray buffer;
+ QFETCH(QJsonObject, object);
+ QJsonObject output;
+ QDataStream save(&buffer, QIODevice::WriteOnly);
+ save << object;
+ QDataStream load(buffer);
+ load >> output;
+ QCOMPARE(output, object);
+}
+
void tst_QtJson::streamVariantSerialization()
{
// Check interface only, implementation is tested through to and from
@@ -3086,6 +3109,17 @@ void tst_QtJson::streamVariantSerialization()
QCOMPARE(output.userType(), QMetaType::QJsonArray);
QCOMPARE(output.toJsonArray(), array);
}
+ {
+ QJsonObject obj{{"foo", 42}};
+ QVariant output;
+ QVariant variant(obj);
+ QDataStream save(&buffer, QIODevice::WriteOnly);
+ save << variant;
+ QDataStream load(buffer);
+ load >> output;
+ QCOMPARE(output.userType(), QMetaType::QJsonObject);
+ QCOMPARE(output.toJsonObject(), obj);
+ }
}
QTEST_MAIN(tst_QtJson)
diff --git a/tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp b/tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp
index 88fe57d668..ed0c3ade8b 100644
--- a/tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp
+++ b/tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp
@@ -137,6 +137,7 @@ private slots:
void stream_QJsonDocument();
void stream_QJsonArray();
+ void stream_QJsonObject();
void setVersion_data();
void setVersion();
@@ -2146,6 +2147,30 @@ void tst_QDataStream::stream_QJsonArray()
}
}
+void tst_QDataStream::stream_QJsonObject()
+{
+ QByteArray buffer;
+ {
+ QDataStream save(&buffer, QIODevice::WriteOnly);
+ save << QByteArrayLiteral("invalidJson");
+ QDataStream load(&buffer, QIODevice::ReadOnly);
+ QJsonObject object;
+ load >> object;
+ QVERIFY(object.isEmpty());
+ QVERIFY(load.status() != QDataStream::Ok);
+ QCOMPARE(load.status(), QDataStream::ReadCorruptData);
+ }
+ {
+ QDataStream save(&buffer, QIODevice::WriteOnly);
+ QJsonObject objSave{{"foo", 1}, {"bar", 2}};
+ save << objSave;
+ QDataStream load(&buffer, QIODevice::ReadOnly);
+ QJsonObject objLoad;
+ load >> objLoad;
+ QCOMPARE(objLoad, objSave);
+ }
+}
+
void tst_QDataStream::setVersion_data()
{
QTest::addColumn<int>("vers");