landmarks/locationlandmarks/tsrc/LandmarkTestModule/src/FT_CPosTp81.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:37:04 +0300
branchRCL_3
changeset 44 2b4ea9893b66
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
* Copyright (c) 2005 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: 
*   ?description_line
*
*/


//  INCLUDES

#include "FT_CPosTp81.h"
#include <EPos_CPosLandmarkDatabase.h>
#include <EPos_CPosLmDatabaseManager.h>
           
// ================= MEMBER FUNCTIONS =======================

// ---------------------------------------------------------
// CPosTp81::GetName
//
// (other items were commented in a header).
// ---------------------------------------------------------
//
void CPosTp81::GetName(TDes& aName) const
    {
    _LIT(KTestName, "Tp81 - category with apostrophe in name (SBUY-6A9A5B)");
    aName = KTestName;
    }

// ---------------------------------------------------------
// CPosTp81::StartL
//
// (other items were commented in a header).
// ---------------------------------------------------------
//
void CPosTp81::StartL()
    {
    _LIT(KCategoryName, "Category with apostrophe'");
    _LIT(KCategoryName2, "Category with apostrophe(')");
    
    RemoveAllLmDatabasesL();

    CPosLandmarkDatabase* db = CPosLandmarkDatabase::OpenL();
    CleanupStack::PushL(db);
    if (db->IsInitializingNeeded())
       {
       ExecuteAndDeleteLD(db->InitializeL()); // Synchronous since no argument
       }
    
    CPosLmCategoryManager* manager = CPosLmCategoryManager::NewL(*db);
    CleanupStack::PushL(manager);
    
    // Test with only apostrophe
    CPosLandmarkCategory* cat = CPosLandmarkCategory::NewL();
    CleanupStack::PushL(cat);
    iLog->Put(_L("Set name with apostrophe"));
    cat->SetCategoryNameL(KCategoryName); 
    iLog->Put(_L("AddCategory with apostrophe in name"));
    TPosLmItemId id = manager->AddCategoryL(*cat);
    User::After(200000);
    iLog->Put(_L("AddCategory was succesful"));
    CleanupStack::PopAndDestroy(cat);
    
    CPosLandmarkCategory* category = manager->ReadCategoryLC(id);
    TPtrC catName;
    category->GetCategoryName(catName);
    iLog->Put(catName);
    if (catName.CompareC(KCategoryName) != KErrNone) iLog->Put(_L("ERROR: Names are not equal"));
    CleanupStack::PopAndDestroy(category);
    CleanupStack::PopAndDestroy(manager);
    
    // Test with apostrophe and paranthesis
    manager = CPosLmCategoryManager::NewL(*db);
    CleanupStack::PushL(manager);
    
    cat = CPosLandmarkCategory::NewL();
    CleanupStack::PushL(cat);
    iLog->Put(_L("Set name with apostrophe"));
    cat->SetCategoryNameL(KCategoryName2); 
    iLog->Put(_L("AddCategory with apostrophe and paranthesis in name"));
    id = manager->AddCategoryL(*cat);
    User::After(200000);
    iLog->Put(_L("AddCategory was succesful"));
    CleanupStack::PopAndDestroy(cat);
    
    category = manager->ReadCategoryLC(id);
    category->GetCategoryName(catName);
    iLog->Put(catName);
    if (catName.CompareC(KCategoryName2) != KErrNone) iLog->Put(_L("ERROR: Names are not equal (2)"));
    CleanupStack::PopAndDestroy(category);
    
    ExecuteAndDeleteLD(db->CompactL());

    CleanupStack::PopAndDestroy(manager);
    CleanupStack::PopAndDestroy(db);

    TestDifferentNamesL();
    
    }
// ---------------------------------------------------------
// CPosTp81::TestDifferentNamesL
//
// (other items were commented in a header).
// ---------------------------------------------------------
//
void CPosTp81::TestDifferentNamesL()
    {
    iLog->Put(_L("TestDifferentNamesL"));        
    ////////////////////////////////////////////////////////////
    _LIT(KCategory1, "file://:://c:::en helt \" sjuk .ldb databas\".ldb.ldb.ldb");
    _LIT(KCategory2, "file://c:en helt sjuk databas.ldb");
    _LIT(KCategory3, "le:///c:en helt sjuk databas.ldb");
    _LIT(KCategory4, "/c::en helt sjuk databas.ldb");
    _LIT(KCategory5, "en helt sjuk .ldb databas.ldb");
    _LIT(KCategory6, "en helt sjuk databas.ldb.ldb.ldb");
    _LIT(KCategory7, "en helt \" sjuk databas.ldb");
    _LIT(KCategory8, "en helt < sjuk databas.ldb");
    _LIT(KCategory9, "en helt > sjuk databas.ldb");
    _LIT(KCategory10, "en helt | sjuk databas.ldb");
    _LIT(KCategory11, "en helt / sjuk databas.ldb");
    _LIT(KCategory12, "en helt ? sjuk databas.ldb");
    _LIT(KCategory13, "en helt \\ sjuk databas.ldb");
    _LIT(KCategory14, "en helt : sjuk databas.ldb");
    _LIT(KCategory15, ":!#¤%&()=+`´^¨~'§½-_,;.{}[]$£@0123456789åäöÅÄÖ.ldb");
    _LIT(KCategory16, "file://c:qwertyuiopasdfghjklzxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM.ldb");
    _LIT(KCategory17, "file://en otroligt helt sjuk databas.ldb");
    _LIT(KCategory18, "c:en helsjuk databas.ldb");
    _LIT(KCategory19, "file://c:\\system\\data\\en helt sjuk databas.ldb");
    _LIT(KCategory20, "file://c:.ldb");
    _LIT(KCategory21, "file://c:filename");
    _LIT(KCategory22, "file://c:filename.dip");
    _LIT(KCategory23, "file://c:filename. ldb");
    _LIT(KCategory24, "file://c:*.ldb");
    _LIT(KCategory25, "file://allan:en helt sjuk databas.ldb");
    _LIT(KCategory26, "file://g:en helt sjuk databas.ldb");
    _LIT(KCategory27, "file://c:filename.ldb");
    _LIT(KCategory28, "file://c:012345678901234567890123456789012345678901234567890123456789.ldb");
    
    const TInt KNrOfUris = 28;
    const TDesC* listOfCategories[] = {&KCategory1, &KCategory2, &KCategory3 ,&KCategory4, &KCategory5, &KCategory6,
     &KCategory7, &KCategory8, &KCategory9
    , &KCategory10, &KCategory11, &KCategory12, &KCategory13, &KCategory14, &KCategory15
    , &KCategory16, &KCategory17, &KCategory18, &KCategory19, &KCategory20, &KCategory21
    , &KCategory22, &KCategory23, &KCategory24, &KCategory25, &KCategory26, &KCategory27, &KCategory28};

/*
    const TInt KNrOfNonWorkingUris = 19;
    const TDesC* listOfUrisNonWorking[] = {&KCategory1, &KCategory3 ,&KCategory4, &KCategory7, &KCategory8, &KCategory9
    , &KCategory10, &KCategory11, &KCategory12, &KCategory13, &KCategory14, &KCategory19, &KCategory20, &KCategory21
    , &KCategory22, &KCategory23, &KCategory24, &KCategory25, &KCategory26};
    
    TInt errorList[] = {KErrBadName, KErrBadName, KErrBadName, KErrBadName, KErrBadName ,KErrBadName,KErrBadName,
                   KErrBadName, KErrBadName, KErrArgument, KErrBadName, KErrArgument, KErrArgument,
                   KErrArgument, KErrArgument,KErrArgument, KErrBadName, KErrBadName, KErrNotReady};
                   */
    //////////////////////////////////////////////////
    
    CPosLandmarkDatabase* db = CPosLandmarkDatabase::OpenL();
    CleanupStack::PushL(db);
    
    CPosLmCategoryManager* categoryManager = CPosLmCategoryManager::NewL(*db);
    CleanupStack::PushL(categoryManager);
    
    TBuf<100> buf;
    
    for (TInt i=0;i<KNrOfUris;i++)
        {
        CPosLandmarkCategory* cat = CPosLandmarkCategory::NewL();
        CleanupStack::PushL(cat);
        iLog->Put(_L("Set name to:"));
        iLog->Put(*listOfCategories[i]);
        TRAPD(err, cat->SetCategoryNameL(*listOfCategories[i]));
        if (err == KErrNone)
            {
            iLog->Put(_L("AddCategory"));
            TPosLmItemId id = -1;
            TRAPD(err2, id = categoryManager->AddCategoryL(*cat));
            User::After(200000);
            if (err2 != KErrNone)
                {
                buf.Format(_L("Error %d from AddCategoryL"), err2);
                LogErrorAndLeave(buf);
                }
            else
                {
                buf.Format(_L("Checking landmark with id %d"), id);
                iLog->Put(buf);
                
                CPosLandmarkCategory* category = categoryManager->ReadCategoryLC(id);
                User::After(200000);
                TPtrC catName;
                category->GetCategoryName(catName);
                iLog->Put(catName);
                if (catName.CompareC(*listOfCategories[i]) != KErrNone) iLog->Put(_L("ERROR: Names are not equal"));
                CleanupStack::PopAndDestroy(category);
                }
            }
        else
            {
            buf.Format(_L("Error %d from SetCategoryNameL"), err);
            LogErrorAndLeave(buf);
            }
        CleanupStack::PopAndDestroy(cat);
        ExecuteAndDeleteLD(db->CompactL());
        }
    
    CleanupStack::PopAndDestroy(categoryManager);
    CleanupStack::PopAndDestroy(db);
    }
//  End of File