From a6b3a1e4598f829b1b60407b2e47417db6f0e442 Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Mon, 20 Jul 2020 14:27:19 +0200 Subject: Remove deprecated binary json feature Deprecated in 5.15 in favor of CBOR. Fixes: QTBUG-81239 Change-Id: I711d4bd7dd1247f58e77ac9fa53304cbe5028918 Reviewed-by: Edward Welbourne Reviewed-by: Lars Knoll --- .../serialization/json/invalidBinaryData/10.bjson | Bin 544 -> 0 bytes .../serialization/json/invalidBinaryData/11.bjson | Bin 542 -> 0 bytes .../serialization/json/invalidBinaryData/12.bjson | Bin 506 -> 0 bytes .../serialization/json/invalidBinaryData/13.bjson | Bin 544 -> 0 bytes .../serialization/json/invalidBinaryData/14.bjson | Bin 521 -> 0 bytes .../serialization/json/invalidBinaryData/15.bjson | Bin 536 -> 0 bytes .../serialization/json/invalidBinaryData/16.bjson | Bin 874 -> 0 bytes .../serialization/json/invalidBinaryData/17.bjson | Bin 49 -> 0 bytes .../serialization/json/invalidBinaryData/18.bjson | Bin 524 -> 0 bytes .../serialization/json/invalidBinaryData/19.bjson | Bin 524 -> 0 bytes .../serialization/json/invalidBinaryData/20.bjson | Bin 524 -> 0 bytes .../serialization/json/invalidBinaryData/21.bjson | Bin 552 -> 0 bytes .../serialization/json/invalidBinaryData/22.bjson | Bin 524 -> 0 bytes .../serialization/json/invalidBinaryData/23.bjson | Bin 533 -> 0 bytes .../serialization/json/invalidBinaryData/24.bjson | Bin 506 -> 0 bytes .../serialization/json/invalidBinaryData/25.bjson | Bin 542 -> 0 bytes .../serialization/json/invalidBinaryData/26.bjson | Bin 628 -> 0 bytes .../serialization/json/invalidBinaryData/27.bjson | Bin 51 -> 0 bytes .../serialization/json/invalidBinaryData/28.bjson | Bin 542 -> 0 bytes .../serialization/json/invalidBinaryData/29.bjson | Bin 544 -> 0 bytes .../serialization/json/invalidBinaryData/30.bjson | Bin 542 -> 0 bytes .../serialization/json/invalidBinaryData/31.bjson | Bin 553 -> 0 bytes .../serialization/json/invalidBinaryData/32.bjson | Bin 536 -> 0 bytes .../serialization/json/invalidBinaryData/33.bjson | Bin 544 -> 0 bytes .../serialization/json/invalidBinaryData/34.bjson | Bin 524 -> 0 bytes .../serialization/json/invalidBinaryData/35.bjson | Bin 524 -> 0 bytes .../serialization/json/invalidBinaryData/36.bjson | Bin 524 -> 0 bytes .../serialization/json/invalidBinaryData/37.bjson | Bin 536 -> 0 bytes .../serialization/json/invalidBinaryData/38.bjson | 0 .../serialization/json/invalidBinaryData/39.bjson | Bin 24 -> 0 bytes .../serialization/json/invalidBinaryData/40.bjson | Bin 60 -> 0 bytes .../serialization/json/invalidBinaryData/41.bjson | Bin 32 -> 0 bytes tests/auto/corelib/serialization/json/test.bjson | Bin 35392 -> 0 bytes .../auto/corelib/serialization/json/tst_qtjson.cpp | 239 --------------------- tests/benchmarks/corelib/json/CMakeLists.txt | 6 +- tests/benchmarks/corelib/json/json.pro | 4 +- .../corelib/json/tst_bench_qtbinaryjson.cpp | 179 --------------- tests/benchmarks/corelib/json/tst_bench_qtjson.cpp | 146 +++++++++++++ 38 files changed, 151 insertions(+), 423 deletions(-) delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/10.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/11.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/12.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/13.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/14.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/15.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/16.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/17.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/18.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/19.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/20.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/21.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/22.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/23.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/24.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/25.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/26.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/27.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/28.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/29.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/30.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/31.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/32.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/33.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/34.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/35.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/36.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/37.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/38.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/39.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/40.bjson delete mode 100644 tests/auto/corelib/serialization/json/invalidBinaryData/41.bjson delete mode 100644 tests/auto/corelib/serialization/json/test.bjson delete mode 100644 tests/benchmarks/corelib/json/tst_bench_qtbinaryjson.cpp create mode 100644 tests/benchmarks/corelib/json/tst_bench_qtjson.cpp (limited to 'tests') diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/10.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/10.bjson deleted file mode 100644 index 12b29b7aa5..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/10.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/11.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/11.bjson deleted file mode 100644 index cf2b612111..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/11.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/12.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/12.bjson deleted file mode 100644 index 9c2403350e..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/12.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/13.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/13.bjson deleted file mode 100644 index db6308b1fd..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/13.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/14.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/14.bjson deleted file mode 100644 index 347da4572c..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/14.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/15.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/15.bjson deleted file mode 100644 index c6c5558934..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/15.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/16.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/16.bjson deleted file mode 100644 index ae8b57446d..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/16.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/17.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/17.bjson deleted file mode 100644 index 32f0cc0e23..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/17.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/18.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/18.bjson deleted file mode 100644 index 50c89169eb..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/18.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/19.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/19.bjson deleted file mode 100644 index b922212f45..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/19.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/20.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/20.bjson deleted file mode 100644 index c965a0d294..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/20.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/21.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/21.bjson deleted file mode 100644 index 98165ee40c..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/21.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/22.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/22.bjson deleted file mode 100644 index 151f773a81..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/22.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/23.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/23.bjson deleted file mode 100644 index 6eb5269470..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/23.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/24.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/24.bjson deleted file mode 100644 index c55a2a3e3b..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/24.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/25.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/25.bjson deleted file mode 100644 index 6c619f2ae1..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/25.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/26.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/26.bjson deleted file mode 100644 index 3bf303215a..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/26.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/27.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/27.bjson deleted file mode 100644 index d2656c2287..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/27.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/28.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/28.bjson deleted file mode 100644 index 6797cf8c40..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/28.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/29.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/29.bjson deleted file mode 100644 index 0645dfc3b2..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/29.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/30.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/30.bjson deleted file mode 100644 index f77fe1efd0..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/30.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/31.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/31.bjson deleted file mode 100644 index d9840b6582..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/31.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/32.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/32.bjson deleted file mode 100644 index 1de4cb829f..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/32.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/33.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/33.bjson deleted file mode 100644 index 532a31dc08..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/33.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/34.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/34.bjson deleted file mode 100644 index f498558eff..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/34.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/35.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/35.bjson deleted file mode 100644 index 8701210755..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/35.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/36.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/36.bjson deleted file mode 100644 index ef5864e911..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/36.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/37.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/37.bjson deleted file mode 100644 index f4dd4ae12f..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/37.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/38.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/38.bjson deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/39.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/39.bjson deleted file mode 100644 index c6025aa9eb..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/39.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/40.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/40.bjson deleted file mode 100644 index 277096f8cb..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/40.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/invalidBinaryData/41.bjson b/tests/auto/corelib/serialization/json/invalidBinaryData/41.bjson deleted file mode 100644 index 0b5940ab95..0000000000 Binary files a/tests/auto/corelib/serialization/json/invalidBinaryData/41.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/test.bjson b/tests/auto/corelib/serialization/json/test.bjson deleted file mode 100644 index 137b4dfeff..0000000000 Binary files a/tests/auto/corelib/serialization/json/test.bjson and /dev/null differ diff --git a/tests/auto/corelib/serialization/json/tst_qtjson.cpp b/tests/auto/corelib/serialization/json/tst_qtjson.cpp index 0cc38e0845..bc3fc1ce24 100644 --- a/tests/auto/corelib/serialization/json/tst_qtjson.cpp +++ b/tests/auto/corelib/serialization/json/tst_qtjson.cpp @@ -103,26 +103,16 @@ private Q_SLOTS: void toJsonLargeNumericValues(); void fromJson(); void fromJsonErrors(); - void fromBinary(); - void toAndFromBinary_data(); - void toAndFromBinary(); - void invalidBinaryData(); void parseNumbers(); void parseStrings(); void parseDuplicateKeys(); void testParser(); - void compactArray(); - void compactObject(); - - void validation(); - void assignToDocument(); void testDuplicateKeys(); void testCompaction(); void testDebugStream(); - void testCompactionError(); void parseUnicodeEscapes(); @@ -864,8 +854,6 @@ void tst_QtJson::testArrayNestedEmpty() object.insert("count", 0.); QCOMPARE(object.value("inner").toArray().size(), 0); QVERIFY(object.value("inner").toArray().isEmpty()); - QJsonDocument(object).toBinaryData(); - QCOMPARE(object.value("inner").toArray().size(), 0); } void tst_QtJson::testObjectNestedEmpty() @@ -883,15 +871,6 @@ void tst_QtJson::testObjectNestedEmpty() object.insert("count", 0.); QCOMPARE(object.value("inner").toObject().size(), 0); QCOMPARE(object.value("inner").type(), QJsonValue::Object); - QJsonDocument(object).toBinaryData(); - QVERIFY(object.value("inner").toObject().isEmpty()); - QVERIFY(object.value("inner2").toObject().isEmpty()); - QJsonDocument doc = QJsonDocument::fromBinaryData(QJsonDocument(object).toBinaryData()); - QVERIFY(!doc.isNull()); - QJsonObject reconstituted(doc.object()); - QCOMPARE(reconstituted.value("inner").toObject().size(), 0); - QCOMPARE(reconstituted.value("inner").type(), QJsonValue::Object); - QCOMPARE(reconstituted.value("inner2").type(), QJsonValue::Object); } void tst_QtJson::testArrayComfortOperators() @@ -2074,64 +2053,6 @@ void tst_QtJson::fromJsonErrors() } } -void tst_QtJson::fromBinary() -{ - QFile file(testDataDir + "/test.json"); - file.open(QFile::ReadOnly); - QByteArray testJson = file.readAll(); - - QJsonDocument doc = QJsonDocument::fromJson(testJson); - QJsonDocument outdoc = QJsonDocument::fromBinaryData(doc.toBinaryData()); - QVERIFY(!outdoc.isNull()); - QCOMPARE(doc, outdoc); - - QFile bfile(testDataDir + "/test.bjson"); - bfile.open(QFile::ReadOnly); - QByteArray binary = bfile.readAll(); - - QJsonDocument bdoc = QJsonDocument::fromBinaryData(binary); - QVERIFY(!bdoc.isNull()); - QCOMPARE(doc.toVariant(), bdoc.toVariant()); - QCOMPARE(doc, bdoc); -} - -void tst_QtJson::toAndFromBinary_data() -{ - QTest::addColumn("filename"); - QTest::newRow("test.json") << (testDataDir + "/test.json"); - QTest::newRow("test2.json") << (testDataDir + "/test2.json"); -} - -void tst_QtJson::toAndFromBinary() -{ - QFETCH(QString, filename); - QFile file(filename); - QVERIFY(file.open(QFile::ReadOnly)); - QByteArray data = file.readAll(); - - QJsonDocument doc = QJsonDocument::fromJson(data); - QVERIFY(!doc.isNull()); - QJsonDocument outdoc = QJsonDocument::fromBinaryData(doc.toBinaryData()); - QVERIFY(!outdoc.isNull()); - QCOMPARE(doc, outdoc); -} - -void tst_QtJson::invalidBinaryData() -{ - QDir dir(testDataDir + "/invalidBinaryData"); - QFileInfoList files = dir.entryInfoList(); - for (int i = 0; i < files.size(); ++i) { - if (!files.at(i).isFile()) - continue; - QFile file(files.at(i).filePath()); - file.open(QIODevice::ReadOnly); - QByteArray bytes = file.readAll(); - bytes.squeeze(); - QJsonDocument document = QJsonDocument::fromRawData(bytes.constData(), bytes.size()); - QVERIFY(document.isNull()); - } -} - void tst_QtJson::parseNumbers() { { @@ -2308,131 +2229,6 @@ void tst_QtJson::testParser() QVERIFY(!doc.isEmpty()); } -void tst_QtJson::compactArray() -{ - QJsonArray array; - array.append(QLatin1String("First Entry")); - array.append(QLatin1String("Second Entry")); - array.append(QLatin1String("Third Entry")); - QJsonDocument doc(array); - int s = doc.toBinaryData().size(); - array.removeAt(1); - doc.setArray(array); - QVERIFY(s > doc.toBinaryData().size()); - s = doc.toBinaryData().size(); - QCOMPARE(doc.toJson(), - QByteArray("[\n" - " \"First Entry\",\n" - " \"Third Entry\"\n" - "]\n")); - - array.removeAt(0); - doc.setArray(array); - QVERIFY(s > doc.toBinaryData().size()); - s = doc.toBinaryData().size(); - QCOMPARE(doc.toJson(), - QByteArray("[\n" - " \"Third Entry\"\n" - "]\n")); - - array.removeAt(0); - doc.setArray(array); - QVERIFY(s > doc.toBinaryData().size()); - s = doc.toBinaryData().size(); - QCOMPARE(doc.toJson(), - QByteArray("[\n" - "]\n")); - -} - -void tst_QtJson::compactObject() -{ - QJsonObject object; - object.insert(QLatin1String("Key1"), QLatin1String("First Entry")); - object.insert(QLatin1String("Key2"), QLatin1String("Second Entry")); - object.insert(QLatin1String("Key3"), QLatin1String("Third Entry")); - QJsonDocument doc(object); - int s = doc.toBinaryData().size(); - object.remove(QLatin1String("Key2")); - doc.setObject(object); - QVERIFY(s > doc.toBinaryData().size()); - s = doc.toBinaryData().size(); - QCOMPARE(doc.toJson(), - QByteArray("{\n" - " \"Key1\": \"First Entry\",\n" - " \"Key3\": \"Third Entry\"\n" - "}\n")); - - object.remove(QLatin1String("Key1")); - doc.setObject(object); - QVERIFY(s > doc.toBinaryData().size()); - s = doc.toBinaryData().size(); - QCOMPARE(doc.toJson(), - QByteArray("{\n" - " \"Key3\": \"Third Entry\"\n" - "}\n")); - - object.remove(QLatin1String("Key3")); - doc.setObject(object); - QVERIFY(s > doc.toBinaryData().size()); - s = doc.toBinaryData().size(); - QCOMPARE(doc.toJson(), - QByteArray("{\n" - "}\n")); - -} - -void tst_QtJson::validation() -{ - // this basically tests that we don't crash on corrupt data - QFile file(testDataDir + "/test.json"); - QVERIFY(file.open(QFile::ReadOnly)); - QByteArray testJson = file.readAll(); - QVERIFY(!testJson.isEmpty()); - - QJsonDocument doc = QJsonDocument::fromJson(testJson); - QVERIFY(!doc.isNull()); - - QByteArray binary = doc.toBinaryData(); - - // only test the first 1000 bytes. Testing the full file takes too long - for (int i = 0; i < 1000; ++i) { - QByteArray corrupted = binary; - corrupted[i] = char(0xff); - QJsonDocument doc = QJsonDocument::fromBinaryData(corrupted); - if (doc.isNull()) - continue; - QByteArray json = doc.toJson(); - } - - - QFile file2(testDataDir + "/test3.json"); - file2.open(QFile::ReadOnly); - testJson = file2.readAll(); - QVERIFY(!testJson.isEmpty()); - - doc = QJsonDocument::fromJson(testJson); - QVERIFY(!doc.isNull()); - - binary = doc.toBinaryData(); - - for (int i = 0; i < binary.size(); ++i) { - QByteArray corrupted = binary; - corrupted[i] = char(0xff); - QJsonDocument doc = QJsonDocument::fromBinaryData(corrupted); - if (doc.isNull()) - continue; - QByteArray json = doc.toJson(); - - corrupted = binary; - corrupted[i] = 0x00; - doc = QJsonDocument::fromBinaryData(corrupted); - if (doc.isNull()) - continue; - json = doc.toJson(); - } -} - void tst_QtJson::assignToDocument() { { @@ -2482,13 +2278,6 @@ void tst_QtJson::testCompaction() } QCOMPARE(obj.size(), 1); QCOMPARE(obj.value(QLatin1String("foo")).toString(), QLatin1String("bar")); - - QJsonDocument doc = QJsonDocument::fromBinaryData(QJsonDocument(obj).toBinaryData()); - QVERIFY(!doc.isNull()); - QVERIFY(!doc.isEmpty()); - QCOMPARE(doc.isArray(), false); - QCOMPARE(doc.isObject(), true); - QCOMPARE(doc.object(), obj); } void tst_QtJson::testDebugStream() @@ -2578,34 +2367,6 @@ void tst_QtJson::testDebugStream() } } -void tst_QtJson::testCompactionError() -{ - QJsonObject schemaObject; - schemaObject.insert("_Type", QLatin1String("_SchemaType")); - schemaObject.insert("name", QLatin1String("Address")); - schemaObject.insert("schema", QJsonObject()); - { - QJsonObject content(schemaObject); - QJsonDocument doc(content); - QVERIFY(!doc.isNull()); - QByteArray hash = QCryptographicHash::hash(doc.toBinaryData(), QCryptographicHash::Md5).toHex(); - schemaObject.insert("_Version", QString::fromLatin1(hash.constData(), hash.size())); - } - - QJsonObject schema; - schema.insert("streetNumber", schema.value("number").toObject()); - schemaObject.insert("schema", schema); - { - QJsonObject content(schemaObject); - content.remove("_Uuid"); - content.remove("_Version"); - QJsonDocument doc(content); - QVERIFY(!doc.isNull()); - QByteArray hash = QCryptographicHash::hash(doc.toBinaryData(), QCryptographicHash::Md5).toHex(); - schemaObject.insert("_Version", QString::fromLatin1(hash.constData(), hash.size())); - } -} - void tst_QtJson::parseUnicodeEscapes() { const QByteArray json = "[ \"A\\u00e4\\u00C4\" ]"; diff --git a/tests/benchmarks/corelib/json/CMakeLists.txt b/tests/benchmarks/corelib/json/CMakeLists.txt index 2f81190182..2108deb6bb 100644 --- a/tests/benchmarks/corelib/json/CMakeLists.txt +++ b/tests/benchmarks/corelib/json/CMakeLists.txt @@ -1,12 +1,12 @@ # Generated from json.pro. ##################################################################### -## tst_bench_qtbinaryjson Binary: +## tst_bench_qtjson Binary: ##################################################################### -qt_add_benchmark(tst_bench_qtbinaryjson +qt_add_benchmark(tst_bench_qtjson SOURCES - tst_bench_qtbinaryjson.cpp + tst_bench_qtjson.cpp PUBLIC_LIBRARIES Qt::Test ) diff --git a/tests/benchmarks/corelib/json/json.pro b/tests/benchmarks/corelib/json/json.pro index 8f9e515cb9..c26168945d 100644 --- a/tests/benchmarks/corelib/json/json.pro +++ b/tests/benchmarks/corelib/json/json.pro @@ -2,7 +2,7 @@ QT = core testlib CONFIG += benchmark CONFIG -= app_bundle -TARGET = tst_bench_qtbinaryjson -SOURCES += tst_bench_qtbinaryjson.cpp +TARGET = tst_bench_qtjson +SOURCES += tst_bench_qtjson.cpp TESTDATA = numbers.json test.json diff --git a/tests/benchmarks/corelib/json/tst_bench_qtbinaryjson.cpp b/tests/benchmarks/corelib/json/tst_bench_qtbinaryjson.cpp deleted file mode 100644 index ba61496c82..0000000000 --- a/tests/benchmarks/corelib/json/tst_bench_qtbinaryjson.cpp +++ /dev/null @@ -1,179 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include -#include - -class BenchmarkQtBinaryJson: public QObject -{ - Q_OBJECT -public: - BenchmarkQtBinaryJson(QObject *parent = 0); - -private Q_SLOTS: - void initTestCase(); - void cleanupTestCase(); - void init(); - void cleanup(); - - void parseNumbers(); - void parseJson(); - void parseJsonToVariant(); - - void toByteArray(); - void fromByteArray(); - - void jsonObjectInsert(); - void variantMapInsert(); -}; - -BenchmarkQtBinaryJson::BenchmarkQtBinaryJson(QObject *parent) : QObject(parent) -{ - -} - -void BenchmarkQtBinaryJson::initTestCase() -{ - -} - -void BenchmarkQtBinaryJson::cleanupTestCase() -{ - -} - -void BenchmarkQtBinaryJson::init() -{ - -} - -void BenchmarkQtBinaryJson::cleanup() -{ - -} - -void BenchmarkQtBinaryJson::parseNumbers() -{ - QString testFile = QFINDTESTDATA("numbers.json"); - QVERIFY2(!testFile.isEmpty(), "cannot find test file numbers.json!"); - QFile file(testFile); - file.open(QFile::ReadOnly); - QByteArray testJson = file.readAll(); - - QBENCHMARK { - QJsonDocument doc = QJsonDocument::fromJson(testJson); - QJsonObject object = doc.object(); - } -} - -void BenchmarkQtBinaryJson::parseJson() -{ - QString testFile = QFINDTESTDATA("test.json"); - QVERIFY2(!testFile.isEmpty(), "cannot find test file test.json!"); - QFile file(testFile); - file.open(QFile::ReadOnly); - QByteArray testJson = file.readAll(); - - QBENCHMARK { - QJsonDocument doc = QJsonDocument::fromJson(testJson); - QJsonObject object = doc.object(); - } -} - -void BenchmarkQtBinaryJson::parseJsonToVariant() -{ - QString testFile = QFINDTESTDATA("test.json"); - QVERIFY2(!testFile.isEmpty(), "cannot find test file test.json!"); - QFile file(testFile); - file.open(QFile::ReadOnly); - QByteArray testJson = file.readAll(); - - QBENCHMARK { - QJsonDocument doc = QJsonDocument::fromJson(testJson); - QVariant v = doc.toVariant(); - } -} - -void BenchmarkQtBinaryJson::toByteArray() -{ - // Example: send information over a datastream to another process - // Measure performance of creating and processing data into bytearray - QBENCHMARK { - QVariantMap message; - message.insert("command", 1); - message.insert("key", "some information"); - message.insert("env", "some environment variables"); - QByteArray msg = QJsonDocument(QJsonObject::fromVariantMap(message)).toBinaryData(); - } -} - -void BenchmarkQtBinaryJson::fromByteArray() -{ - // Example: receive information over a datastream from another process - // Measure performance of converting content back to QVariantMap - // We need to recreate the bytearray but here we only want to measure the latter - QVariantMap message; - message.insert("command", 1); - message.insert("key", "some information"); - message.insert("env", "some environment variables"); - QByteArray msg = QJsonDocument(QJsonObject::fromVariantMap(message)).toBinaryData(); - - QBENCHMARK { - QVariantMap message; - message = QJsonDocument::fromBinaryData(msg, QJsonDocument::Validate).object().toVariantMap(); - } -} - -void BenchmarkQtBinaryJson::jsonObjectInsert() -{ - QJsonObject object; - QString test(QStringLiteral("testString")); - QJsonValue value(1.5); - - QBENCHMARK { - for (int i = 0; i < 1000; i++) - object.insert("testkey_" + QString::number(i), value); - } -} - -void BenchmarkQtBinaryJson::variantMapInsert() -{ - QVariantMap object; - QString test(QStringLiteral("testString")); - QVariant variantValue(1.5); - - QBENCHMARK { - for (int i = 0; i < 1000; i++) - object.insert("testkey_" + QString::number(i), variantValue); - } -} - -QTEST_MAIN(BenchmarkQtBinaryJson) -#include "tst_bench_qtbinaryjson.moc" - diff --git a/tests/benchmarks/corelib/json/tst_bench_qtjson.cpp b/tests/benchmarks/corelib/json/tst_bench_qtjson.cpp new file mode 100644 index 0000000000..3a7996f4e7 --- /dev/null +++ b/tests/benchmarks/corelib/json/tst_bench_qtjson.cpp @@ -0,0 +1,146 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include + +class BenchmarkQtJson: public QObject +{ + Q_OBJECT +public: + BenchmarkQtJson(QObject *parent = 0); + +private Q_SLOTS: + void initTestCase(); + void cleanupTestCase(); + void init(); + void cleanup(); + + void parseNumbers(); + void parseJson(); + void parseJsonToVariant(); + + void jsonObjectInsert(); + void variantMapInsert(); +}; + +BenchmarkQtJson::BenchmarkQtJson(QObject *parent) : QObject(parent) +{ + +} + +void BenchmarkQtJson::initTestCase() +{ + +} + +void BenchmarkQtJson::cleanupTestCase() +{ + +} + +void BenchmarkQtJson::init() +{ + +} + +void BenchmarkQtJson::cleanup() +{ + +} + +void BenchmarkQtJson::parseNumbers() +{ + QString testFile = QFINDTESTDATA("numbers.json"); + QVERIFY2(!testFile.isEmpty(), "cannot find test file numbers.json!"); + QFile file(testFile); + file.open(QFile::ReadOnly); + QByteArray testJson = file.readAll(); + + QBENCHMARK { + QJsonDocument doc = QJsonDocument::fromJson(testJson); + QJsonObject object = doc.object(); + } +} + +void BenchmarkQtJson::parseJson() +{ + QString testFile = QFINDTESTDATA("test.json"); + QVERIFY2(!testFile.isEmpty(), "cannot find test file test.json!"); + QFile file(testFile); + file.open(QFile::ReadOnly); + QByteArray testJson = file.readAll(); + + QBENCHMARK { + QJsonDocument doc = QJsonDocument::fromJson(testJson); + QJsonObject object = doc.object(); + } +} + +void BenchmarkQtJson::parseJsonToVariant() +{ + QString testFile = QFINDTESTDATA("test.json"); + QVERIFY2(!testFile.isEmpty(), "cannot find test file test.json!"); + QFile file(testFile); + file.open(QFile::ReadOnly); + QByteArray testJson = file.readAll(); + + QBENCHMARK { + QJsonDocument doc = QJsonDocument::fromJson(testJson); + QVariant v = doc.toVariant(); + } +} + +void BenchmarkQtJson::jsonObjectInsert() +{ + QJsonObject object; + QString test(QStringLiteral("testString")); + QJsonValue value(1.5); + + QBENCHMARK { + for (int i = 0; i < 1000; i++) + object.insert("testkey_" + QString::number(i), value); + } +} + +void BenchmarkQtJson::variantMapInsert() +{ + QVariantMap object; + QString test(QStringLiteral("testString")); + QVariant variantValue(1.5); + + QBENCHMARK { + for (int i = 0; i < 1000; i++) + object.insert("testkey_" + QString::number(i), variantValue); + } +} + +QTEST_MAIN(BenchmarkQtJson) +#include "tst_bench_qtjson.moc" + -- cgit v1.2.3