diff options
author | Denis Dzyubenko <denis.dzyubenko@nokia.com> | 2012-04-11 15:59:00 +0200 |
---|---|---|
committer | Denis Dzyubenko <denis.dzyubenko@nokia.com> | 2012-04-11 16:54:46 +0200 |
commit | 6b7df60a752422b1f6ff07bb2682c21e18a43985 (patch) | |
tree | 3e56bd3f4ee34a228777d00ff328ef1c53cb1df1 /tests/auto/queries | |
parent | 20549eedb5b5e852c0e384cd76bfbff14168dbda (diff) | |
parent | 7ef36e3c5a88560eb4e3a81c2c9f14059739108b (diff) |
Merge remote-tracking branch 'gerrit/master' into hbtreehbtree
Conflicts:
src/daemon/daemon.pri
src/daemon/jsondbview.cpp
src/partition/jsondbindex.cpp
src/partition/jsondbindex.h
src/partition/jsondbindexquery.h
src/partition/jsondbmanagedbtree.cpp
src/partition/jsondbmanagedbtree.h
src/partition/jsondbmanagedbtreetxn.cpp
src/partition/jsondbmanagedbtreetxn.h
src/partition/jsondbobjecttable.cpp
src/partition/jsondbobjecttable.h
src/partition/jsondbpartition.cpp
src/partition/jsondbpartition.h
tests/auto/auto.pro
tests/auto/partition/testpartition.cpp
tests/benchmarks/benchmarks.pro
Change-Id: I963adefd6d32fca9b3537981306b67538c759034
Diffstat (limited to 'tests/auto/queries')
-rw-r--r-- | tests/auto/queries/queries.pro | 5 | ||||
-rw-r--r-- | tests/auto/queries/testjsondbqueries.cpp | 56 |
2 files changed, 35 insertions, 26 deletions
diff --git a/tests/auto/queries/queries.pro b/tests/auto/queries/queries.pro index 620406bc..7a3a89ac 100644 --- a/tests/auto/queries/queries.pro +++ b/tests/auto/queries/queries.pro @@ -1,16 +1,13 @@ TARGET = tst_queries -QT = network qml testlib +QT = network qml testlib jsondbpartition CONFIG -= app_bundle CONFIG += testcase -INCLUDEPATH += $$PWD/../../../src/daemon LIBS += -L$$QT.jsondb.libs DEFINES += SRCDIR=\\\"$$PWD/\\\" -include($$PWD/../../../src/daemon/daemon.pri) - RESOURCES = queries.qrc SOURCES += \ diff --git a/tests/auto/queries/testjsondbqueries.cpp b/tests/auto/queries/testjsondbqueries.cpp index d5218b6d..3e9837c8 100644 --- a/tests/auto/queries/testjsondbqueries.cpp +++ b/tests/auto/queries/testjsondbqueries.cpp @@ -48,12 +48,11 @@ #include <QTime> #include <QUuid> -#include "json.h" #include "jsondbowner.h" #include "jsondbpartition.h" #include "jsondbquery.h" -#include "jsondb-strings.h" -#include "jsondb-error.h" +#include "jsondbstrings.h" +#include "jsondberrors.h" #include "../../shared/util.h" @@ -71,7 +70,7 @@ __result.error.toObject().value("message").toString().toLocal8Bit()); \ } -QT_USE_NAMESPACE_JSONDB +QT_USE_NAMESPACE_JSONDB_PARTITION class TestJsonDbQueries: public QObject { @@ -100,6 +99,7 @@ private slots: void querySortedByIndexName(); void queryContains(); void queryInvalid(); + void queryRegExp(); private: void removeDbFiles(); @@ -199,7 +199,8 @@ void TestJsonDbQueries::removeDbFiles() JsonDbQueryResult TestJsonDbQueries::find(JsonDbOwner *owner, const QString &query, const QJsonObject bindings) { - return mJsonDbPartition->queryObjects(owner, JsonDbQuery::parse(query, bindings)); + QScopedPointer<JsonDbQuery> parsedQuery(JsonDbQuery::parse(query, bindings)); + return mJsonDbPartition->queryObjects(owner, parsedQuery.data()); } void TestJsonDbQueries::initTestCase() @@ -216,15 +217,7 @@ void TestJsonDbQueries::initTestCase() mJsonDbPartition = new JsonDbPartition(kFilename, QStringLiteral("com.example.JsonDbTestQueries"), mOwner, this); mJsonDbPartition->open(); - QFile contactsFile(":/queries/dataset.json"); - QVERIFY2(contactsFile.exists(), "Err: dataset.json doesn't exist!"); - - contactsFile.open(QIODevice::ReadOnly); - QByteArray json = contactsFile.readAll(); - JsonReader parser; - bool ok = parser.parse(json); - QVERIFY2(ok, parser.errorString().toAscii()); - QVariantList contactList = parser.result().toList(); + QVariantList contactList = readJsonFile(":/queries/dataset.json").toArray().toVariantList(); foreach (QVariant v, contactList) { JsonDbObject object(QJsonObject::fromVariantMap(v.toMap())); QString type = object.value("_type").toString(); @@ -381,14 +374,20 @@ void TestJsonDbQueries::queryQuotedProperties() QVERIFY(confirmEachObject(queryResult.data, CheckObjectFieldEqualTo<QString>("_type", "dragon"))); queryResult = find(mOwner, QLatin1String("[?_type = \"dragon\"][?\"eye-color\" = \"red\"][= \"eye-color\"]")); - // single values are returned in queryResult.values - QCOMPARE(queryResult.values.size(), mDataStats["num-red-eyes"].toInt()); - QCOMPARE(queryResult.values.at(0).toString(), QString("red")); - - queryResult = find(mOwner, QLatin1String("[?\"eye-color\" = \"red\"][= [\"eye-color\", age ]]")); - // array values are returned in queryResult.values - QCOMPARE(queryResult.values.size(), mDataStats["num-red-eyes"].toInt()); - QCOMPARE(queryResult.values.at(0).toArray().at(0).toString(), QString("red")); + // no longer supported + QCOMPARE(queryResult.data.size(), 0); + QVERIFY(queryResult.error.isObject()); + QVERIFY(queryResult.error.toObject().contains(QLatin1String("code"))); + QCOMPARE((int)queryResult.error.toObject().value(QLatin1String("code")).toDouble(), + (int)JsonDbError::MissingQuery); + + queryResult = find(mOwner, QLatin1String("[?\"eye-color\" = \"red\"][= [\"eye-color\", age ]]")); + // no longer supported + QCOMPARE(queryResult.data.size(), 0); + QVERIFY(queryResult.error.isObject()); + QVERIFY(queryResult.error.toObject().contains(QLatin1String("code"))); + QCOMPARE((int)queryResult.error.toObject().value(QLatin1String("code")).toDouble(), + (int)JsonDbError::MissingQuery); queryResult = find(mOwner, QLatin1String("[?_type=\"dragon\"][/_type][?\"eye-color\" = \"red\"][= {\"color-of-eyes\": \"eye-color\" }]")); // object values are returned in queryResult.data @@ -455,5 +454,18 @@ void TestJsonDbQueries::queryInvalid() QVERIFY(!queryResult.error.isNull()); } +void TestJsonDbQueries::queryRegExp() +{ + JsonDbQueryResult queryResult = find(mOwner, QLatin1String("[?_type = \"dog\"][?name =~ \"/*ov*/w\" ]")); + QVERIFY(queryResult.error.isNull()); + QCOMPARE(queryResult.data.count(), 1); + + QJsonObject bindings; + bindings.insert(QLatin1String("regexp"), QLatin1String("/*ov*/w")); + queryResult = find(mOwner, QLatin1String("[?_type = \"dog\"][?name =~ %regexp ]"), bindings); + QVERIFY(queryResult.error.isNull()); + QCOMPARE(queryResult.data.count(), 1); +} + QTEST_MAIN(TestJsonDbQueries) #include "testjsondbqueries.moc" |