web_pub/favourites_engine_api/tsrc/src/FavouritesItemListTestCases.cpp
changeset 8 7c90e6132015
child 36 0ed94ceaa377
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web_pub/favourites_engine_api/tsrc/src/FavouritesItemListTestCases.cpp	Fri May 08 08:25:06 2009 +0300
@@ -0,0 +1,544 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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: 
+*
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <e32math.h>
+#include "FavouritesEngineTest.h"
+
+// EXTERNAL DATA STRUCTURES
+// None
+
+// EXTERNAL FUNCTION PROTOTYPES  
+// None
+
+// CONSTANTS
+// None
+
+// MACROS
+// None
+
+// LOCAL CONSTANTS AND MACROS
+// None
+
+// MODULE DATA STRUCTURES
+// None
+
+// LOCAL FUNCTION PROTOTYPES
+// None
+
+// FORWARD DECLARATIONS
+// None
+
+// ==================== LOCAL FUNCTIONS =======================================
+
+// -----------------------------------------------------------------------------
+// CompareItemNamesL
+// Compare the names of two favourite list items.
+// Returns: negative, if aItem1.Name is less than aItem2.Name
+//          0, if aItem1.Name is the same as aItem2.Name 
+//          positive, if aItem1.Name is greater than aItem2.Name
+// -----------------------------------------------------------------------------
+//
+LOCAL_C TInt CompareItemNamesL(const CFavouritesItem& aItem1, const CFavouritesItem& aItem2)
+    {
+    return aItem1.Name().CompareF(aItem2.Name());
+    }
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+/*
+-------------------------------------------------------------------------------
+
+    Class: CFavouritesEngineTest
+
+    Method: ListConstructorTestL
+
+    Description: Test the item list constructor method.
+  
+    Parameters:  TTestResult& aErrorDescription: out:   
+                    Test result and on error case a short description of error
+
+    Return Values: TInt: Always KErrNone to indicate that test was valid
+
+    Errors/Exceptions: None
+
+    Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+TInt CFavouritesEngineTest::ListConstructorTestL( TTestResult& aResult )
+    {
+    /* Simple server connect */
+    _LIT( KDefinition ,"State");
+    _LIT( KData ,"Test the item list constructor method");
+    TestModuleIf().Printf( 0, KDefinition, KData );
+
+    CFavouritesItemList* list = new (ELeave) CFavouritesItemList();
+
+    _LIT( KData2 ,"Finished");
+    TestModuleIf().Printf( 0, KDefinition, KData2 );
+
+    if (list)
+	    {
+	    _LIT( KDescription , "Test case passed");
+	    aResult.SetResult( KErrNone, KDescription );
+	    
+	    delete list;
+	    }
+    else
+	    {
+	    _LIT( KDescription , "Test case failed");
+	    aResult.SetResult( KErrGeneral, KDescription );
+	    }
+
+    // Case was executed
+    return KErrNone;
+    }
+
+/*
+-------------------------------------------------------------------------------
+
+    Class: CFavouritesEngineTest
+
+    Method: ListDestructorTestL
+
+    Description: Test the item list destructor method.
+  
+    Parameters:  TTestResult& aErrorDescription: out:   
+                    Test result and on error case a short description of error
+
+    Return Values: TInt: Always KErrNone to indicate that test was valid
+
+    Errors/Exceptions: None
+
+    Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+TInt CFavouritesEngineTest::ListDestructorTestL( TTestResult& aResult )
+    {
+    /* Simple server connect */
+    _LIT( KDefinition ,"State");
+    _LIT( KData ,"Test the item list destructor method");
+    TestModuleIf().Printf( 0, KDefinition, KData );
+
+    CFavouritesItemList* list = new (ELeave) CFavouritesItemList();
+
+    list->~CFavouritesItemList();
+    
+    _LIT( KData2 ,"Finished");
+    TestModuleIf().Printf( 0, KDefinition, KData2 );
+
+    if (list)
+	    {
+	    _LIT( KDescription , "Test case passed");
+	    aResult.SetResult( KErrNone, KDescription );
+	    
+	    delete list;
+	    }
+    else
+	    {
+	    _LIT( KDescription , "Test case failed");
+	    aResult.SetResult( KErrGeneral, KDescription );
+	    }
+
+    // Case was executed
+    return KErrNone;
+    }
+
+/*
+-------------------------------------------------------------------------------
+
+    Class: CFavouritesEngineTest
+
+    Method: ListDeleteTestL
+
+    Description: Test the item list Delete method.
+  
+    Parameters:  TTestResult& aErrorDescription: out:   
+                    Test result and on error case a short description of error
+
+    Return Values: TInt: Always KErrNone to indicate that test was valid
+
+    Errors/Exceptions: None
+
+    Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+TInt CFavouritesEngineTest::ListDeleteTestL( TTestResult& aResult )
+    {
+    /* Simple server connect */
+    _LIT( KDefinition ,"State");
+    _LIT( KData ,"Test the item list Delete method");
+    TestModuleIf().Printf( 0, KDefinition, KData );
+
+    iFavouritesDb.Open( iFavouritesSession, KTestDbName );
+    CleanupClosePushL<RFavouritesDb>( iFavouritesDb );
+
+    CreatePopulatedDbL();
+    
+    CFavouritesItemList* list = new (ELeave) CFavouritesItemList();
+
+    iFavouritesDb.GetAll( *list, KFavouritesRootUid );
+
+    TInt countBeforeDelete = list->Count();
+    
+    list->Delete( 1 );
+    
+    TInt countAfterDelete = list->Count();
+
+    _LIT( KData2 ,"Finished");
+    TestModuleIf().Printf( 0, KDefinition, KData2 );
+
+    if (countAfterDelete == countBeforeDelete - 1)
+	    {
+	    _LIT( KDescription , "Test case passed");
+	    aResult.SetResult( KErrNone, KDescription );
+	    }
+    else
+	    {
+	    _LIT( KDescription , "Test case failed");
+	    aResult.SetResult( KErrGeneral, KDescription );
+	    }
+
+    delete list;
+    CleanupStack::PopAndDestroy(); // iFavouritesDb
+    iFavouritesSession.DeleteDatabase( KTestDbName );
+
+    // Case was executed
+    return KErrNone;
+    }
+
+/*
+-------------------------------------------------------------------------------
+
+    Class: CFavouritesEngineTest
+
+    Method: ListDeleteRangeTestL
+
+    Description: Test deleting a range of items using the item list Delete method.
+  
+    Parameters:  TTestResult& aErrorDescription: out:   
+                    Test result and on error case a short description of error
+
+    Return Values: TInt: Always KErrNone to indicate that test was valid
+
+    Errors/Exceptions: None
+
+    Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+TInt CFavouritesEngineTest::ListDeleteRangeTestL( TTestResult& aResult )
+    {
+    /* Simple server connect */
+    _LIT( KDefinition ,"State");
+    _LIT( KData ,"Test the item list Delete method");
+    TestModuleIf().Printf( 0, KDefinition, KData );
+
+    iFavouritesDb.Open( iFavouritesSession, KTestDbName );
+    CleanupClosePushL<RFavouritesDb>( iFavouritesDb );
+
+    CreatePopulatedDbL();
+    
+    CFavouritesItemList* list = new (ELeave) CFavouritesItemList();
+
+    iFavouritesDb.GetAll( *list, KFavouritesRootUid );
+
+    TInt countBeforeDelete = list->Count();
+    
+    list->Delete( 1, 3 );
+    
+    TInt countAfterDelete = list->Count();
+
+    _LIT( KData2 ,"Finished");
+    TestModuleIf().Printf( 0, KDefinition, KData2 );
+
+    if (countAfterDelete == countBeforeDelete - 3)
+	    {
+	    _LIT( KDescription , "Test case passed");
+	    aResult.SetResult( KErrNone, KDescription );
+	    }
+    else
+	    {
+	    _LIT( KDescription , "Test case failed");
+	    aResult.SetResult( KErrGeneral, KDescription );
+	    }
+
+    delete list;
+    CleanupStack::PopAndDestroy(); // iFavouritesDb
+    iFavouritesSession.DeleteDatabase( KTestDbName );
+
+    // Case was executed
+    return KErrNone;
+    }
+
+/*
+-------------------------------------------------------------------------------
+
+    Class: CFavouritesEngineTest
+
+    Method: ListSortTestL
+
+    Description: Test sorting the list using the Sort method.
+  
+    Parameters:  TTestResult& aErrorDescription: out:   
+                    Test result and on error case a short description of error
+
+    Return Values: TInt: Always KErrNone to indicate that test was valid
+
+    Errors/Exceptions: None
+
+    Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+TInt CFavouritesEngineTest::ListSortTestL( TTestResult& aResult )
+    {
+    /* Simple server connect */
+    _LIT( KDefinition ,"State");
+    _LIT( KData ,"Test the item list Delete method");
+    TestModuleIf().Printf( 0, KDefinition, KData );
+
+    iFavouritesDb.Open( iFavouritesSession, KTestDbName );
+    CleanupClosePushL<RFavouritesDb>( iFavouritesDb );
+
+    CreatePopulatedDbL();
+    
+    CFavouritesItemList* list = new (ELeave) CFavouritesItemList();
+
+    iFavouritesDb.GetAll( *list, KFavouritesRootUid );
+
+    list->SortL( &CompareItemNamesL );
+
+    _LIT( KData2 ,"Finished");
+    TestModuleIf().Printf( 0, KDefinition, KData2 );
+    
+    const CFavouritesItem* firstItem = list->ItemByUid( list->IndexToUid( 0 ) );
+
+    if (firstItem->Name() == _L("iItem1"))
+	    {
+	    _LIT( KDescription , "Test case passed");
+	    aResult.SetResult( KErrNone, KDescription );
+	    }
+    else
+	    {
+	    _LIT( KDescription , "Test case failed");
+	    aResult.SetResult( KErrGeneral, KDescription );
+	    }
+
+    delete list;
+    CleanupStack::PopAndDestroy(); // iFavouritesDb
+    iFavouritesSession.DeleteDatabase( KTestDbName );
+
+    // Case was executed
+    return KErrNone;
+    }
+
+/*
+-------------------------------------------------------------------------------
+
+    Class: CFavouritesEngineTest
+
+    Method: ListUidToIndexTestL
+
+    Description: Test uid to index conversion using the UidToIndex method.
+  
+    Parameters:  TTestResult& aErrorDescription: out:   
+                    Test result and on error case a short description of error
+
+    Return Values: TInt: Always KErrNone to indicate that test was valid
+
+    Errors/Exceptions: None
+
+    Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+TInt CFavouritesEngineTest::ListUidToIndexTestL( TTestResult& aResult )
+    {
+    /* Simple server connect */
+    _LIT( KDefinition ,"State");
+    _LIT( KData ,"Test the item list Delete method");
+    TestModuleIf().Printf( 0, KDefinition, KData );
+
+    iFavouritesDb.Open( iFavouritesSession, KTestDbName );
+    CleanupClosePushL<RFavouritesDb>( iFavouritesDb );
+
+    CreatePopulatedDbL();
+    
+    CFavouritesItemList* list = new (ELeave) CFavouritesItemList();
+
+    iFavouritesDb.GetAll( *list, KFavouritesRootUid );
+    
+    list->SortL( &CompareItemNamesL );
+
+    const CFavouritesItem* firstItem = list->ItemByUid( list->IndexToUid( 1 ) );
+
+    _LIT( KData2 ,"Finished");
+    TestModuleIf().Printf( 0, KDefinition, KData2 );
+    
+    if (firstItem->Uid() == list->IndexToUid( 1 ))
+	    {
+	    _LIT( KDescription , "Test case passed");
+	    aResult.SetResult( KErrNone, KDescription );
+	    }
+    else
+	    {
+	    _LIT( KDescription , "Test case failed");
+	    aResult.SetResult( KErrGeneral, KDescription );
+	    }
+
+    delete list;
+    CleanupStack::PopAndDestroy(); // iFavouritesDb
+    iFavouritesSession.DeleteDatabase( KTestDbName );
+
+    // Case was executed
+    return KErrNone;
+    }
+
+/*
+-------------------------------------------------------------------------------
+
+    Class: CFavouritesEngineTest
+
+    Method: ListIndexToUidTestL
+
+    Description: Test index to uid conversion using the UidToIndex method.
+  
+    Parameters:  TTestResult& aErrorDescription: out:   
+                    Test result and on error case a short description of error
+
+    Return Values: TInt: Always KErrNone to indicate that test was valid
+
+    Errors/Exceptions: None
+
+    Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+TInt CFavouritesEngineTest::ListIndexToUidTestL( TTestResult& aResult )
+    {
+    /* Simple server connect */
+    _LIT( KDefinition ,"State");
+    _LIT( KData ,"Test the item list Delete method");
+    TestModuleIf().Printf( 0, KDefinition, KData );
+
+    iFavouritesDb.Open( iFavouritesSession, KTestDbName );
+    CleanupClosePushL<RFavouritesDb>( iFavouritesDb );
+
+    CreatePopulatedDbL();
+    
+    CFavouritesItemList* list = new (ELeave) CFavouritesItemList();
+
+    iFavouritesDb.GetAll( *list, KFavouritesRootUid );
+    
+    list->SortL( &CompareItemNamesL );
+    
+    TInt itemUid = list->IndexToUid(1);
+
+    _LIT( KData2 ,"Finished");
+    TestModuleIf().Printf( 0, KDefinition, KData2 );
+    
+    if (itemUid == list->At(1)->Uid())
+	    {
+	    _LIT( KDescription , "Test case passed");
+	    aResult.SetResult( KErrNone, KDescription );
+	    }
+    else
+	    {
+	    _LIT( KDescription , "Test case failed");
+	    aResult.SetResult( KErrGeneral, KDescription );
+	    }
+
+    delete list;
+    CleanupStack::PopAndDestroy(); // iFavouritesDb
+    iFavouritesSession.DeleteDatabase( KTestDbName );
+
+    // Case was executed
+    return KErrNone;
+    }
+
+/*
+-------------------------------------------------------------------------------
+
+    Class: CFavouritesEngineTest
+
+    Method: ListItemByUidTestL
+
+    Description: Test retrieveing an item by Id using the ItemByUid method.
+  
+    Parameters:  TTestResult& aErrorDescription: out:   
+                    Test result and on error case a short description of error
+
+    Return Values: TInt: Always KErrNone to indicate that test was valid
+
+    Errors/Exceptions: None
+
+    Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+TInt CFavouritesEngineTest::ListItemByUidTestL( TTestResult& aResult )
+    {
+    /* Simple server connect */
+    _LIT( KDefinition ,"State");
+    _LIT( KData ,"Test the item list Delete method");
+    TestModuleIf().Printf( 0, KDefinition, KData );
+
+    iFavouritesDb.Open( iFavouritesSession, KTestDbName );
+    CleanupClosePushL<RFavouritesDb>( iFavouritesDb );
+
+    CreatePopulatedDbL();
+    
+    CFavouritesItemList* list = new (ELeave) CFavouritesItemList();
+
+    iFavouritesDb.GetAll( *list, KFavouritesRootUid );
+    
+    list->SortL( &CompareItemNamesL );
+    
+    const CFavouritesItem* firstItem = list->ItemByUid( list->IndexToUid( 0 ) );
+
+    _LIT( KData2 ,"Finished");
+    TestModuleIf().Printf( 0, KDefinition, KData2 );
+    
+    if (firstItem->Name() == _L("iItem1"))
+	    {
+	    _LIT( KDescription , "Test case passed");
+	    aResult.SetResult( KErrNone, KDescription );
+	    }
+    else
+	    {
+	    _LIT( KDescription , "Test case failed");
+	    aResult.SetResult( KErrGeneral, KDescription );
+	    }
+
+    delete list;
+    CleanupStack::PopAndDestroy(); // iFavouritesDb
+    iFavouritesSession.DeleteDatabase( KTestDbName );
+
+    // Case was executed
+    return KErrNone;
+    }
+
+// ================= OTHER EXPORTED FUNCTIONS =================================
+
+// End of File