diff options
author | Minijackson <minijackson@riseup.net> | 2018-06-11 11:08:12 +0200 |
---|---|---|
committer | Minijackson <minijackson@riseup.net> | 2018-06-11 11:08:12 +0200 |
commit | a520527c8983bf1cba50fd3d86d406e7e68ddb88 (patch) | |
tree | a2b4a104e00c6a14c11651a2112b6b45ce93babd /tests/querytest.cpp | |
parent | bdf8ada25760ca9f4054d9ac719c703ce8abc300 (diff) | |
download | sink-a520527c8983bf1cba50fd3d86d406e7e68ddb88.tar.gz sink-a520527c8983bf1cba50fd3d86d406e7e68ddb88.zip |
Add overlap query
Diffstat (limited to 'tests/querytest.cpp')
-rw-r--r-- | tests/querytest.cpp | 121 |
1 files changed, 120 insertions, 1 deletions
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: | |||
59 | 59 | ||
60 | Sink::QueryBase::Filter filter; | 60 | Sink::QueryBase::Filter filter; |
61 | filter.ids << "id"; | 61 | filter.ids << "id"; |
62 | filter.propertyFilter.insert("foo", QVariant::fromValue(QByteArray("bar"))); | 62 | filter.propertyFilter.insert({"foo"}, QVariant::fromValue(QByteArray("bar"))); |
63 | 63 | ||
64 | Sink::Query query; | 64 | Sink::Query query; |
65 | query.setFilter(filter); | 65 | query.setFilter(filter); |
@@ -1617,6 +1617,125 @@ private slots: | |||
1617 | QCOMPARE(model->rowCount(), 4); | 1617 | QCOMPARE(model->rowCount(), 4); |
1618 | } | 1618 | } |
1619 | } | 1619 | } |
1620 | |||
1621 | void eventsWithDates() | ||
1622 | { | ||
1623 | { | ||
1624 | Event event("sink.dummy.instance1"); | ||
1625 | event.setExtractedStartTime(QDateTime::fromString("2018-05-23T12:00:00Z", Qt::ISODate)); | ||
1626 | event.setExtractedEndTime(QDateTime::fromString("2018-05-23T13:00:00Z", Qt::ISODate)); | ||
1627 | VERIFYEXEC(Sink::Store::create<Event>(event)); | ||
1628 | } | ||
1629 | { | ||
1630 | Event event("sink.dummy.instance1"); | ||
1631 | event.setExtractedStartTime(QDateTime::fromString("2018-05-23T13:00:00Z", Qt::ISODate)); | ||
1632 | event.setExtractedEndTime(QDateTime::fromString("2018-05-23T14:00:00Z", Qt::ISODate)); | ||
1633 | VERIFYEXEC(Sink::Store::create<Event>(event)); | ||
1634 | } | ||
1635 | { | ||
1636 | Event event("sink.dummy.instance1"); | ||
1637 | event.setExtractedStartTime(QDateTime::fromString("2018-05-23T14:00:00Z", Qt::ISODate)); | ||
1638 | event.setExtractedEndTime(QDateTime::fromString("2018-05-23T15:00:00Z", Qt::ISODate)); | ||
1639 | VERIFYEXEC(Sink::Store::create<Event>(event)); | ||
1640 | } | ||
1641 | { | ||
1642 | Event event("sink.dummy.instance1"); | ||
1643 | event.setExtractedStartTime(QDateTime::fromString("2018-05-23T12:00:00Z", Qt::ISODate)); | ||
1644 | event.setExtractedEndTime(QDateTime::fromString("2018-05-23T14:00:00Z", Qt::ISODate)); | ||
1645 | VERIFYEXEC(Sink::Store::create<Event>(event)); | ||
1646 | } | ||
1647 | { | ||
1648 | Event event("sink.dummy.instance1"); | ||
1649 | event.setExtractedStartTime(QDateTime::fromString("2018-05-24T12:00:00Z", Qt::ISODate)); | ||
1650 | event.setExtractedEndTime(QDateTime::fromString("2018-05-24T14:00:00Z", Qt::ISODate)); | ||
1651 | VERIFYEXEC(Sink::Store::create<Event>(event)); | ||
1652 | } | ||
1653 | { | ||
1654 | Event event("sink.dummy.instance1"); | ||
1655 | VERIFYEXEC(Sink::Store::create<Event>(event)); | ||
1656 | } | ||
1657 | |||
1658 | VERIFYEXEC(Sink::ResourceControl::flushMessageQueue("sink.dummy.instance1")); | ||
1659 | } | ||
1660 | |||
1661 | void testOverlap() | ||
1662 | { | ||
1663 | eventsWithDates(); | ||
1664 | |||
1665 | { | ||
1666 | Sink::Query query; | ||
1667 | query.resourceFilter("sink.dummy.instance1"); | ||
1668 | query.filter<Event::StartTime, Event::EndTime>(QueryBase::Comparator( | ||
1669 | QVariantList{ QDateTime::fromString("2018-05-22T12:00:00Z", Qt::ISODate), | ||
1670 | QDateTime::fromString("2018-05-30T13:00:00Z", Qt::ISODate) }, | ||
1671 | QueryBase::Comparator::Overlap)); | ||
1672 | auto model = Sink::Store::loadModel<Event>(query); | ||
1673 | QTRY_VERIFY(model->data(QModelIndex(), Sink::Store::ChildrenFetchedRole).toBool()); | ||
1674 | QCOMPARE(model->rowCount(), 5); | ||
1675 | } | ||
1676 | |||
1677 | { | ||
1678 | Sink::Query query; | ||
1679 | query.resourceFilter("sink.dummy.instance1"); | ||
1680 | query.filter<Event::StartTime, Event::EndTime>(QueryBase::Comparator( | ||
1681 | QVariantList{ QDateTime::fromString("2018-05-22T12:30:00Z", Qt::ISODate), | ||
1682 | QDateTime::fromString("2018-05-22T12:31:00Z", Qt::ISODate) }, | ||
1683 | QueryBase::Comparator::Overlap)); | ||
1684 | auto model = Sink::Store::loadModel<Event>(query); | ||
1685 | QTRY_VERIFY(model->data(QModelIndex(), Sink::Store::ChildrenFetchedRole).toBool()); | ||
1686 | QCOMPARE(model->rowCount(), 0); | ||
1687 | } | ||
1688 | |||
1689 | { | ||
1690 | Sink::Query query; | ||
1691 | query.resourceFilter("sink.dummy.instance1"); | ||
1692 | query.filter<Event::StartTime, Event::EndTime>(QueryBase::Comparator( | ||
1693 | QVariantList{ QDateTime::fromString("2018-05-24T10:00:00Z", Qt::ISODate), | ||
1694 | QDateTime::fromString("2018-05-24T11:00:00Z", Qt::ISODate) }, | ||
1695 | QueryBase::Comparator::Overlap)); | ||
1696 | auto model = Sink::Store::loadModel<Event>(query); | ||
1697 | QTRY_VERIFY(model->data(QModelIndex(), Sink::Store::ChildrenFetchedRole).toBool()); | ||
1698 | QCOMPARE(model->rowCount(), 0); | ||
1699 | } | ||
1700 | |||
1701 | { | ||
1702 | Sink::Query query; | ||
1703 | query.resourceFilter("sink.dummy.instance1"); | ||
1704 | query.filter<Event::StartTime, Event::EndTime>(QueryBase::Comparator( | ||
1705 | QVariantList{ QDateTime::fromString("2018-05-23T12:30:00Z", Qt::ISODate), | ||
1706 | QDateTime::fromString("2018-05-23T12:31:00Z", Qt::ISODate) }, | ||
1707 | QueryBase::Comparator::Overlap)); | ||
1708 | auto model = Sink::Store::loadModel<Event>(query); | ||
1709 | QTRY_VERIFY(model->data(QModelIndex(), Sink::Store::ChildrenFetchedRole).toBool()); | ||
1710 | QCOMPARE(model->rowCount(), 2); | ||
1711 | } | ||
1712 | |||
1713 | { | ||
1714 | Sink::Query query; | ||
1715 | query.resourceFilter("sink.dummy.instance1"); | ||
1716 | query.filter<Event::StartTime, Event::EndTime>(QueryBase::Comparator( | ||
1717 | QVariantList{ QDateTime::fromString("2018-05-22T12:30:00Z", Qt::ISODate), | ||
1718 | QDateTime::fromString("2018-05-23T12:00:00Z", Qt::ISODate) }, | ||
1719 | QueryBase::Comparator::Overlap)); | ||
1720 | auto model = Sink::Store::loadModel<Event>(query); | ||
1721 | QTRY_VERIFY(model->data(QModelIndex(), Sink::Store::ChildrenFetchedRole).toBool()); | ||
1722 | QCOMPARE(model->rowCount(), 2); | ||
1723 | } | ||
1724 | |||
1725 | { | ||
1726 | Sink::Query query; | ||
1727 | query.resourceFilter("sink.dummy.instance1"); | ||
1728 | query.filter<Event::StartTime, Event::EndTime>(QueryBase::Comparator( | ||
1729 | QVariantList{ QDateTime::fromString("2018-05-23T14:30:00Z", Qt::ISODate), | ||
1730 | QDateTime::fromString("2018-05-23T16:00:00Z", Qt::ISODate) }, | ||
1731 | QueryBase::Comparator::Overlap)); | ||
1732 | auto model = Sink::Store::loadModel<Event>(query); | ||
1733 | QTRY_VERIFY(model->data(QModelIndex(), Sink::Store::ChildrenFetchedRole).toBool()); | ||
1734 | QCOMPARE(model->rowCount(), 1); | ||
1735 | } | ||
1736 | |||
1737 | } | ||
1738 | |||
1620 | }; | 1739 | }; |
1621 | 1740 | ||
1622 | QTEST_MAIN(QueryTest) | 1741 | QTEST_MAIN(QueryTest) |