landmarks/locationlandmarks/tsrc/LandmarkTestModule/src/FT_CPosTp19.cpp
branchRCL_3
changeset 44 2b4ea9893b66
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/landmarks/locationlandmarks/tsrc/LandmarkTestModule/src/FT_CPosTp19.cpp	Tue Aug 31 15:37:04 2010 +0300
@@ -0,0 +1,269 @@
+/*
+* 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_CPosTp19.h"
+#include <EPos_CPosLandmarkDatabase.h>  
+#include <EPos_CPosLandmarkDatabase.h>
+#include <EPos_CPosLandmarkSearch.h> 
+
+// ================= MEMBER FUNCTIONS =======================
+// ---------------------------------------------------------
+// CPosTp19::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CPosTp19::CloseTest()
+    {
+    delete iDatabase;
+    iDatabase = NULL;
+    
+    delete iCategoryManager;
+    iCategoryManager = NULL;
+    
+    iCategoryIds.Close();
+    iCategoryNames.ResetAndDestroy();
+    
+    iGlobalCategoryNames.Close();
+    iGlobalCategoryIds.Close();    
+    
+    iCategories.ResetAndDestroy();
+    iCategories.Close();    
+    }
+
+// ---------------------------------------------------------
+// CPosTp19::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CPosTp19::StartL()
+    {    
+    iLog->Log(_L("**** Testing CPosCategoryManager():: GetCategoires methods ****"));    
+    
+    
+    RemoveDefaultDbL();
+    RemoveAllLmDatabasesL();   
+        
+    iDatabase = CPosLandmarkDatabase::OpenL(); // return default database    
+    if (iDatabase->IsInitializingNeeded())
+       {
+       ExecuteAndDeleteLD(iDatabase->InitializeL());        
+       }
+       
+    iLog->Log(_L(" Default database opened and initialised "));    
+
+    iCategoryManager = CPosLmCategoryManager::NewL(*iDatabase); 
+
+    // Test with non-global categories   
+    TestGetByNameL();        
+    
+    /*
+     * Test with global categories 
+     */   
+    
+    // Added for testing 
+    ExecuteAndDeleteLD(iCategoryManager->ResetGlobalCategoriesL()); 
+    
+    iLog->Log(_L(" ******** Testing with global categories ******"));    
+    
+    TestGetGlobalL();      
+    }
+
+// ---------------------------------------------------------
+// CPosTp19::TestGetGlobal
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CPosTp19::TestGetGlobalL()
+    {
+    _LIT(KGetGlobalErr, "GetGlobalCategoryL should return KPosLmNullItemId for category Id = 0");
+    _LIT(KGetGlobalErr2, "GetGlobalCategoryL should return KPosLmNullItemId for non existing categories");    // Rajesh : Commented 
+    
+    SetupGlobalCategoriesL();
+    TBuf<100> info;
+    info.Zero();
+    TPosLmItemId id(0);
+    
+    /*
+     * Test with global categories 
+     */        
+    iLog->Log(_L("Testing GetGlobalCategoryL() with non existing global category( catId 0 )"));  
+    id = iCategoryManager->GetGlobalCategoryL(0);
+    AssertTrueSecL(id == KPosLmNullItemId, KGetGlobalErr);
+
+    iLog->Log(_L("Testing GlobalCategoryNameL() with non existing global category (catid 0)"));      
+    HBufC* name = iCategoryManager->GlobalCategoryNameL(0);  
+    CleanupStack::PushL(name);
+    AssertTrueSecL(name == NULL, KGetGlobalErr);
+    CleanupStack::PopAndDestroy(name);
+    
+    // Test with non existing category id    
+    iLog->Log(_L("Testing GetGlobalCategoryL() with non existing global category (CatId = 500)"));      
+    id = iCategoryManager->GetGlobalCategoryL(500);
+    AssertTrueSecL(id == KPosLmNullItemId, KGetGlobalErr2);
+    
+    iLog->Log(_L("Testing GlobalCategoryNameL() with non existing global category (CatId = 500)"));      
+    name = iCategoryManager->GlobalCategoryNameL(500);
+    CleanupStack::PushL(name);
+    AssertTrueSecL(name == NULL, KGetGlobalErr2);
+    CleanupStack::PopAndDestroy(name);      
+    
+    iLog->Log(_L("Testing GetGlobalCategoryL() and GlobalCategoryNameL() with valid categories)"));        
+    
+    for (TInt i=0; i<iGlobalCategoryNames.Count(); i++)
+        {        
+        // Get the id of the global category in the db
+        TPosLmItemId catId = iCategoryManager->GetGlobalCategoryL(iGlobalCategoryIds[i]);        
+        CPosLandmarkCategory* category = iCategoryManager->ReadCategoryLC( catId );
+        
+        // Compare the Ids of the global categories        
+        if ( category->GlobalCategory() != iGlobalCategoryIds[i])
+            {
+            iLog->Log(_L("Incorrect category id returned"));
+            _LIT(KIds, "Expected: %d, returned %d");         
+            info.Format(KIds, iGlobalCategoryIds[i], category->GlobalCategory());
+            iLog->Log(info);
+            info.Zero();
+            User::Leave(KErrGeneral);   
+            }                   
+        CleanupStack::PopAndDestroy( category);
+        
+        HBufC* name = iCategoryManager->GlobalCategoryNameL(iGlobalCategoryIds[i]);
+        CleanupStack::PushL(name);
+
+        if (name->CompareC(*iGlobalCategoryNames[i]))
+            {
+            iLog->Log(_L("Incorrect global category name"));
+            iLog->Log(_L("Expected: "));
+            iLog->Log(*iGlobalCategoryNames[i]);
+            iLog->Log(_L("Returned: "));
+            iLog->Log(*name);
+            User::Leave(KErrGeneral);
+            }
+        CleanupStack::PopAndDestroy(name);
+        }
+    }
+
+// ---------------------------------------------------------
+// CLandmarkTestProcedureBase::SetupGlobalCategoriesL()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+   
+ void CPosTp19::SetupGlobalCategoriesL()
+    {    
+    ReadGlobalCategoriesFromResourceL( iGlobalCategoryIds, iGlobalCategoryNames );
+    }
+
+
+// ---------------------------------------------------------
+// CPosTp19::TestGetByName
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CPosTp19::TestGetByNameL()
+    {
+    _LIT(KEmptyStringErr, "GetCategoryL with an empty string should return KErrArgument, not %d");
+    _LIT(KMaxStringErr, "GetCategoryL with an maximum length string should return KErrArgument, not %d");
+    _LIT(KNotFoundErr, "GetCategoryL should return KPosLmNullItemId for a category that doesn't exist in the db, not %d");
+   
+    iLog->Log(_L(" Testing CPosCategoryManager::GetCategoryL() with wrong arguement (Empty name string)"));    
+    TRAPD(err, iCategoryManager->GetCategoryL(_L("")));
+    AssertTrueSecL(err == KErrArgument, KEmptyStringErr, err);
+
+    iLog->Log(_L(" Testing CPosCategoryManager::GetCategoryL() with wrong arguement (Name not existing)"));    
+    TPosLmItemId categoryId = iCategoryManager->GetCategoryL(_L("kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"));
+    AssertTrueSecL(categoryId == KPosLmNullItemId, KNotFoundErr, categoryId);    
+
+    // Test with maximum lenght of name    
+    iLog->Log(_L(" Testing CPosCategoryManager::GetCategoryL() with wrong arguement (With max length of Name not existing)"));    
+    _LIT(KMaxName124, "Category12Category12Category12Category12Category12Category12Category12Category12Category12Category12Category12Category12_ABC");
+    categoryId = iCategoryManager->GetCategoryL(KMaxName124);
+    AssertTrueSecL(categoryId == KPosLmNullItemId, KNotFoundErr, categoryId);
+
+    // Test with more than maximum lenght of name
+    iLog->Log(_L(" Testing CPosCategoryManager::GetCategoryL() with wrong arguement (With more than max length of Name not existing)"));    
+    _LIT(KMaxName, "Category12Category12Category12Category12Category12Category12Category12Category12Category12Category12Category12Category12Category12");
+    TRAP(err, iCategoryManager->GetCategoryL(KMaxName));
+    AssertTrueSecL(err == KErrArgument, KMaxStringErr, err);   
+    
+    // Add some categories and verify the addition
+    iLog->Log(_L(" Testing with some valid categories in the database ( +ve testing )"));    
+    AddCategoriesL (10);
+    VerifyAddedCategoriesL();
+    }
+    
+// ---------------------------------------------------------
+// CPosTp19:AddCategoriesL
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CPosTp19::AddCategoriesL( TInt aNumofCats )
+    {
+    _LIT(KName, "Category - %d");
+    TInt err = KErrLocked;
+    for (TUint i = 0; i<aNumofCats ; i++)
+        {
+        TBuf<100> categoryName;
+        categoryName.Format( KName,i );       
+        CPosLandmarkCategory* lmc = CPosLandmarkCategory::NewLC();
+        lmc->SetCategoryNameL( categoryName );
+        err = KErrLocked;
+        while ( err == KErrLocked )
+            {
+            TRAP(err, iCategoryManager->AddCategoryL( *lmc ));
+            }        
+        iCategories.Append(lmc);         
+        CleanupStack::Pop( lmc );
+        }   
+    }
+    
+// ---------------------------------------------------------
+// CPosTp19:VerifyAddedCategoriesL()
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//     
+void CPosTp19::VerifyAddedCategoriesL()
+    {    
+     TInt noOfCats = iCategoryNames.Count();     
+     // Verify the added categories 
+     for ( TUint i = 0; i < noOfCats; i++ )     
+         {
+         CPosLandmarkCategory* cat = iCategories[i];
+         TPtrC catName;
+         cat->GetCategoryName( catName );                 
+         // Get the categories from the database using name        
+         TPosLmItemId catId = iCategoryManager->GetCategoryL( catName);
+         
+         if ( catId != cat->CategoryId())
+             {
+             TBuf<150> buf;
+             buf.Format(_L("Unable to verify the added non-global category Id %d "), cat->CategoryId() );
+             iLog->Log(buf);
+             User::Leave(-1);   
+             }          
+         }        
+    }    
+//  End of File