void UnreadEventModelTest::addEvent() { UnreadEventsModel model; watcher.setModel(&model); model.setQueryMode(EventModel::SyncQuery); GroupModel groupModel; groupModel.enableContactChanges(false); group1.setLocalUid("/org/freedesktop/Telepathy/Account/gabble/jabber/dut_40localhost0"); QStringList uids; uids << "td@localhost"; group1.setRemoteUids(uids); QVERIFY(groupModel.addGroup(group1)); for (int j = 0; j < NUM_EVENTS; j++) { Event e; Event dbEvent; int id; e = createEvent("user@localhost"); e.setGroupId(group1.id()); QVERIFY(model.addEvent(e)); watcher.waitForSignals(); id = e.id(); QVERIFY(id != -1); QVERIFY(model.trackerIO().getEvent(id, dbEvent)); QCOMPARE(dbEvent.id(), id); } }
//Private functions bool SyncModelTest::addEvent(int parentId, int groupId, const QDateTime& sentReceivedTime, const QString& localId, const QString& remoteId, const QString& text, bool read) { EventModel model; watcher.setModel(&model); Event e; e.setType(Event::SMSEvent); e.setParentId(parentId); if (parentId == ::INBOX || parentId >= ::MYFOLDER) { e.setDirection(Event::Inbound); } else { e.setDirection(Event::Outbound); } e.setGroupId(groupId); e.setStartTime(sentReceivedTime); e.setEndTime(sentReceivedTime); e.setLocalUid(localId); e.setRemoteUid(remoteId); e.setFreeText(text); e.setIsRead(read); bool ret_val = model.addEvent(e); watcher.waitForSignals(1, 1); itemId = e.id(); return ret_val; }
bool SyncModelTest::modifyEvent( int itemId, int parentId, int groupId, const QDateTime &lastModTime, const QString& localId, const QString& remoteId, const QString& text, bool read) { Q_UNUSED(lastModTime); EventModel model; watcher.setModel(&model); Event e; e.setType(Event::SMSEvent); e.setId(itemId); e.setParentId(parentId); if (parentId == ::INBOX || parentId >= ::MYFOLDER) { e.setDirection(Event::Inbound); } else { e.setDirection(Event::Outbound); } e.setGroupId(groupId); e.setLocalUid(localId); e.setRemoteUid(remoteId); e.setFreeText(text); e.setIsRead(read); bool ret = model.modifyEvent(e); watcher.waitForSignals(1, 1); return ret; }
void ConversationModelTest::modifyEvent() { ConversationModel model; model.enableContactChanges(false); watcher.setModel(&model); model.setQueryMode(EventModel::SyncQuery); QVERIFY(model.getEvents(group1.id())); Event event; /* modify invalid event */ QVERIFY(!model.modifyEvent(event)); QVERIFY(model.rowCount() > 0); int row = rand() % model.rowCount(); event = model.event(model.index(row, 0)); qDebug() << row << event.id() << event.freeText(); event.setFreeText("modified event"); QDateTime modified = event.lastModified(); QVERIFY(model.modifyEvent(event)); watcher.waitForSignals(); QVERIFY(model.trackerIO().getEvent(event.id(), event)); QCOMPARE(event.freeText(), QString("modified event")); QSKIP("Make nie:contentLastUpdated handling consistent", SkipSingle); event = model.event(model.index(row, 0)); QCOMPARE(event.freeText(), QString("modified event")); QVERIFY(event.lastModified() > modified); }
void ConversationModelTest::asyncMode() { ConversationModel model; model.enableContactChanges(false); watcher.setModel(&model); QVERIFY(model.getEvents(group1.id())); QVERIFY(watcher.waitForModelReady()); }
void ClassZeroSMSModelTest::initTestCase() { m_pModel = new ClassZeroSMSModel; qsrand(QDateTime::currentDateTime().toTime_t()); watcher.setLoop(&m_eventLoop); watcher.setModel(m_pModel); }
void ConversationModelTest::contacts() { QFETCH(QString, localId); QFETCH(QString, remoteId); QFETCH(int, eventType); Group group; addTestGroup(group, localId, remoteId); ConversationModel model; Event::PropertySet p; p.insert(Event::ContactId); p.insert(Event::ContactName); model.setPropertyMask(p); model.enableContactChanges(false); watcher.setModel(&model); addTestEvent(model, (Event::EventType)eventType, Event::Inbound, localId, group.id(), "text", false, false, QDateTime::currentDateTime(), remoteId); QVERIFY(model.getEvents(group.id())); QVERIFY(watcher.waitForModelReady()); Event event; event = model.event(model.index(0, 0)); QCOMPARE(event.contactId(), 0); QString noMatch = remoteId; noMatch += remoteId[1]; int contactId1 = addTestContact("Really1Funny", noMatch, localId); QVERIFY(model.getEvents(group.id())); QVERIFY(watcher.waitForModelReady()); event = model.event(model.index(0, 0)); QCOMPARE(event.contactId(), 0); int contactId = addTestContact("ReallyUFunny", remoteId, localId); QTime timer; timer.start(); while (timer.elapsed() < 1000) QCoreApplication::processEvents(); QVERIFY(model.getEvents(group.id())); QVERIFY(watcher.waitForModelReady()); event = model.event(model.index(0, 0)); QCOMPARE(event.contactId(), contactId); QCOMPARE(event.contactName(), QString("ReallyUFunny")); deleteTestContact(contactId1); deleteTestContact(contactId); }
void SingleEventModelTest::contactMatching() { QFETCH(QString, localId); QFETCH(QString, remoteId); QFETCH(int, eventType); SingleEventModel model; Event::PropertySet p; p.insert(Event::ContactId); p.insert(Event::ContactName); model.setPropertyMask(p); watcher.setModel(&model); int eventId = addTestEvent(model, (Event::EventType)eventType, Event::Inbound, localId, group1.id(), "text", false, false, QDateTime::currentDateTime(), remoteId); watcher.waitForSignals(); QVERIFY(eventId != -1); QVERIFY(model.getEventByUri(Event::idToUrl(eventId))); QVERIFY(watcher.waitForModelReady()); Event event = model.event(model.index(0, 0)); QCOMPARE(event.id(), eventId); QCOMPARE(event.contactId(), 0); QString noMatch = remoteId; noMatch += remoteId[1]; int contactId1 = addTestContact("Really1Bad", noMatch, localId); QVERIFY(model.getEventByUri(Event::idToUrl(eventId))); QVERIFY(watcher.waitForModelReady()); event = model.event(model.index(0, 0)); QCOMPARE(event.id(), eventId); QCOMPARE(event.contactId(), 0); int contactId = addTestContact("Really Bad", remoteId, localId); QVERIFY(model.getEventByUri(Event::idToUrl(eventId))); QVERIFY(watcher.waitForModelReady()); event = model.event(model.index(0, 0)); QCOMPARE(event.id(), eventId); QCOMPARE(event.contactId(), contactId); QCOMPARE(event.contactName(), QString("Really Bad")); deleteTestContact(contactId1); deleteTestContact(contactId); }
void ClassZeroSMSModelTest::addEvent() { for (int j = 0; j < NUM_EVENTS; j++) { Event e; int id; e = createEvent(); QVERIFY(m_pModel->addEvent(e,true)); id = e.id(); QVERIFY(id != -1); watcher.waitForSignals(-1, 1); QCOMPARE(watcher.addedCount(), 1); } }
void UnreadEventModelTest::initTestCase() { EventModel model; watcher.setLoop(&m_eventLoop); qsrand(QDateTime::currentDateTime().toTime_t()); }
void CallModelTest::initTestCase() { QVERIFY( QDBusConnection::sessionBus().isConnected() ); deleteAll(); qsrand( QDateTime::currentDateTime().toTime_t() ); addTestGroups( group1, group2 ); // add 8 call events from user1 int cnt = 0; QDateTime when = QDateTime::currentDateTime(); EventModel model; watcher.setModel(&model); // 2 dialed addTestEvent( model, Event::CallEvent, Event::Outbound, ACCOUNT1, -1, "", false, false, when, REMOTEUID1 ); cnt++; addTestEvent( model, Event::CallEvent, Event::Outbound, ACCOUNT1, -1, "", false, false, when.addSecs( 5 ), REMOTEUID1 ); cnt++; testCalls.insert( 0, TestCallItem( REMOTEUID1, CallEvent::DialedCallType, 2 ) ); // 1 missed addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, true, when.addSecs( 10 ), REMOTEUID1 ); cnt++; testCalls.insert( 0, TestCallItem( REMOTEUID1, CallEvent::MissedCallType, 1 ) ); // 2 received addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, false, when.addSecs( 15 ), REMOTEUID1 ); cnt++; addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, false, when.addSecs( 20 ), REMOTEUID1 ); cnt++; testCalls.insert( 0, TestCallItem( REMOTEUID1, CallEvent::ReceivedCallType, 2 ) ); // 1 dialed addTestEvent( model, Event::CallEvent, Event::Outbound, ACCOUNT1, -1, "", false, false, when.addSecs( 25 ), REMOTEUID1 ); cnt++; testCalls.insert( 0, TestCallItem( REMOTEUID1, CallEvent::DialedCallType, 1 ) ); // 2 missed addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, true, when.addSecs( 30 ), REMOTEUID1 ); cnt++; addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, true, when.addSecs( 35 ), REMOTEUID1 ); cnt++; testCalls.insert( 0, TestCallItem( REMOTEUID1, CallEvent::MissedCallType, 2 ) ); // add 1 im and 2 sms events addTestEvent( model, Event::IMEvent, Event::Outbound, ACCOUNT1, group1.id(), "test" ); cnt++; addTestEvent( model, Event::SMSEvent, Event::Inbound, ACCOUNT1, group1.id(), "test" ); cnt++; addTestEvent( model, Event::SMSEvent, Event::Outbound, ACCOUNT1, group2.id(), "draft", true ); cnt++; QVERIFY(watcher.waitForAdded(cnt)); }
void ConversationModelTest::reset() { ConversationModel conv; conv.enableContactChanges(false); watcher.setModel(&conv); QVERIFY(conv.getEvents(group1.id())); QVERIFY(watcher.waitForModelReady()); QVERIFY(conv.rowCount() >= 5 ); QSignalSpy modelReset(&conv, SIGNAL(modelReset())); GroupModel groups; groups.deleteGroups(QList<int>() << group1.id()); if (modelReset.isEmpty()) QVERIFY(waitSignal(modelReset)); QCOMPARE(conv.rowCount(), 0); }
void UnreadEventModelTest::markAsRead() { UnreadEventsModel model; watcher.setModel(&model); model.setQueryMode(EventModel::SyncQuery); model.getEvents(); const int count = model.rowCount(); QList<Event> events; for (int i = 0; i < count; i++) { Event event = model.event(model.index(count-1-i, 0)); event.setIsRead(true); events << event; } model.modifyEvents(events); if (count) watcher.waitForSignals(); QVERIFY(model.rowCount() == 0); }
void ConversationModelTest::initTestCase() { QVERIFY(QDBusConnection::sessionBus().isConnected()); deleteAll(); loop = new QEventLoop(this); watcher.setLoop(loop); qsrand(QDateTime::currentDateTime().toTime_t()); addTestGroups(group1, group2); EventModel model; watcher.setModel(&model); addTestEvent(model, Event::IMEvent, Event::Inbound, ACCOUNT1, group1.id()); addTestEvent(model, Event::IMEvent, Event::Inbound, ACCOUNT1, group1.id()); addTestEvent(model, Event::IMEvent, Event::Outbound, ACCOUNT1, group1.id()); addTestEvent(model, Event::IMEvent, Event::Outbound, ACCOUNT1, group1.id()); addTestEvent(model, Event::IMEvent, Event::Inbound, ACCOUNT2, group1.id()); addTestEvent(model, Event::IMEvent, Event::Outbound, ACCOUNT2, group1.id()); addTestEvent(model, Event::SMSEvent, Event::Inbound, ACCOUNT1, group1.id()); addTestEvent(model, Event::SMSEvent, Event::Outbound, ACCOUNT1, group1.id()); addTestEvent(model, Event::SMSEvent, Event::Inbound, ACCOUNT2, group1.id()); addTestEvent(model, Event::SMSEvent, Event::Outbound, ACCOUNT2, group1.id()); addTestEvent(model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1); addTestEvent(model, Event::CallEvent, Event::Outbound, ACCOUNT1, -1); addTestEvent(model, Event::IMEvent, Event::Outbound, ACCOUNT1, group1.id(), "draft", true); // status message: // NOTE: this event is not visible in any of the further tests addTestEvent(model, Event::StatusMessageEvent, Event::Outbound, ACCOUNT1, group1.id(), "statue message", false, false, QDateTime::currentDateTime(), QString(), true); watcher.waitForSignals(13, 14); }
void ConversationModelTest::sorting() { EventModel model; model.setQueryMode(EventModel::StreamedAsyncQuery); model.setFirstChunkSize(5); model.enableContactChanges(false); watcher.setModel(&model); //add events with the same timestamp QDateTime now = QDateTime::currentDateTime(); QDateTime future = now.addSecs(10); addTestEvent(model, Event::SMSEvent, Event::Inbound, ACCOUNT1, group1.id(), "I", false, false, now); addTestEvent(model, Event::SMSEvent, Event::Inbound, ACCOUNT1, group1.id(), "II", false, false, now); addTestEvent(model, Event::SMSEvent, Event::Inbound, ACCOUNT1, group1.id(), "III", false, false, future); addTestEvent(model, Event::SMSEvent, Event::Inbound, ACCOUNT1, group1.id(), "IV", false, false, future); addTestEvent(model, Event::SMSEvent, Event::Inbound, ACCOUNT1, group1.id(), "V", false, false, future); watcher.waitForSignals(5, 5); ConversationModel conv; conv.setQueryMode(EventModel::StreamedAsyncQuery); conv.setFirstChunkSize(5); conv.enableContactChanges(false); QSignalSpy rowsInserted(&conv, SIGNAL(rowsInserted(const QModelIndex &, int, int))); QVERIFY(conv.getEvents(group1.id())); QVERIFY(waitSignal(rowsInserted)); QVERIFY(conv.rowCount() >= 5 ); QCOMPARE(conv.event(conv.index(0, 0)).freeText(), QLatin1String("V")); QCOMPARE(conv.event(conv.index(1, 0)).freeText(), QLatin1String("IV")); QCOMPARE(conv.event(conv.index(2, 0)).freeText(), QLatin1String("III")); QCOMPARE(conv.event(conv.index(3, 0)).freeText(), QLatin1String("II")); QCOMPARE(conv.event(conv.index(4, 0)).freeText(), QLatin1String("I")); }
void ClassZeroSMSModelTest::deleteEvents() { while(m_pModel->rowCount()) { Event event = m_pModel->event(m_pModel->index(0, 0)); QVERIFY(event.id() != -1); m_pModel->deleteEvent(event.id()); watcher.waitForSignals(-1, 1); } QVERIFY( m_pModel->rowCount() == 0); }
void SyncModelTest::initTestCase() { QVERIFY(QDBusConnection::sessionBus().isConnected()); deleteAll(); watcher.setLoop(&loop); numAddedEvents = 0; qsrand(QDateTime::currentDateTime().toTime_t()); addTestGroup(group, "121", "122"); }
void SingleEventModelTest::initTestCase() { deleteAll(); qsrand(QDateTime::currentDateTime().toTime_t()); watcher.setLoop(&loop); addTestGroups(group1, group2); }
// Make sure that phone numbers resolve to the right contacts even if they // minimize to the same number. void CallModelTest::testMinimizedPhone() { QSKIP("Contact matching is not yet supported with SQLite"); deleteAll(); const QString phone00("0011112222"); const QString phone99("9911112222"); // Precondition for the test: QCOMPARE(minimizePhoneNumber(phone00), minimizePhoneNumber(phone99)); // enum { DefaultMaximumPhoneNumberCharacters = 8 } const QString user00("User00"); const QString user99("User99"); int user00id = addTestContact(user00, phone00, RING_ACCOUNT); int user99id = addTestContact(user99, phone99, RING_ACCOUNT); CallModel model; watcher.setModel(&model); QDateTime when = QDateTime::currentDateTime(); addTestEvent(model, Event::CallEvent, Event::Inbound, RING_ACCOUNT, -1, "", false, false, when, phone00); addTestEvent(model, Event::CallEvent, Event::Inbound, RING_ACCOUNT, -1, "", false, false, when.addSecs(10), phone99); addTestEvent(model, Event::CallEvent, Event::Inbound, RING_ACCOUNT, -1, "", false, false, when.addSecs(20), phone00); QVERIFY(watcher.waitForAdded(3)); model.setResolveContacts(true); QVERIFY(model.getEvents()); QVERIFY(watcher.waitForModelReady()); Event e; e = model.event(model.index(0, 0)); QCOMPARE(e.contacts(), QList<ContactDetails>() << qMakePair(user00id, user00)); QCOMPARE(e.remoteUid(), phone00); e = model.event(model.index(1, 0)); QCOMPARE(e.contacts(), QList<ContactDetails>() << qMakePair(user99id, user99)); QCOMPARE(e.remoteUid(), phone99); e = model.event(model.index(2, 0)); QCOMPARE(e.contacts(), QList<ContactDetails>() << qMakePair(user00id, user00)); QCOMPARE(e.remoteUid(), phone00); }
void CallModelTest::deleteAllCalls() { CallModel model; watcher.setModel(&model); model.setQueryMode(EventModel::SyncQuery); QDateTime when = QDateTime::currentDateTime(); addTestEvent( model, Event::CallEvent, Event::Outbound, ACCOUNT1, -1, "", false, false, when.addSecs( 54 ), REMOTEUID1 ); QVERIFY(watcher.waitForAdded()); QVERIFY(model.getEvents()); QVERIFY(model.rowCount() > 0); QSignalSpy eventsCommitted(&model, SIGNAL(eventsCommitted(const QList<CommHistory::Event>&, bool))); QVERIFY(model.deleteAll()); waitSignal(eventsCommitted); QCOMPARE(model.rowCount(), 0); QVERIFY(model.getEvents()); QCOMPARE(model.rowCount(), 0); }
void ConversationModelTest::deleteEvent() { ConversationModel model; model.enableContactChanges(false); watcher.setModel(&model); model.setQueryMode(EventModel::SyncQuery); QVERIFY(model.getEvents(group1.id())); Event event; /* delete invalid event */ QVERIFY(!model.deleteEvent(event)); int rows = model.rowCount(); int row = rand() % rows; event = model.event(model.index(row, 0)); qDebug() << row << event.id(); QVERIFY(model.deleteEvent(event.id())); watcher.waitForSignals(); QVERIFY(!model.trackerIO().getEvent(event.id(), event)); QVERIFY(model.event(model.index(row, 0)).id() != event.id()); QVERIFY(model.rowCount() == rows - 1); }
static void addEvents(int from, int to) { EventModel eventsModel; watcher.setModel(&eventsModel); if (to >= 1 && from <= 1) { QTest::qWait(1000); addTestEvent(eventsModel, Event::CallEvent, Event::Inbound, phoneAccount, -1, "", false, false, QDateTime::currentDateTime(), alicePhone1); } if (to >= 2 && from <= 2) { QTest::qWait(1000); addTestEvent(eventsModel, Event::CallEvent, Event::Outbound, phoneAccount, -1, "", false, false, QDateTime::currentDateTime(), bobPhone); } if (to >= 3 && from <= 3) { QTest::qWait(1000); addTestEvent(eventsModel, Event::IMEvent, Event::Inbound, charlieIm1.first, group1.id(), "", false, false, QDateTime::currentDateTime(), charlieIm1.second); } if (to >= 4 && from <= 4) { QTest::qWait(1000); addTestEvent(eventsModel, Event::SMSEvent, Event::Outbound, phoneAccount, group1.id(), "", false, false, QDateTime::currentDateTime(), alicePhone2); } if (to >= 5 && from <= 5) { QTest::qWait(1000); addTestEvent(eventsModel, Event::CallEvent, Event::Inbound, phoneAccount, -1, "", false, false, QDateTime::currentDateTime(), bobPhone); } if (to >= 6 && from <= 6) { QTest::qWait(1000); addTestEvent(eventsModel, Event::IMEvent, Event::Outbound, charlieIm2.first, group1.id(), "", false, false, QDateTime::currentDateTime(), charlieIm2.second); } if (to >= 7 && from <= 7) { QTest::qWait(1000); addTestEvent(eventsModel, Event::IMEvent, Event::Outbound, bobIm.first, group1.id(), "", false, false, QDateTime::currentDateTime(), bobIm.second); } int count = to - from + 1; QVERIFY(watcher.waitForAdded(count, count)); }
void SingleEventModelTest::getEventByUri() { SingleEventModel model; watcher.setModel(&model); Event event; event.setType(Event::SMSEvent); event.setDirection(Event::Outbound); event.setLocalUid("/org/freedesktop/Telepathy/Account/gabble/jabber/dut_40localhost0"); event.setGroupId(group1.id()); event.setFreeText("freeText"); event.setStartTime(QDateTime::currentDateTime()); event.setEndTime(QDateTime::currentDateTime()); event.setRemoteUid("123456"); event.setMessageToken("messageTokenA1"); // ignore call properties Event::PropertySet p = Event::allProperties(); p.remove(Event::IsEmergencyCall); p.remove(Event::IsMissedCall); model.setPropertyMask(p); //TODO: add reading invalid id QVERIFY(model.addEvent(event)); watcher.waitForSignals(); QVERIFY(event.id() != -1); QVERIFY(model.getEventByUri(event.url())); QVERIFY(watcher.waitForModelReady()); QCOMPARE(model.rowCount(), 1); Event modelEvent = model.event(model.index(0, 0)); QVERIFY(compareEvents(event, modelEvent)); }
void CallModelTest::testModifyEvent() { Event e1, e2, e3; deleteAll(); CallModel model; watcher.setModel(&model); /* * user1, received * user1, dialed * user2, missed * user1, received * -> displayed as * user1, received * user2, missed */ QDateTime when = QDateTime::currentDateTime(); addTestEvent(model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, false, when, REMOTEUID1); addTestEvent(model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, true, when.addSecs(1), REMOTEUID2); addTestEvent(model, Event::CallEvent, Event::Outbound, ACCOUNT1, -1, "", false, false, when.addSecs(2), REMOTEUID1); addTestEvent(model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, false, when.addSecs(3), REMOTEUID1); QVERIFY(watcher.waitForAdded(6, 4)); // always grouped by contact -> +2 QVERIFY(model.setFilter(CallModel::SortByContact)); QVERIFY(model.getEvents()); QVERIFY(watcher.waitForModelReady()); QCOMPARE(model.rowCount(), 2); e1 = model.event(model.index(0, 0)); QCOMPARE(e1.remoteUid(), REMOTEUID1); QCOMPARE(e1.direction(), Event::Inbound); e2 = model.event(model.index(1, 0)); QCOMPARE(e2.remoteUid(), REMOTEUID2); QCOMPARE(e2.direction(), Event::Inbound); /* * upgrade latest user1 call to video: * user1, received, video * user1, dialed * user2, missed */ e1.setIsVideoCall(true); QVERIFY(model.modifyEvent(e1)); QVERIFY(watcher.waitForUpdated()); e1 = model.event(model.index(0, 0)); QCOMPARE(e1.remoteUid(), REMOTEUID1); QCOMPARE(e1.direction(), Event::Inbound); QCOMPARE(e1.isVideoCall(), true); e2 = model.event(model.index(1, 0)); QCOMPARE(e2.remoteUid(), REMOTEUID1); QCOMPARE(e2.direction(), Event::Outbound); QCOMPARE(e2.isVideoCall(), false); e3 = model.event(model.index(2, 0)); QCOMPARE(e3.remoteUid(), REMOTEUID2); QCOMPARE(e3.direction(), Event::Inbound); QCOMPARE(e3.isVideoCall(), false); /* * downgrade back to audio: * user1, received * user2, missed */ e1.setIsVideoCall(false); QVERIFY(model.modifyEvent(e1)); QVERIFY(watcher.waitForUpdated()); e1 = model.event(model.index(0, 0)); QCOMPARE(e1.remoteUid(), REMOTEUID1); QCOMPARE(e1.direction(), Event::Inbound); e2 = model.event(model.index(1, 0)); QCOMPARE(e2.remoteUid(), REMOTEUID2); QCOMPARE(e2.direction(), Event::Inbound); }
void CallModelTest::testSIPAddress() { QSKIP("Contact matching is not yet supported with SQLite"); deleteAll(); CallModel model; model.setQueryMode(EventModel::SyncQuery); watcher.setModel(&model); QString account("/org/freedesktop/Telepathy/Account/ring/tel/ring"); QString contactName("Donkey Kong"); QString phoneNumber("012345678"); QString sipAddress("sips:[email protected]"); QString contactName2("Mario"); QString sipAddress2("sips:[email protected]"); QDateTime when = QDateTime::currentDateTime(); int contactId = addTestContact(contactName, phoneNumber, account); QVERIFY(contactId != -1); int contactId2 = addTestContact(contactName2, sipAddress2, account); QVERIFY(contactId2 != -1); // normal phone call addTestEvent(model, Event::CallEvent, Event::Outbound, account, -1, "", false, false, when, phoneNumber); QVERIFY(watcher.waitForAdded()); QCOMPARE(model.rowCount(), 1); Event e = model.event(model.index(0, 0)); QCOMPARE(e.remoteUid(), phoneNumber); // SIP call to same number, should group with first event addTestEvent(model, Event::CallEvent, Event::Outbound, account, -1, "", false, false, when.addSecs(5), sipAddress); QVERIFY(watcher.waitForAdded()); QCOMPARE(model.rowCount(), 1); e = model.event(model.index(0, 0)); QCOMPARE(e.remoteUid(), sipAddress); // SIP call to non-numeric address addTestEvent(model, Event::CallEvent, Event::Outbound, account, -1, "", false, false, when.addSecs(10), sipAddress2); QVERIFY(watcher.waitForAdded()); QCOMPARE(model.rowCount(), 2); e = model.event(model.index(0, 0)); QCOMPARE(e.remoteUid(), sipAddress2); // check contact resolving for call groups QVERIFY(model.setFilter(CallModel::SortByContact)); QVERIFY(model.getEvents()); QCOMPARE(model.rowCount(), 2); e = model.event(model.index(0, 0)); QCOMPARE(e.remoteUid(), sipAddress2); QVERIFY(!e.contacts().isEmpty()); QCOMPARE(e.contacts().first().first, contactId2); QCOMPARE(e.contacts().first().second, contactName2); e = model.event(model.index(1, 0)); QCOMPARE(e.remoteUid(), sipAddress); QVERIFY(!e.contacts().isEmpty()); QCOMPARE(e.contacts().first().first, contactId); QCOMPARE(e.contacts().first().second, contactName); // check contact resolving when sorting by time QVERIFY(model.setFilter(CallModel::SortByTime)); QVERIFY(model.getEvents()); QCOMPARE(model.rowCount(), 2); e = model.event(model.index(0, 0)); QCOMPARE(e.remoteUid(), sipAddress2); QVERIFY(!e.contacts().isEmpty()); QCOMPARE(e.contacts().first().first, contactId2); QCOMPARE(e.contacts().first().second, contactName2); e = model.event(model.index(1, 0)); QCOMPARE(e.remoteUid(), sipAddress); QVERIFY(!e.contacts().isEmpty()); QCOMPARE(e.contacts().first().first, contactId); QCOMPARE(e.contacts().first().second, contactName); deleteTestContact(contactId); deleteTestContact(contactId2); }
void CallModelTest::testSortByTimeUpdate() { deleteAll(); CallModel model; watcher.setModel(&model); /* * user1, missed (2) * (user1, dialed) * user1, missed (1) */ QDateTime when = QDateTime::currentDateTime(); addTestEvent(model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, true, when, REMOTEUID1); addTestEvent(model, Event::CallEvent, Event::Outbound, ACCOUNT1, -1, "", false, false, when.addSecs(1), REMOTEUID1); addTestEvent(model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, true, when.addSecs(2), REMOTEUID1); addTestEvent(model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, true, when.addSecs(3), REMOTEUID1); QVERIFY(watcher.waitForAdded(4)); QVERIFY(model.setFilter(CallModel::SortByTime, CallEvent::MissedCallType)); QVERIFY(model.getEvents()); QVERIFY(watcher.waitForModelReady()); QCOMPARE(model.rowCount(), 2); Event e1 = model.event(model.index(0, 0)); QCOMPARE(e1.remoteUid(), REMOTEUID1); QVERIFY(e1.isMissedCall()); QCOMPARE(e1.eventCount(), 2); Event e2 = model.event(model.index(1, 0)); QCOMPARE(e2.remoteUid(), REMOTEUID1); QVERIFY(e2.isMissedCall()); QVERIFY(e2.eventCount() <= 1); // add received call, count for top item should reset addTestEvent(model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, false, when.addSecs(4), REMOTEUID1); QVERIFY(watcher.waitForAdded()); e1 = model.event(model.index(0, 0)); QCOMPARE(e1.eventCount(), 1); CallModel model2; model2.setQueryMode(EventModel::SyncQuery); QVERIFY(model2.getEvents(CallModel::SortByTime, CallEvent::MissedCallType)); QCOMPARE(model2.rowCount(), 2); QVERIFY(model2.event(model2.index(0, 0)).eventCount() <= 1); // add missed call, count should remain 1 addTestEvent(model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, true, when.addSecs(5), REMOTEUID1); QVERIFY(watcher.waitForAdded()); e1 = model.event(model.index(0, 0)); int firstMissedId = e1.id(); QCOMPARE(e1.eventCount(), 1); QCOMPARE(model2.event(model2.index(0, 0)).eventCount(), 1); QVERIFY(model2.getEvents(CallModel::SortByTime, CallEvent::MissedCallType)); QCOMPARE(model2.rowCount(), 3); QCOMPARE(model2.event(model2.index(0, 0)).eventCount(), 1); // add another missed call, count should increase addTestEvent(model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, true, when.addSecs(6), REMOTEUID1); QVERIFY(watcher.waitForAdded()); e1 = model.event(model.index(0, 0)); QCOMPARE(e1.eventCount(), 2); QCOMPARE(model2.event(model2.index(0, 0)).eventCount(), 2); QVERIFY(model2.getEvents(CallModel::SortByTime, CallEvent::MissedCallType)); QCOMPARE(model2.rowCount(), 3); QCOMPARE(model2.event(model.index(0, 0)).eventCount(), 2); // mark latest missed call as read, the first should also be marked Event e = model.event(model.index(0, 0)); e.setIsRead(true); QVERIFY(model.modifyEvent(e)); QVERIFY(watcher.waitForUpdated(2)); QVERIFY(model.databaseIO().getEvent(firstMissedId, e)); QVERIFY(e.isRead()); }
void CallModelTest::testSortByContactUpdate() { deleteAll(); CallModel model; watcher.setModel(&model); /* * user1, missed (2) * (user1, dialed) * user1, missed (1) */ QDateTime when = QDateTime::currentDateTime(); addTestEvent(model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, true, when, REMOTEUID1); addTestEvent(model, Event::CallEvent, Event::Outbound, ACCOUNT1, -1, "", false, false, when.addSecs(1), REMOTEUID1); addTestEvent(model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, true, when.addSecs(2), REMOTEUID1); addTestEvent(model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, true, when.addSecs(3), REMOTEUID1); QVERIFY(watcher.waitForAdded(4)); QVERIFY(model.setFilter(CallModel::SortByContact)); QVERIFY(model.getEvents()); QVERIFY(watcher.waitForModelReady()); QCOMPARE(model.rowCount(), 1); Event e1 = model.event(model.index(0, 0)); QCOMPARE(e1.remoteUid(), REMOTEUID1); QVERIFY(e1.isMissedCall()); QCOMPARE(e1.eventCount(), 2); // add received call addTestEvent(model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, false, when.addSecs(4), REMOTEUID1); QVERIFY(watcher.waitForAdded()); e1 = model.event(model.index(0, 0)); QCOMPARE(e1.eventCount(), 1); QCOMPARE(e1.direction(), Event::Inbound); // add call to another contact addTestEvent(model, Event::CallEvent, Event::Outbound, ACCOUNT1, -1, "", false, false, when.addSecs(5), REMOTEUID2); QVERIFY(watcher.waitForAdded()); QCOMPARE(model.rowCount(), 2); e1 = model.event(model.index(0, 0)); QCOMPARE(e1.eventCount(), 1); QCOMPARE(e1.direction(), Event::Outbound); QCOMPARE(e1.remoteUid(), REMOTEUID2); // missed call to first contact, should reorder addTestEvent(model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, true, when.addSecs(6), REMOTEUID1); QVERIFY(watcher.waitForAdded()); QCOMPARE(model.rowCount(), 2); e1 = model.event(model.index(0, 0)); int firstMissedId = e1.id(); QVERIFY(e1.isMissedCall()); QCOMPARE(e1.remoteUid(), REMOTEUID1); QCOMPARE(e1.eventCount(), 1); // another missed call, increase event count addTestEvent(model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, true, when.addSecs(7), REMOTEUID1); QVERIFY(watcher.waitForAdded()); QCOMPARE(model.rowCount(), 2); e1 = model.event(model.index(0, 0)); QVERIFY(e1.isMissedCall()); QCOMPARE(e1.remoteUid(), REMOTEUID1); QCOMPARE(e1.eventCount(), 2); // mark latest missed call as read, the first should also be marked Event e = model.event(model.index(0, 0)); e.setIsRead(true); QVERIFY(model.modifyEvent(e)); QVERIFY(watcher.waitForUpdated(7)); QVERIFY(model.databaseIO().getEvent(firstMissedId, e)); QVERIFY(e.isRead()); // add call to the other contact... addTestEvent(model, Event::CallEvent, Event::Outbound, ACCOUNT1, -1, "", false, false, when.addSecs(10), REMOTEUID2); QVERIFY(watcher.waitForAdded()); QCOMPARE(model.rowCount(), 2); e1 = model.event(model.index(0, 0)); QCOMPARE(e1.eventCount(), 2); QCOMPARE(e1.direction(), Event::Outbound); QCOMPARE(e1.remoteUid(), REMOTEUID2); // ...and a missed call to the first -> move to top and increase event count addTestEvent(model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, true, when.addSecs(15), REMOTEUID1); QVERIFY(watcher.waitForAdded()); QCOMPARE(model.rowCount(), 2); e1 = model.event(model.index(0, 0)); QVERIFY(e1.isMissedCall()); QCOMPARE(e1.remoteUid(), REMOTEUID1); QCOMPARE(e1.eventCount(), 3); }
void CallModelTest::testGetEventsTimeTypeFilter() { QFETCH(bool, useThread); deleteAll(); QThread modelThread; //initTestCase ==> 3 dialled calls, 2 Received calls, 3 Missed Calls already added CallModel model; watcher.setModel(&model); if (useThread) { modelThread.start(); model.setBackgroundThread(&modelThread); } QDateTime when = QDateTime::currentDateTime(); //3 dialled addTestEvent( model, Event::CallEvent, Event::Outbound, ACCOUNT1, -1, "", false, false, when ); addTestEvent( model, Event::CallEvent, Event::Outbound, ACCOUNT1, -1, "", false, false, when.addSecs(5) ); addTestEvent( model, Event::CallEvent, Event::Outbound, ACCOUNT1, -1, "", false, false, when.addSecs(10) ); QVERIFY(watcher.waitForAdded(3)); //2 received addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, false, when ); addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, false, when.addSecs(5) ); QVERIFY(watcher.waitForAdded(2)); //3 missed addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, true, when ); addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, true, when.addSecs(5) ); addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, true, when.addSecs(10) ); QVERIFY(watcher.waitForAdded(3)); QDateTime time = when; //model.setQueryMode(EventModel::SyncQuery); model.setTreeMode(false); QVERIFY(model.setFilter(CallModel::SortByTime, CallEvent::DialedCallType, time)); QVERIFY(model.getEvents()); QVERIFY(watcher.waitForModelReady()); int numEventsRet = model.rowCount(); QCOMPARE(numEventsRet, 3); Event e1 = model.event(model.index(0,0)); Event e2 = model.event(model.index(1,0)); Event e3 = model.event(model.index(2,0)); QVERIFY(e1.isValid()); QVERIFY(e2.isValid()); QVERIFY(e3.isValid()); QVERIFY(e1.direction() == Event::Outbound); QVERIFY(e2.direction() == Event::Outbound); QVERIFY(e3.direction() == Event::Outbound); QVERIFY(model.setFilter(CallModel::SortByTime, CallEvent::MissedCallType, time)); QVERIFY(watcher.waitForModelReady()); QVERIFY(model.rowCount() == 3); QVERIFY(model.setFilter(CallModel::SortByTime, CallEvent::ReceivedCallType, time)); qDebug() << time; QVERIFY(watcher.waitForModelReady()); for (int i = 0; i < model.rowCount(); i++) { qDebug() << model.event(model.index(i, 0)).toString(); } QVERIFY(model.rowCount() == 2); /** * testing to check for adding events with wrong filters */ time = when.addSecs(-60*5); int numEventsGot = 0; //adding one more received but 5 minutes before the set time filter addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, false, time ); QVERIFY(watcher.waitForAdded()); QVERIFY(model.rowCount() == 2); //event should not be added to model, so rowCount should remain same for received calls //filter is set for received call, try to add missed and dialled calls with correct time filter addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, true, when ); QVERIFY(watcher.waitForAdded()); numEventsGot = model.rowCount(); QVERIFY(numEventsGot == 2); //event should not be added to model, so rowCount should remain same which was for received calls addTestEvent( model, Event::CallEvent, Event::Outbound, ACCOUNT1, -1, "", false, false, when ); QVERIFY(watcher.waitForAdded()); numEventsGot = model.rowCount(); QVERIFY(numEventsGot == 2); //event should not be added to model, so rowCount should remain same which was for received calls /** ** testing to check for getting events after he time when all events addition was complete */ //Trying to get events after 5 minutes after the first event was added time = when.addSecs(60*5); QVERIFY(model.setFilter(CallModel::SortByTime, CallEvent::ReceivedCallType, time)); QVERIFY(watcher.waitForModelReady()); QVERIFY(model.rowCount() == 0); qDebug() << "wait thread"; modelThread.quit(); modelThread.wait(3000); qDebug() << "done"; }
void CallModelTest::testDeleteEvent() { CallModel model; watcher.setModel(&model); // force change of sorting to SortByContact QVERIFY( model.setFilter( CallModel::SortByContact ) ); QVERIFY( model.getEvents() ); QVERIFY(watcher.waitForModelReady()); /* by contact: * ----------- * "", received (0) * user2, received (0) * user1, received (0) */ // delete first event from hidden number Event e = model.event( model.index( 0, 0 ) ); QVERIFY( e.isValid() ); QCOMPARE( e.type(), Event::CallEvent ); qDebug() << "EVENT:" << e.id() << "|" << e.remoteUid() << "|" << e.direction() << "|" << e.isMissedCall() << "|" << e.eventCount(); QCOMPARE( e.direction(), Event::Inbound ); QCOMPARE( e.isMissedCall(), false ); QCOMPARE( e.remoteUid(), QLatin1String("<hidden>") ); // delete it QVERIFY( model.deleteEvent( e.id() ) ); QVERIFY( watcher.waitForDeleted() ); // correct test helper lists to match current situation QMutableListIterator<TestCallItem> i(testCalls); while (i.hasNext()) { i.next(); if (i.value().remoteUid == QLatin1String("<hidden>")) i.remove(); } // test if model contains what we want it does testGetEvents( CallModel::SortByContact, 2, testCalls ); /* by contact: * ----------- * user2, received (0) * user1, received (0) */ // delete first group from user2 e = model.event( model.index( 0, 0 ) ); QVERIFY( e.isValid() ); QCOMPARE( e.type(), Event::CallEvent ); qDebug() << "EVENT:" << e.id() << "|" << e.remoteUid() << "|" << e.direction() << "|" << e.isMissedCall() << "|" << e.eventCount(); QCOMPARE( e.direction(), Event::Inbound ); QCOMPARE( e.isMissedCall(), false ); QCOMPARE( e.remoteUid(), REMOTEUID2 ); // delete it QVERIFY( model.deleteEvent( e.id() ) ); QVERIFY( watcher.waitForDeleted(2) ); // correct test helper lists to match current situation i = QMutableListIterator<TestCallItem>(testCalls); while (i.hasNext()) { i.next(); if (i.value().remoteUid == REMOTEUID2) i.remove(); } // test if model contains what we want it does testGetEvents( CallModel::SortByContact, 1, testCalls ); // force change of sorting to SortByTime QVERIFY( model.setFilter( CallModel::SortByTime ) ); QVERIFY(watcher.waitForModelReady()); /* by time: * -------- * user1, received (6)*** * user1, dialed (1) * user1, missed (2) * user1, dialed (1) * user1, received (2) * user1, missed (1) * user1, dialed (2) * * || * \/ * * user1, dialed (1) * user1, missed (2) * user1, dialed (1) * user1, received (2) * user1, missed (1) * user1, dialed (2) */ // take the event e = model.event( model.index( 0, 0 ) ); QVERIFY( e.isValid() ); QCOMPARE( e.type(), Event::CallEvent ); qDebug() << "EVENT:" << e.id() << "|" << e.remoteUid() << "|" << e.direction() << "|" << e.isMissedCall() << "|" << e.eventCount(); QCOMPARE( e.direction(), Event::Inbound ); QCOMPARE( e.isMissedCall(), false ); // delete it QVERIFY( model.deleteEvent( e.id() ) ); QVERIFY( watcher.waitForDeleted(6) ); // correct test helper lists to match current situation foreach (TestCallItem item, testCalls) { qDebug() << item.remoteUid << item.callType << item.eventCount; } testCalls.takeFirst(); testCalls.takeFirst(); foreach (TestCallItem item, testCalls) { qDebug() << item.remoteUid << item.callType << item.eventCount; } // test if model contains what we want it does testGetEvents( CallModel::SortByTime, testCalls.count(), testCalls ); /* by time: * -------- * user1, dialed (1) <---\ * user1, missed (2)*** regrouping * user1, dialed (1) <---/ * user1, received (2) * user1, missed (1) * user1, dialed (2) * * || * \/ * * user1, dialed (2) * user1, received (2) * user1, missed (1) * user1, dialed (2) */ // take the event e = model.event( model.index( 1, 0 ) ); QVERIFY( e.isValid() ); QCOMPARE( e.type(), Event::CallEvent ); qDebug() << "EVENT:" << e.id() << "|" << e.remoteUid() << "|" << e.direction() << "|" << e.isMissedCall() << "|" << e.eventCount(); QCOMPARE( e.direction(), Event::Inbound ); QCOMPARE( e.isMissedCall(), true ); // delete it QVERIFY( model.deleteEvent( e.id() ) ); QVERIFY( watcher.waitForDeleted(2) ); // correct test helper lists to match current situation testCalls.takeFirst(); testCalls.takeFirst(); testCalls.first().eventCount = 2; // test if model contains what we want it does testGetEvents( CallModel::SortByTime, testCalls.count(), testCalls ); // force change of sorting to SortByContact QVERIFY( model.setFilter( CallModel::SortByContact ) ); QVERIFY(watcher.waitForModelReady()); /* by contact: * ----------- * user1, dialed (0)*** * * || * \/ * * (empty) */ // take the event e = model.event( model.index( 0, 0 ) ); QVERIFY( e.isValid() ); QCOMPARE( e.type(), Event::CallEvent ); qDebug() << "EVENT:" << e.id() << "|" << e.remoteUid() << "|" << e.direction() << "|" << e.isMissedCall() << "|" << e.eventCount(); QCOMPARE( e.direction(), Event::Outbound ); QCOMPARE( e.isMissedCall(), false ); // delete it QVERIFY( model.deleteEvent( e.id() ) ); QVERIFY( watcher.waitForDeleted(7) ); // correct test helper lists to match current situation testCalls.clear(); // test if model contains what we want it does testGetEvents( CallModel::SortByContact, 0, testCalls ); }
void CallModelTest::testAddEvent() { CallModel model; watcher.setModel(&model); model.setQueryMode( EventModel::SyncQuery ); /* by contact: * ----------- * user1, missed (2) */ testGetEvents( CallModel::SortByContact, 1, testCalls ); /* by time: * -------- * user1, missed (2) * user1, dialed (1) * user1, received (2) * user1, missed (1) * user1, dialed (2) */ testGetEvents( CallModel::SortByTime, testCalls.count(), testCalls ); // add 1 dialed from user1 QDateTime when = QDateTime::currentDateTime(); addTestEvent( model, Event::CallEvent, Event::Outbound, ACCOUNT1, -1, "", false, false, when.addSecs( 40 ), REMOTEUID1 ); testCalls.insert( 0, TestCallItem( REMOTEUID1, CallEvent::DialedCallType, 1 ) ); QVERIFY(watcher.waitForAdded()); /* by contact: * ----------- * user1, dialed (-1) */ testGetEvents( CallModel::SortByContact, 1, testCalls ); /* by time: * -------- * user1, dialed (1) * user1, missed (2) * user1, dialed (1) * user1, received (2) * user1, missed (1) * user1, dialed (2) */ testGetEvents( CallModel::SortByTime, testCalls.count(), testCalls ); // add 5 received from user1 addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, false, when.addSecs( 45 ), REMOTEUID1 ); addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, false, when.addSecs( 50 ), REMOTEUID1 ); addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, false, when.addSecs( 55 ), REMOTEUID1 ); addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, false, when.addSecs( 60 ), REMOTEUID1 ); addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, false, when.addSecs( 65 ), REMOTEUID1 ); QVERIFY(watcher.waitForAdded(5)); testCalls.insert( 0, TestCallItem( REMOTEUID1, CallEvent::ReceivedCallType, 5 ) ); /* by contact: * ----------- * user1, received (-1) */ testGetEvents( CallModel::SortByContact, 1, testCalls ); /* by time: * -------- * user1, received (5) * user1, dialed (1) * user1, missed (2) * user1, dialed (1) * user1, received (2) * user1, missed (1) * user1, dialed (2) */ testGetEvents( CallModel::SortByTime, testCalls.count(), testCalls ); // add 1 missed from user2 addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, true, when.addSecs( 70 ), REMOTEUID2 ); testCalls.insert( 0, TestCallItem( REMOTEUID2, CallEvent::MissedCallType, 1 ) ); QVERIFY(watcher.waitForAdded()); /* by contact: * ----------- * user2, missed (1) * user1, received (0) */ testGetEvents( CallModel::SortByContact, 2, testCalls ); /* by time: * -------- * user2, received (1) * user1, received (5) * user1, dialed (1) * user1, missed (2) * user1, dialed (1) * user1, received (2) * user1, missed (1) * user1, dialed (2) */ testGetEvents( CallModel::SortByTime, testCalls.count(), testCalls ); // add 1 received from user1 addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, false, when.addSecs( 75 ), REMOTEUID1 ); testCalls.insert( 0, TestCallItem( REMOTEUID1, CallEvent::ReceivedCallType, 1 ) ); QVERIFY(watcher.waitForAdded()); /* by contact: ***REORDERING * ----------- * user1, received (0) * user2, missed (1) */ testGetEvents( CallModel::SortByContact, 2, testCalls ); /* by time: * -------- * user1, received (1) * user2, missed (1) * user1, received (5) * user1, dialed (1) * user1, missed (2) * user1, dialed (1) * user1, received (2) * user1, missed (1) * user1, dialed (2) */ testGetEvents( CallModel::SortByTime, testCalls.count(), testCalls ); // add 1 received from user2 addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, false, when.addSecs( 80 ), REMOTEUID2 ); testCalls.insert( 0, TestCallItem( REMOTEUID2, CallEvent::ReceivedCallType, 1 ) ); QVERIFY(watcher.waitForAdded()); /* by contact: * ----------- * user2, received (0) * user1, received (0) */ testGetEvents( CallModel::SortByContact, 2, testCalls ); /* by time: * -------- * user2, received (1) * user1, received (1) * user2, missed (1) * user1, received (5) * user1, dialed (1) * user1, missed (2) * user1, dialed (1) * user1, received (2) * user1, missed (1) * user1, dialed (2) */ testGetEvents( CallModel::SortByTime, testCalls.count(), testCalls ); // add 1 received from hidden number addTestEvent(model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, false, when.addSecs(90), "<hidden>"); testCalls.insert(0, TestCallItem("<hidden>", CallEvent::ReceivedCallType, 1)); QVERIFY(watcher.waitForAdded()); /* by contact: * ----------- * "", received (0) * user2, received (0) * user1, received (0) */ testGetEvents( CallModel::SortByContact, 3, testCalls ); /* by time: * -------- * "", received (1) * user2, received (1) * user1, received (1) * user2, missed (1) * user1, received (5) * user1, dialed (1) * user1, missed (2) * user1, dialed (1) * user1, received (2) * user1, missed (1) * user1, dialed (2) */ testGetEvents( CallModel::SortByTime, testCalls.count(), testCalls ); }