contentstorage/castorage/tsrc/t_castorage/src/castoragetestlocalization.cpp
author Jaakko Haukipuro (Nokia-MS/Oulu) <Jaakko.Haukipuro@nokia.com>
Thu, 16 Sep 2010 12:11:40 +0100
changeset 117 c63ee96dbe5f
permissions -rw-r--r--
Missing activityfw and taskswitcher components - fix for Bug 3670

/*
* Copyright (c) 2009 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:
*
*/
/*
 * castoragetestlocalization.cpp
 *
 *  Created on: Dec 2, 2009
 *      Author: michal.wojcik
 */


#include "castoragetest.h"
#include "castoragefactory.h"
#include "castorage.h"
#include "caarraycleanup.inl"
#include "cainnerentry.h"
#include "calocalizationentry.h"
#include "casqlquery.h"
#include "casqlitestorage.h"
#include "castoragetestsqlcommands.h"
#include "casqlcommands.h"

// ============================ MEMBER FUNCTIONS ===============================

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void CCAStorageTest::testRemoveFromLocalizationAfterNameChange()
{
    TInt err(KErrGeneral);

    __UHEAP_MARK;
    TRAP(err,
         // Check before test
         CCaSqlQuery *query = CCaSqlQuery::NewL(((CCaSqLiteStorage *)mStorage)->iSqlDb);
         CleanupStack::PushL(query);
         query->SetQueryL(KSQLCountFromLocalizationTable);
         query->PrepareL();
         TInt countLocalizationBefore(0);
         query->ExecuteL(countLocalizationBefore);
         CleanupStack::PopAndDestroy(query);

         // Update Collection Name;
         //    CCaInnerEntry* innerEntry = CCaInnerEntry::NewLC();
         //    innerEntry->SetId( 5 );
         //    innerEntry->SetTextL( KTestName );
         //    mStorage->AddL( innerEntry );
         //    CleanupStack::PopAndDestroy( innerEntry );

         mStorage->RemoveFromLocalizationL(5);


         // Check result after name entry name update
         query = CCaSqlQuery::NewLC(((CCaSqLiteStorage *)mStorage)->iSqlDb);
         query->SetQueryL(KSQLCountFromLocalizationTable);
         query->PrepareL();
         TInt countLocalizationAfter(0);
         query->ExecuteL(countLocalizationAfter);
         CleanupStack::PopAndDestroy(query);
    if ((countLocalizationBefore - countLocalizationAfter) == 1) {
    err = KErrNone;
}
    );
    __UHEAP_MARKEND;

    QCOMPARE(err, KErrNone);
}

void CCAStorageTest::testGetLocalizations()
{
    TInt err(KErrGeneral);

    __UHEAP_MARK;
    TRAP(err,
         // Check before test
         CCaSqlQuery *query = CCaSqlQuery::NewL(((CCaSqLiteStorage *)mStorage)->iSqlDb);
         CleanupStack::PushL(query);
         query->SetQueryL(KSQLCountFromLocalizationTable);
         query->PrepareL();
         TInt countLocalization(0);
         query->ExecuteL(countLocalization);
         CleanupStack::PopAndDestroy(query);

         // Get Localizations from db
         RPointerArray<CCaLocalizationEntry> resultContainer;
         CleanupResetAndDestroyPushL(resultContainer);
         mStorage->GetLocalizationsL(resultContainer);

        if (resultContainer.Count() == countLocalization) {
            err = KErrNone;
        }

        CleanupStack::PopAndDestroy(&resultContainer);
    );
    __UHEAP_MARKEND;

    QCOMPARE(err, KErrNone);
}

void CCAStorageTest::testLocalizeEntry()
{
    TInt err(KErrGeneral);

    __UHEAP_MARK;
    TRAP(err,
         CCaLocalizationEntry *localizationEntry = CCaLocalizationEntry::NewLC();

         const TInt KOfficeId = 5;

         _LIT(KAttributeName, "EN_TEXT");
         localizationEntry->SetAttributeNameL(KAttributeName);
         _LIT(KNewLocalizedString, "Biurowe smietnisko");
         localizationEntry->SetLocalizedStringL(KNewLocalizedString);
         localizationEntry->SetRowId(KOfficeId);   // office
         _LIT(KTableName, "CA_ENTRY");
         localizationEntry->SetTableNameL(KTableName);
         localizationEntry->SetTextId(KOfficeId);    // office

         // test localize entry
         mStorage->LocalizeEntryL(*localizationEntry);

         // get this entry from db - office
         CCaInnerQuery *innerQuery = CCaInnerQuery::NewLC();
         RArray<TInt> idArray;
         CleanupClosePushL(idArray);
         idArray.AppendL(KOfficeId);
         innerQuery->SetIdsL(idArray);

         RPointerArray<CCaInnerEntry> resultArray;
         CleanupResetAndDestroyPushL(resultArray);
         mStorage->GetEntriesL(innerQuery, resultArray);

         // check results
    if (!resultArray[0]->GetText().CompareC(KNewLocalizedString)) {
    err = KErrNone;
}

CleanupStack::PopAndDestroy(&resultArray);
CleanupStack::PopAndDestroy(&idArray);
CleanupStack::PopAndDestroy(innerQuery);

CleanupStack::PopAndDestroy(localizationEntry);
    );
    __UHEAP_MARKEND;

    QCOMPARE(err, KErrNone);
}


//-------------------------------------------------------------------------
void CCAStorageTest::testAddLocalizationEntry()
{
    TInt err(KErrGeneral);
    TInt countLocalization1(0);
    TInt countLocalization2(0);

    __UHEAP_MARK;
    TRAP(err,
         // Check before test

        countLocalization1 = locEntriesCount();
         // Get Localizations from db
        CCaLocalizationEntry* locEntry = CCaLocalizationEntry::NewLC();
        locEntry->SetTableNameL(_L("TestTable"));
        locEntry->SetAttributeNameL(_L("TestAttName"));
        locEntry->SetStringIdL(_L("TestStrId"));
        locEntry->SetQmFilenameL(_L("TestQmFilename"));
        locEntry->SetRowId(6667);
        mStorage->AddLocalizationL(*locEntry);
        countLocalization2 =locEntriesCount();
        CleanupStack::PopAndDestroy(locEntry);

        );
    QCOMPARE(err, KErrNone); 
    QCOMPARE(countLocalization1+1 , countLocalization2);
         
    __UHEAP_MARKEND;
    
}

//-------------------------------------------------------------------------
void CCAStorageTest::testUpdateLocalizationEntry()
{
    TInt err(KErrGeneral);
    TInt countLocalization1(0);
    TInt countLocalization2(0);
    
    __UHEAP_MARK;
    TRAP(err,
         // Get Localizations from db
         CCaLocalizationEntry* locEntry = CCaLocalizationEntry::NewLC();
         locEntry->SetTableNameL(_L("TestTable"));
         locEntry->SetAttributeNameL(_L("TestAttName"));
         locEntry->SetStringIdL(_L("TestStrId"));
         locEntry->SetQmFilenameL(_L("TestQmFilename"));
         locEntry->SetRowId(6668);
         mStorage->AddLocalizationL(*locEntry);
         
         countLocalization1 = locEntriesCount();

         locEntry->SetTableNameL(_L("TestTable"));
         locEntry->SetAttributeNameL(_L("TestAttName"));
         locEntry->SetStringIdL(_L("TestStrId2"));
         locEntry->SetQmFilenameL(_L("TestQmFilename2"));
         locEntry->SetRowId(6668);
         mStorage->AddLocalizationL(*locEntry);

         countLocalization2 = locEntriesCount();
         
         CleanupStack::PopAndDestroy(locEntry);
       
        );
    QCOMPARE(err, KErrNone); 
    QCOMPARE(countLocalization1 , countLocalization2);
         
    __UHEAP_MARKEND;
    
}
//-------------------------------------------------------------------------
TInt CCAStorageTest::locEntriesCount()
{
    TInt count(0);
    CCaSqlQuery *query = CCaSqlQuery::NewL(((CCaSqLiteStorage *)mStorage)->iSqlDb);
    CleanupStack::PushL(query);
    query->SetQueryL(KSQLCountFromLocalizationTable);
    query->PrepareL();
    query->ExecuteL(count);
    CleanupStack::PopAndDestroy(query);
    return count;
}