qtmobility/plugins/contacts/symbian/tsrc/ut_cntsqlsearch/src/ut_cntsqlsearch.cpp
changeset 4 90517678cc4f
parent 1 2b40d63a9c3d
child 5 453da2cfceef
equal deleted inserted replaced
1:2b40d63a9c3d 4:90517678cc4f
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 #include <QtTest/QtTest>
       
    19 #include <QStringList>
       
    20 
       
    21 #include "ut_cntsqlsearch.h"
       
    22 #include "cntsqlsearch.h"
       
    23 
       
    24 
       
    25 void UT_CntSqlSearch::initTestCase()
       
    26 {
       
    27 }
       
    28 
       
    29 void UT_CntSqlSearch::cleanupTestCase()
       
    30 {
       
    31 }
       
    32 
       
    33 
       
    34 void UT_CntSqlSearch::init()
       
    35 {
       
    36 mCntSqlSearch = new CntSqlSearch();
       
    37 }
       
    38 
       
    39 void UT_CntSqlSearch::cleanup()
       
    40 {
       
    41     delete mCntSqlSearch;
       
    42     mCntSqlSearch = 0;
       
    43     
       
    44 }
       
    45 void UT_CntSqlSearch::testPredictiveSearch()
       
    46 {
       
    47     QString pattern = QString("209");
       
    48     QString result;
       
    49     QString reference("SELECT contact_id FROM view2 WHERE (first_name_as_number LIKE % 209%) OR (last_name_as_number LIKE % 209%) OR (last_name_as_number LIKE % 2%) OR ((first_name_as_number LIKE % 2%) AND (first_name_as_number LIKE %_ 2%)) OR ((last_name_as_number LIKE % 9%) AND (last_name_as_number LIKE %_ 9%)) ORDER BY first_name_as_number ASC");
       
    50    /* result = mCntSqlSearch->CreatePredictiveSearch(pattern);
       
    51     QVERIFY( !result.compare( reference) );*/
       
    52 
       
    53     pattern = QString("3");
       
    54     reference = QString("SELECT contact_id FROM view3 ORDER BY first_name_as_number ASC;");
       
    55     result = mCntSqlSearch->CreatePredictiveSearch(pattern);
       
    56     QVERIFY( !result.compare( reference) );
       
    57 
       
    58     pattern = QString("33");
       
    59     reference = QString("SELECT contact_id FROM view3 WHERE (first_name_as_number LIKE % 33%) OR (last_name_as_number LIKE % 33%) ORDER BY first_name_as_number ASC;");
       
    60     result = mCntSqlSearch->CreatePredictiveSearch(pattern);
       
    61     QVERIFY( !result.compare( reference) );
       
    62 
       
    63     pattern = QString("001100");
       
    64     reference = QString("SELECT contact_id FROM view0 WHERE (first_name_as_number LIKE % 001100%) OR (last_name_as_number LIKE % 001100%) ORDER BY first_name_as_number ASC;");
       
    65     result = mCntSqlSearch->CreatePredictiveSearch(pattern);
       
    66     QVERIFY( !result.compare( reference) );
       
    67 
       
    68     pattern = QString("1");
       
    69     reference = QString("SELECT contact_id FROM view1 ORDER BY first_name_as_number ASC;");
       
    70     result = mCntSqlSearch->CreatePredictiveSearch(pattern);
       
    71     QVERIFY( !result.compare( reference) ); pattern = QString("1");
       
    72 }
       
    73 
       
    74 void UT_CntSqlSearch::testSelectTableView()
       
    75 {
       
    76     QString pattern = QString("0");
       
    77     QString reference = QString("view0");;
       
    78     QString result = mCntSqlSearch->SelectTableView(pattern);
       
    79     QVERIFY( !result.compare( reference) );
       
    80 
       
    81     pattern = QString("1");
       
    82     reference = QString("view1");;
       
    83     result = mCntSqlSearch->SelectTableView(pattern);
       
    84     QVERIFY( !result.compare( reference) );
       
    85 
       
    86     pattern = QString("2");
       
    87     reference = QString("view2");;
       
    88     result = mCntSqlSearch->SelectTableView(pattern);
       
    89     QVERIFY( !result.compare( reference) );
       
    90 
       
    91     pattern = QString("3");
       
    92     reference = QString("view3");;
       
    93     result = mCntSqlSearch->SelectTableView(pattern);
       
    94     QVERIFY( !result.compare( reference) );
       
    95 
       
    96     pattern = QString("4");
       
    97     reference = QString("view4");;
       
    98     result = mCntSqlSearch->SelectTableView(pattern);
       
    99     QVERIFY( !result.compare( reference) );
       
   100 
       
   101     pattern = QString("5");
       
   102     reference = QString("view5");;
       
   103     result = mCntSqlSearch->SelectTableView(pattern);
       
   104     QVERIFY( !result.compare( reference) );
       
   105 
       
   106     pattern = QString("6");
       
   107     reference = QString("view6");;
       
   108     result = mCntSqlSearch->SelectTableView(pattern);
       
   109     QVERIFY( !result.compare( reference) );
       
   110 
       
   111     pattern = QString("7");
       
   112     reference = QString("view7");;
       
   113     result = mCntSqlSearch->SelectTableView(pattern);
       
   114     QVERIFY( !result.compare( reference) );
       
   115 
       
   116     pattern = QString("8");
       
   117     reference = QString("view8");;
       
   118     result = mCntSqlSearch->SelectTableView(pattern);
       
   119     QVERIFY( !result.compare( reference) );
       
   120 
       
   121     pattern = QString("9");
       
   122     reference = QString("view9");;
       
   123     result = mCntSqlSearch->SelectTableView(pattern);
       
   124     QVERIFY( !result.compare( reference) );
       
   125 }
       
   126 
       
   127 void UT_CntSqlSearch::testIsSubStringSearch()
       
   128 {
       
   129     QString pattern("102");
       
   130     QCOMPARE(mCntSqlSearch->IsSubStringSearch(pattern), true);
       
   131     pattern = QString("12");
       
   132     QCOMPARE(mCntSqlSearch->IsSubStringSearch(pattern), false);
       
   133     pattern = QString("1");
       
   134     QCOMPARE(mCntSqlSearch->IsSubStringSearch(pattern), false);
       
   135     pattern = QString("01");
       
   136     QCOMPARE(mCntSqlSearch->IsSubStringSearch(pattern), true);
       
   137     pattern = QString("012");
       
   138     QCOMPARE(mCntSqlSearch->IsSubStringSearch(pattern), true);
       
   139     pattern = QString("00012");
       
   140     QCOMPARE(mCntSqlSearch->IsSubStringSearch(pattern), true);
       
   141     pattern = QString("000100002");
       
   142     QCOMPARE(mCntSqlSearch->IsSubStringSearch(pattern), true);
       
   143     pattern = QString("000");
       
   144     QCOMPARE(mCntSqlSearch->IsSubStringSearch(pattern), false);
       
   145     pattern = QString("0");
       
   146     QCOMPARE(mCntSqlSearch->IsSubStringSearch(pattern), false);
       
   147 }
       
   148 
       
   149 void UT_CntSqlSearch::testGetNumber()
       
   150 {   
       
   151     QStringList numbers;
       
   152 
       
   153     QString pattern("102");
       
   154     numbers = mCntSqlSearch->GetNumber(pattern);
       
   155     QCOMPARE(numbers.at(0), QString("1"));
       
   156     QCOMPARE(numbers.at(1), QString("2"));
       
   157 
       
   158     pattern = QString("12");
       
   159     numbers = mCntSqlSearch->GetNumber(pattern);
       
   160     QCOMPARE(numbers.at(0), QString("12"));
       
   161 
       
   162     pattern = QString("01");
       
   163     numbers = mCntSqlSearch->GetNumber(pattern);
       
   164     QCOMPARE(numbers.at(0), QString("1"));
       
   165 
       
   166     pattern = QString("012");
       
   167     numbers = mCntSqlSearch->GetNumber(pattern);
       
   168     QCOMPARE(numbers.at(0), QString("12"));
       
   169 
       
   170     pattern = QString("00012");
       
   171     numbers = mCntSqlSearch->GetNumber(pattern);
       
   172     QCOMPARE(numbers.at(0), QString("12"));
       
   173 
       
   174     pattern = QString("00012000");
       
   175     numbers = mCntSqlSearch->GetNumber(pattern);
       
   176     QCOMPARE(numbers.at(0), QString("12"));
       
   177 
       
   178     pattern = QString("000100002");
       
   179     numbers = mCntSqlSearch->GetNumber(pattern);
       
   180     QCOMPARE(numbers.at(0), QString("1"));
       
   181     QCOMPARE(numbers.at(1), QString("2"));
       
   182 
       
   183     pattern = QString("000100002000");
       
   184     numbers = mCntSqlSearch->GetNumber(pattern);
       
   185     QCOMPARE(numbers.at(0), QString("1"));
       
   186     QCOMPARE(numbers.at(1), QString("2"));
       
   187 }
       
   188 
       
   189 void UT_CntSqlSearch::testCreateSubStringSearch()
       
   190 {
       
   191     QString pattern = QString("102");
       
   192     QString result;
       
   193     QString reference("(first_name_as_number LIKE % 102%) OR (last_name_as_number LIKE % 102%) OR ((first_name_as_number LIKE % 1%) AND (first_name_as_number LIKE %_ 1%)) OR ((last_name_as_number LIKE % 1%) AND (last_name_as_number LIKE %_ 1%)) OR ((first_name_as_number LIKE % 2%) AND (first_name_as_number LIKE %_ 2%)) OR ((last_name_as_number LIKE % 2%) AND (last_name_as_number LIKE %_ 2%))");
       
   194     result = mCntSqlSearch->CreateSubStringSearch(pattern);
       
   195     QVERIFY( !result.compare( reference) );
       
   196 
       
   197     pattern = QString("00102");
       
   198     reference = QString("(first_name_as_number LIKE % 00102%) OR (last_name_as_number LIKE % 00102%) OR ((first_name_as_number LIKE % 1%) AND (first_name_as_number LIKE %_ 1%)) OR ((last_name_as_number LIKE % 1%) AND (last_name_as_number LIKE %_ 1%)) OR ((first_name_as_number LIKE % 2%) AND (first_name_as_number LIKE %_ 2%)) OR ((last_name_as_number LIKE % 2%) AND (last_name_as_number LIKE %_ 2%))");
       
   199     result = mCntSqlSearch->CreateSubStringSearch(pattern);
       
   200     QVERIFY( !result.compare( reference) );
       
   201 
       
   202     pattern = QString("0010200");
       
   203     reference = QString("(first_name_as_number LIKE % 0010200%) OR (last_name_as_number LIKE % 0010200%) OR ((first_name_as_number LIKE % 1%) AND (first_name_as_number LIKE %_ 1%)) OR ((last_name_as_number LIKE % 1%) AND (last_name_as_number LIKE %_ 1%)) OR ((first_name_as_number LIKE % 2%) AND (first_name_as_number LIKE %_ 2%)) OR ((last_name_as_number LIKE % 2%) AND (last_name_as_number LIKE %_ 2%))");
       
   204     result = mCntSqlSearch->CreateSubStringSearch(pattern);
       
   205     QVERIFY( !result.compare( reference) );
       
   206 
       
   207     pattern = QString("12");
       
   208     reference = QString("(first_name_as_number LIKE % 12%) OR (last_name_as_number LIKE % 12%)");
       
   209     result = mCntSqlSearch->CreateSubStringSearch(pattern);
       
   210     QVERIFY( !result.compare( reference) );
       
   211 
       
   212     pattern = QString("000");
       
   213     reference = QString("(first_name_as_number LIKE % 000%) OR (last_name_as_number LIKE % 000%)");
       
   214     result = mCntSqlSearch->CreateSubStringSearch(pattern);
       
   215     QVERIFY( !result.compare( reference) );
       
   216 }
       
   217 
       
   218 void UT_CntSqlSearch::testCreateStringSearch()
       
   219 {
       
   220     QString numbers("102");
       
   221 
       
   222     QString result;
       
   223     result = mCntSqlSearch->CreateStringSearch(numbers);
       
   224     QVERIFY( result == "(first_name_as_number LIKE % 102%) OR (last_name_as_number LIKE % 102%)" );
       
   225 
       
   226     numbers = QString("00012");
       
   227     result = mCntSqlSearch->CreateStringSearch(numbers);
       
   228     QVERIFY( result == "(first_name_as_number LIKE % 00012%) OR (last_name_as_number LIKE % 00012%)" );
       
   229 
       
   230     numbers = QString("000120012");
       
   231     result = mCntSqlSearch->CreateStringSearch(numbers);
       
   232     QVERIFY( result == "(first_name_as_number LIKE % 000120012%) OR (last_name_as_number LIKE % 000120012%)" );
       
   233 
       
   234     numbers = QString("12");
       
   235     result = mCntSqlSearch->CreateStringSearch(numbers);
       
   236     QVERIFY( result == "(first_name_as_number LIKE % 12%) OR (last_name_as_number LIKE % 12%)" );
       
   237 
       
   238     numbers = QString("00012001200");
       
   239     result = mCntSqlSearch->CreateStringSearch(numbers);
       
   240     QVERIFY( result == "(first_name_as_number LIKE % 00012001200%) OR (last_name_as_number LIKE % 00012001200%)" );
       
   241 }
       
   242 
       
   243 void UT_CntSqlSearch::testCreateSpaceStringSearch()
       
   244 {
       
   245     QStringList numbers;
       
   246     numbers << "1";
       
   247     QString result;
       
   248     result = mCntSqlSearch->CreateSpaceStringSearch(numbers);
       
   249     QVERIFY( result == " OR ((first_name_as_number LIKE % 1%) AND (first_name_as_number LIKE %_ 1%)) OR ((last_name_as_number LIKE % 1%) AND (last_name_as_number LIKE %_ 1%))" );
       
   250 
       
   251     numbers.clear();
       
   252     numbers << "1" << "2";
       
   253     QString reference(" OR ((first_name_as_number LIKE % 1%) AND (first_name_as_number LIKE %_ 1%)) OR ((last_name_as_number LIKE % 1%) AND (last_name_as_number LIKE %_ 1%)) OR ((first_name_as_number LIKE % 2%) AND (first_name_as_number LIKE %_ 2%)) OR ((last_name_as_number LIKE % 2%) AND (last_name_as_number LIKE %_ 2%))");
       
   254     result = mCntSqlSearch->CreateSpaceStringSearch(numbers);
       
   255     QVERIFY( !result.compare( reference) );
       
   256 
       
   257     numbers.clear();
       
   258     numbers << "1" << "21";
       
   259     reference = QString(" OR ((first_name_as_number LIKE % 1%) AND (first_name_as_number LIKE %_ 1%)) OR ((last_name_as_number LIKE % 1%) AND (last_name_as_number LIKE %_ 1%)) OR ((first_name_as_number LIKE % 21%) AND (first_name_as_number LIKE %_ 21%)) OR ((last_name_as_number LIKE % 21%) AND (last_name_as_number LIKE %_ 21%))");
       
   260     result = mCntSqlSearch->CreateSpaceStringSearch(numbers);
       
   261     QVERIFY( !result.compare( reference));
       
   262 }
       
   263 
       
   264 void UT_CntSqlSearch::testCreateSpaceString()
       
   265 {
       
   266     QString pattern("1");
       
   267     QString result;
       
   268     QString reference("((first_name_as_number LIKE % 1%) AND (first_name_as_number LIKE %_ 1%)) OR ((last_name_as_number LIKE % 1%) AND (last_name_as_number LIKE %_ 1%))");
       
   269     result = mCntSqlSearch->CreateSpaceString(pattern);
       
   270     QVERIFY(!result.compare(reference));
       
   271 }
       
   272 
       
   273 QTEST_MAIN(UT_CntSqlSearch)