/*
* 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;
}