summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAndrew Christian <andrew.christian@nokia.com>2012-02-17 15:38:23 -0500
committerQt by Nokia <qt-info@nokia.com>2012-02-18 18:08:06 +0100
commit908a080006faff333b061b69b0dc0fd9cab36114 (patch)
tree3b9a1ee39a3d44643180a74febb7dd441d56326f /tests
parentf63b23afdac47bbf71a7b72fdd965c55b2f60602 (diff)
Added error reporting to QJsonParser
Change-Id: Ib2390c0faf1ed7ada3fc185abce83740ad112929 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/json/tst_qtjson.cpp165
1 files changed, 165 insertions, 0 deletions
diff --git a/tests/auto/corelib/json/tst_qtjson.cpp b/tests/auto/corelib/json/tst_qtjson.cpp
index 323546b8ea..2ac0574ec5 100644
--- a/tests/auto/corelib/json/tst_qtjson.cpp
+++ b/tests/auto/corelib/json/tst_qtjson.cpp
@@ -92,6 +92,7 @@ private Q_SLOTS:
void toJson();
void fromJson();
+ void fromJsonErrors();
void fromBinary();
void toAndFromBinary_data();
void toAndFromBinary();
@@ -1080,6 +1081,170 @@ void TestQtJson::fromJson()
}
}
+void TestQtJson::fromJsonErrors()
+{
+ {
+ QJsonParseError error;
+ QByteArray json = "{\n \n\n";
+ QJsonDocument doc = QJsonDocument::fromJson(json, &error);
+ QVERIFY(doc.isEmpty());
+ QCOMPARE(error.error, QJsonParseError::UnterminatedObject);
+ QCOMPARE(error.offset, 8);
+ }
+ {
+ QJsonParseError error;
+ QByteArray json = "{\n \"key\" 10\n";
+ QJsonDocument doc = QJsonDocument::fromJson(json, &error);
+ QVERIFY(doc.isEmpty());
+ QCOMPARE(error.error, QJsonParseError::MissingNameSeparator);
+ QCOMPARE(error.offset, 13);
+ }
+ {
+ QJsonParseError error;
+ QByteArray json = "[\n \n\n";
+ QJsonDocument doc = QJsonDocument::fromJson(json, &error);
+ QVERIFY(doc.isEmpty());
+ QCOMPARE(error.error, QJsonParseError::UnterminatedArray);
+ QCOMPARE(error.offset, 8);
+ }
+ {
+ QJsonParseError error;
+ QByteArray json = "[\n 1, true\n\n";
+ QJsonDocument doc = QJsonDocument::fromJson(json, &error);
+ QVERIFY(doc.isEmpty());
+ QCOMPARE(error.error, QJsonParseError::UnterminatedArray);
+ QCOMPARE(error.offset, 14);
+ }
+ {
+ QJsonParseError error;
+ QByteArray json = "[\n 1 true\n\n";
+ QJsonDocument doc = QJsonDocument::fromJson(json, &error);
+ QVERIFY(doc.isEmpty());
+ QCOMPARE(error.error, QJsonParseError::MissingValueSeparator);
+ QCOMPARE(error.offset, 7);
+ }
+ {
+ QJsonParseError error;
+ QByteArray json = "[\n nul";
+ QJsonDocument doc = QJsonDocument::fromJson(json, &error);
+ QVERIFY(doc.isEmpty());
+ QCOMPARE(error.error, QJsonParseError::IllegalValue);
+ QCOMPARE(error.offset, 7);
+ }
+ {
+ QJsonParseError error;
+ QByteArray json = "[\n nulzz";
+ QJsonDocument doc = QJsonDocument::fromJson(json, &error);
+ QVERIFY(doc.isEmpty());
+ QCOMPARE(error.error, QJsonParseError::IllegalValue);
+ QCOMPARE(error.offset, 10);
+ }
+ {
+ QJsonParseError error;
+ QByteArray json = "[\n tru";
+ QJsonDocument doc = QJsonDocument::fromJson(json, &error);
+ QVERIFY(doc.isEmpty());
+ QCOMPARE(error.error, QJsonParseError::IllegalValue);
+ QCOMPARE(error.offset, 7);
+ }
+ {
+ QJsonParseError error;
+ QByteArray json = "[\n trud]";
+ QJsonDocument doc = QJsonDocument::fromJson(json, &error);
+ QVERIFY(doc.isEmpty());
+ QCOMPARE(error.error, QJsonParseError::IllegalValue);
+ QCOMPARE(error.offset, 10);
+ }
+ {
+ QJsonParseError error;
+ QByteArray json = "[\n fal";
+ QJsonDocument doc = QJsonDocument::fromJson(json, &error);
+ QVERIFY(doc.isEmpty());
+ QCOMPARE(error.error, QJsonParseError::IllegalValue);
+ QCOMPARE(error.offset, 7);
+ }
+ {
+ QJsonParseError error;
+ QByteArray json = "[\n falsd]";
+ QJsonDocument doc = QJsonDocument::fromJson(json, &error);
+ QVERIFY(doc.isEmpty());
+ QCOMPARE(error.error, QJsonParseError::IllegalValue);
+ QCOMPARE(error.offset, 11);
+ }
+ {
+ QJsonParseError error;
+ QByteArray json = "[\n 11111";
+ QJsonDocument doc = QJsonDocument::fromJson(json, &error);
+ QVERIFY(doc.isEmpty());
+ QCOMPARE(error.error, QJsonParseError::EndOfNumber);
+ QCOMPARE(error.offset, 11);
+ }
+ {
+ QJsonParseError error;
+ QByteArray json = "[\n -1E10000]";
+ QJsonDocument doc = QJsonDocument::fromJson(json, &error);
+ QVERIFY(doc.isEmpty());
+ QCOMPARE(error.error, QJsonParseError::IllegalNumber);
+ QCOMPARE(error.offset, 14);
+ }
+ {
+ QJsonParseError error;
+ QByteArray json = "[\n -1e-10000]";
+ QJsonDocument doc = QJsonDocument::fromJson(json, &error);
+ QVERIFY(doc.isEmpty());
+ QCOMPARE(error.error, QJsonParseError::IllegalNumber);
+ QCOMPARE(error.offset, 15);
+ }
+ {
+ QJsonParseError error;
+ QByteArray json = "[\n \"\\u12\"]";
+ QJsonDocument doc = QJsonDocument::fromJson(json, &error);
+ QVERIFY(doc.isEmpty());
+ QCOMPARE(error.error, QJsonParseError::StringEscapeSequence);
+ QCOMPARE(error.offset, 11);
+ }
+ {
+ QJsonParseError error;
+ QByteArray json = "[\n \"foo\uffffbar\"]";
+ QJsonDocument doc = QJsonDocument::fromJson(json, &error);
+ QVERIFY(doc.isEmpty());
+ QCOMPARE(error.error, QJsonParseError::StringUTF8Scan);
+ QCOMPARE(error.offset, 13);
+ }
+ {
+ QJsonParseError error;
+ QByteArray json = "[\n \"";
+ QJsonDocument doc = QJsonDocument::fromJson(json, &error);
+ QVERIFY(doc.isEmpty());
+ QCOMPARE(error.error, QJsonParseError::EndOfString);
+ QCOMPARE(error.offset, 8);
+ }
+ {
+ QJsonParseError error;
+ QByteArray json = "[\n \"cЂa\\u12\"]";
+ QJsonDocument doc = QJsonDocument::fromJson(json, &error);
+ QVERIFY(doc.isEmpty());
+ QCOMPARE(error.error, QJsonParseError::StringEscapeSequence);
+ QCOMPARE(error.offset, 15);
+ }
+ {
+ QJsonParseError error;
+ QByteArray json = "[\n \"cЂa\uffffbar\"]";
+ QJsonDocument doc = QJsonDocument::fromJson(json, &error);
+ QVERIFY(doc.isEmpty());
+ QCOMPARE(error.error, QJsonParseError::StringUTF8Scan);
+ QCOMPARE(error.offset, 14);
+ }
+ {
+ QJsonParseError error;
+ QByteArray json = "[\n \"cЂa ]";
+ QJsonDocument doc = QJsonDocument::fromJson(json, &error);
+ QVERIFY(doc.isEmpty());
+ QCOMPARE(error.error, QJsonParseError::EndOfString);
+ QCOMPARE(error.offset, 14);
+ }
+}
+
void TestQtJson::fromBinary()
{
QFile file(testDataDir + "/test.json");