summaryrefslogtreecommitdiffstats
path: root/tests/auto/queries
diff options
context:
space:
mode:
authorDenis Dzyubenko <denis.dzyubenko@nokia.com>2012-04-11 15:59:00 +0200
committerDenis Dzyubenko <denis.dzyubenko@nokia.com>2012-04-11 16:54:46 +0200
commit6b7df60a752422b1f6ff07bb2682c21e18a43985 (patch)
tree3e56bd3f4ee34a228777d00ff328ef1c53cb1df1 /tests/auto/queries
parent20549eedb5b5e852c0e384cd76bfbff14168dbda (diff)
parent7ef36e3c5a88560eb4e3a81c2c9f14059739108b (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.pro5
-rw-r--r--tests/auto/queries/testjsondbqueries.cpp56
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"