contentctrl_plat/adapter_customization_api/tsrc/ContactAdapter/cnsmldummydataprovider_test.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 12 Mar 2010 15:41:30 +0200
branchRCL_3
changeset 14 b922b9936679
permissions -rw-r--r--
Revision: 201007 Kit: 201008

/*
* 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:  Source code file for contact adapter's dataprovider unit tests.
*
*/

#include "CNSmlDummyDataProvider_Test.h"
#include <EUnitMacros.h>
#include <EUnitDecorators.h>
#include <S32MEM.H>
#include <nsmlconstants.h> 
#include <SmlDataProvider.h>
#include <e32def.h>

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

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

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

CNSmlDummyDataProvider_Test::~CNSmlDummyDataProvider_Test()
    {
    }

CNSmlDummyDataProvider_Test::CNSmlDummyDataProvider_Test()
    {
    }

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

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



void CNSmlDummyDataProvider_Test::SetupL(  )
    {
    iCNSmlDummyDataProvider = CNSmlDummyDataProvider::NewL();
    }


void CNSmlDummyDataProvider_Test::Teardown(  )
    {
    delete iCNSmlDummyDataProvider;
    iCNSmlDummyDataProvider = NULL;
    }


void CNSmlDummyDataProvider_Test::T_Global_NewLL(  )
    {
    CNSmlDummyDataProvider* provider = CNSmlDummyDataProvider::NewL();
	EUNIT_ASSERT(provider);
	delete provider;
    }

void CNSmlDummyDataProvider_Test::GreateAdapterL()
    {
    TSmlDataProviderId id = {0x101F6DDD};// Contact Adapter Uid
    CSmlDataProvider* dp = CSmlDataProvider::NewL( id );
    CSmlDataStore* store = dp->NewStoreInstanceLC();
    EUNIT_ASSERT( store );
    CleanupStack::PopAndDestroy( store );
    TBool operation = dp->SupportsOperation( KUidSmlSupportBatch );
    EUNIT_ASSERT( operation );
    operation = dp->SupportsOperation( KUidSmlSupportMultipleStores );
    EUNIT_ASSERT( operation );
    operation = dp->SupportsOperation( KUidSmlSupportSuspendResume );
    EUNIT_ASSERT( !operation );
    TPtrC storeName = dp->DefaultStoreL();
    EUNIT_ASSERT( dp->DefaultStoreL().Compare( _L("C:Contacts.cdb") ) == 0 );
    const CSmlDataStoreFormat& format = dp->StoreFormatL();
    EUNIT_ASSERT( format.DisplayName().Compare( _L("Contacts") ) == 0 );
    EUNIT_PRINT( format.DisplayName() );
    delete dp;
    }

void CNSmlDummyDataProvider_Test::GetStoreFormatResourceFileLL()
    {
    const TDesC& resourceFile = iCNSmlDummyDataProvider->GetStoreFormatResourceFileL();
    EUNIT_PRINT( resourceFile );
    }

void CNSmlDummyDataProvider_Test::DoStoreFormatLL()
	{
	const CSmlDataStoreFormat& storeFormat = iCNSmlDummyDataProvider->DoStoreFormatL();
	EUNIT_PRINT( storeFormat.DisplayName() );
	EUNIT_PRINT( _L("Property count %d"), storeFormat.FolderPropertyCount() );
	CBufFlat* store = CBufFlat::NewL(512);
	CleanupStack::PushL( store );
	RBufWriteStream writeStream(*store, 0);
	CleanupClosePushL( writeStream );
	storeFormat.ExternalizeL( writeStream );
    CleanupStack::PopAndDestroy(2, store);
	}

void CNSmlDummyDataProvider_Test::TestStoreSupportForPartialSyncL()
	{
	const CSmlDataStoreFormat& storeFormat = iCNSmlDummyDataProvider->DoStoreFormatL();
	EUNIT_ASSERT_EQUALS( storeFormat.MimeFormatCount(), 1 );
	EUNIT_ASSERT( !storeFormat.MimeFormat(0).FieldLevel() );
	}

void CNSmlDummyDataProvider_Test::TestStoreSupportMimeTypeL()
    {
    _LIT8( KNSmlvCard21Name, "text/x-vcard" );
    _LIT8( KNSmlvCard21Ver, "2.1" );

    const CSmlDataStoreFormat& storeFormat = iCNSmlDummyDataProvider->DoStoreFormatL();
    EUNIT_ASSERT_EQUALS( storeFormat.MimeFormatCount() ,1 );
    EUNIT_ASSERT_EQUALS( storeFormat.MimeFormat(0).MimeType().DesC(), KNSmlvCard21Name() );
    EUNIT_ASSERT_EQUALS( storeFormat.MimeFormat(0).MimeVersion().DesC(), KNSmlvCard21Ver() );
    }

void CNSmlDummyDataProvider_Test::DoListStoresLCL()
    {
    CDesCArray* store = iCNSmlDummyDataProvider->DoListStoresLC();
    TPtrC ptrStoreName = ( *store )[ 0 ];
    EUNIT_PRINT( ptrStoreName );
    EUNIT_ASSERT( ptrStoreName.Compare( _L("C:Contacts.cdb") ) == 0 );
    CleanupStack::PopAndDestroy( store );
    }

void CNSmlDummyDataProvider_Test::DoOnFrameworkEvent()
    {
    iCNSmlDummyDataProvider->DoOnFrameworkEvent( TSmlFrameworkEvent( 0 ), 0, 0 );
    }

void CNSmlDummyDataProvider_Test::DoSupportedServerFiltersL()
    {
    RPointerArray<CSyncMLFilter> filterArray;
    filterArray = iCNSmlDummyDataProvider->DoSupportedServerFiltersL();
    filterArray.ResetAndDestroy();
    filterArray.Close();
    }

void CNSmlDummyDataProvider_Test::DoCheckSupportedServerFiltersL()
    {
    const CSmlDataStoreFormat& storeFormat = iCNSmlDummyDataProvider->DoStoreFormatL();
    RPointerArray<CSyncMLFilter>* filters = new ( ELeave ) RPointerArray<CSyncMLFilter>();
    CleanupRPtrArrayPushL( filters );
    TSyncMLFilterChangeInfo changeInfo( ESyncMLDefault );
    TRAPD( err, iCNSmlDummyDataProvider->DoCheckSupportedServerFiltersL( storeFormat, *filters, changeInfo ) );
    EUNIT_ASSERT( err == KErrNotSupported );
    CleanupStack::PopAndDestroy( filters ); 
    }

void CNSmlDummyDataProvider_Test::DoCheckServerFiltersL()
    {
    RPointerArray<CSyncMLFilter>* filters = new ( ELeave ) RPointerArray<CSyncMLFilter>();
    CleanupRPtrArrayPushL( filters );
    TSyncMLFilterChangeInfo changeInfo( ESyncMLDefault );
    TRAPD( err, iCNSmlDummyDataProvider->DoCheckServerFiltersL( *filters, changeInfo ) );
    EUNIT_ASSERT( err == KErrNotSupported );  
    CleanupStack::PopAndDestroy( filters ); 
    }

void CNSmlDummyDataProvider_Test::DoGenerateRecordFilterQueryL()
    {
    RPointerArray<CSyncMLFilter>* filters = new ( ELeave ) RPointerArray<CSyncMLFilter>();
    CleanupRPtrArrayPushL( filters );
    TSyncMLFilterMatchType matchType( ESyncMLMatchDisabled );
    TSyncMLFilterType filterType( ESyncMLTypeInclusive );
    TBuf<100> mimeType;

    TRAPD( err, { 
        HBufC* storeName =  NULL;
        HBufC* record = NULL;
        record = iCNSmlDummyDataProvider->DoGenerateRecordFilterQueryLC( 
        *filters, matchType, mimeType, filterType, *storeName );
        delete record; 
        delete storeName;
        }
        );
    EUNIT_ASSERT( err == KErrNotSupported );

    CleanupStack::PopAndDestroy( ); //filters
    }

void CNSmlDummyDataProvider_Test::DoGenerateFieldFilterQueryL()
    {
    RPointerArray<CSyncMLFilter>* filters = new ( ELeave ) RPointerArray<CSyncMLFilter>();
    CleanupRPtrArrayPushL( filters );
    RPointerArray<CSmlDataProperty> properties; 
    CleanupStack::PushL( PtrArrCleanupItemRArr( CSmlDataProperty, &properties ) );
    TBuf<100> mimeType;
    HBufC* storeName = NULL;
    TRAPD( err, iCNSmlDummyDataProvider->DoGenerateFieldFilterQueryL( *filters, mimeType, properties, *storeName ) );
    EUNIT_ASSERT( err == KErrNotSupported );
    delete storeName;
    CleanupStack::PopAndDestroy( 2 ); //filters, properties
    }

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

EUNIT_BEGIN_TEST_TABLE(
    CNSmlDummyDataProvider_Test,
    "Unit test for Contacts dataprovider.",
    "UNIT" )

EUNIT_TEST(
    "Test to verify memory allocation for the object",
    "CNSmlCmtContactsDataProvider",
    "",
    "FUNCTIONALITY",
    Empty, T_Global_NewLL, Empty)
    
EUNIT_TEST(
    "Test to create contact adapter and few other atapter methods",
    "CNSmlCmtContactsDataProvider",
    "",
    "FUNCTIONALITY",
    Empty, GreateAdapterL, Empty)

EUNIT_TEST(
    "Test for GetStoreFormatResourceFileL",
    "CNSmlCmtContactsDataProvider_Test",
    "",
    "FUNCTIONALITY",
    SetupL, GetStoreFormatResourceFileLL, Teardown )

EUNIT_TEST(
	"Test to verify DoStoreFormatL function",
	"CNSmlCmtContactsDataProvider_Test",
	"",
	"FUNCTIONALITY",
	SetupL, DoStoreFormatLL, Teardown )

EUNIT_TEST(
	"Test DataStore support for field level partial sync",
	"CNSmlCmtContactsDataProvider_Test",
	"",
	"FUNCTIONALITY",
	SetupL, TestStoreSupportForPartialSyncL, Teardown )

EUNIT_TEST(
	"Verify operator specific MIME type",
	"CNSmlDummyDataProvider_Test",
	"",
	"FUNCTIONALITY",
	SetupL, TestStoreSupportMimeTypeL, Teardown )

EUNIT_TEST(
	"Verify method DoListStoresLCL return value",
	"CNSmlDummyDataProvider_Test",
	"",
	"FUNCTIONALITY",
	SetupL, DoListStoresLCL, Teardown )

EUNIT_TEST(
    "Test DoOnFrameworkEvent",
    "CNSmlDummyDataProvider_Test",
    "",
    "FUNCTIONALITY",
    SetupL, DoOnFrameworkEvent, Teardown )

EUNIT_TEST(
    "Test DoSupportedServerFiltersL",
    "CNSmlDummyDataProvider_Test",
    "",
    "FUNCTIONALITY",
    SetupL, DoSupportedServerFiltersL, Teardown )

EUNIT_TEST(
    "Test DoCheckSupportedServerFiltersL",
    "CNSmlDummyDataProvider_Test",
    "",
    "FUNCTIONALITY",
    SetupL, DoCheckSupportedServerFiltersL, Teardown )

EUNIT_TEST(
    "Test DoCheckServerFiltersL",
    "CNSmlDummyDataProvider_Test",
    "",
    "FUNCTIONALITY",
    SetupL, DoCheckServerFiltersL, Teardown )

EUNIT_TEST(
    "Test DoGenerateRecordFilterQueryL",
    "CNSmlDummyDataProvider_Test",
    "",
    "FUNCTIONALITY",
    SetupL, DoGenerateRecordFilterQueryL, Teardown )

EUNIT_TEST(
    "Test DoGenerateFieldFilterQueryL",
    "CNSmlDummyDataProvider_Test",
    "",
    "FUNCTIONALITY",
    SetupL, DoGenerateFieldFilterQueryL, Teardown )

EUNIT_END_TEST_TABLE