contentctrl_plat/ds_contact_adapter_customization_api/tsrc/ContactsAdapter/cnsmldummydatastore_test.cpp
branchRCL_3
changeset 25 4f0867e42d62
parent 24 8e7494275d3a
child 26 3e6957da2ff8
--- a/contentctrl_plat/ds_contact_adapter_customization_api/tsrc/ContactsAdapter/cnsmldummydatastore_test.cpp	Tue Aug 31 15:05:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1020 +0,0 @@
-/*
-* 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 datastore unit tests.
-*
-*/
-
-// CLASS HEADER
-#include "cnsmldummydatastore_test.h"
-
-// EXTERNAL INCLUDES
-#include <eunitmacros.h>
-#include <eunitdecorators.h>
-#include <cntdb.h>
-#include <cntitem.h>
-#include <cntfield.h>
-#include <cntfldst.h>
-#include <s32mem.h>
-#include <bautils.h>
-#include <smldataformat.h>
-
-// INTERNAL INCLUDES
-#include "cnsmladaptertestutilities.h"
-#include "nsmldummydatastore.h"
-#include "cnsmldummydatastorewaiter.h"
-
-namespace
-    {
-    // "abld test export" will export test data.
-    _LIT( KVCardStandard, "c:\\Data\\TestData\\standard.vcf" );
-    _LIT( KVCardBasic, "c:\\Data\\TestData\\basic.vcf" );
-    }
-
-// - Construction -----------------------------------------------------------
-
-CNSmlDummyDataStore_Test* CNSmlDummyDataStore_Test::NewL()
-    {
-    CNSmlDummyDataStore_Test* self = CNSmlDummyDataStore_Test::NewLC();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-CNSmlDummyDataStore_Test* CNSmlDummyDataStore_Test::NewLC()
-    {
-    CNSmlDummyDataStore_Test* self = new( ELeave ) CNSmlDummyDataStore_Test();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-CNSmlDummyDataStore_Test::~CNSmlDummyDataStore_Test()
-    {
-    iWriteStream.Close();
-    iFsSession.Close();
-    delete iCNSmlDummyDataStore;
-    delete iTestUtilities;
-    delete iContactDatabase;
-    delete iIdArray;
-    delete iStoreWaiter;
-    }
-
-CNSmlDummyDataStore_Test::CNSmlDummyDataStore_Test()
-    {
-    }
-
-void CNSmlDummyDataStore_Test::ConstructL()
-    {
-    CEUnitTestSuiteClass::ConstructL();
-    User::LeaveIfError( iFsSession.Connect() );
-    }
-
-// from MSmlSyncRelationship
-TSmlSyncTaskKey CNSmlDummyDataStore_Test::SyncTaskKey() const
-    {
-    TSmlSyncTaskKey key = 0;
-    return key;
-    }
-
-void CNSmlDummyDataStore_Test::OpenReadStreamLC(
-        RReadStream& /*aReadStream*/, TUid /*aStreamUid*/)
-    {
-    }
-
-void CNSmlDummyDataStore_Test::OpenWriteStreamLC(
-        RWriteStream& aWriteStream, TUid /*aStreamUid*/ )
-    {
-    User::LeaveIfError(
-            iWriteStream.Replace( iFsSession, _L("store.test"), EFileWrite  ) );
-    aWriteStream = iWriteStream;
-    CleanupClosePushL( aWriteStream );
-    }
-
-TBool CNSmlDummyDataStore_Test::IsStreamPresentL(TUid /*aStreamUid*/) const
-    {
-    return EFalse;
-    }
-
-// - Setup & teardown ---------------------------------------------------------
-
-// ++++++++++++ SETUP METHODS ++++++++++++
-
-void CNSmlDummyDataStore_Test::SetupL(  )
-    {
-    iCNSmlDummyDataStore = CNSmlDummyDataStore::NewL();
-    iTestUtilities = CNSmlAdapterTestUtilities::NewL();
-    }
-
-void CNSmlDummyDataStore_Test::SetupAndOpenStoreL(  )
-    {
-    SetupL();
-
-    iStoreWaiter =
-        CNSmlDummyDataStoreWaiter::NewL( *iCNSmlDummyDataStore );
-    iStoreWaiter->OpenStoreL( *this );
-
-    iContactDatabase = CContactDatabase::OpenL();
-    }
-
-void CNSmlDummyDataStore_Test::SetupPopulateDbAndOpenStoreL()
-    {
-    SetupAndPopulateContactDbL();
-
-    EUNIT_ASSERT_NO_LEAVE(
-    iCNSmlDummyDataStore = CNSmlDummyDataStore::NewL() );
-
-    iStoreWaiter =
-        CNSmlDummyDataStoreWaiter::NewL( *iCNSmlDummyDataStore );
-    iStoreWaiter->OpenStoreL( *this );
-    }
-
-/**
- * Setup contact DB with the following contacts
- *   + Tim Tester (id index 0)
- *   + Teddy McTest (id index 1)
- *   + Tod TestHill (id index 2)
- *   + Simon Software (id index 3)
- *   + Cyd Effect (id index 4)
- *
- */
-void CNSmlDummyDataStore_Test::SetupAndPopulateContactDbL()
-    {
-    if( !iContactDatabase )
-        {
-        iContactDatabase = CContactDatabase::OpenL();
-        }
-    if( !iTestUtilities )
-        {
-        iTestUtilities = CNSmlAdapterTestUtilities::NewL();
-        }
-
-    iIdArray = CContactIdArray::NewL();
-
-    // Create test contacts
-    iIdArray->AddL( AddContactL( _L( "Tim" ), _L( "Tester" ), _L( "+358501234567" ) ) );
-    iIdArray->AddL( AddContactL( _L( "Teddy" ), _L("McTest" ), _L( "+358501112222" ) ) );
-    iIdArray->AddL( AddContactL( _L( "Tod" ), _L( "TestHill" ), _L( "+358506666666" ) ) );
-    iIdArray->AddL( AddContactL( _L( "Simon" ), _L( "Software" ), _L( "+3585011223333" ) ) );
-    iIdArray->AddL( AddContactL( _L( "Cyd" ), _L( "Effect" ), _L( "+358503334444" ) ) );
-    }
-
-//// ++++++++++++ TEARDOWN METHODS ++++++++++++
-//
-void CNSmlDummyDataStore_Test::Teardown()
-    {
-    delete iCNSmlDummyDataStore;
-    iCNSmlDummyDataStore = NULL;
-
-    delete iTestUtilities;
-    iTestUtilities = NULL;
-    }
-
-void CNSmlDummyDataStore_Test::TeardownAndCloseStore()
-    {
-    delete iStoreWaiter;
-    iStoreWaiter = NULL;
-
-    delete iContactDatabase;
-    iContactDatabase = NULL;
-
-    Teardown();
-    }
-
-void CNSmlDummyDataStore_Test::TeardownCloseAndEmptyContactDb()
-    {
-    delete iStoreWaiter;
-    iStoreWaiter = NULL;
-
-    delete iCNSmlDummyDataStore;
-    iCNSmlDummyDataStore = NULL;
-
-    TeardownAndEmptyContactDb();
-    }
-
-void CNSmlDummyDataStore_Test::TeardownAndEmptyContactDb()
-    {
-    if (iContactDatabase && iIdArray)
-        {
-        TRAP_IGNORE( iContactDatabase->DeleteContactsL( *iIdArray ) );
-        }
-    
-    delete iIdArray;
-    iIdArray = NULL;
-    delete iContactDatabase;
-    iContactDatabase = NULL;
-    delete iTestUtilities;
-    iTestUtilities = NULL;
-    }
-
-    
-// - Test methods -------------------------------------------------------------
-
-// MEMORY ALLOCATION FOR DATASTORE
-void CNSmlDummyDataStore_Test::NewLL(  )
-    {
-    CNSmlDummyDataStore* dataStore = NULL;
-    EUNIT_ASSERT_NO_LEAVE( dataStore = CNSmlDummyDataStore::NewL() );
-    EUNIT_ASSERT( dataStore );
-    delete dataStore;
-    }
-
-// DoOpenL()
-void CNSmlDummyDataStore_Test::DoOpenLL()
-    {
-    CNSmlDummyDataStoreWaiter* storeWaiter =
-        CNSmlDummyDataStoreWaiter::NewLC( *iCNSmlDummyDataStore );
-
-    TRAPD( err, storeWaiter->OpenStoreL( *this ) );
-
-    // Check for leave
-    EUNIT_PRINT( _L( "Leave code: %d" ), err );
-    EUNIT_ASSERT_DESC( err == KErrNone, "DoOpenL() leave" );
-    CleanupStack::PopAndDestroy( storeWaiter );
-    }
-
-// DoHasSyncHistory()
-void CNSmlDummyDataStore_Test::DoHasSyncHistoryL()
-    {
-    TBool ret = iCNSmlDummyDataStore->DoHasSyncHistory();
-    EUNIT_ASSERT_DESC( ret == EFalse, "DoHasSyncHistory returns faulty value");
-    }
-
-// DoModifiedItems(), DoCommitChangeInfoL()
-void CNSmlDummyDataStore_Test::DoModifiedItemsL()
-    {
-    const MSmlDataItemUidSet& uiSet = iCNSmlDummyDataStore->DoModifiedItems();
-    EUNIT_ASSERT_DESC( uiSet.ItemCount() == 0, "DoModifiedItems returns faulty uid set");
-
-    TInt returnCode = KErrNone;
-
-    TRAPD( err, returnCode = iStoreWaiter->DoCommitChangeInfoL( uiSet ) );
-
-    // Check for leave
-    EUNIT_PRINT( _L( "Leave code: %d" ), err );
-    EUNIT_ASSERT_DESC( err == KErrNone, "DoCommitChangeInfoL() leave" );
-
-    // Check for return code
-    EUNIT_PRINT( _L( "Return code: %d" ), returnCode );
-    EUNIT_ASSERT_DESC( returnCode == KErrNone, "DoCommitChangeInfoL returns error");
-    }
-
-// DoResetChangeInfoL()
-void CNSmlDummyDataStore_Test::DoResetChangeInfoLL()
-    {
-    TInt returnCode = KErrNone;
-    TRAPD( err, returnCode = iStoreWaiter->DoResetChangeInfoL() );
-
-    // Check for leave
-    EUNIT_PRINT( _L( "Leave code: %d" ), err );
-    EUNIT_ASSERT_DESC( err == KErrNone, "DoResetChangeInfoL() leave" );
-
-    // Check for return code
-    EUNIT_PRINT( _L( "Return code: %d" ), returnCode );
-    EUNIT_ASSERT_DESC( returnCode == KErrNone, "DoResetChangeInfoL returns error");
-    }
-
-// DoCommitChangeInfoL()
-void CNSmlDummyDataStore_Test::DoCommitChangeInfoLL()
-    {
-    TInt returnCode = KErrNone;
-    TRAPD( err, returnCode = iStoreWaiter->DoCommitChangeInfoL() );
-
-    // Check for leave
-    EUNIT_PRINT( _L( "Leave code: %d" ), err );
-    EUNIT_ASSERT_DESC( err == KErrNone, "DoCommitChangeInfoL() leave" );
-
-    // Check for return code
-    EUNIT_PRINT( _L( "Return code: %d" ), returnCode );
-    EUNIT_ASSERT_DESC( returnCode == KErrNone, "DoCommitChangeInfoL returns error");
-    }
-
-// Item addition - "Normal" (non-batch) mode
-//  (DoCreateItemL(), DoWriteItemL(), DoCommitItemL(), LdoAddItemL())
-void CNSmlDummyDataStore_Test::AddSingleItemL()
-    {
-    TBuf8< 20 > type;
-    TBuf8< 20 > ver = KNSmlvCard21Ver();
-    TInt returnCode = KErrNone;
-    iItemUid = KNullContactId;
-
-    // Try creating contact with illegal MIME type
-    EUNIT_PRINT( _L("Calling DoCreateItemL(), STEP 1") );
-    TRAPD( err, returnCode = iStoreWaiter->DoCreateItemL(
-        iItemUid, 0, type, ver ) );
-
-    EUNIT_PRINT( _L( "DoCreateItemL(): leave code: %d, return code: %d" ),
-        err, returnCode );
-    EUNIT_ASSERT_DESC( returnCode == KErrNotSupported,
-        "DoCreateItemL() accepts illegal MIME" );
-
-    // Create legal contact
-    type = KNSmlvCard21Name();
-    EUNIT_PRINT( _L("Calling DoCreateItemL(), STEP 2") );
-    TRAP( err, returnCode = iStoreWaiter->DoCreateItemL(
-        iItemUid, 512, type, ver ) );
-
-    EUNIT_PRINT( _L( "DoCreateItemL(): leave code: %d, return code: %d" ),
-        err, returnCode );
-    EUNIT_ASSERT_DESC( err == KErrNone, "DoCreateItemL() leave" );
-    EUNIT_ASSERT_DESC( returnCode == KErrNone, "DoCreateItemL returns error");
-
-    // Perform item writing to data store
-    HBufC8* vCard = iTestUtilities->ReadVCard8FromFileLC( KVCardBasic() );
-    EUNIT_PRINT( _L("Calling DoWriteItemL(), STEP 3") );
-    // Non-async call (no need for iStoreWaiter usage)
-    TRAP( err, iCNSmlDummyDataStore->DoWriteItemL( *vCard ) );
-    EUNIT_PRINT( _L( "DoWriteItemL(): leave code: %d" ), err );
-    EUNIT_ASSERT_DESC( err == KErrNone, "DoCreateItemL() leave" );
-    CleanupStack::PopAndDestroy( vCard );
-
-    // Commit the contact to be created
-    EUNIT_PRINT( _L("Calling DoCommmitItemL(), STEP 4") );
-    TRAP( err, returnCode = iStoreWaiter->DoCommitItemL() );
-
-    EUNIT_PRINT( _L( "DoCommitItemL(): leave code: %d, return code: %d" ),
-        err, returnCode );
-    EUNIT_ASSERT_DESC( err == KErrNone, "DoCommitItemL() leave" );
-    EUNIT_ASSERT_DESC( returnCode == KErrNone, "DoCommitItemL returns error");
-
-    // Check the imported item
-    EUNIT_ASSERT_DESC( iItemUid != KNullContactId, "Illegal UID for imported contact" );
-    EUNIT_PRINT( _L("Item ID: %d"), iItemUid );
-
-    // Print out the imported vCard
-    CContactIdArray* idArr = CContactIdArray::NewLC();
-    idArr->AddL( iItemUid );
-    CBufFlat* buffer = CBufFlat::NewL( 1024 );
-    CleanupStack::PushL( buffer );
-    RBufWriteStream writeStream( *buffer );
-    CleanupClosePushL( writeStream );
-
-    TRAP( err, iContactDatabase->ExportSelectedContactsL( TUid::Uid(KVersitEntityUidVCard), *idArr,
-        writeStream, CContactDatabase::EExcludeUid, Versit::EUTF8CharSet ) );
-
-    EUNIT_ASSERT_EQUALS_DESC( err, KErrNone, "ExportSelectedContactsL leave" );
-
-    CleanupStack::PopAndDestroy( &writeStream );
-
-    EUNIT_PRINT( buffer->Ptr( 0 ) );
-
-    // Do some asserts
-    EUNIT_ASSERT( buffer->Ptr( 0 ).Find( _L8("N:Smith;John") ) != KErrNotFound );
-    EUNIT_ASSERT( buffer->Ptr( 0 ).Find( _L8("TITLE:Boss") ) != KErrNotFound );
-
-    CleanupStack::PopAndDestroy( 2, idArr );  // buffer, idArr
-
-    // Do cleanup (remove added contact)
-    CContactIdArray* tmpArray = CContactIdArray::NewLC();
-    tmpArray->AddL( iItemUid );
-    TRAP_IGNORE( iContactDatabase->DeleteContactsL( *tmpArray ) );
-    CleanupStack::PopAndDestroy( tmpArray );
-    }
-
-// Item addition - Batch mode
-// (LdoAddItemsL())
-void CNSmlDummyDataStore_Test::AddItemBatchL()
-    {
-    TBuf8<20> type = KNSmlvCard21Name();
-    TBuf8<20> ver = KNSmlvCard21Ver();
-    TInt returnCode = KErrNone;
-    HBufC8* vCard = NULL;
-
-    // DoBeginBatchL()
-    EUNIT_PRINT( _L("Calling DoCreateItemL(), STEP 1") );
-    TRAPD( err, iCNSmlDummyDataStore->DoBeginBatchL() );
-    EUNIT_PRINT( _L( "DoBeginBatchL(): leave code: %d" ), err );
-    EUNIT_ASSERT_DESC( err == KErrNone, "DoBeginBatchL() leave" );
-
-    // == == CONTACT ITEM NO 1 == ==
-    vCard = iTestUtilities->ReadVCard8FromFileLC( KVCardBasic() );
-    EUNIT_PRINT( _L("Calling DoCreateItemL(), STEP 2") );
-    TRAP( err, returnCode = iStoreWaiter->DoCreateItemL(
-        iItemUid, vCard->Size(), type, ver ) );
-
-    EUNIT_PRINT( _L( "DoCreateItemL(): leave code: %d, return code: %d" ),
-        err, returnCode );
-    EUNIT_ASSERT_DESC( err == KErrNone, "DoCreateItemL() leave" );
-    EUNIT_ASSERT_DESC( returnCode == KErrNone, "DoCreateItemL returns error");
-
-    // Perform item writing to data store
-    EUNIT_PRINT( _L("Calling DoWriteItemL(), STEP 3") );
-    // Non-async call (no need for iStoreWaiter usage)
-    TRAP( err, iCNSmlDummyDataStore->DoWriteItemL( *vCard ) );
-    EUNIT_PRINT( _L( "DoWriteItemL(): leave code: %d" ), err );
-    EUNIT_ASSERT_DESC( err == KErrNone, "DoCreateItemL() leave" );
-    CleanupStack::PopAndDestroy( vCard );
-    vCard = NULL;
-
-    // Commit the contact to be created
-    EUNIT_PRINT( _L("Calling DoCommitItemL(), STEP 4") );
-    TRAP( err, returnCode = iStoreWaiter->DoCommitItemL() );
-
-    EUNIT_PRINT( _L( "DoCommitItemL(): leave code: %d, return code: %d" ),
-        err, returnCode );
-    EUNIT_ASSERT_DESC( err == KErrNone, "DoCommitItemL() leave" );
-    EUNIT_ASSERT_DESC( returnCode == KErrNone, "DoCommitItemL returns error");
-
-    // Commit batch
-    RArray<TInt> array;
-    EUNIT_PRINT( _L("Calling DoCommitBatchL(), STEP 5") );
-    TRAP( err, returnCode = iStoreWaiter->DoCommitBatchL( array ) );
-
-    EUNIT_PRINT( _L( "DoCommitBatchL(): leave code: %d, return code: %d" ),
-        err, returnCode );
-    EUNIT_ASSERT_DESC( err == KErrNone, "DoCommitBatchL() leave" );
-    EUNIT_ASSERT_DESC( returnCode == KErrNone, "DoCommitBatchL returns error" );
-
-    // Verify results
-    for( TInt i = 0; i < array.Count(); i++ )
-        {
-        EUNIT_PRINT( _L( "Contact: %d, Error code: %d "), i, array[ i ] );
-        EUNIT_ASSERT( array[ i ] == KErrNone );
-        }
-    EUNIT_ASSERT_DESC( array.Count() == 1, "Wrong number of contacts added" );
-    EUNIT_PRINT( _L("Item 1 ID = %d"), iItemUid );
-
-    // Cleanup
-    array.Reset();
-    array.Close();
-
-    CContactIdArray* tmpArray = CContactIdArray::NewLC();
-    tmpArray->AddL( iItemUid );
-    TRAP_IGNORE( iContactDatabase->DeleteContactsL( *tmpArray ) );
-    CleanupStack::PopAndDestroy( tmpArray );
-    }
-
-// Item addition - cancel Batch mode 
-void CNSmlDummyDataStore_Test::CancelBatchL()
-    {
-    TBuf8<20> type = KNSmlvCard21Name();
-    TBuf8<20> ver = KNSmlvCard21Ver();
-    TInt returnCode = KErrNone;
-    HBufC8* vCard = NULL;
-
-    // DoBeginBatchL()
-    EUNIT_PRINT( _L("Calling DoCreateItemL(), STEP 1") );
-    TRAPD( err, iCNSmlDummyDataStore->DoBeginBatchL() );
-    EUNIT_PRINT( _L( "DoBeginBatchL(): leave code: %d" ), err );
-    EUNIT_ASSERT_DESC( err == KErrNone, "DoBeginBatchL() leave" );
-
-    // == == CONTACT ITEM NO 1 == ==
-    vCard = iTestUtilities->ReadVCard8FromFileLC( KVCardBasic() );
-    EUNIT_PRINT( _L("Calling DoCreateItemL(), STEP 2") );
-    TRAP( err, returnCode = iStoreWaiter->DoCreateItemL(
-        iItemUid, vCard->Size(), type, ver ) );
-
-    EUNIT_PRINT( _L( "DoCreateItemL(): leave code: %d, return code: %d" ),
-        err, returnCode );
-    EUNIT_ASSERT_DESC( err == KErrNone, "DoCreateItemL() leave" );
-    EUNIT_ASSERT_DESC( returnCode == KErrNone, "DoCreateItemL returns error");
-
-    // Perform item writing to data store
-    EUNIT_PRINT( _L("Calling DoWriteItemL(), STEP 3") );
-    // Non-async call (no need for iStoreWaiter usage)
-    TRAP( err, iCNSmlDummyDataStore->DoWriteItemL( *vCard ) );
-    EUNIT_PRINT( _L( "DoWriteItemL(): leave code: %d" ), err );
-    EUNIT_ASSERT_DESC( err == KErrNone, "DoCreateItemL() leave" );
-    CleanupStack::PopAndDestroy( vCard );
-    vCard = NULL;
-
-    // Cancel Batch
-    EUNIT_PRINT( _L("Calling DoCancelBatch(), STEP 4") );
-    iStoreWaiter->DoCancelBatch();
-    }
-
-// DoOpenItemL(), DoReadItemL(), DoCloseItemL()
-//  (LdoFetchItemL())
-void CNSmlDummyDataStore_Test::FetchItemL()
-    {
-    TBuf8<20> type;
-    TBuf8<20> ver;
-    TInt returnCode = KErrNone;
-    TInt size = 0;
-    TSmlDbItemUid parentId = KNullContactId;
-    TBool fieldChange = EFalse;
-
-    // Open item ("Tim Tester") for reading
-    EUNIT_PRINT( _L("Calling DoOpenItemL()") );
-
-    //Make some preparations:
-    // (a) Set remote store format; needed by StripTxL()
-    //      - Otherwise we get access violation
-    EUNIT_ASSERT( iCNSmlDummyDataStore->iStoreFormat );
-    iCNSmlDummyDataStore->DoSetRemoteStoreFormatL(
-        *(iCNSmlDummyDataStore->iStoreFormat) );
-
-    TRAPD( err, returnCode = iStoreWaiter->DoOpenItemL(
-        ( *iIdArray )[ 0 ], fieldChange, size, parentId, type, ver ) );
-
-    EUNIT_PRINT( _L( "DoOpenItemL(): leave code: %d, return code: %d" ),
-        err, returnCode );
-    EUNIT_ASSERT_DESC( err == KErrNone, "DoOpenItemL() leave" );
-    EUNIT_ASSERT_DESC( returnCode == KErrNone, "DoOpenItemL returns error");
-
-    // Execute some asserts to verify functionality
-    EUNIT_PRINT( _L( "DoOpenItemL(): size: %d" ),
-            size );
-    EUNIT_ASSERT_DESC( size != 0, "Illegal size value" );
-    EUNIT_ASSERT_DESC( parentId == KNullDataItemId, "Wrong parent ID" );
-    EUNIT_ASSERT_DESC( type.Compare( KNSmlvCard21Name() ) == 0,
-        "Illegal MIME type" );
-    EUNIT_ASSERT_DESC( ver.Compare( KNSmlvCard21Ver() ) == 0,
-        "Illegal MIME version" );
-
-    // Read the item contents (i.e. vCard)
-    HBufC8* vCard = HBufC8::NewLC( 86 );
-    TPtr8 vCardPtr = vCard->Des();
-    EUNIT_ASSERT_NO_LEAVE( iCNSmlDummyDataStore->DoReadItemL( vCardPtr ) );
-
-    EUNIT_PRINT( *vCard );
-    EUNIT_ASSERT( vCard->Find( _L8("N:Tester;Tim") ) != KErrNotFound );
-    EUNIT_ASSERT( vCard->Find( _L8("TEL:+358501234567") ) != KErrNotFound );
-
-    CleanupStack::PopAndDestroy( vCard );
-
-    // Close the contact item
-    iCNSmlDummyDataStore->DoCloseItem();
-    }
-
-// Update a standard contact
-//  (DoReplaceItemL(), ExecuteBufferL()...)
-void CNSmlDummyDataStore_Test::UpdateItemL()
-    {
-    TInt returnCode = KErrNone;
-    TSmlDbItemUid parentId = KNullContactId;
-    TBool fieldChange = EFalse;
-
-    HBufC8* vCard = iTestUtilities->ReadVCard8FromFileLC( KVCardStandard() );
-
-    // Update "Tim Tester" contact
-    TRAPD( err, returnCode = iStoreWaiter->DoReplaceItemL(
-        ( *iIdArray )[ 0 ], vCard->Size(), parentId, fieldChange ) );
-
-    EUNIT_PRINT( _L( "DoReplaceItemL(): leave code: %d, return code: %d" ),
-        err, returnCode );
-    EUNIT_ASSERT_DESC( err == KErrNone, "DoReplaceItemL() leave" );
-    EUNIT_ASSERT_DESC( returnCode == KErrNone, "DoReplaceItemL returns error");
-
-    // Perform item writing to data store
-    EUNIT_PRINT( _L("Calling DoWriteItemL()") );
-    TRAP( err, iCNSmlDummyDataStore->DoWriteItemL( *vCard ) );
-    EUNIT_PRINT( _L( "DoWriteItemL(): leave code: %d" ), err );
-    EUNIT_ASSERT_DESC( err == KErrNone, "DoWriteItemL() leave" );
-    CleanupStack::PopAndDestroy( vCard );
-
-    // Commit the contact to be created
-    EUNIT_PRINT( _L("Calling DoCommmitItemL()") );
-    TRAP( err, returnCode = iStoreWaiter->DoCommitItemL() );
-
-    EUNIT_PRINT( _L( "DoCommitItemL(): leave code: %d, return code: %d" ),
-        err, returnCode );
-    EUNIT_ASSERT_DESC( err == KErrNone, "DoCommitItemL() leave" );
-    EUNIT_ASSERT_DESC( returnCode == KErrNone, "DoCommitItemL returns error");
-
-    // Print out the imported vCard
-    CContactIdArray* idArr = CContactIdArray::NewLC();
-    idArr->AddL( ( *iIdArray )[ 0 ] );
-    CBufFlat* buffer = CBufFlat::NewL( 1024 );
-    CleanupStack::PushL( buffer );
-    RBufWriteStream writeStream( *buffer );
-    CleanupClosePushL( writeStream );
-
-    TRAP( err, iContactDatabase->ExportSelectedContactsL(
-        TUid::Uid(KVersitEntityUidVCard), *idArr,
-        writeStream, CContactDatabase::EExcludeUid, Versit::EUTF8CharSet ) );
-
-    EUNIT_ASSERT_EQUALS_DESC( err, KErrNone, "ExportSelectedContactsL leave" );
-
-    CleanupStack::PopAndDestroy( &writeStream );
-
-    EUNIT_PRINT( buffer->Ptr( 0 ) );
-
-    // Do some asserts
-    EUNIT_ASSERT( buffer->Ptr( 0 ).Find( _L8("N:Smith;John") ) != KErrNotFound );
-    EUNIT_ASSERT( buffer->Ptr( 0 ).Find( _L8("TITLE:Boss") ) != KErrNotFound );
-
-    CleanupStack::PopAndDestroy( 2, idArr );  // buffer, idArr
-    }
-
-// DoDeleteItemL()
-void CNSmlDummyDataStore_Test::DeleteItemL()
-    {
-    // Delete item
-    TInt returnCode = KErrNone;
-    EUNIT_PRINT( _L("Calling DoDeleteItemL()") );
-    TRAPD( err, returnCode = iStoreWaiter->DoDeleteItemL( ( *iIdArray )[ 0 ] ) );
-
-    EUNIT_PRINT( _L( "DoDeleteItemL(): leave code: %d, return code: %d" ),
-        err, returnCode );
-    EUNIT_ASSERT_DESC( err == KErrNone, "DoDeleteItemL() leave" );
-    EUNIT_ASSERT_DESC( returnCode == KErrNone, "DoDeleteItemL returns error");
-    
-    // Check that the contact does not exist any more
-    CContactItem* item = NULL;
-    CContactDatabase* cntDb = NULL;
-    TRAP( err, cntDb = CContactDatabase::OpenL() );
-    TRAP( err, item = cntDb->ReadMinimalContactL(
-        ( *iIdArray )[ 0 ] ) );
-    EUNIT_ASSERT( !item );
-    EUNIT_PRINT( _L("Error=%d"), err );
-    EUNIT_ASSERT_EQUALS_DESC( err, KErrNotFound, "Deleted item found" );
-    delete item;
-    item = NULL;
-
-    if( cntDb )
-        {
-        delete cntDb;
-        }
-
-    iIdArray->Remove( 0 );
-    }
-
-// DoDeleteAllItemsL()
-void CNSmlDummyDataStore_Test::DeleteAllItemsL()
-    {
-    // Temporarily remove ChangeFinder from Store to prevent leaves
-    // when reseting ChangeFinder in code under test.
-    CNSmlChangeFinder* cF = iCNSmlDummyDataStore->iChangeFinder;
-    CleanupStack::PushL( cF );
-    iCNSmlDummyDataStore->iChangeFinder = NULL;
-
-    TInt returnCode = KErrNone;
-    EUNIT_PRINT( _L("Calling DoDeleteAllItemsL()") );
-    TRAPD( err, returnCode = iStoreWaiter->DoDeleteAllItemsL() );
-
-    // Return ChangeFinders
-    CleanupStack::Pop( cF );
-    iCNSmlDummyDataStore->iChangeFinder = cF;
-
-    EUNIT_PRINT( _L( "DoDeleteAllItemsL(): leave code: %d, return code: %d" ),
-        err, returnCode );
-    EUNIT_ASSERT_DESC( err == KErrNone, "DoDeleteAllItemsL() leave" );
-    EUNIT_ASSERT_DESC( returnCode == KErrNone, "DoDeleteAllItemsL returns error");
-
-    // Check that all normal contacts are removed
-    TContactItemId ownCardId = iContactDatabase->OwnCardId();
-
-    TInt contactCount = 0;
-    TInt groupCount = iContactDatabase->GroupCount();
-    TContactIter iter( *iContactDatabase );
-    for( TContactItemId id = iter.FirstL(); id != KNullContactId; id = iter.NextL() )
-        {
-        // KUidContactGroup
-        if( id != ownCardId )
-            {
-            contactCount++;
-            }
-        }
-    EUNIT_PRINT( _L("Number of items in DB=%d"), contactCount );
-    EUNIT_PRINT( _L("Number of groups in DB=%d"), groupCount );
-    EUNIT_ASSERT_DESC( contactCount - groupCount == 0, "All contacts not deleted");
-    }
-
-// GetStoreFormatResourceFileL()
-void CNSmlDummyDataStore_Test::GetStoreFormatResourceFileLL()
-    {
-    const TDesC& resourceFile = iCNSmlDummyDataStore->GetStoreFormatResourceFileL();
-    EUNIT_PRINT( resourceFile );
-    }
-
-void CNSmlDummyDataStore_Test::TestStoreSupportMimeTypeL()
-    {
-    EUNIT_ASSERT( iCNSmlDummyDataStore->iStoreFormat );
-    EUNIT_ASSERT_EQUALS( iCNSmlDummyDataStore->iStoreFormat->MimeFormatCount() ,1 );
-    EUNIT_ASSERT_EQUALS(
-            iCNSmlDummyDataStore->iStoreFormat->MimeFormat(0).MimeType().DesC(),
-            KNSmlvCard21Name() );
-    EUNIT_ASSERT_EQUALS(
-            iCNSmlDummyDataStore->iStoreFormat->MimeFormat(0).MimeVersion().DesC(),
-                    KNSmlvCard21Ver() );
-    }
-
-void CNSmlDummyDataStore_Test::GetDataMod()
-    {
-    CNSmlDataModBase& dataMod = iCNSmlDummyDataStore->GetDataMod();
-    }
-
-void CNSmlDummyDataStore_Test::DoBeginTransactionL()
-    {
-    TRAPD( err, iCNSmlDummyDataStore->DoBeginTransactionL() );
-    EUNIT_ASSERT( err == KErrNotSupported );
-    }
-
-void CNSmlDummyDataStore_Test::DoCommitTransactionL()
-    {
-    TRequestStatus status;
-    iCNSmlDummyDataStore->DoCommitTransactionL( status );
-    User::WaitForRequest( status );
-    EUNIT_ASSERT_DESC( status.Int() == KErrNotSupported, "DoCommitTransactionL fail"  )
-    }
-
-void CNSmlDummyDataStore_Test::DoRevertTransaction()
-    {
-    TRequestStatus status;
-    iCNSmlDummyDataStore->DoRevertTransaction( status );
-    User::WaitForRequest( status );
-    EUNIT_ASSERT_DESC( status.Int() == KErrNotSupported, "DoRevertTransaction fail"  )
-    }
-
-void CNSmlDummyDataStore_Test::StoreNameL()
-    {
-    CreateDataStoreL();
-    EUNIT_PRINT( iDataStore->StoreName() );
-    iDataStore->CancelRequest();
-    DeleteDataStoreL();
-    }
-
-void CNSmlDummyDataStore_Test::FindChangedItemsL()
-    {
-    CreateDataStoreL();
-    const MSmlDataItemUidSet& added = iDataStore->AddedItems();
-    EUNIT_ASSERT_DESC( added.ItemCount() == 0, "AddedItems returns faulty uid set");
-    const MSmlDataItemUidSet& deleted = iDataStore->DeletedItems();
-    EUNIT_ASSERT_DESC( deleted.ItemCount() == 0, "DeletedItems returns faulty uid set");
-    const MSmlDataItemUidSet& softDeleted = iDataStore->SoftDeletedItems();
-    EUNIT_ASSERT_DESC( softDeleted.ItemCount() == 0, "SoftDeletedItems returns faulty uid set");
-    const MSmlDataItemUidSet& moved = iDataStore->MovedItems();
-    EUNIT_ASSERT_DESC( moved.ItemCount() == 0, "MovedItems returns faulty uid set");
-    DeleteDataStoreL();
-    }
-
-void CNSmlDummyDataStore_Test::MoveAndDeleteL()
-    {
-    CreateDataStoreL();
-    TSmlDbItemUid uid = 1;
-    TSmlDbItemUid parent = 0;
-    TRequestStatus status;
-    iDataStore->MoveItemL( uid, parent, status );
-    User::WaitForRequest( status );
-    
-    TRequestStatus status2;
-    iDataStore->SoftDeleteItemL( uid, status2 );
-    User::WaitForRequest( status2 );
-    
-    DeleteDataStoreL();
-    }
-
-void CNSmlDummyDataStore_Test::DoSetRemoteMaxObjectSize()
-    {
-    iCNSmlDummyDataStore->DoSetRemoteMaxObjectSize( 100000 );
-    }
-
-void CNSmlDummyDataStore_Test::DoMaxObjectSize()
-    {
-    TInt size = iCNSmlDummyDataStore->DoMaxObjectSize();
-    EUNIT_ASSERT( size == 102400 );
-    }
-
-
-// --------------- Helper methods --------------
-
-// Helper method to add a simple contact to test contact DB
-TContactItemId CNSmlDummyDataStore_Test::AddContactL(
-        const TDesC& aFirstName,
-        const TDesC& aLastName,
-        const TDesC& aPhoneNumber )
-    {
-    _LIT( KLabelFamilyName, "Last name");
-    _LIT( KLabelGivenName, "First name");
-    _LIT( KLabelPhone, "Phone");
-
-    CContactCard* card = CContactCard::NewLC();
-
-    // Family name field
-    CContactItemField* familyNameField =
-        CContactItemField::NewLC( KStorageTypeText, KUidContactFieldFamilyName );
-    familyNameField->SetLabelL( KLabelFamilyName );
-    familyNameField->SetMapping( KUidContactFieldVCardMapUnusedN );
-    familyNameField->TextStorage()->SetTextL( aLastName );
-    card->AddFieldL( *familyNameField ); // Takes ownership
-    CleanupStack::Pop( familyNameField );
-
-    // First name field
-    CContactItemField* nameField =
-    CContactItemField::NewLC( KStorageTypeText, KUidContactFieldGivenName );
-    nameField->SetLabelL( KLabelGivenName );
-    nameField->SetMapping( KUidContactFieldVCardMapUnusedN );
-    nameField->TextStorage()->SetTextL( aFirstName );
-    card->AddFieldL( *nameField );
-    CleanupStack::Pop(nameField);
-
-    // Phone number field
-    CContactItemField* phoneField =
-        CContactItemField::NewLC( KStorageTypeText, KUidContactFieldPhoneNumber );
-    phoneField->SetLabelL( KLabelPhone );
-    phoneField->SetMapping( KUidContactFieldVCardMapTEL );
-    phoneField->TextStorage()->SetTextL( aPhoneNumber );
-    card->AddFieldL( *phoneField );
-    CleanupStack::Pop( phoneField );
-
-    TContactItemId cardId = iContactDatabase->AddNewContactL( *card );
-    CleanupStack::PopAndDestroy( card );
-
-    return cardId;
-    }
-
-void CNSmlDummyDataStore_Test::CreateDataStoreL()
-    {
-    TSmlDataProviderId id = {0x101F6DDD};// Contact Adapter Uid
-    CSmlDataProvider* dp = CSmlDataProvider::NewL( id );
-    iDataStore = dp->NewStoreInstanceLC();
-    CleanupStack::Pop( iDataStore );
-    delete dp;
-    }
-
-void CNSmlDummyDataStore_Test::DeleteDataStoreL()
-    {
-    delete iDataStore;
-    iDataStore = NULL;
-    }
-
-// - EUnit test table -------------------------------------------------------
-
-EUNIT_BEGIN_TEST_TABLE(
-    CNSmlDummyDataStore_Test,
-    "Unit tests Contact adapter datastore",
-    "UNIT" )
-
-EUNIT_TEST(
-    "Test to verify memory allocation for the object",
-    "CNSmlContactsDataStore",
-    "NewL",
-    "FUNCTIONALITY",
-    Empty, NewLL, Empty)
-
-// The following unit test cases fail because of mis-match in 
-// heap cell count & thread handle count. This is caused by
-// DataStoreExtension component.
-EUNIT_TEST(
-    "Open data store",
-    "CNSmlContactsDataStore",
-    "DoOpenL",
-    "FUNCTIONALITY",
-    SetupL, DoOpenLL, Teardown )
-
-EUNIT_TEST(
-    "DoHasSyncHistory",
-    "CNSmlContactsDataStore",
-    "DoHasSyncHistory",
-    "FUNCTIONALITY",
-    SetupAndOpenStoreL, DoHasSyncHistoryL, TeardownAndCloseStore )
-
-EUNIT_TEST(
-    "DoModifiedItems & DoCommitChangeInfoL",
-    "CNSmlContactsDataStore",
-    "DoModifiedItems",
-    "FUNCTIONALITY",
-    SetupAndOpenStoreL, DoModifiedItemsL, TeardownAndCloseStore )
-
-EUNIT_TEST(
-    "DoResetChangeInfoL",
-    "CNSmlContactsDataStore",
-    "DoResetChangeInfoL",
-    "FUNCTIONALITY",
-    SetupAndOpenStoreL, DoResetChangeInfoLL, TeardownAndCloseStore )
-
-EUNIT_TEST(
-    "DoCommitChangeInfoL",
-    "CNSmlContactsDataStore",
-    "DoCommitChangeInfoL",
-    "FUNCTIONALITY",
-    SetupAndOpenStoreL, DoCommitChangeInfoLL, TeardownAndCloseStore )
-
-EUNIT_TEST(
-    "Add single item (normal mode)",
-    "CNSmlContactsDataStore",
-    "DoCreateItemL, DoCommitItemL, LdoAddItem",
-    "FUNCTIONALITY",
-    SetupAndOpenStoreL, AddSingleItemL, TeardownAndCloseStore )
-
-EUNIT_TEST(
-    "Add item in batch mode",
-    "CNSmlContactsDataStore",
-    "DoBeginBatchL, DoCommitBatchL",
-    "FUNCTIONALITY",
-    SetupAndOpenStoreL, AddItemBatchL, TeardownAndCloseStore )
-
-EUNIT_TEST(
-    "CancelBatchL",
-    "CNSmlContactsDataStore",
-    "DoCancelBatch",
-    "FUNCTIONALITY",
-    SetupAndOpenStoreL, CancelBatchL, TeardownAndCloseStore ) 
-
-EUNIT_TEST(
-    "Fetch/read normal contact",
-    "CNSmlContactsDataStore",
-    "LdoFetchItemL",
-    "FUNCTIONALITY",
-    SetupPopulateDbAndOpenStoreL, FetchItemL, TeardownCloseAndEmptyContactDb )
-
-EUNIT_TEST(
-    "Update normal contact",
-    "CNSmlContactsDataStore",
-    "LdoUpdateItemL",
-    "FUNCTIONALITY",
-    SetupPopulateDbAndOpenStoreL, UpdateItemL, TeardownCloseAndEmptyContactDb )
-
-EUNIT_TEST(
-    "Delete normal contact",
-    "CNSmlContactsDataStore",
-    "DoDeleteItemL",
-    "FUNCTIONALITY",
-    SetupPopulateDbAndOpenStoreL, DeleteItemL, TeardownCloseAndEmptyContactDb )
-
-EUNIT_TEST(
-    "Delete all contacts",
-    "CNSmlContactsDataStore",
-    "DoDeleteItemL",
-    "FUNCTIONALITY",
-    SetupPopulateDbAndOpenStoreL, DeleteAllItemsL, TeardownCloseAndEmptyContactDb )
-// End of failing test cases
-
-EUNIT_TEST(
-    "Test for GetStoreFormatResourceFileL function",
-    "CNSmlContactsDataStore",
-    "",
-    "FUNCTIONALITY",
-    SetupL, GetStoreFormatResourceFileLL, Teardown )
-
-EUNIT_TEST(
-    "Verify operator specific MIME type",
-    "CNSmlContactsDataStore",
-    "",
-    "FUNCTIONALITY",
-    SetupL, TestStoreSupportMimeTypeL, Teardown )
-
-EUNIT_TEST(
-    "GetDataMod",
-    "CNSmlContactsDataStore",
-    "",
-    "FUNCTIONALITY",
-    SetupL, GetDataMod, Teardown )
-
-EUNIT_TEST(
-    "DoBeginTransactionL",
-    "CNSmlContactsDataStore",
-    "",
-    "FUNCTIONALITY",
-    SetupL, DoBeginTransactionL, Teardown )
-
-EUNIT_TEST(
-    "DoCommitTransactionL",
-    "CNSmlContactsDataStore",
-    "",
-    "FUNCTIONALITY",
-    SetupL, DoCommitTransactionL, Teardown )
-
-EUNIT_TEST(
-    "DoRevertTransaction",
-    "CNSmlContactsDataStore",
-    "",
-    "FUNCTIONALITY",
-    SetupL, DoRevertTransaction, Teardown )
-
-EUNIT_TEST(
-    "StoreNameL",
-    "CNSmlContactsDataStore",
-    "",
-    "FUNCTIONALITY",
-    SetupL, StoreNameL, Teardown )
-    
-EUNIT_TEST(
-    "FindChangedItemsL",
-    "CNSmlContactsDataStore",
-    "",
-    "FUNCTIONALITY",
-    SetupL, FindChangedItemsL, Teardown )   
-
-EUNIT_TEST(
-    "MoveAndDeleteL",
-    "CNSmlContactsDataStore",
-    "",
-    "FUNCTIONALITY",
-    SetupL, MoveAndDeleteL, Teardown )
-
-EUNIT_TEST(
-    "DoSetRemoteMaxObjectSize",
-    "CNSmlContactsDataStore",
-    "",
-    "FUNCTIONALITY",
-    SetupL, DoSetRemoteMaxObjectSize, Teardown )
-
-EUNIT_TEST(
-    "DoMaxObjectSize",
-    "CNSmlContactsDataStore",
-    "",
-    "FUNCTIONALITY",
-    SetupL, DoMaxObjectSize, Teardown )
-
-EUNIT_END_TEST_TABLE