convergedcallengine/spsettings/tsrc/public/basic/spsettingsUT/src/T_CSPSettingsEngine.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 01:11:09 +0200
changeset 0 ff3b6d0fd310
permissions -rw-r--r--
Revision: 201003 Kit: 201005

/*
* Copyright (c) 2009 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: Implementation of T_CSPSettingsEngine class.
*
*/

#include "T_CSPSettingsEngine.h"
#include <EUnitMacros.h>
#include <EUnitDecorators.h>

#include <spentry.h>
#include <spproperty.h>
#include "spsettingsengine.h"

// - Construction -----------------------------------------------------------

T_CSPSettingsEngine* T_CSPSettingsEngine::NewL()
    {
    T_CSPSettingsEngine* self = T_CSPSettingsEngine::NewLC();
    CleanupStack::Pop();
    return self;
    }

T_CSPSettingsEngine* T_CSPSettingsEngine::NewLC()
    {
    T_CSPSettingsEngine* self = new( ELeave ) T_CSPSettingsEngine();
    CleanupStack::PushL( self );
    self->ConstructL();
    return self;
    }

T_CSPSettingsEngine::~T_CSPSettingsEngine()
    {
    }

T_CSPSettingsEngine::T_CSPSettingsEngine()
    {
    }

void T_CSPSettingsEngine::ConstructL()
    {
    CEUnitTestSuiteClass::ConstructL();
    }

// - Test methods -----------------------------------------------------------



void T_CSPSettingsEngine::SetupL(  )
    {
    iCSPSettingsEngine = CSPSettingsEngine::NewL();
    }
    

void T_CSPSettingsEngine::Teardown(  )
    {
    delete iCSPSettingsEngine;
    iCSPSettingsEngine = NULL;
    }

    
void T_CSPSettingsEngine::T_CSPSettingsEngine_BeginTransactionLCL(  )
    {
    EUNIT_ASSERT( KErrNone == iCSPSettingsEngine->BeginTransactionLC( ) );
    }
    
void T_CSPSettingsEngine::T_CSPSettingsEngine_CommitTransactionL(  )
    {
    EUNIT_ASSERT( KErrNone == iCSPSettingsEngine->CommitTransaction() );
    }
    
void T_CSPSettingsEngine::T_CSPSettingsEngine_RollbackTransactionL(  )
    {
    iCSPSettingsEngine->RollbackTransaction( );
    }
    
void T_CSPSettingsEngine::T_CSPSettingsEngine_AddEntryLL(  )
    {
    CSPEntry* entry = CSPEntry::NewLC();
    TServiceId id = entry->GetServiceId();

    EUNIT_ASSERT_SPECIFIC_LEAVE( iCSPSettingsEngine->AddEntryL( *entry ), KErrArgument ) ;
    
    User::LeaveIfError( entry->SetServiceName( _L("Nimi") ) );
    iCSPSettingsEngine->AddEntryL( *entry );
    EUNIT_ASSERT( id != entry->GetServiceId() );

    CleanupStack::PopAndDestroy( entry );    
    }
    
void T_CSPSettingsEngine::T_CSPSettingsEngine_FindEntryLL(  )
    {
    CSPEntry* entry = CSPEntry::NewLC();
    User::LeaveIfError( entry->SetServiceName( _L("Nimi") ) );
    TInt id = entry->GetServiceId();
    
    EUNIT_ASSERT( KErrNotFound == iCSPSettingsEngine->FindEntryL( id, *entry ) );
    
    iCSPSettingsEngine->AddEntryL( *entry );
    id = entry->GetServiceId();
    
    EUNIT_ASSERT( KErrNone == iCSPSettingsEngine->FindEntryL( id, *entry ) );

    CleanupStack::PopAndDestroy( entry );
    }
    
void T_CSPSettingsEngine::T_CSPSettingsEngine_UpdateEntryLL(  )
    {
    CSPEntry* entry = CSPEntry::NewLC();
    
    EUNIT_ASSERT_LEAVE( iCSPSettingsEngine->UpdateEntryL( *entry ) );
    
    User::LeaveIfError( entry->SetServiceName( _L("Nimi") ) );
    iCSPSettingsEngine->AddEntryL( *entry );
    EUNIT_ASSERT( KErrNone == iCSPSettingsEngine->UpdateEntryL( *entry ) );
    
    CleanupStack::PopAndDestroy( entry );
    }
    
void T_CSPSettingsEngine::T_CSPSettingsEngine_DeleteEntryLL(  )
    {
    CSPEntry* entry = CSPEntry::NewLC();
    User::LeaveIfError( entry->SetServiceName( _L("Nimi") ) );
    TInt id = entry->GetServiceId();
    
    EUNIT_ASSERT( KErrNotFound == iCSPSettingsEngine->DeleteEntryL( id ) );
    
    iCSPSettingsEngine->AddEntryL( *entry );
    id = entry->GetServiceId();
    EUNIT_ASSERT( KErrNone == iCSPSettingsEngine->DeleteEntryL( id ) );
    CleanupStack::PopAndDestroy( entry );
    }
    
void T_CSPSettingsEngine::T_CSPSettingsEngine_FindPropertyLL(  )
    {
    CSPProperty* property = CSPProperty::NewLC();
    property->SetName( EPropertyVoIPSubServicePluginId );
    TInt profId( 15 );
    User::LeaveIfError( property->SetValue( profId ));

    EUNIT_ASSERT( KErrNotFound == iCSPSettingsEngine->FindPropertyL(
        0, EPropertyVoIPSubServicePluginId, *property ) );
    
    EUNIT_ASSERT( KErrNone == iCSPSettingsEngine->FindPropertyL(
        profId, EPropertyVoIPSubServicePluginId, *property ) );
    
    CleanupStack::PopAndDestroy( property );
    }
    
void T_CSPSettingsEngine::T_CSPSettingsEngine_AddOrUpdatePropertiesLL(  )
    {
    CSPProperty* property = CSPProperty::NewLC();
    property->SetName( EPropertyVoIPSubServicePluginId );
    TInt profId( 15 );
    User::LeaveIfError( property->SetValue( profId ));
    
    RPropertyArray propertyArray;
    propertyArray.Append( property );
    CleanupClosePushL( propertyArray );

    EUNIT_ASSERT( KErrNone == iCSPSettingsEngine->AddOrUpdatePropertiesL( profId, propertyArray ) );
    
    CleanupStack::PopAndDestroy( &propertyArray );
    CleanupStack::PopAndDestroy( property );
    }
    
void T_CSPSettingsEngine::T_CSPSettingsEngine_SettingsCountLL(  )
    {
    EUNIT_ASSERT( !iCSPSettingsEngine->SettingsCountL() );
    
    // Note that stub file is set to increase the count for this
    // test when calling SettingsCountL method again
    EUNIT_ASSERT( !iCSPSettingsEngine->SettingsCountL() );
    EUNIT_ASSERT( iCSPSettingsEngine->SettingsCountL() );
    }
    
void T_CSPSettingsEngine::T_CSPSettingsEngine_FindServiceIdsLL(  )
    {
    RIdArray serviceIds;
    CleanupClosePushL( serviceIds );
    
    EUNIT_ASSERT( KErrNone == iCSPSettingsEngine->FindServiceIdsL( serviceIds ) );
    EUNIT_ASSERT( serviceIds.Count() );
    
    CleanupStack::PopAndDestroy( &serviceIds );
    }
    
void T_CSPSettingsEngine::T_CSPSettingsEngine_FindServiceNamesLL(  )
    {
    RIdArray ids;
    CleanupClosePushL( ids );
    iCSPSettingsEngine->FindServiceIdsL( ids );
    
    CDesCArrayFlat* names = new ( ELeave ) CDesCArrayFlat( 10 );
    CleanupStack::PushL( names );
    iCSPSettingsEngine->FindServiceNamesL( ids, *names );
    TInt count = names->MdcaCount();
    EUNIT_ASSERT( count );
    
    CleanupStack::PopAndDestroy( names );
    CleanupStack::PopAndDestroy( &ids );
    }

void T_CSPSettingsEngine::T_CSPSettingsEngine_PropertyNameArrayFromItemTypeLL(  )
    {
    RPropertyArray* propertyArray = new (ELeave) RPropertyArray( 3 );
    CleanupStack::PushL( propertyArray );
    
    EUNIT_ASSERT_SPECIFIC_LEAVE( iCSPSettingsEngine->FindSubServicePropertiesL( 0, EItemTypeNotDefined,
        *propertyArray ), KErrArgument );
    iCSPSettingsEngine->FindSubServicePropertiesL( 0, EItemTypeVoIPSubProperty, *propertyArray );
    iCSPSettingsEngine->FindSubServicePropertiesL( 0, EItemTypePresenceSubProperty, *propertyArray );
    iCSPSettingsEngine->FindSubServicePropertiesL( 0, EItemTypeIMSubProperty, *propertyArray );
    iCSPSettingsEngine->FindSubServicePropertiesL( 0, EItemTypeVMBXSubProperty, *propertyArray );
    
    CleanupStack::PopAndDestroy( propertyArray );
    }
    
void T_CSPSettingsEngine::T_CSPSettingsEngine_FindSubServicePropertiesLL(  )
    {
    RPropertyArray* propertyArray = new (ELeave) RPropertyArray( 3 );
    CleanupStack::PushL( propertyArray );
    
    iCSPSettingsEngine->FindSubServicePropertiesL( 0, EItemTypeVMBXSubProperty, *propertyArray );
    TInt count = propertyArray->Count();
    EUNIT_ASSERT( !count );

    CleanupStack::PopAndDestroy( propertyArray );
    }
    
void T_CSPSettingsEngine::T_CSPSettingsEngine_DeleteServicePropertiesLL(  )
    {
    RPropertyNameArray names;
    CleanupClosePushL( names );
    
    EUNIT_ASSERT( KErrNone == iCSPSettingsEngine->DeleteServicePropertiesL( 0, names ) );
    
    names.AppendL( EPropertyPCSPluginId );
    names.AppendL( ESubPropertyVoIPSettingsId );
    EUNIT_ASSERT( KErrNone == iCSPSettingsEngine->DeleteServicePropertiesL( 0, names ) );
    
    CleanupStack::PopAndDestroy( &names );
    }
    
void T_CSPSettingsEngine::T_CSPSettingsEngine_FindServiceIdsFromPropertiesLL(  )
    {
    RIdArray serviceIds;
    CleanupClosePushL( serviceIds );
    RPropertyArray properties;
    CleanupClosePushL( properties );
    
    iCSPSettingsEngine->FindServiceIdsFromPropertiesL( properties, serviceIds );
    EUNIT_ASSERT( serviceIds.Count() );
    
    CleanupStack::PopAndDestroy( &properties );
    CleanupStack::PopAndDestroy( &serviceIds );
    }
    
void T_CSPSettingsEngine::T_CSPSettingsEngine_IsFeatureSupportedLL(  )
    {
    EUNIT_ASSERT( !iCSPSettingsEngine->IsFeatureSupportedL( ESupportInternetCallFeature, EFalse ) );
    EUNIT_ASSERT_LEAVE( iCSPSettingsEngine->IsFeatureSupportedL( ESupportInternetCallFeature, ETrue ) );
    
    EUNIT_ASSERT( !iCSPSettingsEngine->IsFeatureSupportedL( ESupportCallOutFeature, EFalse ) );
    EUNIT_ASSERT_LEAVE( iCSPSettingsEngine->IsFeatureSupportedL( ESupportCallOutFeature, ETrue ) );
    
    EUNIT_ASSERT( !iCSPSettingsEngine->IsFeatureSupportedL( ESupportVoIPSSFeature, EFalse ) );
    EUNIT_ASSERT_LEAVE( iCSPSettingsEngine->IsFeatureSupportedL( ESupportVoIPSSFeature, ETrue ) );
    
    EUNIT_ASSERT( iCSPSettingsEngine->IsFeatureSupportedL( ESupportVoIPFeature, EFalse ) );
    }
    
void T_CSPSettingsEngine::T_CSPSettingsEngine_UpdateSupportFeaturePSKeyLL(  )
    {
    EUNIT_ASSERT_LEAVE( iCSPSettingsEngine->UpdateSupportFeaturePSKeyL( ) );
    }
    
void T_CSPSettingsEngine::T_CSPSettingsEngine_IsVoIPServiceLL(  )
    {
    EUNIT_ASSERT( !iCSPSettingsEngine->IsVoIPServiceL( 0 ) );
    EUNIT_ASSERT( iCSPSettingsEngine->IsVoIPServiceL( 2 ) );
    }
    
void T_CSPSettingsEngine::T_CSPSettingsEngine_HasCallPropertyNameL(  )
    {
    RPropertyNameArray names;
    CleanupClosePushL( names );
    EUNIT_ASSERT( !iCSPSettingsEngine->HasCallPropertyName( names ) );
    
    names.AppendL( EPropertyUnknown );
    names.AppendL( EPropertyCTIPluginId );
    EUNIT_ASSERT( iCSPSettingsEngine->HasCallPropertyName( names ) );
    
    CleanupStack::PopAndDestroy( &names );
    }
    
void T_CSPSettingsEngine::T_CSPSettingsEngine_HasVoIPAndVmbxPropertyNameL(  )
    {
    RPropertyNameArray names;
    CleanupClosePushL( names );
    EUNIT_ASSERT( !iCSPSettingsEngine->HasVoIPAndVmbxPropertyName( names ) );
    
    names.AppendL( EPropertyUnknown );
    names.AppendL( EPropertyVoIPSubServicePluginId );
    EUNIT_ASSERT( iCSPSettingsEngine->HasVoIPAndVmbxPropertyName( names ) );
    
    CleanupStack::PopAndDestroy( &names );
    }

void T_CSPSettingsEngine::T_CSPSettingsEngine_NameArrayFromPropertyArrayLL(  )
    {
    RPropertyNameArray names;
    CleanupClosePushL( names );
    
    RPropertyArray properties;
    CleanupClosePushL( properties );
    
    iCSPSettingsEngine->NameArrayFromPropertyArrayL( names, properties );
    EUNIT_ASSERT( !names.Count() );
    
    CSPProperty* property = CSPProperty::NewLC();
    property->SetName( EPropertyVoIPSubServicePluginId );
    properties.AppendL( property );
    
    iCSPSettingsEngine->NameArrayFromPropertyArrayL( names, properties );
    EUNIT_ASSERT( names.Count() );
    
    CleanupStack::PopAndDestroy( property );
    CleanupStack::PopAndDestroy( &properties );
    CleanupStack::PopAndDestroy( &names );
    }


// - EUnit test table -------------------------------------------------------

EUNIT_BEGIN_TEST_TABLE(
    T_CSPSettingsEngine,
    "Add test suite description here.",
    "UNIT" )
    
EUNIT_TEST(
    "BeginTransactionLC - test1",
    "CSPSettingsEngine",
    "BeginTransactionLC - test1",
    "FUNCTIONALITY",
    SetupL, T_CSPSettingsEngine_BeginTransactionLCL, Teardown)

EUNIT_TEST(
    "CommitTransaction - test",
    "CSPSettingsEngine",
    "CommitTransaction - test",
    "FUNCTIONALITY",
    SetupL, T_CSPSettingsEngine_CommitTransactionL, Teardown)

EUNIT_TEST(
    "RollbackTransaction - test",
    "CSPSettingsEngine",
    "RollbackTransaction - test",
    "FUNCTIONALITY",
    SetupL, T_CSPSettingsEngine_RollbackTransactionL, Teardown)

EUNIT_TEST(
    "AddEntryL - test",
    "CSPSettingsEngine",
    "AddEntryL - test",
    "FUNCTIONALITY",
    SetupL, T_CSPSettingsEngine_AddEntryLL, Teardown)

EUNIT_TEST(
    "FindEntryL - test",
    "CSPSettingsEngine",
    "FindEntryL - test",
    "FUNCTIONALITY",
    SetupL, T_CSPSettingsEngine_FindEntryLL, Teardown)

EUNIT_TEST(
    "UpdateEntryL - test",
    "CSPSettingsEngine",
    "UpdateEntryL - test",
    "FUNCTIONALITY",
    SetupL, T_CSPSettingsEngine_UpdateEntryLL, Teardown)

EUNIT_TEST(
    "DeleteEntryL - test",
    "CSPSettingsEngine",
    "DeleteEntryL - test",
    "FUNCTIONALITY",
    SetupL, T_CSPSettingsEngine_DeleteEntryLL, Teardown)

EUNIT_TEST(
    "FindPropertyL - test",
    "CSPSettingsEngine",
    "FindPropertyL - test",
    "FUNCTIONALITY",
    SetupL, T_CSPSettingsEngine_FindPropertyLL, Teardown)

EUNIT_TEST(
    "AddOrUpdatePropertiesL - test",
    "CSPSettingsEngine",
    "AddOrUpdatePropertiesL - test",
    "FUNCTIONALITY",
    SetupL, T_CSPSettingsEngine_AddOrUpdatePropertiesLL, Teardown)

EUNIT_TEST(
    "SettingsCountL - test",
    "CSPSettingsEngine",
    "SettingsCountL - test",
    "FUNCTIONALITY",
    SetupL, T_CSPSettingsEngine_SettingsCountLL, Teardown)

EUNIT_TEST(
    "FindServiceIdsL - test",
    "CSPSettingsEngine",
    "FindServiceIdsL - test",
    "FUNCTIONALITY",
    SetupL, T_CSPSettingsEngine_FindServiceIdsLL, Teardown)

EUNIT_TEST(
    "FindServiceNamesL - test",
    "CSPSettingsEngine",
    "FindServiceNamesL - test",
    "FUNCTIONALITY",
    SetupL, T_CSPSettingsEngine_FindServiceNamesLL, Teardown)

EUNIT_TEST(
    "PropertyNameArrayFromItemTypeL - test",
    "CSPSettingsEngine",
    "PropertyNameArrayFromItemTypeL - test",
    "FUNCTIONALITY",
    SetupL, T_CSPSettingsEngine_PropertyNameArrayFromItemTypeLL, Teardown)

EUNIT_TEST(
    "FindSubServicePropertiesL - test",
    "CSPSettingsEngine",
    "FindSubServicePropertiesL - test",
    "FUNCTIONALITY",
    SetupL, T_CSPSettingsEngine_FindSubServicePropertiesLL, Teardown)

EUNIT_TEST(
    "DeleteServicePropertiesL - test",
    "CSPSettingsEngine",
    "DeleteServicePropertiesL - test",
    "FUNCTIONALITY",
    SetupL, T_CSPSettingsEngine_DeleteServicePropertiesLL, Teardown)

EUNIT_TEST(
    "FindServiceIdsFromPropertiesL - test",
    "CSPSettingsEngine",
    "FindServiceIdsFromPropertiesL - test",
    "FUNCTIONALITY",
    SetupL, T_CSPSettingsEngine_FindServiceIdsFromPropertiesLL, Teardown)

EUNIT_TEST(
    "IsFeatureSupportedL - test",
    "CSPSettingsEngine",
    "IsFeatureSupportedL - test",
    "FUNCTIONALITY",
    SetupL, T_CSPSettingsEngine_IsFeatureSupportedLL, Teardown)

EUNIT_TEST(
    "UpdateSupportFeaturePSKeyL - test",
    "CSPSettingsEngine",
    "UpdateSupportFeaturePSKeyL - test",
    "FUNCTIONALITY",
    SetupL, T_CSPSettingsEngine_UpdateSupportFeaturePSKeyLL, Teardown)

EUNIT_TEST(
    "IsVoIPServiceL - test",
    "CSPSettingsEngine",
    "IsVoIPServiceL - test",
    "FUNCTIONALITY",
    SetupL, T_CSPSettingsEngine_IsVoIPServiceLL, Teardown)

EUNIT_TEST(
    "HasCallPropertyName - test",
    "CSPSettingsEngine",
    "HasCallPropertyName - test",
    "FUNCTIONALITY",
    SetupL, T_CSPSettingsEngine_HasCallPropertyNameL, Teardown)

EUNIT_TEST(
    "HasVoIPAndVmbxPropertyName - test",
    "CSPSettingsEngine",
    "HasVoIPAndVmbxPropertyName - test",
    "FUNCTIONALITY",
    SetupL, T_CSPSettingsEngine_HasVoIPAndVmbxPropertyNameL, Teardown)

EUNIT_TEST(
    "NameArrayFromPropertyArrayL - test",
    "CSPSettingsEngine",
    "NameArrayFromPropertyArrayL - test",
    "FUNCTIONALITY",
    SetupL, T_CSPSettingsEngine_NameArrayFromPropertyArrayLL, Teardown)

EUNIT_END_TEST_TABLE