contextframework/cfw/tsrc/public/basic/MT_CFContextSourceSettingsManager/MT_CFContextSourceSettingsManager.cpp
changeset 0 2e3d3ce01487
child 19 924385140d98
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contextframework/cfw/tsrc/public/basic/MT_CFContextSourceSettingsManager/MT_CFContextSourceSettingsManager.cpp	Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,368 @@
+/*
+* Copyright (c) 2006 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:
+*
+*/
+
+
+//  CLASS HEADER
+#include "MT_CFContextSourceSettingsManager.h"
+
+//  EXTERNAL INCLUDES
+#include <EUnitMacros.h>
+#include <cfcontextsourcesettingsmanager.h>
+#include <cfcontextsourcesetting.h>
+#include <cfcontextsourcesettingarray.h>
+#include <cfcontextsourcesettingparameter.h>
+#include <cfkeyvaluepair.h>
+
+#include "cfenvutils.h"
+
+//  INTERNAL INCLUDES
+
+// Cleans up RKeyValueArray instance
+LOCAL_C void CleanupKeyValueArray( TAny* aArray )
+    {
+    static_cast<RKeyValueArray*>( aArray )->ResetAndDestroy();
+    }
+
+// Cleanup item for RKeyValueArray object
+LOCAL_C void CleanupResetAndDestroyPushL( RKeyValueArray& aArray )
+    {
+    TCleanupItem item( CleanupKeyValueArray, &aArray );
+    CleanupStack::PushL( item );
+    }
+
+// CONSTRUCTION
+MT_CFContextSourceSettingsManager* MT_CFContextSourceSettingsManager::NewL()
+    {
+    MT_CFContextSourceSettingsManager* self = MT_CFContextSourceSettingsManager::NewLC();
+    CleanupStack::Pop();
+
+    return self;
+    }
+
+MT_CFContextSourceSettingsManager* MT_CFContextSourceSettingsManager::NewLC()
+    {
+    MT_CFContextSourceSettingsManager* self = new( ELeave ) MT_CFContextSourceSettingsManager();
+    CleanupStack::PushL( self );
+
+    self->ConstructL();
+
+    return self;
+    }
+
+// Destructor (virtual by CBase)
+MT_CFContextSourceSettingsManager::~MT_CFContextSourceSettingsManager()
+    {
+    Teardown();
+
+    // Enable screen saver
+    CFEnvUtils::EnableScreenSaver( ETrue );
+    }
+
+// Default constructor
+MT_CFContextSourceSettingsManager::MT_CFContextSourceSettingsManager()
+    {
+    }
+
+// Second phase construct
+void MT_CFContextSourceSettingsManager::ConstructL()
+    {
+    // The ConstructL from the base class CEUnitTestSuiteClass must be called.
+    // It generates the test case table.
+    CEUnitTestSuiteClass::ConstructL();
+
+    // Disable screen saver
+    CFEnvUtils::EnableScreenSaver( EFalse );
+    }
+
+//  METHODS
+
+
+
+void MT_CFContextSourceSettingsManager::SetupEmptyL(  )
+    {
+    
+    }
+
+void MT_CFContextSourceSettingsManager::SetupL(  )
+    {
+    User::LeaveIfError( iFs.Connect() );
+    
+    iContextSourceSettingsManager =
+        CCFContextSourceSettingsManager::NewL( iFs );
+    }
+
+void MT_CFContextSourceSettingsManager::Teardown(  )
+    {
+    delete iContextSourceSettingsManager;
+    iContextSourceSettingsManager = NULL;
+    
+    iFs.Close();
+    }
+
+//-----------------------------------------------------------------------------
+// MT_CFContextSourceSettingsManager::MT_CCFContextSourceSettingsManager_NewLL
+//-----------------------------------------------------------------------------
+//
+void MT_CFContextSourceSettingsManager::MT_CCFContextSourceSettingsManager_NewLL(  )
+    {
+    RFs fs;
+    User::LeaveIfError( fs.Connect() );
+    CleanupClosePushL( fs );
+    CCFContextSourceSettingsManager* obj =
+        CCFContextSourceSettingsManager::NewL( fs );
+    CleanupStack::PushL( obj );
+    
+    EUNIT_ASSERT_DESC( obj, "CCFContextSourceSettingsManager instance not created!" );
+    
+    CleanupStack::PopAndDestroy( obj );
+    CleanupStack::PopAndDestroy( &fs );
+    }
+
+//-----------------------------------------------------------------------------
+// MT_CFContextSourceSettingsManager::MT_CCFContextSourceSettingsManager_NewLCL
+//-----------------------------------------------------------------------------
+//
+void MT_CFContextSourceSettingsManager::MT_CCFContextSourceSettingsManager_NewLCL(  )
+    {
+    RFs fs;
+    User::LeaveIfError( fs.Connect() );
+    CleanupClosePushL( fs );
+    CCFContextSourceSettingsManager* obj =
+        CCFContextSourceSettingsManager::NewLC( fs );
+    
+    EUNIT_ASSERT_DESC( obj, "CCFContextSourceSettingsManager instance not created!" );
+    
+    CleanupStack::PopAndDestroy( obj );
+    CleanupStack::PopAndDestroy( &fs );
+    }
+
+//-----------------------------------------------------------------------------
+// MT_CFContextSourceSettingsManager::MT_CCFContextSourceSettingsManager_ParseSettingsL1L
+//-----------------------------------------------------------------------------
+//
+void MT_CFContextSourceSettingsManager::MT_CCFContextSourceSettingsManager_ParseSettingsL1L(  )
+    {
+    _LIT( KSettingsPath, "z:\\data\\cftestdata\\testsettings\\validsettingsfile.xml" );
+    
+    _LIT( KSettingName, "PluginName" );
+    _LIT( KParamName, "Param" );
+
+    _LIT( KAttributeFormat, "attribute%d" );
+    _LIT( KAttributeValueFormat, "attributevalue%d" );
+    _LIT( KParamFormat, "param%d" );
+    _LIT( KParamValueFormat, "value%d" );
+    
+    TBuf<20> key( KNullDesC );
+    TBuf<20> value( KNullDesC );
+    
+    CCFContextSourceSettingArray* array = CCFContextSourceSettingArray::NewLC();
+    iContextSourceSettingsManager->ParseSettingsL( KSettingsPath, *array );
+            
+    // Check settings -
+    // Should have two setting blocks
+    EUNIT_ASSERT_DESC( array->Count() == 2, "Invalid number of settings!" );
+    
+    // Check setting names
+    TInt count = array->Count();
+    for( TInt i = 0; i < count; i++ )
+        {
+        EUNIT_ASSERT_DESC( array->Item( i ).Name() == KSettingName, "Invalid setting name!" );
+        }
+        
+    // Check attributes
+    for( TInt i = 0; i < count; i++ )
+        {
+        const RKeyValueArray& attributes = array->Item( i ).Attributes();
+        EUNIT_ASSERT_DESC( attributes.Count() == i + 1, "Invalid attribute count!" );
+        TInt attributeCount = attributes.Count();
+        for( TInt j = 0; j < attributeCount; j++ )
+            {
+            key.Format( KAttributeFormat, j + 1 );
+            value.Format( KAttributeValueFormat, j + 1 );
+            EUNIT_ASSERT_DESC( attributes[j]->Key() == key,
+                "Invalid key!" );
+            EUNIT_ASSERT_DESC( attributes[j]->Value() == value,
+                "Invalid value!" );
+            }
+        }
+        
+    // Check parameters
+    count = array->Count();
+    TInt parameterCount = 0;
+    for( TInt a = 0; a < count; a++ )
+        {
+        const RSettingParameterArray& paramArray = array->Item( a ).Parameters();
+        parameterCount = paramArray.Count();
+        for( TInt b = 0; b < parameterCount; b++ )
+            {
+            EUNIT_ASSERT_DESC( paramArray[b]->Name() == KParamName, "Invalid parameter name!" );
+            const RKeyValueArray& attributes = paramArray[b]->Attributes();
+            TInt attributesCount = attributes.Count();
+            for( TInt c = 0; c < attributesCount; c++ )
+                {
+                key.Format( KParamFormat, c + 1 );
+                value.Format( KParamValueFormat, c + 1 );
+                EUNIT_ASSERT_DESC( attributes[c]->Key() == key,
+                    "Invalid key!" );
+                EUNIT_ASSERT_DESC( attributes[c]->Value() == value,
+                    "Invalid value!" );
+                }
+            }
+        }
+            
+    CleanupStack::PopAndDestroy( array );
+    }
+
+//-----------------------------------------------------------------------------
+// MT_CFContextSourceSettingsManager::MT_CCFContextSourceSettingsManager_ParseSettingsL2L
+//-----------------------------------------------------------------------------
+//
+void MT_CFContextSourceSettingsManager::MT_CCFContextSourceSettingsManager_ParseSettingsL2L(  )
+    {
+    _LIT( KSettingsPath, "z:\\data\\cftestdata\\testsettings\\validsettingsfile2.xml" );
+    
+    _LIT( KSettingNameNode, "SettingNameNode" );
+    _LIT( KParamNameNode, "ParamNameNode" );
+
+    _LIT( KAttributeFormat, "attribute%d" );
+    _LIT( KAttributeValueFormat, "attributevalue%d" );
+    _LIT( KParamFormat, "param%d" );
+    _LIT( KParamValueFormat, "value%d" );
+
+    TBuf<20> key( KNullDesC );
+    TBuf<20> value( KNullDesC );
+    
+    CCFContextSourceSettingArray* array = CCFContextSourceSettingArray::NewL();
+    CleanupStack::PushL( array );
+    iContextSourceSettingsManager->ParseSettingsL( KSettingsPath, *array );
+    
+    // Should have one setting block
+    EUNIT_ASSERT_DESC( array->Count() == 1, "Invalid number of settings!" );
+
+    // Check setting names
+    TInt count = array->Count();
+    for( TInt i = 0; i < count; i++ )
+        {
+        EUNIT_ASSERT_DESC( array->Item( i ).Name() == KSettingNameNode, "Invalid setting name!" );
+        }
+
+    // Check attributes
+    for( TInt i = 0; i < count; i++ )
+        {
+        const RKeyValueArray& attributes = array->Item( i ).Attributes();
+        EUNIT_ASSERT_DESC( attributes.Count() == i + 1, "Invalid attribute count!" );
+        TInt attributeCount = attributes.Count();
+        for( TInt j = 0; j < attributeCount; j++ )
+            {
+            key.Format( KAttributeFormat, j + 1 );
+            value.Format( KAttributeValueFormat, j + 1 );
+            EUNIT_ASSERT_DESC( attributes[j]->Key() == key,
+                "Invalid key!" );
+            EUNIT_ASSERT_DESC( attributes[j]->Value() == value,
+                "Invalid value!" );
+            }
+        }
+
+    // Check parameters
+    count = array->Count();
+    TInt parameterCount = 0;
+    for( TInt a = 0; a < count; a++ )
+        {
+        const RSettingParameterArray& paramArray = array->Item( a ).Parameters();
+        parameterCount = paramArray.Count();
+        for( TInt b = 0; b < parameterCount; b++ )
+            {
+            EUNIT_ASSERT_DESC( paramArray[b]->Name() == KParamNameNode, "Invalid parameter name!" );
+            const RKeyValueArray& attributes = paramArray[b]->Attributes();
+            TInt attributesCount = attributes.Count();
+            for( TInt c = 0; c < attributesCount; c++ )
+                {
+                key.Format( KParamFormat, c + 1 );
+                value.Format( KParamValueFormat, c + 1 );
+                EUNIT_ASSERT_DESC( attributes[c]->Key() == key,
+                    "Invalid key!" );
+                EUNIT_ASSERT_DESC( attributes[c]->Value() == value,
+                    "Invalid value!" );
+                }
+            }
+        }
+
+    CleanupStack::PopAndDestroy( array );
+    }
+
+//-----------------------------------------------------------------------------
+// MT_CFContextSourceSettingsManager::MT_CCFContextSourceSettingsManager_ParseSettingsL3L
+//-----------------------------------------------------------------------------
+//
+void MT_CFContextSourceSettingsManager::MT_CCFContextSourceSettingsManager_ParseSettingsL3L(  )
+    {
+    _LIT( KSettingsPath, "z:\\data\\cftestdata\\testsettings\\invalidsettingsfile.xml" );
+
+    CCFContextSourceSettingArray* array = CCFContextSourceSettingArray::NewLC();
+    iContextSourceSettingsManager->ParseSettingsL( KSettingsPath, *array );
+    
+    // Should have one setting block
+    EUNIT_ASSERT_DESC( array->Count() == 0, "Invalid number of settings!" );
+    
+    CleanupStack::PopAndDestroy( array );
+    }
+
+//  TEST TABLE
+
+EUNIT_BEGIN_TEST_TABLE(
+    MT_CFContextSourceSettingsManager,
+    "CFContextSourceSettingsManager module test.",
+    "MODULE" )
+
+EUNIT_TEST(
+    "NewL - test ",
+    "CCFContextSourceSettingsManager",
+    "NewL",
+    "FUNCTIONALITY",
+    SetupEmptyL, MT_CCFContextSourceSettingsManager_NewLL, Teardown)
+
+EUNIT_TEST(
+    "NewLC - test ",
+    "CCFContextSourceSettingsManager",
+    "NewLC",
+    "FUNCTIONALITY",
+    SetupEmptyL, MT_CCFContextSourceSettingsManager_NewLCL, Teardown)
+
+EUNIT_TEST(
+    "ParseSettingsL 1 - test ",
+    "CCFContextSourceSettingsManager",
+    "ParseSettingsL",
+    "FUNCTIONALITY",
+    SetupL, MT_CCFContextSourceSettingsManager_ParseSettingsL1L, Teardown)
+
+EUNIT_TEST(
+    "ParseSettingsL 2 - test ",
+    "CCFContextSourceSettingsManager",
+    "ParseSettingsL",
+    "FUNCTIONALITY",
+    SetupL, MT_CCFContextSourceSettingsManager_ParseSettingsL2L, Teardown)
+
+EUNIT_TEST(
+    "ParseSettingsL 3 - test ",
+    "CCFContextSourceSettingsManager",
+    "ParseSettingsL",
+    "FUNCTIONALITY",
+    SetupL, MT_CCFContextSourceSettingsManager_ParseSettingsL3L, Teardown)
+
+EUNIT_END_TEST_TABLE
+
+//  END OF FILE