locationdataharvester/mylocationsdatabasemanager/tsrc/ut_mylocationsdatabasemanager.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 11 Jun 2010 13:33:47 +0300
changeset 26 f3533f6eae3f
permissions -rw-r--r--
Revision: 201021 Kit: 2010123

/*
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description: mylocations database manager unit test cases
*
*/

#include <QtTest/QtTest>
#include <QtGui>
#include <QString>

#include <mylocationsdatabasemanager.h>
#include <locationservicedefines.h>
#include <EPos_CPosLandmark.h>
#include <lbsposition.h>


//Lookup db test interface class
class CMyLocationsDatabaseManagerTest: public QObject
{
    Q_OBJECT
        
private slots:
    
    void testCase1();
    void testCase2();
    void testCase3();
    void testCase4();
};


//Tests basic construction and destruction
void CMyLocationsDatabaseManagerTest::testCase1()
{
    // tests just new and delete operation.
	CMyLocationsDatabaseManager* dbm = new CMyLocationsDatabaseManager();
	QVERIFY( dbm != NULL );
    delete dbm;
    dbm = NULL;

    // tests ConstructL()
    dbm = new CMyLocationsDatabaseManager();
	dbm->ConstructL();
	QVERIFY( dbm->iLocationAppLookupDb != NULL );
	delete dbm;
}

//Tests UpdateDatabaseL()
void CMyLocationsDatabaseManagerTest::testCase2()
{
    // tests just new and delete operation.
    CMyLocationsDatabaseManager* dbm = new CMyLocationsDatabaseManager();
    QVERIFY( dbm != NULL );
    dbm->ConstructL();
    
    CPosLandmark* lm = CPosLandmark::NewL();
    lm->SetLandmarkNameL(_L("John"));
    lm->SetPositionFieldL( EPositionFieldStreet, _L("MG Road") );
    TLocality loc( TCoordinate( 0.1, 0.2 ), 0 );
    lm->SetPositionL(loc);
    
    // test add
    dbm->UpdateDatabaseL( lm, 1, ESourceContactsPref, EEntryAdded );
    QLookupItem item;
    item.mSourceType = ESourceContactsPref;
    item.mSourceUid = 1;
    bool flag = dbm->iLocationAppLookupDb->findEntryBySourceIdAndType( item );
    QVERIFY( flag == true );
    QVERIFY( item.mStreet == "MG Road" );
    
    // test modify
    lm->SetPositionFieldL( EPositionFieldStreet, _L("Brigade Road") );
    dbm->UpdateDatabaseL( lm, 1, ESourceContactsPref, EEntryModified );
    flag = dbm->iLocationAppLookupDb->findEntryBySourceIdAndType( item );
    QVERIFY( flag == true );
    QVERIFY( item.mStreet == "Brigade Road" );

    dbm->UpdateDatabaseL( lm, 1, ESourceContactsPref, EEntryModified );
    flag = dbm->iLocationAppLookupDb->findEntryBySourceIdAndType( item );
    QVERIFY( flag == true );
    QVERIFY( item.mStreet == "Brigade Road" );

    // test delete
    dbm->UpdateDatabaseL( NULL, 1, ESourceContactsPref, EEntryDeleted );
    flag = dbm->iLocationAppLookupDb->findEntryBySourceIdAndType( item );
    QVERIFY( flag == false );

    // check invalid
    dbm->UpdateDatabaseL( NULL, 1, ESourceContactsPref, EEntryUnknown );
    flag = dbm->iLocationAppLookupDb->findEntryBySourceIdAndType( item );
    QVERIFY( flag == false );

    delete lm;
    delete dbm;
}

//Tests GetLandmarkFullAddress() and FillLookupItemAddressDetails()
void CMyLocationsDatabaseManagerTest::testCase3()
{
    CMyLocationsDatabaseManager* dbm = new CMyLocationsDatabaseManager();
    dbm->ConstructL();
    QVERIFY( dbm->iLocationAppLookupDb != NULL );
    
    QLookupItem item;
    
    CPosLandmark* lm = CPosLandmark::NewL();
    TBuf<255> buff;
    dbm->GetLandmarkFullAddress( buff, lm );
    QString str1 = QString( (QChar*)buff.Ptr(), buff.Length());
    QVERIFY( str1 == "" );
    
    dbm->FillLookupItemAddressDetails( lm, item );
    QVERIFY( item.mName == "" );
    QVERIFY( item.mStreet == "" );
    QVERIFY( item.mPostalCode == "" );
    QVERIFY( item.mCity == "" );
    QVERIFY( item.mState == "" );
    QVERIFY( item.mCountry == "" );
    
    lm->SetLandmarkNameL( _L("name") );
    lm->SetPositionFieldL( EPositionFieldCountry, _L("india") );
    dbm->GetLandmarkFullAddress( buff, lm );
    str1 = QString( (QChar*)buff.Ptr(), buff.Length());
    QVERIFY( str1 == "india" );
    dbm->FillLookupItemAddressDetails( lm, item );
    QVERIFY( item.mName == "name" );
    QVERIFY( item.mCountry == "india" );

    lm->SetPositionFieldL( EPositionFieldState, _L("kar") );
    dbm->GetLandmarkFullAddress( buff, lm );
    str1 = QString( (QChar*)buff.Ptr(), buff.Length());
    QVERIFY( str1 == "kar, india" );
    dbm->FillLookupItemAddressDetails( lm, item );
    QVERIFY( item.mState == "kar" );

    lm->SetPositionFieldL( EPositionFieldCity, _L("blr") );
    dbm->GetLandmarkFullAddress( buff, lm );
    str1 = QString( (QChar*)buff.Ptr(), buff.Length());
    QVERIFY( str1 == "blr, kar, india" );
    dbm->FillLookupItemAddressDetails( lm, item );
    QVERIFY( item.mCity == "blr" );

    lm->SetPositionFieldL( EPositionFieldPostalCode, _L("postalcode") );
    lm->SetPositionFieldL( EPositionFieldStreet, _L("mg road") );
    dbm->GetLandmarkFullAddress( buff, lm );
    str1 = QString( (QChar*)buff.Ptr(), buff.Length());
    QVERIFY( str1 == "mg road, blr, kar, india" );
    dbm->FillLookupItemAddressDetails( lm, item );
    QVERIFY( item.mPostalCode == "postalcode" );
    QVERIFY( item.mStreet == "mg road" );
    
    lm->SetLandmarkNameL(_L(""));
    lm->SetPositionFieldL( EPositionFieldStreet, _L("") );
    lm->SetPositionFieldL( EPositionFieldPostalCode, _L("") );
    lm->SetPositionFieldL( EPositionFieldCity, _L("") );
    lm->SetPositionFieldL( EPositionFieldState, _L("") );
    lm->SetPositionFieldL( EPositionFieldCountry, _L("") );
    dbm->GetLandmarkFullAddress( buff, lm );
    str1 = QString( (QChar*)buff.Ptr(), buff.Length());
    dbm->FillLookupItemAddressDetails( lm, item );
    QVERIFY( str1 == "" );
    QVERIFY( item.mName == "" );
    QVERIFY( item.mStreet == "" );
    QVERIFY( item.mPostalCode == "" );
    QVERIFY( item.mCity == "" );
    QVERIFY( item.mState == "" );
    QVERIFY( item.mCountry == "" );
    
    delete lm;
    delete dbm;
}

//Tests UpdateMapTilePath()
void CMyLocationsDatabaseManagerTest::testCase4()
{
    // tests just new and delete operation.
    CMyLocationsDatabaseManager* dbm = new CMyLocationsDatabaseManager();
    dbm->ConstructL();
    QVERIFY( dbm->iLocationAppLookupDb != NULL );
    
    QLookupItem item;
    item.mSourceType = ESourceCalendar;
    item.mSourceUid = 1;
    dbm->iLocationAppLookupDb->createEntry( item );
    dbm->UpdateMapTilePath( item.mSourceUid, item.mSourceType, _L("maptile.png") );
    dbm->iLocationAppLookupDb->findEntryBySourceIdAndType( item );
    
    QVERIFY( item.mMapTilePath == "maptile.png" );
    
    dbm->iLocationAppLookupDb->deleteEntryBySourceIdAndType( item );
    delete dbm;
}

QTEST_MAIN(CMyLocationsDatabaseManagerTest)
#include "ut_mylocationsdatabasemanager.moc"