devmngt_plat/services_db_api/tsrc/ServicesDbApiTest/src/ServicesDbApiTestBlocks.cpp
changeset 0 254040eb3b7d
child 32 3fec62e6e7fc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/devmngt_plat/services_db_api/tsrc/ServicesDbApiTest/src/ServicesDbApiTestBlocks.cpp	Thu Dec 17 08:46:07 2009 +0200
@@ -0,0 +1,590 @@
+/*
+* Copyright (c) 2002 - 2007 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:  This cpp file has the functions to test Services DB API.
+*
+*/
+
+
+
+// [INCLUDE FILES]
+#include <e32svr.h>
+#include <StifParser.h>
+#include <Stiftestinterface.h>
+#include "ServicesDbApiTest.h"
+#include <ServicesDbApiTest.rsg>
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CServicesDbApiTest::Delete
+// Delete here all resources allocated and opened from test methods. 
+// Called from destructor. 
+// -----------------------------------------------------------------------------
+//
+void CServicesDbApiTest::Delete() 
+    {
+
+    }
+
+// -----------------------------------------------------------------------------
+// CServicesDbApiTest::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+//
+TInt CServicesDbApiTest::RunMethodL( 
+    CStifItemParser& aItem ) 
+    {
+
+    static TStifFunctionInfo const KFunctions[] =
+        {  
+        ENTRY( "InitializeSeviceDB",         CServicesDbApiTest::InitializeSeviceDB ),
+        ENTRY( "InitializeonStackSeviceDB",  CServicesDbApiTest::InitializeonStackSeviceDB ),
+        ENTRY( "CountSeviceDB",              CServicesDbApiTest::CountSeviceDB),
+        ENTRY( "ServiceUidLSeviceDB",        CServicesDbApiTest::ServiceUidLSeviceDB),
+        ENTRY( "ServiceStringLCSeviceDB",    CServicesDbApiTest::ServiceStringLCSeviceDB),
+        ENTRY( "ServiceStringLCUIDSeviceDB", CServicesDbApiTest::ServiceStringLCuidSeviceDB),
+        ENTRY( "ServiceNameLCSeviceDB",      CServicesDbApiTest::ServiceNameLCSeviceDB),
+        ENTRY( "ServiceNameLCuidSeviceDB",   CServicesDbApiTest::ServiceNameLCuidSeviceDB),
+          };
+
+    const TInt count = sizeof( KFunctions ) / 
+                        sizeof( TStifFunctionInfo );
+
+    return RunInternalL( KFunctions, count, aItem );
+
+    }
+
+
+// -----------------------------------------------------------------------------
+// CServicesDbApiTest::CreateSeviceDBL
+// This function is used to create CServicesDB object. This function is used
+// to call CServicesDB::NewL and CServicesDB::NewLC functions. 
+// -----------------------------------------------------------------------------
+//
+TInt CServicesDbApiTest::CreateSeviceDBL( TInt aOption )
+{
+      
+     // Get CCoeEnv instance
+    CEikonEnv* eikEnv = CEikonEnv::Static();
+    // Initialize loader
+    //open our resource file
+    RConeResourceLoader resources(*eikEnv);
+    
+    TParse parse;
+    parse.Set(_L("c:ServicesDbApiTest.rsc"), &KDC_RESOURCE_FILES_DIR, NULL ); 
+     
+    TFileName fileName( parse.FullName() );
+    iLog->Log(_L("Opened Resource file named ::  "));   iLog->Log(fileName);
+         
+    TRAPD( error, resources.OpenL(fileName) ); //Open resource file
+    if ( KErrNone != error )
+    {
+        iLog->Log(_L("Error in opening resource file. ERROR = %d "),error); //return( error );
+        //Check on Z drive if not found on C drive
+        parse.Set(_L("z:ServicesDbApiTest.rsc"), &KDC_RESOURCE_FILES_DIR, NULL ); 
+        TFileName fileName1( parse.FullName() );
+        iLog->Log(_L("Opening Resource file named ::  "));   iLog->Log(fileName1);
+        
+        TRAPD( error1 , resources.OpenL(fileName1) );
+        if ( KErrNone != error1  )
+        {
+            iLog->Log(_L("Error in opening resource file. ERROR = %d "),error1); 
+            return( error1 ); 
+        }
+    }  
+  
+    TResourceReader reader;
+    eikEnv->CreateResourceReaderLC( reader, R_DA_SERVICE_MIME );
+    
+    if ( KFirstOption == aOption )
+    {
+        TRAPD( errorinNewL, iServicesDB=CServicesDB::NewL(&reader) );
+        if ( KErrNone != errorinNewL )
+        {
+            iLog->Log(_L("=>CServicesDB::NewL leaves"));
+        }
+        CleanupStack::PopAndDestroy(); //reader's resource
+        resources.Close();        
+        return ( errorinNewL );
+    }  
+    else 
+    {
+        TRAPD( errorinNewLC, CallNewlcL(reader) );
+        if( KErrNone != errorinNewLC )
+        { 
+            iLog->Log(_L("=>CServicesDB::NewLC leaves"));
+        }
+        CleanupStack::PopAndDestroy();
+        resources.Close();
+        return ( errorinNewLC );
+    }
+}
+
+
+// -----------------------------------------------------------------------------
+// CServicesDbApiTest::CallNewlcL
+// This function is used because we can not TRAP CServicesDB::NewLC
+// -----------------------------------------------------------------------------
+//
+void CServicesDbApiTest::CallNewlcL(  TResourceReader aResReader )
+{ 
+   iServicesDB = CServicesDB::NewLC( &aResReader );
+   CleanupStack::Pop();
+}
+
+
+// -----------------------------------------------------------------------------
+// CServicesDbApiTest::InitializeSeviceDB
+// Is used to test CServicesDB::NewL 
+// -----------------------------------------------------------------------------
+//
+TInt CServicesDbApiTest::InitializeSeviceDB( )
+{
+    TInt result;
+    TRAPD( error , result = CreateSeviceDBL( KFirstOption ) );
+    if ( KErrNone != error )
+    {  iLog->Log(_L("Services DB object not created with NewL.")); return ( error );  }
+    else
+    {  
+       if ( KErrNone != result )
+       {
+          iLog->Log(_L("Services DB object not created with NewL.")); return ( result );
+       }
+       else
+       {
+           iLog->Log(_L("Services DB object created with NewL."));       
+       }
+    }
+    return ( result );
+}
+
+
+// -----------------------------------------------------------------------------
+// CServicesDbApiTest::InitializeonStackSeviceDB
+// Is used to test CServicesDB::NewLC
+// -----------------------------------------------------------------------------
+//
+TInt CServicesDbApiTest::InitializeonStackSeviceDB( )
+{
+    TInt result;
+    TRAPD( error, result = CreateSeviceDBL( KSecondOption ) );
+    if ( KErrNone != error )
+    {  iLog->Log(_L("Services DB object not created with NewLC.")); return ( error );  }
+    else
+    {  
+        if ( KErrNone != result )
+        {
+           iLog->Log(_L("Services DB object not created with NewLC.")); return ( result );
+        }
+        else
+        {
+            iLog->Log(_L("Services DB object created with NewLC."));       
+        } 
+    }
+    return ( result );
+}
+
+
+// -----------------------------------------------------------------------------
+// CServicesDbApiTest::CountSeviceDB
+// Testing - IMPORT_C TInt Count() const;
+// -----------------------------------------------------------------------------
+//
+TInt CServicesDbApiTest::CountSeviceDB()
+{
+    TInt result = InitializeSeviceDB();
+    if ( KErrNone != result )
+        {
+            return ( result );
+        }
+    TInt nrServices=iServicesDB->Count();
+    iLog->Log(_L("Number of Services listed in resource file = %d"),nrServices);
+    if ( KNoOfServices != nrServices )
+    { 
+        iLog->Log(_L("The number of services returned by CServicesDB::COUNT is incorrect"));
+        return ( KErrGeneral );
+    }
+    return ( KErrNone );
+}
+
+// -----------------------------------------------------------------------------
+// CServicesDbApiTest::ServiceUidLSeviceDB
+// Testing - IMPORT_C TUid ServiceUidL(TInt aIndex) const;
+// -----------------------------------------------------------------------------
+//
+TInt CServicesDbApiTest::ServiceUidLSeviceDB( CStifItemParser& aItem )
+{
+    TInt result = InitializeSeviceDB();
+    if ( KErrNone != result )
+        {
+            return ( result );
+        }
+    TUid serviceUid;
+    TInt index;
+     
+    if( aItem.GetNextInt(index) != KErrNone )
+    { 
+        iLog->Log(_L("NO Index number provided, index is required parameter for testing ServiceUid "));
+        return ( KErrGeneral );
+    }
+
+    TRAPD( error, serviceUid = iServicesDB->ServiceUidL(index) );
+    if ( KErrNone != error )
+    {
+       iLog->Log(_L("Incorrect Index. There is no service matching the Index Number."));
+       iLog->Log(_L("=> ServiceUidL leaves when index is incorrect."));
+       return (error);
+    }
+        
+    iLog->Log(_L("UID of the Service[%d]=%d"),index,serviceUid.iUid);
+    
+    switch (index)
+        {
+        case KFirstServiceIndex: if (serviceUid.iUid == 0x101) 
+                {  iLog->Log(_L("Service UID is correct"));   }
+                else 
+                {  iLog->Log(_L("Service UID is incorrect")); return ( KErrGeneral );  }
+                break;
+        case KSecondServiceIndex: if (serviceUid.iUid == 0x102) 
+                {  iLog->Log(_L("Service UID is correct"));   }
+                else 
+                {  iLog->Log(_L("Service UID is incorrect")); return ( KErrGeneral );  }
+                break;
+        case KThirdServiceIndex: if (serviceUid.iUid == 0x103)
+                {  iLog->Log(_L("Service UID is correct"));   }
+                else 
+                {  iLog->Log(_L("Service UID is incorrect")); return ( KErrGeneral );  }
+                break;    
+        default : break;
+        };
+
+    return ( KErrNone );
+}
+
+
+// -----------------------------------------------------------------------------
+// CServicesDbApiTest::ServiceStringLCSeviceDB
+// Testing - IMPORT_C HBufC* ServiceStringLC(TInt aIndex, const TDes& aParam) const;
+// -----------------------------------------------------------------------------
+//
+TInt CServicesDbApiTest::ServiceStringLCSeviceDB( CStifItemParser& aItem )
+{    
+    TInt result = InitializeSeviceDB();
+    if ( KErrNone != result )
+    {
+        return ( result );
+    }
+    TInt index;
+    TBuf<KBufSize> format(KEmptyString);
+    
+    if( aItem.GetNextInt(index) != KErrNone )
+    { 
+        iLog->Log(_L("NO Index number provided, index is required parameter for testing ServiceUid "));
+        return ( KErrGeneral );
+    }
+    TInt res;
+    TRAPD( error, res = CallServiceStringLCSeviceDBL(index,format ));
+    if ( KErrNone != error )
+    {
+        iLog->Log(_L("Incorrect Index. There is no service matching the Index Number."));
+        iLog->Log(_L("=> ServiceStringLC leaves when index is incorrect."));
+        return (error);
+    }
+     
+    return ( res ); 
+}
+
+
+// -----------------------------------------------------------------------------
+// CServicesDbApiTest::CallServiceStringLCSeviceDBL
+// This function is used because we can not trap ServiceStringLC
+// -----------------------------------------------------------------------------
+//
+TInt CServicesDbApiTest::CallServiceStringLCSeviceDBL(TInt aIndex,const TDes& aParam )
+{
+    HBufC *string;
+    string=iServicesDB->ServiceStringLC(aIndex,aParam);
+    iLog->Log(_L("LOCALIZED name of the Service[%d] = "),aIndex);
+    iLog->Log(*string);
+    
+    switch (aIndex)
+        {
+        case KFirstServiceIndex: if(!(string->Des().Compare(_L("Open Localized"))))
+                {  iLog->Log(_L("LOCALIZED name is correct"));   }
+                else 
+                {  iLog->Log(_L("LOCALIZED name is incorrect"));
+                   CleanupStack::PopAndDestroy(string); return ( KErrGeneral );  }
+                break;
+        case KSecondServiceIndex: if(!(string->Des().Compare(_L("Upload Localized"))))
+                {  iLog->Log(_L("LOCALIZED name is correct"));   }
+                else 
+                {  iLog->Log(_L("LOCALIZED name is incorrect")); 
+                   CleanupStack::PopAndDestroy(string); return ( KErrGeneral );  }
+                break;
+        case KThirdServiceIndex: if(!(string->Des().Compare(_L("Print Localized %U"))))
+                {  iLog->Log(_L("LOCALIZED name is correct"));   }
+                else 
+                {  iLog->Log(_L("LOCALIZED name is incorrect"));  
+                   CleanupStack::PopAndDestroy(string);return ( KErrGeneral );  }
+                break;    
+        default : break;
+        }; 
+    
+    CleanupStack::PopAndDestroy(string);    
+    return ( KErrNone );
+
+}
+
+
+// -----------------------------------------------------------------------------
+// CServicesDbApiTest::ServiceStringLCuidSeviceDB
+// Testing - IMPORT_C HBufC* ServiceStringLC(TUid aServiceUid, const TDes& aParam) const;
+// -----------------------------------------------------------------------------
+//
+TInt CServicesDbApiTest::ServiceStringLCuidSeviceDB( CStifItemParser& aItem )
+{
+    TInt result = InitializeSeviceDB();
+    if ( KErrNone != result )
+    {
+        return ( result );
+    }
+    TBuf<KBufSize> format(KEmptyString);
+    TInt uid;
+    
+    if( aItem.GetNextInt(uid) != KErrNone )
+    { 
+        iLog->Log(_L("NO UID number provided, UID is required parameter for testing ServiceStringLC "));
+        return ( KErrGeneral );
+    }   
+    TUid serviceUID= TUid::Uid(uid);
+    iLog->Log(_L("serviceUID = %d"),serviceUID.iUid);
+    TInt res ;
+    TRAPD(error, res = CallServiceStringLCuidSeviceDBL(serviceUID,format));
+    if ( KErrNone != error )
+    {
+        iLog->Log(_L("=> ServiceStringLC leaves. Error code = %d"),error);
+        return (error);
+    }
+    return ( res ); 
+
+}
+
+
+// -----------------------------------------------------------------------------
+// CServicesDbApiTest::CallServiceStringLCuidSeviceDBL
+// This function is used because we can not trap ServiceStringLC
+// -----------------------------------------------------------------------------
+//
+TInt CServicesDbApiTest::CallServiceStringLCuidSeviceDBL( TUid aServiceUid, const TDes& aParam )
+{
+    HBufC *string;
+    string=iServicesDB->ServiceStringLC(aServiceUid,aParam);
+    if ( NULL != string )
+    {
+       iLog->Log(_L("LOCALIZED name of the Service with UID(%d) = "),aServiceUid.iUid);
+       iLog->Log(*string);
+    }
+    else 
+    {
+        iLog->Log(_L("No matching service found, Service UID provided is incorrect")); 
+    } 
+       
+    switch (aServiceUid.iUid)
+        {
+        case KFirstServiceUid: if(!(string->Des().Compare(_L("Open Localized"))))
+                {  iLog->Log(_L("LOCALIZED name is correct"));   }
+                else 
+                {  iLog->Log(_L("LOCALIZED name is incorrect")); 
+                   CleanupStack::PopAndDestroy(string); return ( KErrGeneral );  }
+                break;
+        case KSecondServiceUid: if(!(string->Des().Compare(_L("Upload Localized"))))
+                {  iLog->Log(_L("LOCALIZED name is correct"));   }
+                else 
+                {  iLog->Log(_L("LOCALIZED name is incorrect"));
+                   CleanupStack::PopAndDestroy(string); return ( KErrGeneral );  }
+                break;
+        case KThirdServiceUid: if(!(string->Des().Compare(_L("Print Localized %U"))))
+                {  iLog->Log(_L("LOCALIZED name is correct"));   }
+                else 
+                {  iLog->Log(_L("LOCALIZED name is incorrect"));  
+                   CleanupStack::PopAndDestroy(string);return ( KErrGeneral );  }
+                break;    
+        default : break;
+        }; 
+       
+    CleanupStack::PopAndDestroy(string);    
+    return ( KErrNone );
+}
+
+// -----------------------------------------------------------------------------
+// CServicesDbApiTest::ServiceNameLCSeviceDB
+// Testing - IMPORT_C HBufC* ServiceNameLC(TInt aIndex) const;
+// -----------------------------------------------------------------------------
+//
+TInt CServicesDbApiTest::ServiceNameLCSeviceDB( CStifItemParser& aItem )
+{
+    TInt result = InitializeSeviceDB();
+    if ( KErrNone != result )
+    {
+        return ( result );
+    }
+    TInt index;
+    TBuf<KBufSize> format(KEmptyString);
+    
+    if( aItem.GetNextInt(index) != KErrNone )
+    { 
+        iLog->Log(_L("NO Index number provided, index is required parameter for testing ServiceNameLC "));
+        return ( KErrGeneral );
+    }
+    iLog->Log(_L("checked till here"));
+    iLog->Log(_L("index = %d"),index);
+    
+    TRAPD(error,TInt res = CallServiceNameLCSeviceDBL(index));
+    if ( KErrNone != error )
+    {
+        iLog->Log(_L("Incorrect Index. There is no service matching the Index Number."));
+        iLog->Log(_L("=> ServiceNameLC leaves when index is incorrect."));
+        return (error);
+    }
+    return ( KErrNone ); 
+   
+}
+
+
+// -----------------------------------------------------------------------------
+// CServicesDbApiTest::ServiceNameLCSeviceDB
+// This function is used because we can not trap ServiceNameLC
+// -----------------------------------------------------------------------------
+//
+TInt CServicesDbApiTest::CallServiceNameLCSeviceDBL(TInt aIndex)
+{
+    HBufC *string;
+    string=iServicesDB->ServiceNameLC(aIndex);
+    iLog->Log(_L("GENERIC name of the Service[%d] = "),aIndex);
+    iLog->Log(*string);
+    
+    switch (aIndex)
+        {
+        case KFirstServiceIndex: if(!(string->Des().Compare(_L("Open"))))
+                {  iLog->Log(_L("GENERIC name is correct"));   }
+                else 
+                {  iLog->Log(_L("GENERIC name is incorrect"));
+                   CleanupStack::PopAndDestroy(string); return ( KErrGeneral );  }
+                break;
+        case KSecondServiceIndex: if(!(string->Des().Compare(_L("Upload"))))
+                {  iLog->Log(_L("GENERIC name is correct"));   }
+                else 
+                {  iLog->Log(_L("GENERIC name is incorrect"));
+                   CleanupStack::PopAndDestroy(string); return ( KErrGeneral );  }
+                break;
+        case KThirdServiceIndex: if(!(string->Des().Compare(_L("Print"))))
+                {  iLog->Log(_L("GENERIC name is correct"));   }
+                else 
+                {  iLog->Log(_L("GENERIC name is incorrect")); 
+                   CleanupStack::PopAndDestroy(string);return ( KErrGeneral );  }
+                break;    
+        default : break;
+        }; 
+    
+    CleanupStack::PopAndDestroy(string);    
+    return ( KErrNone );
+
+}
+
+
+// -----------------------------------------------------------------------------
+// CServicesDbApiTest::ServiceNameLCuidSeviceDB
+// Testing - IMPORT_C HBufC* ServiceNameLC(TUid aServiceUid) const;
+// -----------------------------------------------------------------------------
+//
+TInt CServicesDbApiTest::ServiceNameLCuidSeviceDB( CStifItemParser& aItem )
+{
+    
+    TInt result = InitializeSeviceDB();
+    if ( KErrNone != result )
+    {
+        return ( result );
+    }
+    TBuf<KBufSize> format(KEmptyString);
+    TInt uid;
+    
+    if( aItem.GetNextInt(uid) != KErrNone )
+    { 
+        iLog->Log(_L("NO UID number provided, UID is required parameter for testing ServiceStringLC "));
+        return ( KErrGeneral );
+    }
+    iLog->Log(_L("checked till here"));
+    
+    TUid serviceUID= TUid::Uid(uid);
+    iLog->Log(_L("serviceUID = %d"),serviceUID.iUid);
+    
+    TRAPD(error,TInt res = CallServiceNameLCuidSeviceDBL(serviceUID));
+    if ( KErrNone != error )
+    {
+        iLog->Log(_L("=> ServiceNameLC leaves."),error);
+        return (error);
+    }
+    return ( KErrNone ); 
+}
+
+
+// -----------------------------------------------------------------------------
+// CServicesDbApiTest::ServiceNameLCuidSeviceDB
+// This function is used because we can not trap ServiceNameLC
+// -----------------------------------------------------------------------------
+//
+TInt CServicesDbApiTest::CallServiceNameLCuidSeviceDBL( TUid aServiceUid )
+{
+    HBufC *string;
+    string=iServicesDB->ServiceNameLC(aServiceUid);
+    if ( NULL != string )
+    {
+       iLog->Log(_L("GENERIC name of the Service with UID(%d) = "),aServiceUid.iUid);
+       iLog->Log(*string);
+    }
+    else 
+    {
+        iLog->Log(_L("No matching service found, Service UID provided is incorrect")); 
+    } 
+       
+    switch (aServiceUid.iUid)
+        {
+        case KFirstServiceUid: if(!(string->Des().Compare(_L("Open"))))
+                {  iLog->Log(_L("GENERIC name is correct"));   }
+                else 
+                {  iLog->Log(_L("GENERIC name is incorrect")); 
+                   CleanupStack::PopAndDestroy(string); return ( KErrGeneral );  }
+                break;
+        case KSecondServiceUid: if(!(string->Des().Compare(_L("Upload"))))
+                {  iLog->Log(_L("GENERIC name is correct"));   }
+                else 
+                {  iLog->Log(_L("GENERIC name is incorrect"));
+                   CleanupStack::PopAndDestroy(string); return ( KErrGeneral );  }
+                break;
+        case KThirdServiceUid: if(!(string->Des().Compare(_L("Print"))))
+                {  iLog->Log(_L("GENERIC name is correct"));   }
+                else 
+                {  iLog->Log(_L("GENERIC name is incorrect"));  
+                   CleanupStack::PopAndDestroy(string);return ( KErrGeneral );  }
+                break;    
+        default : break;
+        }; 
+       
+    CleanupStack::PopAndDestroy(string);    
+    return ( KErrNone );
+}
+
+
+//  [End of File] - Do not remove