From 9f1854acf8a13de98b5706d1246baa15f15f377e Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Tue, 18 Jan 2022 10:36:33 +0100 Subject: JSON: Further improve the duplicate handling in the parser Avoid some unnecessary comparisons and add more tests. Task-number: QTBUG-99799 Change-Id: I3aee9f0b62461d38dadbe8e969444e1cd1f94e68 Reviewed-by: Sona Kurazyan --- .../auto/corelib/serialization/json/CMakeLists.txt | 3 + .../serialization/json/simple.duplicates.json | 1 + .../serialization/json/test.duplicates.json | 66 ++++++++++++++++++++++ .../serialization/json/test3.duplicates.json | 15 +++++ .../auto/corelib/serialization/json/tst_qtjson.cpp | 48 ++++++++++++---- 5 files changed, 123 insertions(+), 10 deletions(-) create mode 100644 tests/auto/corelib/serialization/json/simple.duplicates.json create mode 100644 tests/auto/corelib/serialization/json/test.duplicates.json create mode 100644 tests/auto/corelib/serialization/json/test3.duplicates.json (limited to 'tests') diff --git a/tests/auto/corelib/serialization/json/CMakeLists.txt b/tests/auto/corelib/serialization/json/CMakeLists.txt index 77d15bedc3..9022ed9f3d 100644 --- a/tests/auto/corelib/serialization/json/CMakeLists.txt +++ b/tests/auto/corelib/serialization/json/CMakeLists.txt @@ -24,6 +24,9 @@ if(ANDROID OR INTEGRITY) "test.json" "test2.json" "test3.json" + "simple.duplicates.json" + "test.duplicates.json" + "test3.duplicates.json" ) qt_internal_add_resource(tst_json "json" diff --git a/tests/auto/corelib/serialization/json/simple.duplicates.json b/tests/auto/corelib/serialization/json/simple.duplicates.json new file mode 100644 index 0000000000..6f989e8aa9 --- /dev/null +++ b/tests/auto/corelib/serialization/json/simple.duplicates.json @@ -0,0 +1 @@ +{"":{"":0},"":0} diff --git a/tests/auto/corelib/serialization/json/test.duplicates.json b/tests/auto/corelib/serialization/json/test.duplicates.json new file mode 100644 index 0000000000..0d5af8ef74 --- /dev/null +++ b/tests/auto/corelib/serialization/json/test.duplicates.json @@ -0,0 +1,66 @@ +[ + "JSON Test Pattern pass1", + {"a":["array with 1 element"]}, + {}, + [], + -42, + true, + false, + null, + { + "a": 1234567890, + "a": -9876.543210, + "a": 0.123456789e-12, + "a": 1.234567890E+34, + "a": 23456789012E66, + "a": 0, + "a": 1, + "a": " ", + "a": "\"", + "a": "\\", + "a": "\b\f\n\r\t", + "a": "/ & \/", + "a": "abcdefghijklmnopqrstuvwxyz", + "a": "ABCDEFGHIJKLMNOPQRSTUVWXYZ", + "a": "0123456789", + "a": "digit", + "a": "`1~!@#$%^&*()_+-={':[,]}|;.?", + "a": "\u0123\u4567\u89AB\uCDEF\uabcd\uef4A", + "a": true, + "a": false, + "a": null, + "a":[ ], + "a":{ }, + "a": "50 St. James Street", + "a": "nix", + "a": "// /*