From a520527c8983bf1cba50fd3d86d406e7e68ddb88 Mon Sep 17 00:00:00 2001 From: Minijackson Date: Mon, 11 Jun 2018 11:08:12 +0200 Subject: Add overlap query --- tests/querytest.cpp | 121 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 120 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/querytest.cpp b/tests/querytest.cpp index 36b6e90..ca49021 100644 --- a/tests/querytest.cpp +++ b/tests/querytest.cpp @@ -59,7 +59,7 @@ private slots: Sink::QueryBase::Filter filter; filter.ids << "id"; - filter.propertyFilter.insert("foo", QVariant::fromValue(QByteArray("bar"))); + filter.propertyFilter.insert({"foo"}, QVariant::fromValue(QByteArray("bar"))); Sink::Query query; query.setFilter(filter); @@ -1617,6 +1617,125 @@ private slots: QCOMPARE(model->rowCount(), 4); } } + + void eventsWithDates() + { + { + Event event("sink.dummy.instance1"); + event.setExtractedStartTime(QDateTime::fromString("2018-05-23T12:00:00Z", Qt::ISODate)); + event.setExtractedEndTime(QDateTime::fromString("2018-05-23T13:00:00Z", Qt::ISODate)); + VERIFYEXEC(Sink::Store::create(event)); + } + { + Event event("sink.dummy.instance1"); + event.setExtractedStartTime(QDateTime::fromString("2018-05-23T13:00:00Z", Qt::ISODate)); + event.setExtractedEndTime(QDateTime::fromString("2018-05-23T14:00:00Z", Qt::ISODate)); + VERIFYEXEC(Sink::Store::create(event)); + } + { + Event event("sink.dummy.instance1"); + event.setExtractedStartTime(QDateTime::fromString("2018-05-23T14:00:00Z", Qt::ISODate)); + event.setExtractedEndTime(QDateTime::fromString("2018-05-23T15:00:00Z", Qt::ISODate)); + VERIFYEXEC(Sink::Store::create(event)); + } + { + Event event("sink.dummy.instance1"); + event.setExtractedStartTime(QDateTime::fromString("2018-05-23T12:00:00Z", Qt::ISODate)); + event.setExtractedEndTime(QDateTime::fromString("2018-05-23T14:00:00Z", Qt::ISODate)); + VERIFYEXEC(Sink::Store::create(event)); + } + { + Event event("sink.dummy.instance1"); + event.setExtractedStartTime(QDateTime::fromString("2018-05-24T12:00:00Z", Qt::ISODate)); + event.setExtractedEndTime(QDateTime::fromString("2018-05-24T14:00:00Z", Qt::ISODate)); + VERIFYEXEC(Sink::Store::create(event)); + } + { + Event event("sink.dummy.instance1"); + VERIFYEXEC(Sink::Store::create(event)); + } + + VERIFYEXEC(Sink::ResourceControl::flushMessageQueue("sink.dummy.instance1")); + } + + void testOverlap() + { + eventsWithDates(); + + { + Sink::Query query; + query.resourceFilter("sink.dummy.instance1"); + query.filter(QueryBase::Comparator( + QVariantList{ QDateTime::fromString("2018-05-22T12:00:00Z", Qt::ISODate), + QDateTime::fromString("2018-05-30T13:00:00Z", Qt::ISODate) }, + QueryBase::Comparator::Overlap)); + auto model = Sink::Store::loadModel(query); + QTRY_VERIFY(model->data(QModelIndex(), Sink::Store::ChildrenFetchedRole).toBool()); + QCOMPARE(model->rowCount(), 5); + } + + { + Sink::Query query; + query.resourceFilter("sink.dummy.instance1"); + query.filter(QueryBase::Comparator( + QVariantList{ QDateTime::fromString("2018-05-22T12:30:00Z", Qt::ISODate), + QDateTime::fromString("2018-05-22T12:31:00Z", Qt::ISODate) }, + QueryBase::Comparator::Overlap)); + auto model = Sink::Store::loadModel(query); + QTRY_VERIFY(model->data(QModelIndex(), Sink::Store::ChildrenFetchedRole).toBool()); + QCOMPARE(model->rowCount(), 0); + } + + { + Sink::Query query; + query.resourceFilter("sink.dummy.instance1"); + query.filter(QueryBase::Comparator( + QVariantList{ QDateTime::fromString("2018-05-24T10:00:00Z", Qt::ISODate), + QDateTime::fromString("2018-05-24T11:00:00Z", Qt::ISODate) }, + QueryBase::Comparator::Overlap)); + auto model = Sink::Store::loadModel(query); + QTRY_VERIFY(model->data(QModelIndex(), Sink::Store::ChildrenFetchedRole).toBool()); + QCOMPARE(model->rowCount(), 0); + } + + { + Sink::Query query; + query.resourceFilter("sink.dummy.instance1"); + query.filter(QueryBase::Comparator( + QVariantList{ QDateTime::fromString("2018-05-23T12:30:00Z", Qt::ISODate), + QDateTime::fromString("2018-05-23T12:31:00Z", Qt::ISODate) }, + QueryBase::Comparator::Overlap)); + auto model = Sink::Store::loadModel(query); + QTRY_VERIFY(model->data(QModelIndex(), Sink::Store::ChildrenFetchedRole).toBool()); + QCOMPARE(model->rowCount(), 2); + } + + { + Sink::Query query; + query.resourceFilter("sink.dummy.instance1"); + query.filter(QueryBase::Comparator( + QVariantList{ QDateTime::fromString("2018-05-22T12:30:00Z", Qt::ISODate), + QDateTime::fromString("2018-05-23T12:00:00Z", Qt::ISODate) }, + QueryBase::Comparator::Overlap)); + auto model = Sink::Store::loadModel(query); + QTRY_VERIFY(model->data(QModelIndex(), Sink::Store::ChildrenFetchedRole).toBool()); + QCOMPARE(model->rowCount(), 2); + } + + { + Sink::Query query; + query.resourceFilter("sink.dummy.instance1"); + query.filter(QueryBase::Comparator( + QVariantList{ QDateTime::fromString("2018-05-23T14:30:00Z", Qt::ISODate), + QDateTime::fromString("2018-05-23T16:00:00Z", Qt::ISODate) }, + QueryBase::Comparator::Overlap)); + auto model = Sink::Store::loadModel(query); + QTRY_VERIFY(model->data(QModelIndex(), Sink::Store::ChildrenFetchedRole).toBool()); + QCOMPARE(model->rowCount(), 1); + } + + } + }; QTEST_MAIN(QueryTest) -- cgit v1.2.3