contextframework/cfw/tsrc/public/basic/UT_CFContextSourceSettingsManager/UT_CFContextSourceSettingsManager.cpp
changeset 0 2e3d3ce01487
child 28 b0b858956ed5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contextframework/cfw/tsrc/public/basic/UT_CFContextSourceSettingsManager/UT_CFContextSourceSettingsManager.cpp	Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,742 @@
+/*
+* 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 "UT_CFContextSourceSettingsManager.h"
+
+//  EXTERNAL INCLUDES
+#include <EUnitMacros.h>
+
+
+//  INTERNAL INCLUDES
+#include "cfcontextsourcesettingimpl.h"
+#include "cfcontextsourcesettingarrayimpl.h"
+#include "cfcontextsourcesettingparameterimpl.h"
+#include "cfcontextsourcesettingsmanagerimpl.h"
+#include "cfcontextsourcesettingarrayimpl.h"
+#include "cfenvutils.h"
+
+// 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
+UT_CFContextSourceSettingsManager* UT_CFContextSourceSettingsManager::NewL()
+    {
+    UT_CFContextSourceSettingsManager* self = UT_CFContextSourceSettingsManager::NewLC();
+    CleanupStack::Pop();
+
+    return self;
+    }
+
+UT_CFContextSourceSettingsManager* UT_CFContextSourceSettingsManager::NewLC()
+    {
+    UT_CFContextSourceSettingsManager* self = new( ELeave ) UT_CFContextSourceSettingsManager();
+    CleanupStack::PushL( self );
+
+    self->ConstructL();
+
+    return self;
+    }
+
+// Destructor (virtual by CBase)
+UT_CFContextSourceSettingsManager::~UT_CFContextSourceSettingsManager()
+    {
+    Teardown();
+
+    // Enable screen saver
+    CFEnvUtils::EnableScreenSaver( ETrue );
+    }
+
+// Default constructor
+UT_CFContextSourceSettingsManager::UT_CFContextSourceSettingsManager()
+    {
+    }
+
+// Second phase construct
+void UT_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 UT_CFContextSourceSettingsManager::SetupEmptyL(  )
+    {
+
+    }
+
+void UT_CFContextSourceSettingsManager::SetupL(  )
+    {
+    User::LeaveIfError( iFs.Connect() );
+    
+    iContextSourceSettingImpl = CCFContextSourceSettingImpl::NewL();
+    
+    iContextSourceSettingParameterImpl =
+        CCFContextSourceSettingParameterImpl::NewL();
+    
+    iContextSourceSettingsManagerImpl =
+        CCFContextSourceSettingsManagerImpl::NewL( iFs );
+    }
+
+void UT_CFContextSourceSettingsManager::Teardown(  )
+    {
+    delete iContextSourceSettingsManagerImpl;
+    iContextSourceSettingsManagerImpl = NULL;
+    
+    delete iContextSourceSettingImpl;
+    iContextSourceSettingImpl = NULL;
+    
+    delete iContextSourceSettingParameterImpl;
+    iContextSourceSettingParameterImpl = NULL;
+    
+    iFs.Close();
+    }
+
+//-----------------------------------------------------------------------------
+// UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingParameterImpl_NewLL
+//-----------------------------------------------------------------------------
+//
+void UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingParameterImpl_NewLL(  )
+    {
+    CCFContextSourceSettingParameterImpl* obj =
+        CCFContextSourceSettingParameterImpl::NewL();
+    CleanupStack::PushL( obj );
+    
+    EUNIT_ASSERT_DESC( obj, "CCFContextSourceSettingParameterImpl instance not created!" );
+    
+    CleanupStack::PopAndDestroy( obj );
+    }
+    
+//-----------------------------------------------------------------------------
+// UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingParameterImpl_NewLCL
+//-----------------------------------------------------------------------------
+//
+void UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingParameterImpl_NewLCL(  )
+    {
+    CCFContextSourceSettingParameterImpl* obj =
+        CCFContextSourceSettingParameterImpl::NewLC();
+    
+    EUNIT_ASSERT_DESC( obj, "CCFContextSourceSettingParameterImpl instance not created!" );
+    
+    CleanupStack::PopAndDestroy( obj );
+    }
+
+//-----------------------------------------------------------------------------
+// UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingParameterImpl_NameL
+//-----------------------------------------------------------------------------
+//
+void UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingParameterImpl_NameL(  )
+    {
+    _LIT( KMedium, "Meeeeeeeeeeddddiiiiuuuuumm" );
+    _LIT( KShort, "Short" );
+    _LIT( KLong, "Llllllllllllllllllllllloooooooooooooooonnnnnnnnnnnnggg" );
+    TPtrC buf;
+
+    buf.Set( iContextSourceSettingParameterImpl->Name() );
+    EUNIT_ASSERT_DESC( buf == KNullDesC, "Incorrect name returned!" );
+
+    iContextSourceSettingParameterImpl->SetNameL( KMedium );
+    buf.Set( iContextSourceSettingParameterImpl->Name() );
+    EUNIT_ASSERT_DESC( buf == KMedium, "Incorrect name returned!" );
+
+    iContextSourceSettingParameterImpl->SetNameL( KShort );
+    buf.Set( iContextSourceSettingParameterImpl->Name() );
+    EUNIT_ASSERT_DESC( buf == KShort, "Incorrect name returned!" );
+
+    iContextSourceSettingParameterImpl->SetNameL( KLong );
+    buf.Set( iContextSourceSettingParameterImpl->Name() );
+    EUNIT_ASSERT_DESC( buf == KLong, "Incorrect name returned!" );
+    
+    iContextSourceSettingParameterImpl->SetNameL( KNullDesC );
+    buf.Set( iContextSourceSettingParameterImpl->Name() );
+    EUNIT_ASSERT_DESC( buf == KNullDesC, "Incorrect name returned!" );    
+    }
+
+//-----------------------------------------------------------------------------
+// UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingParameterImpl_AttributesL
+//-----------------------------------------------------------------------------
+//
+void UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingParameterImpl_AttributesL(  )
+    {
+    const TInt KCount = 10;
+    _LIT( KKey, "key%d" );
+    _LIT( KValue, "value%d" );
+    TInt count = 0;
+    TBuf<KCount> key( KNullDesC );
+    TBuf<KCount> value( KNullDesC );
+    
+    count = iContextSourceSettingParameterImpl->Attributes().Count();
+    EUNIT_ASSERT_DESC( count == 0, "Incorrect attribute count returned!" );
+    
+    for( TInt i = 0; i < KCount; i++ )
+        {
+        key.Format( KKey, i );
+        value.Format( KValue, i );
+        
+        CCFKeyValuePair* keyValue = CCFKeyValuePair::NewLC( key, value );
+        iContextSourceSettingParameterImpl->AddAttributeL( keyValue );
+        CleanupStack::Pop( keyValue );
+        }
+        
+    const RKeyValueArray& array = iContextSourceSettingParameterImpl->Attributes();
+    count = array.Count();
+    EUNIT_ASSERT_DESC( count == KCount,
+        "Incorrect attribute count!" );
+    for( TInt i = 0; i < count; i++ )
+        {
+        key.Format( KKey, i );
+        value.Format( KValue, i );
+        EUNIT_ASSERT_DESC( array[i]->Key() == key,
+            "Incorrect key!" );
+        EUNIT_ASSERT_DESC( array[i]->Value() == value,
+            "Incorrect value!" );
+        }
+    }
+
+//-----------------------------------------------------------------------------
+// UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingImpl_NewLL
+//-----------------------------------------------------------------------------
+//
+void UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingImpl_NewLL(  )
+    {
+    CCFContextSourceSettingImpl* obj = CCFContextSourceSettingImpl::NewL();
+    CleanupStack::PushL( obj );
+    
+    EUNIT_ASSERT_DESC( obj, "CCFContextSourceSettingImpl instance not created!" );
+    
+    CleanupStack::PopAndDestroy( obj );
+    }
+
+//-----------------------------------------------------------------------------
+// UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingImpl_NewLCL
+//-----------------------------------------------------------------------------
+//
+void UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingImpl_NewLCL(  )
+    {
+    CCFContextSourceSettingImpl* obj = CCFContextSourceSettingImpl::NewLC();
+    
+    EUNIT_ASSERT_DESC( obj, "CCFContextSourceSettingImpl instance not created!" );
+    
+    CleanupStack::PopAndDestroy( obj );
+    }
+
+//-----------------------------------------------------------------------------
+// UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingImpl_NameL
+//-----------------------------------------------------------------------------
+//
+void UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingImpl_NameL(  )
+    {
+    _LIT( KMedium, "Meeeeeeeeeeddddiiiiuuuuumm" );
+    _LIT( KShort, "Short" );
+    _LIT( KLong, "Llllllllllllllllllllllloooooooooooooooonnnnnnnnnnnnggg" );
+    TPtrC buf;
+
+    buf.Set( iContextSourceSettingImpl->Name() );
+    EUNIT_ASSERT_DESC( buf == KNullDesC, "Incorrect name returned!" );
+
+    iContextSourceSettingImpl->SetNameL( KMedium );
+    buf.Set( iContextSourceSettingImpl->Name() );
+    EUNIT_ASSERT_DESC( buf == KMedium, "Incorrect name returned!" );
+
+    iContextSourceSettingImpl->SetNameL( KShort );
+    buf.Set( iContextSourceSettingImpl->Name() );
+    EUNIT_ASSERT_DESC( buf == KShort, "Incorrect name returned!" );
+
+    iContextSourceSettingImpl->SetNameL( KLong );
+    buf.Set( iContextSourceSettingImpl->Name() );
+    EUNIT_ASSERT_DESC( buf == KLong, "Incorrect name returned!" );
+    
+    iContextSourceSettingImpl->SetNameL( KNullDesC );
+    buf.Set( iContextSourceSettingImpl->Name() );
+    EUNIT_ASSERT_DESC( buf == KNullDesC, "Incorrect name returned!" );
+    }
+
+//-----------------------------------------------------------------------------
+// UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingImpl_AttributesL
+//-----------------------------------------------------------------------------
+//
+void UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingImpl_AttributesL(  )
+    {
+    const TInt KCount = 10;
+    _LIT( KKey, "key%d" );
+    _LIT( KValue, "value%d" );
+    TInt count = 0;
+    TBuf<KCount> key( KNullDesC );
+    TBuf<KCount> value( KNullDesC );
+    
+    count = iContextSourceSettingImpl->Attributes().Count();
+    EUNIT_ASSERT_DESC( count == 0, "Incorrect attribute count returned!" );
+    
+    for( TInt i = 0; i < KCount; i++ )
+        {
+        key.Format( KKey, i );
+        value.Format( KValue, i );
+        
+        CCFKeyValuePair* keyValue = CCFKeyValuePair::NewLC( key, value );
+        iContextSourceSettingImpl->AddAttributeL( keyValue );
+        CleanupStack::Pop( keyValue );
+        }
+        
+    const RKeyValueArray& array = iContextSourceSettingImpl->Attributes();
+    count = array.Count();
+    EUNIT_ASSERT_DESC( count == KCount,
+        "Incorrect attribute count!" );
+    for( TInt i = 0; i < count; i++ )
+        {
+        key.Format( KKey, i );
+        value.Format( KValue, i );
+        EUNIT_ASSERT_DESC( array[i]->Key() == key,
+            "Incorrect key!" );
+        EUNIT_ASSERT_DESC( array[i]->Value() == value,
+            "Incorrect value!" );
+        }
+    }
+
+//-----------------------------------------------------------------------------
+// UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingImpl_NumOfParametersL
+//-----------------------------------------------------------------------------
+//
+void UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingImpl_NumOfParametersL(  )
+    {
+    const TInt KCount = 10;
+    TInt count = iContextSourceSettingImpl->Parameters().Count();
+    EUNIT_ASSERT_DESC( count == 0, "Invalid number of parameters!" );
+
+    for( TInt i = 0; i < KCount; i++ )
+        {
+        CCFContextSourceSettingParameterImpl* parameter =
+            CCFContextSourceSettingParameterImpl::NewLC();
+        iContextSourceSettingImpl->AddParameterL( parameter );
+        count = iContextSourceSettingImpl->Parameters().Count();
+        EUNIT_ASSERT_DESC( count == i + 1, "Invalid number of parameters!" );
+        CleanupStack::Pop( parameter );
+        }
+    }
+
+//-----------------------------------------------------------------------------
+// UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingImpl_ParametersL
+//-----------------------------------------------------------------------------
+//
+void UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingImpl_ParametersL(  )
+    {
+    const TInt KParameterCount = 10;
+    const TInt KAttributeCountInParameter = 5;
+    _LIT( KKey, "key%d" );
+    _LIT( KValue, "value%d" );
+    TInt count = 0;
+    TBuf<KParameterCount> key( KNullDesC );
+    TBuf<KParameterCount> value( KNullDesC );
+    
+    count = iContextSourceSettingImpl->Parameters().Count();
+    EUNIT_ASSERT_DESC( count == 0, "Invalid number of parameters!" );
+    
+    // Add parameters
+    for( TInt i = 0; i < KParameterCount; i++ )
+        {
+        CCFContextSourceSettingParameterImpl* param =
+            CCFContextSourceSettingParameterImpl::NewLC();
+        for( TInt j = 0; j < KAttributeCountInParameter; j++ )
+            {
+            key.Format( KKey, j );
+            value.Format( KValue, j );
+            CCFKeyValuePair* keyValue = CCFKeyValuePair::NewLC( key, value );
+            param->AddAttributeL( keyValue );
+            CleanupStack::Pop( keyValue );
+            }
+        iContextSourceSettingImpl->AddParameterL( param );
+        CleanupStack::Pop( param );
+        }
+        
+    // Check parameters
+    TInt attributeCount = 0;
+    const RSettingParameterArray& params = iContextSourceSettingImpl->Parameters();
+    count = params.Count();
+    EUNIT_ASSERT_DESC( count == KParameterCount, "Invalid number of parameters!" );
+    for( TInt i = 0; i < count; i++ )
+        {
+        const RKeyValueArray& attributes = params[i]->Attributes();
+        attributeCount = attributes.Count();
+        EUNIT_ASSERT_DESC( attributeCount == KAttributeCountInParameter, "Invalid number of attributes!" );
+        for( TInt j = 0; j < attributeCount; j++ )
+            {
+            key.Format( KKey, j );
+            value.Format( KValue, j );
+            EUNIT_ASSERT_DESC( attributes[j]->Key() == key,
+                "Invalid attribute key!" );
+            EUNIT_ASSERT_DESC( attributes[j]->Value() == value,
+                "Invalid attribute key!" );
+            }
+        }
+    }
+
+//-----------------------------------------------------------------------------
+// UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingsManagerImpl_NewLL
+//-----------------------------------------------------------------------------
+//
+void UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingsManagerImpl_NewLL(  )
+    {
+    RFs fs;
+    CleanupClosePushL( fs );
+    User::LeaveIfError( fs.Connect() );
+    CCFContextSourceSettingsManagerImpl* obj =
+        CCFContextSourceSettingsManagerImpl::NewL( fs );
+    CleanupStack::PushL( obj );
+    
+    EUNIT_ASSERT_DESC( obj,
+        "CCFContextSourceSettingsManager instance not created!" );
+        
+    CleanupStack::PopAndDestroy( 2, &fs );
+    }
+
+//-----------------------------------------------------------------------------
+// UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingsManagerImpl_NewLCL
+//-----------------------------------------------------------------------------
+//
+void UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingsManagerImpl_NewLCL(  )
+    {
+    RFs fs;
+    CleanupClosePushL( fs );
+    User::LeaveIfError( fs.Connect() );
+    CCFContextSourceSettingsManagerImpl* obj =
+        CCFContextSourceSettingsManagerImpl::NewLC( fs );
+    
+    EUNIT_ASSERT_DESC( obj,
+        "CCFContextSourceSettingsManager instance not created!" );
+        
+    CleanupStack::PopAndDestroy( 2, &fs );
+    }
+
+//-----------------------------------------------------------------------------
+// UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingsManagerImpl_ParseSettingsLL
+//-----------------------------------------------------------------------------
+//
+void UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingsManagerImpl_ParseSettingsLL(  )
+    {
+    _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();
+    static_cast<CCFContextSourceSettingsManager*>(
+        iContextSourceSettingsManagerImpl )->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 );
+    }
+    
+//-----------------------------------------------------------------------------
+// UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingArray_NewLL
+//-----------------------------------------------------------------------------
+//
+void UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingArray_NewLL()
+    {
+    CCFContextSourceSettingArray* array = CCFContextSourceSettingArray::NewL();
+    CleanupStack::PushL( array );
+    
+    EUNIT_ASSERT_DESC( array, "CCFContextSourceSettingArray class instance not created!" )
+    
+    CleanupStack::PopAndDestroy( array );
+    }
+
+//-----------------------------------------------------------------------------
+// UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingArray_NewLCL
+//-----------------------------------------------------------------------------
+//
+void UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingArray_NewLCL()
+    {
+    CCFContextSourceSettingArray* array = CCFContextSourceSettingArray::NewLC();
+    
+    EUNIT_ASSERT_DESC( array, "CCFContextSourceSettingArray class instance not created!" )
+    
+    CleanupStack::PopAndDestroy( array );
+    }
+
+//-----------------------------------------------------------------------------
+// UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingArrayImpl_NewLL
+//-----------------------------------------------------------------------------
+//
+void UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingArrayImpl_NewLL()
+    {
+    CCFContextSourceSettingArrayImpl* array = CCFContextSourceSettingArrayImpl::NewL();
+    CleanupStack::PushL( array );
+    
+    EUNIT_ASSERT_DESC( array, "CCFContextSourceSettingArrayImpl class instance not created!" )
+    
+    CleanupStack::PopAndDestroy( array );
+    }
+
+//-----------------------------------------------------------------------------
+// UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingArrayImpl_NewLCL
+//-----------------------------------------------------------------------------
+//
+void UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingArrayImpl_NewLCL()
+    {
+    CCFContextSourceSettingArrayImpl* array = CCFContextSourceSettingArrayImpl::NewLC();
+    
+    EUNIT_ASSERT_DESC( array, "CCFContextSourceSettingArrayImpl class instance not created!" )
+    
+    CleanupStack::PopAndDestroy( array );
+    }
+
+//-----------------------------------------------------------------------------
+// UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingArrayImpl_AppendItemLL
+//-----------------------------------------------------------------------------
+//
+void UT_CFContextSourceSettingsManager::UT_CCFContextSourceSettingArrayImpl_AppendItemLL()
+    {
+    CCFContextSourceSettingImpl* settingItem = NULL;
+    CCFContextSourceSettingArray* array = CCFContextSourceSettingArray::NewLC();
+    
+    EUNIT_ASSERT_DESC( !array->Count(), "Invalid setting array count!" );
+
+    _LIT( KFormat, "Setting item %d" );
+    TBuf<20> name( KNullDesC );
+    static const TInt KCount = 5;
+    for( TInt i = 0; i < KCount; i++ )
+        {
+        name.Format( KFormat, i );
+        settingItem = CCFContextSourceSettingImpl::NewLC();
+        settingItem->SetNameL( name );
+        array->AppendItemL( settingItem );
+        CleanupStack::Pop( settingItem );
+        }
+        
+    EUNIT_ASSERT_DESC( array->Count() == KCount, "Invalid setting array count!" );
+    for( TInt i = 0; i < KCount; i++ )
+        {
+        name.Format( KFormat, i );
+        EUNIT_ASSERT_DESC( array->Item( i ).Name() == name, "Invalid setting item!" );
+        }
+    
+    // Clean up
+    CleanupStack::PopAndDestroy( array );
+    }
+
+//  TEST TABLE
+
+EUNIT_BEGIN_TEST_TABLE(
+    UT_CFContextSourceSettingsManager,
+    "CFContextSourceSettingsManager unit test.",
+    "UNIT" )
+
+EUNIT_TEST(
+    "NewL - test ",
+    "CCFContextSourceSettingParameterImpl",
+    "NewL",
+    "FUNCTIONALITY",
+    SetupEmptyL, UT_CCFContextSourceSettingParameterImpl_NewLL, Teardown)
+
+EUNIT_TEST(
+    "NewLC - test ",
+    "CCFContextSourceSettingParameterImpl",
+    "NewLC",
+    "FUNCTIONALITY",
+    SetupEmptyL, UT_CCFContextSourceSettingParameterImpl_NewLCL, Teardown)
+
+EUNIT_TEST(
+    "Attributes - test ",
+    "CCFContextSourceSettingParameterImpl",
+    "Attributes",
+    "FUNCTIONALITY",
+    SetupL, UT_CCFContextSourceSettingParameterImpl_AttributesL, Teardown)
+
+EUNIT_TEST(
+    "Name - test ",
+    "CCFContextSourceSettingParameterImpl",
+    "Name",
+    "FUNCTIONALITY",
+    SetupL, UT_CCFContextSourceSettingParameterImpl_NameL, Teardown)
+
+EUNIT_TEST(
+    "NewL - test ",
+    "CCFContextSourceSettingImpl",
+    "NewL",
+    "FUNCTIONALITY",
+    SetupEmptyL, UT_CCFContextSourceSettingImpl_NewLL, Teardown)
+
+EUNIT_TEST(
+    "NewLC - test ",
+    "CCFContextSourceSettingImpl",
+    "NewLC",
+    "FUNCTIONALITY",
+    SetupEmptyL, UT_CCFContextSourceSettingImpl_NewLCL, Teardown)
+
+EUNIT_TEST(
+    "Name - test ",
+    "CCFContextSourceSettingImpl",
+    "Name",
+    "FUNCTIONALITY",
+    SetupL, UT_CCFContextSourceSettingImpl_NameL, Teardown)
+
+EUNIT_TEST(
+    "Attributes - test ",
+    "CCFContextSourceSettingImpl",
+    "Attributes",
+    "FUNCTIONALITY",
+    SetupL, UT_CCFContextSourceSettingImpl_AttributesL, Teardown)
+
+EUNIT_TEST(
+    "NumOfParameters - test ",
+    "CCFContextSourceSettingImpl",
+    "NumOfParameters",
+    "FUNCTIONALITY",
+    SetupL, UT_CCFContextSourceSettingImpl_NumOfParametersL, Teardown)
+
+EUNIT_TEST(
+    "Parameters - test ",
+    "CCFContextSourceSettingImpl",
+    "Parameters",
+    "FUNCTIONALITY",
+    SetupL, UT_CCFContextSourceSettingImpl_ParametersL, Teardown)
+
+EUNIT_TEST(
+    "NewL - test ",
+    "CCFContextSourceSettingsManagerImpl",
+    "NewL",
+    "FUNCTIONALITY",
+    SetupEmptyL, UT_CCFContextSourceSettingsManagerImpl_NewLL, Teardown)
+
+EUNIT_TEST(
+    "NewLC - test ",
+    "CCFContextSourceSettingsManagerImpl",
+    "NewLC",
+    "FUNCTIONALITY",
+    SetupEmptyL, UT_CCFContextSourceSettingsManagerImpl_NewLCL, Teardown)
+
+EUNIT_TEST(
+    "ParseSettingsL - test ",
+    "CCFContextSourceSettingsManagerImpl",
+    "ParseSettingsL",
+    "FUNCTIONALITY",
+    SetupL, UT_CCFContextSourceSettingsManagerImpl_ParseSettingsLL, Teardown)
+
+EUNIT_TEST(
+    "NewL - test ",
+    "CCFContextSourceSettingArray",
+    "NewL",
+    "FUNCTIONALITY",
+    SetupL, UT_CCFContextSourceSettingArray_NewLL, Teardown)
+
+EUNIT_TEST(
+    "NewLC - test ",
+    "CCFContextSourceSettingArray",
+    "NewLC",
+    "FUNCTIONALITY",
+    SetupL, UT_CCFContextSourceSettingArray_NewLCL, Teardown)
+
+EUNIT_TEST(
+    "NewL - test ",
+    "CCFContextSourceSettingArrayImpl",
+    "NewL",
+    "FUNCTIONALITY",
+    SetupL, UT_CCFContextSourceSettingArrayImpl_NewLL, Teardown)
+
+EUNIT_TEST(
+    "NewLC - test ",
+    "CCFContextSourceSettingArrayImpl",
+    "NewLC",
+    "FUNCTIONALITY",
+    SetupL, UT_CCFContextSourceSettingArrayImpl_NewLCL, Teardown)
+
+EUNIT_TEST(
+    "AppendItemL - test ",
+    "CCFContextSourceSettingArrayImpl",
+    "AppendItemL",
+    "FUNCTIONALITY",
+    SetupL, UT_CCFContextSourceSettingArrayImpl_AppendItemLL, Teardown)
+
+EUNIT_END_TEST_TABLE
+
+//  END OF FILE