logsui/logscntfinder/tsrc/st_logscntfinder/src/st_logscntfinder.cpp
changeset 6 41c0a814d878
parent 4 e52d42f9500c
child 8 6c9acdc6adc0
child 10 b04270301d3b
--- a/logsui/logscntfinder/tsrc/st_logscntfinder/src/st_logscntfinder.cpp	Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logscntfinder/tsrc/st_logscntfinder/src/st_logscntfinder.cpp	Fri Jun 11 13:38:41 2010 +0300
@@ -22,18 +22,33 @@
 #include <QtTest/QtTest>
 #include <hbinputsettingproxy.h>
 
-void st_LogsCntFinder::initTestCase()
+
+#define CHECK_RESULTS( count, first, last )\
+    for(int i=0;i<count; i++ ) {\
+        if ( i == 0 ) {\
+            QCOMPARE(m_finder->resultAt(0).firstName().at(0).text(), QString(first));\
+            QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString(last));\
+        } else {\
+            m_finder->resultAt(i);\
+        }\
+    }
+
+        
+void ST_LogsCntFinder::initTestCase()
 {
 }
 
-void st_LogsCntFinder::cleanupTestCase()
+void ST_LogsCntFinder::cleanupTestCase()
 {
     
 }
 
 
-void st_LogsCntFinder::init()
+void ST_LogsCntFinder::init()
 {   
+    HbInputLanguage eng( QLocale::English );
+    HbInputSettingProxy::instance()->setGlobalInputLanguage( eng );
+    
     m_finder = 0;
     //open symbian database
     m_manager = new QContactManager("symbian");
@@ -43,8 +58,8 @@
     // Remove all contacts from the database
     QList<QContactLocalId> cnt_ids = m_manager->contactIds();
     qDebug() << "contacts now before deleting" << cnt_ids.count();
-    
-    QVERIFY(m_manager->removeContacts(&cnt_ids, 0));
+
+    QVERIFY( m_manager->removeContacts(cnt_ids, 0 ) );
     cnt_ids = m_manager->contactIds();
     QCOMPARE(cnt_ids.count(), 0);
 
@@ -54,7 +69,7 @@
     }
 }
 
-void st_LogsCntFinder::cleanup()
+void ST_LogsCntFinder::cleanup()
 {
     delete m_manager;
     m_manager = 0;
@@ -65,7 +80,7 @@
     
 }
 
-void st_LogsCntFinder::createContacts()
+void ST_LogsCntFinder::createContacts()
 {
     /*Create contacts in Contacts DB for keymap testing
 		Stefann    Yadira
@@ -99,41 +114,33 @@
    
     int contactsCount = m_manager->contactIds().count();
     QCOMPARE(contactsCount, 13);
-    qDebug() << "st_LogsCntFinder::createContacts_testKeymap. created " << contactsCount << " contacts";
 
     
 }
 
-void st_LogsCntFinder::createThaiContacts()
+/* 
+Dlice 00202       Qwerty        45789348
+#Paula 2003       Augustin Ci   0078945617 
+Paula 02010       Ezerty Adam   78945617
+Ced               Y,g           +78945617
+Jari-Pekka        Baraniktestteste 78945617
+*/
+void ST_LogsCntFinder::createContactsForQueryZero()
 {
-    /*Create contacts in Contacts DB
+    createContacts();
+    createOneContact( QString("Dlice 00202"), QString("Qwerty"), QString("45789348") );
+    createOneContact( QString("#Paula 2003"), QString("Augustin Ci"), QString("0078945617") );
+    createOneContact( QString("Paula 02010"), QString("Ezerty Adam"), QString("78945617") );
+    createOneContact( QString("Ced"), QString("Y,g"), QString("+78945617") );
+    createOneContact( QString("Jari-Pekka"), QString(" "), QString("78945617") );
 
-		*/
-		
-    const QChar thaiFName1[] = {0x0E06,0x0E0A}; // map:23
-    const QChar thaiLName1[] = {0x0E0E,0x0E14,0x0E19,0x0E1E,0x0E23,0x0E2A };//map 456789
-    
-    QString first ( thaiFName1, 2 );
-    QString last ( thaiFName1, 6 );
-    createOneContact( first, last, QString("932472398") );
-		
-    const QChar thaiFName2[] = {0x0E30,0x0E0A};//#3, 
-    const QChar thaiLName2[] = {0x0E2F,0x0E14,0x0E19,0x0E1E,0x0E23,0x0E2A };//*56789
-    
-    QString first2 ( thaiFName1, 2 );
-    QString last2 ( thaiFName1, 6 );
-    createOneContact( first2, last2, QString("932472398") );
-		
-		
-   
     int contactsCount = m_manager->contactIds().count();
-    QCOMPARE(contactsCount, 2);
-    qDebug() << "st_LogsCntFinder::createThaiContacts_ThaiSearch. created " << contactsCount << " contacts";
-
-    
+    QCOMPARE(contactsCount, 18);
 }
 
-void st_LogsCntFinder::createHistoryEvents()
+
+
+void ST_LogsCntFinder::createHistoryEvents()
 {
   createLogEvent( QString("Stefann Albert"), QString("Fedrernn"), QString("932472398") );
   createLogEvent( QString("Jonn"), QString("Lennon"), QString("932472398") );
@@ -141,7 +148,7 @@
   
 }
 
-void st_LogsCntFinder::createLogEvent(QString firstname, QString lastname, 
+void ST_LogsCntFinder::createLogEvent(QString firstname, QString lastname, 
                                       QString phnumber)
 {
   LogsCntEntryHandle* dummy = 0;
@@ -156,8 +163,20 @@
   
 }
 
+void ST_LogsCntFinder::createContactsForQueryOrder()
+{
+    createContacts();
+    createOneContact( QString("Anna"), QString("Qwerty"), QString("45789348") );
+    createOneContact( QString("Paula"), QString("Qwerty"), QString("78945617") );
+    createOneContact( QString("Paula"), QString("Azerty"), QString("78945617") );
 
-void st_LogsCntFinder::createOneContact(QString firstname, QString Lastname, 
+    int contactsCount = m_manager->contactIds().count();
+    QCOMPARE(contactsCount, 16);
+}
+
+
+
+void ST_LogsCntFinder::createOneContact(QString firstname, QString Lastname, 
                                                  QString phnumber)
 {
     //Currenlty we can only fetch firstname,lastname,companyname and sip/email/phone from the databse
@@ -177,7 +196,7 @@
     phonecontact.saveDetail(&number);
     
     m_manager->saveContact(&phonecontact);
-    qDebug() << "st_LogsCntFinder::createOneContact done";
+    qDebug() << "ST_LogsCntFinder::createOneContact done";
 }
 
 
@@ -186,138 +205,6 @@
 // Tests
 //
 
-void st_LogsCntFinder::testPredictiveThaiSearchQuery()
-{
-    HbInputLanguage thai( QLocale::Thai );
-    HbInputSettingProxy::instance()->setGlobalInputLanguage( thai );
-    		  
-    createThaiContacts();
-
-		//There is no recent call in logs UI
-    //case 1
-    /*m_finder->predictiveSearchQuery( QString("2") );
-    QCOMPARE( m_finder->resultsCount(), 1 );*/
-    qDebug() << "-- 2 query starts --";
-    m_finder->predictiveSearchQuery( QString("2") );
-    qDebug() << "found " << m_finder->resultsCount() << " matches:";
- 
-    qDebug() << "-- 4 query starts --";
-    m_finder->predictiveSearchQuery( QString("4") );
-    qDebug() << "found " << m_finder->resultsCount() << " matches:";
-        qDebug() << "-- 402 query starts --";
-    m_finder->predictiveSearchQuery( QString("402") );
-    qDebug() << "found " << m_finder->resultsCount() << " matches:";
-        qDebug() << "-- *4 query starts --";
-    m_finder->predictiveSearchQuery( QString("*4") );
-    qDebug() << "found " << m_finder->resultsCount() << " matches:";
-        qDebug() << "-- *402### query starts --";
-    m_finder->predictiveSearchQuery( QString("*402###") );
-    qDebug() << "found " << m_finder->resultsCount() << " matches:";
-
-    /*m_finder->predictiveSearchQuery( QString("4") );
-    QCOMPARE( m_finder->resultsCount(), 1 );
-
-    m_finder->predictiveSearchQuery( QString("402") );
-    QCOMPARE( m_finder->resultsCount(), 1 );
-
-    m_finder->predictiveSearchQuery( QString("*4") );
-    QCOMPARE( m_finder->resultsCount(), 1 );
-
-    m_finder->predictiveSearchQuery( QString("*402###") );
-    QCOMPARE( m_finder->resultsCount(), 1 );
-
-    m_finder->predictiveSearchQuery( QString("*4***00002###") );
-    QCOMPARE( m_finder->resultsCount(), 1 );
-    */
-    
-    
-}
-
-
-// Test basic predictive search, all records with names starting letters "J, K, L" are matched
-void st_LogsCntFinder::testPredictiveSearchQuery()
-{
-    createContacts();
-		
-		//There is no recent call in logs UI
-    //case 1
-    m_finder->predictiveSearchQuery( QString("5") );
-    QCOMPARE( m_finder->resultsCount(), 5 );
-    //see half of matched results
-    //results == for(int i =0;i<f->resultCount() / 2;i++){f->resultAt(i);}
-    /*QCOMPARE(m_finder->resultAt(0).firstName().at(0).text(), QString("Maria-Zola"));
-    QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString("Jones"));
-    QCOMPARE(m_finder->resultAt(1).firstName().at(0).text(), QString("Jonn"));
-    QCOMPARE(m_finder->resultAt(1).lastName().at(0).text(), QString("Ennon"));*/
-
-    m_finder->predictiveSearchQuery( QString("566") );
-    QCOMPARE( m_finder->resultsCount(), 2 );
-    m_finder->predictiveSearchQuery( QString("5") );
-    QCOMPARE( m_finder->resultsCount(), 5 );
-    
-    //case 2
-    m_finder->predictiveSearchQuery( QString("5") );
-    QCOMPARE( m_finder->resultsCount(), 5 );
-    //see all of the matched results
-    //results == for(int i =0;i<f->resultCount();i++){f->resultAt(i);}
-    /*QCOMPARE(m_finder->resultAt(0).firstName().at(0).text(), QString("Maria-Zola"));
-    QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString("Jones"));
-    QCOMPARE(m_finder->resultAt(1).firstName().at(0).text(), QString("Jonn"));
-    QCOMPARE(m_finder->resultAt(1).lastName().at(0).text(), QString("Ennon"));
-    QCOMPARE(m_finder->resultAt(0).firstName().at(0).text(), QString("Una Vivi"));
-    QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString("Kantsak"));
-    QCOMPARE(m_finder->resultAt(1).firstName().at(0).text(), QString("Wilda"));
-    QCOMPARE(m_finder->resultAt(1).lastName().at(0).text(), QString("Lazar"));
-    QCOMPARE(m_finder->resultAt(1).firstName().at(0).text(), QString("Levis"));
-    QCOMPARE(m_finder->resultAt(1).lastName().at(0).text(), QString("Augustin Zi"));
-    */
-
-    m_finder->predictiveSearchQuery( QString("566") );
-    QCOMPARE( m_finder->resultsCount(), 2 );
-    m_finder->predictiveSearchQuery( QString("5") );
-    QCOMPARE( m_finder->resultsCount(), 5 );
-    
-    //case 3
-    m_finder->predictiveSearchQuery( QString("6") );
-    QCOMPARE( m_finder->resultsCount(), 3 );
-    //see all of matched results
-    //results == for(int i =0;i<f->resultCount();i++){f->resultAt(i);}
-    /*QCOMPARE(m_finder->resultAt(0).firstName().at(0).text(), QString("Maria-Zola"));
-    QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString("Jones"));
-    QCOMPARE(m_finder->resultAt(0).firstName().at(0).text(), QString("Nancy"));
-    QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString("Csoma"));
-    QCOMPARE(m_finder->resultAt(1).firstName().at(0).text(), QString("Olga"));
-    QCOMPARE(m_finder->resultAt(1).lastName().at(0).text(), QString("Baraniktestteste"));*/
-
-    m_finder->predictiveSearchQuery( QString("69") );
-    QCOMPARE( m_finder->resultsCount(), 0 );
-    m_finder->predictiveSearchQuery( QString("692") );
-    QCOMPARE( m_finder->resultsCount(), 0 );
-    m_finder->predictiveSearchQuery( QString("6") );
-    QCOMPARE( m_finder->resultsCount(), 3 );
-    
-    //case 4
-    
-    m_finder->predictiveSearchQuery( QString("2") );
-    QCOMPARE( m_finder->resultsCount(), 3 );
-    //see half of matched results
-    //results == for(int i =0;i<f->resultCount() / 2;i++){f->resultAt(i);}
-    /*QCOMPARE(m_finder->resultAt(0).firstName().at(0).text(), QString("Levis"));
-    QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString("Augustin Zi"));
-    QCOMPARE(m_finder->resultAt(1).firstName().at(0).text(), QString(""));
-    QCOMPARE(m_finder->resultAt(1).lastName().at(0).text(), QString(""));*/
-
-    m_finder->predictiveSearchQuery( QString("20") );
-    QCOMPARE( m_finder->resultsCount(), 3 );
-    m_finder->predictiveSearchQuery( QString("209") );
-    QCOMPARE( m_finder->resultsCount(), 1 );
-    m_finder->predictiveSearchQuery( QString("20") );
-    QCOMPARE( m_finder->resultsCount(), 3 );
-    m_finder->predictiveSearchQuery( QString("2") );
-    QCOMPARE( m_finder->resultsCount(), 3 );
-       
-}
-
 /* Test itut keymap predictive search, checking that press key "2", records with names starting letters "A, B, C" are matched;
 Press key "3", records with names starting letters "D,E,F" are matched;
 Press key "4", records with names starting letters "G,H,I" are matched;
@@ -329,66 +216,86 @@
 Press key "0", records with names starting letters "space" etc. are matched;
 Press key "1", records with names starting letters "-,Ä,Ö" etc. are matched;
 */
-void st_LogsCntFinder::testKeymap()
+void ST_LogsCntFinder::testKeymap_2()
+{
+    createContacts();
+    const LogsCntEntry* data; 
+    m_finder->predictiveSearchQuery( QString("2") );
+    QCOMPARE( m_finder->resultsCount(), 3 );
+    data = &m_finder->resultAt( 0 );
+    QCOMPARE( data->firstName().count(), 1 );
+}
+
+void ST_LogsCntFinder::testKeymap_3()
+{
+    createContacts();
+    const LogsCntEntry* data; 
+    m_finder->predictiveSearchQuery( QString("3") );
+    QCOMPARE( m_finder->resultsCount(), 3 );
+    data = &m_finder->resultAt( 0 );
+    QCOMPARE( data->firstName().count(), 1 );
+}
+
+void ST_LogsCntFinder::testKeymap_4()
+{
+    createContacts();
+    const LogsCntEntry* data; 
+    m_finder->predictiveSearchQuery( QString("4") );
+    QCOMPARE( m_finder->resultsCount(), 3 );
+    data = &m_finder->resultAt( 0 );
+    QCOMPARE( data->firstName().count(), 1 );
+}
+
+void ST_LogsCntFinder::testKeymap_5()
 {
     createContacts();
     const LogsCntEntry* data; 
-
-    for (int i = 2; i < 10; i++)
-    {
-        m_finder->predictiveSearchQuery( QString::number(i) );
-        switch( i ) 
-        {
-        case 2:
-            QCOMPARE( m_finder->resultsCount(), 3 );
-            data = &m_finder->resultAt( 0 );
-            QCOMPARE( data->firstName().count(), 1 );
-            break;     
+    m_finder->predictiveSearchQuery( QString("5") );
+    QCOMPARE( m_finder->resultsCount(), 5 );
+    data = &m_finder->resultAt( 0 );
+    QCOMPARE( data->firstName().count(), 1 );
+}
 
-        case 3:
-            QCOMPARE( m_finder->resultsCount(), 3 );
-            data = &m_finder->resultAt( 0 );
-            QCOMPARE( data->firstName().count(), 1 );
-            break;
-
-        case 4:
-            QCOMPARE( m_finder->resultsCount(), 3 );
-            data = &m_finder->resultAt( 0 );
-            QCOMPARE( data->firstName().count(), 1 );
-            break;
+void ST_LogsCntFinder::testKeymap_6()
+{
+    createContacts();
+    const LogsCntEntry* data; 
+    m_finder->predictiveSearchQuery( QString("6") );
+    QCOMPARE( m_finder->resultsCount(), 3 );
+    data = &m_finder->resultAt( 0 );
+    QCOMPARE( data->firstName().count(), 1 );
+}
 
-        case 5:
-            QCOMPARE( m_finder->resultsCount(), 5 );
-            data = &m_finder->resultAt( 0 );
-            QCOMPARE( data->firstName().count(), 1 );
-            break;
-
-        case 6:
-            QCOMPARE( m_finder->resultsCount(), 3 );
-            data = &m_finder->resultAt( 0 );
-            QCOMPARE( data->firstName().count(), 1 );
-            break;
+void ST_LogsCntFinder::testKeymap_7()
+{
+    createContacts();
+    const LogsCntEntry* data; 
+    m_finder->predictiveSearchQuery( QString("7") );
+    QCOMPARE( m_finder->resultsCount(), 5 );
+    data = &m_finder->resultAt( 0 );
+    QCOMPARE( data->firstName().count(),1 );
+}
 
-        case 7:
-            QCOMPARE( m_finder->resultsCount(), 5 );
-            data = &m_finder->resultAt( 0 );
-            QCOMPARE( data->firstName().count(),1 );
-            break;
+void ST_LogsCntFinder::testKeymap_8()
+{
+    createContacts();
+    const LogsCntEntry* data; 
+    m_finder->predictiveSearchQuery( QString("8") );
+    QCOMPARE( m_finder->resultsCount(), 2 );
+    data = &m_finder->resultAt( 0 );
+    QCOMPARE( data->firstName().count(), 1 );
+}
 
-        case 8:
-            QCOMPARE( m_finder->resultsCount(), 2 );
-            data = &m_finder->resultAt( 0 );
-            QCOMPARE( data->firstName().count(), 1 );
-            break;
+void ST_LogsCntFinder::testKeymap_9()
+{
+    createContacts();
+    const LogsCntEntry* data; 
+    m_finder->predictiveSearchQuery( QString("9") );
+    QCOMPARE( m_finder->resultsCount(), 3 );
+    data = &m_finder->resultAt( 0 );
+    QCOMPARE( data->firstName().count(), 1 );
+}
 
-        case 9:
-            QCOMPARE( m_finder->resultsCount(), 3 );
-            data = &m_finder->resultAt( 0 );
-            QCOMPARE( data->firstName().count(), 1 );
-            break;
-        }
-    }
-}
 
 /* Test zero query search: 1. zero between "1-9" numbers, then first zero works as "AND" statement; 
 2. (multiple) zero at beginning; 3. (multiple) zero at the end; 
@@ -396,59 +303,350 @@
 6. Query limit is 15, the 16th is ignored, and first 0 works as "AND" statement */
 
 
-void st_LogsCntFinder::testPredictiveSearchQueryZeroStart()
+void ST_LogsCntFinder::testPredictiveSearchQueryZeroStart()
 {
     createContactsForQueryZero();
     
     m_finder->predictiveSearchQuery( QString("00202") );
     QCOMPARE( m_finder->resultsCount(), 2 );
-    
+}
+
+void ST_LogsCntFinder::testPredictiveSearchQueryZeroStartZeroEnd()
+{
+    createContactsForQueryZero();
+        
     m_finder->predictiveSearchQuery( QString("02010") );
     QCOMPARE( m_finder->resultsCount(), 1 );
+}
 
-}
-void st_LogsCntFinder::testPredictiveSearchQueryZeroMiddle()
+void ST_LogsCntFinder::testPredictiveSearchQueryZeroMiddle()
 {
     createContactsForQueryZero();
-    m_finder->predictiveSearchQuery( QString("566") );
-    QCOMPARE( m_finder->resultsCount(), 2 );
 
     m_finder->predictiveSearchQuery( QString("56603") );
     QCOMPARE( m_finder->resultsCount(), 1 );
+}
+
+void ST_LogsCntFinder::testPredictiveSearchQueryMultiZerosMiddle()
+{
+    createContactsForQueryZero();
 
     m_finder->predictiveSearchQuery( QString("2003") );
     QCOMPARE( m_finder->resultsCount(), 2 );
-    
+}
+
+void ST_LogsCntFinder::testPredictiveSearchQueryZeroMiddleLong()
+{
+    createContactsForQueryZero();
+
     m_finder->predictiveSearchQuery( QString("2272645837883065") );
     QCOMPARE( m_finder->resultsCount(), 1 );
-       
+}
+
+void ST_LogsCntFinder::testPredictiveSearchQueryMultiZerosAndZeroMiddle()
+{
+    createContactsForQueryZero();
+
     m_finder->predictiveSearchQuery( QString("200904") );
     QCOMPARE( m_finder->resultsCount(), 1 );
     
 }
 
-/* 
-Dlice 00202       Qwerty        45789348
-#Paula 2003       Augustin Ci   0078945617 
-Paula 02010       Ezerty Adam   78945617
-Ced               Y,g           +78945617
-Jari-Pekka        Baraniktestteste 78945617
-*/
-void st_LogsCntFinder::createContactsForQueryZero()
+
+// Test basic predictive search, all records with names starting letters "J, K, L" are matched
+
+// 5 -> 56 -> 5 -> 56    (not all cached)
+void ST_LogsCntFinder::testPredictiveSearchQueryPartialCached()
+{
+    createContacts();
+
+    m_finder->predictiveSearchQuery( QString("5") );
+    QCOMPARE( m_finder->resultsCount(), 5 );
+    //see half of matched results
+    CHECK_RESULTS( 3, "Jonn", "Ennon" );
+    
+    m_finder->predictiveSearchQuery( QString("56") );
+    QCOMPARE( m_finder->resultsCount(), 2 );
+    //see half of matched results
+    CHECK_RESULTS( 1, "Jonn", "Ennon" );
+    
+    m_finder->predictiveSearchQuery( QString("5") );
+    QCOMPARE( m_finder->resultsCount(), 5 );
+    CHECK_RESULTS( 3, "Jonn", "Ennon" );
+
+    m_finder->predictiveSearchQuery( QString("56") );
+    QCOMPARE( m_finder->resultsCount(), 2 );
+    //see half of matched results
+    CHECK_RESULTS( 1, "Jonn", "Ennon" );
+    
+}
+
+// 5 -> 56 -> 5 -> 56   (all cached)
+void ST_LogsCntFinder::testPredictiveSearchQueryFullyCached()
+{
+    createContacts();
+
+    //case 1
+    m_finder->predictiveSearchQuery( QString("5") );
+    QCOMPARE( m_finder->resultsCount(), 5 );
+    //see all matched results
+    CHECK_RESULTS( 5, "Jonn", "Ennon" );
+    
+    m_finder->predictiveSearchQuery( QString("56") );
+    QCOMPARE( m_finder->resultsCount(), 2 );
+    //see all of matched results
+    CHECK_RESULTS( 2, "Jonn", "Ennon" );
+    
+    m_finder->predictiveSearchQuery( QString("5") );
+    QCOMPARE( m_finder->resultsCount(), 5 );
+    //see all of matched results
+    CHECK_RESULTS( 5, "Jonn", "Ennon" );
+
+    m_finder->predictiveSearchQuery( QString("56") );
+    QCOMPARE( m_finder->resultsCount(), 2 );
+    //see all of matched results
+    CHECK_RESULTS( 2, "Jonn", "Ennon" );
+    
+}
+
+// 6 -> 69 (no match) -> 692 (no match) -> 69 (no match) -> 6 -> 69    (not all cached)
+void ST_LogsCntFinder::testPredictiveSearchQueryPartialCachedNoResults()
+{
+    createContacts();
+		
+    m_finder->predictiveSearchQuery( QString("6") );
+    QCOMPARE( m_finder->resultsCount(), 3 );
+    //see half of matched results
+    CHECK_RESULTS( 2, "Maria-Zola", "Jones" );
+    
+    m_finder->predictiveSearchQuery( QString("69") );
+    QCOMPARE( m_finder->resultsCount(), 0 );
+    m_finder->predictiveSearchQuery( QString("692") );
+    QCOMPARE( m_finder->resultsCount(), 0 );
+    m_finder->predictiveSearchQuery( QString("69") );
+    QCOMPARE( m_finder->resultsCount(), 0 );
+    
+    m_finder->predictiveSearchQuery( QString("6") );
+    QCOMPARE( m_finder->resultsCount(), 3 );
+    //see half of matched results
+    CHECK_RESULTS( 2, "Maria-Zola", "Jones" );
+    
+    m_finder->predictiveSearchQuery( QString("69") );
+    QCOMPARE( m_finder->resultsCount(), 0 );
+    
+}
+
+// 6 -> 69 (no match) -> 692 (no match) -> 69 (no match) -> 6 -> 69    (all cached)
+void ST_LogsCntFinder::testPredictiveSearchQueryFullyCachedNoResults()
+{
+    createContacts();
+                
+    m_finder->predictiveSearchQuery( QString("6") );
+    QCOMPARE( m_finder->resultsCount(), 3 );
+    //see all of matched results
+    CHECK_RESULTS( 3, "Maria-Zola", "Jones" );
+    
+    m_finder->predictiveSearchQuery( QString("69") );
+    QCOMPARE( m_finder->resultsCount(), 0 );
+    m_finder->predictiveSearchQuery( QString("692") );
+    QCOMPARE( m_finder->resultsCount(), 0 );
+    m_finder->predictiveSearchQuery( QString("69") );
+    QCOMPARE( m_finder->resultsCount(), 0 );
+    
+    m_finder->predictiveSearchQuery( QString("6") );
+    QCOMPARE( m_finder->resultsCount(), 3 );
+    //see all of matched results
+    CHECK_RESULTS( 3, "Maria-Zola", "Jones" );
+    
+    m_finder->predictiveSearchQuery( QString("69") );
+    QCOMPARE( m_finder->resultsCount(), 0 );
+    
+    
+}
+
+// 6 -> 69 (no match) -> 692 (no match) -> 69 (no match) -> 6 (all cached)
+void ST_LogsCntFinder::testPredictiveSearchQueryCachedZeroCase()
 {
     createContacts();
-    createOneContact( QString("Dlice 00202"), QString("Qwerty"), QString("45789348") );
-    createOneContact( QString("#Paula 2003"), QString("Augustin Ci"), QString("0078945617") );
-    createOneContact( QString("Paula 02010"), QString("Ezerty Adam"), QString("78945617") );
-    createOneContact( QString("Ced"), QString("Y,g"), QString("+78945617") );
-    createOneContact( QString("Jari-Pekka"), QString(" "), QString("78945617") );
+    
+    m_finder->predictiveSearchQuery( QString("2") );
+    QCOMPARE( m_finder->resultsCount(), 3 );
+    CHECK_RESULTS( 2, "Levis", "Augustin" );//Augustin Zi
+
+    m_finder->predictiveSearchQuery( QString("20") );
+    QCOMPARE( m_finder->resultsCount(), 3 );
+    CHECK_RESULTS( 2, "Levis", "Augustin" );//Augustin Zi
+    
+    m_finder->predictiveSearchQuery( QString("209") );
+    QCOMPARE( m_finder->resultsCount(), 1 );
+    CHECK_RESULTS( 1, "Levis", "Augustin" ); //Augustin Zi
+    
+    m_finder->predictiveSearchQuery( QString("20") );
+    QCOMPARE( m_finder->resultsCount(), 3 );
+    CHECK_RESULTS( 2, "Levis", "Augustin" );//Augustin Zi
+    
+    m_finder->predictiveSearchQuery( QString("2") );
+    QCOMPARE( m_finder->resultsCount(), 3 );
+    CHECK_RESULTS( 2, "Levis", "Augustin" );//Augustin Zi
+       
+}
+
+
+//There is recent call in logs, no contacts DB
+void ST_LogsCntFinder::testPredictiveSearchQueryLogs()
+{
+    createHistoryEvents();
+
+    m_finder->predictiveSearchQuery( QString("5") );
+    QCOMPARE( m_finder->resultsCount(), 2 );
+    CHECK_RESULTS( 2, "Dim-Petter", "Jones" );
 
-    int contactsCount = m_manager->contactIds().count();
-    QCOMPARE(contactsCount, 18);
+    m_finder->predictiveSearchQuery( QString("53") );
+    QCOMPARE( m_finder->resultsCount(), 1 );
+    CHECK_RESULTS( 1, "Jonn", "Lennon" );
+    
+    m_finder->predictiveSearchQuery( QString("539") );
+    QCOMPARE( m_finder->resultsCount(), 0 );
+
+    m_finder->predictiveSearchQuery( QString("53") );
+    QCOMPARE( m_finder->resultsCount(), 1 );
+    CHECK_RESULTS( 1, "Jonn", "Lennon" );
+    
+    QCOMPARE( m_finder->resultsCount(), 0 );
+    m_finder->predictiveSearchQuery( QString("5") );
+    QCOMPARE( m_finder->resultsCount(), 2 );
+    CHECK_RESULTS( 2, "Dim-Petter", "Jones" );
+
+    m_finder->predictiveSearchQuery( QString("5") );
+    QCOMPARE( m_finder->resultsCount(), 2 );
+    CHECK_RESULTS( 2, "Dim-Petter", "Jones" );
+}
+
+void ST_LogsCntFinder::testPredictiveSearchQueryLogsZeroCase()
+{
+    createHistoryEvents();
+    
+    m_finder->predictiveSearchQuery( QString("5") );
+    QCOMPARE( m_finder->resultsCount(), 2 );
+    CHECK_RESULTS( 2, "Dim-Petter", "Jones" );
+
+    m_finder->predictiveSearchQuery( QString("50") );
+    QCOMPARE( m_finder->resultsCount(), 2 );
+    CHECK_RESULTS( 2, "Dim-Petter", "Jones" );
+    
+    m_finder->predictiveSearchQuery( QString("503") );
+    QCOMPARE( m_finder->resultsCount(), 1 );
+    CHECK_RESULTS( 2, "Dim-Petter", "Jones" );
+    
+    m_finder->predictiveSearchQuery( QString("50") );
+    QCOMPARE( m_finder->resultsCount(), 2 );
+    CHECK_RESULTS( 2, "Dim-Petter", "Jones" );
+    
+    m_finder->predictiveSearchQuery( QString("5") );
+    QCOMPARE( m_finder->resultsCount(), 2 );
+    CHECK_RESULTS( 2, "Dim-Petter", "Jones" );
+        
 }
 
+//There is recent call in logs, and contacts DB
+void ST_LogsCntFinder::testPredictiveSearchQueryLogsContactsPartialCached()
+{
+    createHistoryEvents();
+    createContacts();
+
+    m_finder->predictiveSearchQuery( QString("5") );
+    QCOMPARE( m_finder->resultsCount(), 7 );
+    CHECK_RESULTS( 5, "Dim-Petter", "Jones" );
+    
+    m_finder->predictiveSearchQuery( QString("56") );
+    QCOMPARE( m_finder->resultsCount(), 4 );
+    CHECK_RESULTS( 2, "Dim-Petter", "Jones" );
+    
+    m_finder->predictiveSearchQuery( QString("569") );
+    QCOMPARE( m_finder->resultsCount(), 0 );
+    
+    m_finder->predictiveSearchQuery( QString("56") );
+    QCOMPARE( m_finder->resultsCount(), 4 );
+    CHECK_RESULTS( 2, "Dim-Petter", "Jones" );
+    
+    m_finder->predictiveSearchQuery( QString("5") );
+    QCOMPARE( m_finder->resultsCount(), 7 );
+    CHECK_RESULTS( 5, "Dim-Petter", "Jones" );
+    
+    
+}
+
+void ST_LogsCntFinder::testPredictiveSearchQueryLogsContactsFullyCached()
+{
+    createHistoryEvents();
+    createContacts();
+
+    m_finder->predictiveSearchQuery( QString("5") );
+    QCOMPARE( m_finder->resultsCount(), 7 );
+    CHECK_RESULTS( 7, "Dim-Petter", "Jones" );
+    
+    m_finder->predictiveSearchQuery( QString("56") );
+    QCOMPARE( m_finder->resultsCount(), 4 );
+    CHECK_RESULTS( 4, "Dim-Petter", "Jones" );
+    
+    m_finder->predictiveSearchQuery( QString("569") );
+    QCOMPARE( m_finder->resultsCount(), 0 );
+    
+    m_finder->predictiveSearchQuery( QString("56") );
+    QCOMPARE( m_finder->resultsCount(), 4 );
+    CHECK_RESULTS( 4, "Dim-Petter", "Jones" );
+    
+    m_finder->predictiveSearchQuery( QString("5") );
+    QCOMPARE( m_finder->resultsCount(), 7 );
+    CHECK_RESULTS( 7, "Dim-Petter", "Jones" );
+    
+}
+
+void ST_LogsCntFinder::testPredictiveSearchQueryLogsContactsZeroCase()
+{
+    createHistoryEvents();
+    createContacts();
+
+    m_finder->predictiveSearchQuery( QString("5") );
+    QCOMPARE( m_finder->resultsCount(), 7 );
+    CHECK_RESULTS( 5, "Dim-Petter", "Jones" );
+
+    m_finder->predictiveSearchQuery( QString("50") );
+    QCOMPARE( m_finder->resultsCount(), 7 );
+    CHECK_RESULTS( 2, "Dim-Petter", "Jones" );
+    
+    m_finder->predictiveSearchQuery( QString("503") );
+    QCOMPARE( m_finder->resultsCount(), 2 );
+    CHECK_RESULTS( 2, "Dim-Petter", "Jones" );
+    
+    m_finder->predictiveSearchQuery( QString("50") );
+    QCOMPARE( m_finder->resultsCount(), 7 );
+    CHECK_RESULTS( 5, "Dim-Petter", "Jones" );
+
+    m_finder->predictiveSearchQuery( QString("5") );
+    QCOMPARE( m_finder->resultsCount(), 7 );
+    CHECK_RESULTS( 5, "Dim-Petter", "Jones" );
+    
+}
+
+void ST_LogsCntFinder::testPredictiveSearchQueryLogsContactsPhoneNumberMatch()
+{
+    createHistoryEvents();
+    createContacts();
+
+    m_finder->predictiveSearchQuery( QString("9") );
+    QCOMPARE( m_finder->resultsCount(), 6 ); //3 history + 3 contacts
+    CHECK_RESULTS( 5, "Stefann", "Fedrernn" );
+
+    m_finder->predictiveSearchQuery( QString("93") );
+    QCOMPARE( m_finder->resultsCount(), 3 );
+    CHECK_RESULTS( 1, "Stefann", "Fedrernn" );
+    
+}
+
+
 // Test query limit is 15, the 16th digit is ignored
-void st_LogsCntFinder::testPredictiveSearchQueryLimit()
+void ST_LogsCntFinder::testPredictiveSearchQueryLimit()
 {
     createContacts();
 
@@ -481,96 +679,7 @@
     QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString("Baraniktestteste"));
 }
 
-//There is recent call in logs, no contacts DB
-void st_LogsCntFinder::testPredictiveSearchQueryLogs()
-{
-    createHistoryEvents();
-
-    m_finder->predictiveSearchQuery( QString("5") );
-    QCOMPARE( m_finder->resultsCount(), 2 );
-    
-    //case 1
-    m_finder->predictiveSearchQuery( QString("5") );
-    QCOMPARE( m_finder->resultsCount(), 2 );
-    //see half of matched results
-    //results == for(int i =0;i<f->resultCount() / 2;i++){f->resultAt(i);}
-    /*QCOMPARE(m_finder->resultAt(0).firstName().at(0).text(), QString(""));
-    QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString(""));
-    QCOMPARE(m_finder->resultAt(1).firstName().at(0).text(), QString(""));
-    QCOMPARE(m_finder->resultAt(1).lastName().at(0).text(), QString(""));*/
-
-    m_finder->predictiveSearchQuery( QString("533") );
-    QCOMPARE( m_finder->resultsCount(), 0 );
-    m_finder->predictiveSearchQuery( QString("5") );
-    QCOMPARE( m_finder->resultsCount(), 2 );
-    
-        //case 2
-    m_finder->predictiveSearchQuery( QString("5") );
-    QCOMPARE( m_finder->resultsCount(), 2 );
-    //see half of matched results
-    //results == for(int i =0;i<f->resultCount() / 2;i++){f->resultAt(i);}
-    /*QCOMPARE(m_finder->resultAt(0).firstName().at(0).text(), QString(""));
-    QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString(""));
-    QCOMPARE(m_finder->resultAt(1).firstName().at(0).text(), QString(""));
-    QCOMPARE(m_finder->resultAt(1).lastName().at(0).text(), QString(""));*/
-
-    m_finder->predictiveSearchQuery( QString("50") );
-    QCOMPARE( m_finder->resultsCount(), 2 );
-    m_finder->predictiveSearchQuery( QString("503") );
-    QCOMPARE( m_finder->resultsCount(), 1 );
-    m_finder->predictiveSearchQuery( QString("50") );
-    QCOMPARE( m_finder->resultsCount(), 2 );
-    m_finder->predictiveSearchQuery( QString("5") );
-    QCOMPARE( m_finder->resultsCount(), 2 );
-        
-}
-
-//There is recent call in logs, and contacts DB
-void st_LogsCntFinder::testPredictiveSearchQueryLogsContacts()
-{
-    createHistoryEvents();
-    createContacts();
-
-    m_finder->predictiveSearchQuery( QString("5") );
-    QCOMPARE( m_finder->resultsCount(), 2 );
-    
-    //case 1
-    m_finder->predictiveSearchQuery( QString("5") );
-    QCOMPARE( m_finder->resultsCount(), 2 );
-    //see half of matched results
-    //results == for(int i =0;i<f->resultCount() / 2;i++){f->resultAt(i);}
-    /*QCOMPARE(m_finder->resultAt(0).firstName().at(0).text(), QString(""));
-    QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString(""));
-    QCOMPARE(m_finder->resultAt(1).firstName().at(0).text(), QString(""));
-    QCOMPARE(m_finder->resultAt(1).lastName().at(0).text(), QString(""));*/
-
-    m_finder->predictiveSearchQuery( QString("533") );
-    QCOMPARE( m_finder->resultsCount(), 0 );
-    m_finder->predictiveSearchQuery( QString("5") );
-    QCOMPARE( m_finder->resultsCount(), 2 );
-    
-        //case 2
-    m_finder->predictiveSearchQuery( QString("5") );
-    QCOMPARE( m_finder->resultsCount(), 2 );
-    //see half of matched results
-    //results == for(int i =0;i<f->resultCount() / 2;i++){f->resultAt(i);}
-    /*QCOMPARE(m_finder->resultAt(0).firstName().at(0).text(), QString(""));
-    QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString(""));
-    QCOMPARE(m_finder->resultAt(1).firstName().at(0).text(), QString(""));
-    QCOMPARE(m_finder->resultAt(1).lastName().at(0).text(), QString(""));*/
-
-    m_finder->predictiveSearchQuery( QString("50") );
-    QCOMPARE( m_finder->resultsCount(), 2 );
-    m_finder->predictiveSearchQuery( QString("503") );
-    QCOMPARE( m_finder->resultsCount(), 1 );
-    m_finder->predictiveSearchQuery( QString("50") );
-    QCOMPARE( m_finder->resultsCount(), 2 );
-    m_finder->predictiveSearchQuery( QString("5") );
-    QCOMPARE( m_finder->resultsCount(), 2 );
-        
-}
-
-void st_LogsCntFinder::testQueryOrder()
+void ST_LogsCntFinder::testQueryOrder()
 {
     createContactsForQueryOrder();
 
@@ -602,65 +711,3 @@
     QCOMPARE(m_finder->resultAt(7).lastName().at(0).text(), QString("Yadira"));
 }
 
-void st_LogsCntFinder::createContactsForQueryOrder()
-{
-    createContacts();
-    createOneContact( QString("Anna"), QString("Qwerty"), QString("45789348") );
-    createOneContact( QString("Paula"), QString("Qwerty"), QString("78945617") );
-    createOneContact( QString("Paula"), QString("Azerty"), QString("78945617") );
-
-    int contactsCount = m_manager->contactIds().count();
-    QCOMPARE(contactsCount, 16);
-}
-
-//QTEST_MAIN(st_LogsCntFinder);
-
-/*int main(int argc, char *argv[])
-{
-    bool promptOnExit(true);
-    bool xmlOutput(false);
-
-    for (int i=0; i<argc; i++) {
-        if (QString(argv[i]) == "-noprompt") {
-            promptOnExit = false;
-        }
-        if (QString(argv[i]) == "-xml") {
-            xmlOutput = true;
-        }
-    }
-    printf("Running tests...\n");
-
-    QApplication app(argc, argv);
-    st_LogsCntFinder st_logscntfinder;
-    QString resultFileName = "c:/data/others/st_LogsCntFinder";
-    resultFileName.append(xmlOutput ? ".xml" : ".txt");
-    QStringList args_logsCntFinder("st_logscntfinder");
-    if (xmlOutput) 
-        args_logsCntFinder.append("-xml");
-    args_logsCntFinder << "-v1" << "-o" << resultFileName;
-    QTest::qExec(&st_logscntfinder, args_logsCntFinder);
-
-    if (xmlOutput) {
-        TestResultXmlParser parser;
-        parser.parseAndPrintResults(resultFileName);        
-    }
-    
-    if (promptOnExit) {
-        printf("Press any key...\n");
-        getchar(); 
-    }
-    
-    return 0;
-}*/
-
-int main(int argc, char *argv[]) //on HW
-{
-    QApplication app(argc, argv);
-    
-    st_LogsCntFinder st_logscntfinder;
-    QString resultFileName = "c:/data/others/st_logscntfinder.txt";
-    QStringList args_logsCntFinder( "st_logscntfinder");
-    args_logsCntFinder << "-o" << resultFileName;
-    QTest::qExec(&st_logscntfinder, args_logsCntFinder);
-    return 0;   
-}