phonebookengines/contactsmodel/tsrc/Integration/TestImpExvCard/src/TestImpOOM.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookengines/contactsmodel/tsrc/Integration/TestImpExvCard/src/TestImpOOM.cpp Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,141 @@
+// Copyright (c) 2006-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:
+//
+
+#include "TestImpOOM.h"
+
+CTestImpOOM::~CTestImpOOM()
+/**
+ * Destructor
+ */
+ {
+ }
+
+CTestImpOOM::CTestImpOOM()
+/**
+ * Constructor
+ */
+ {
+ // Call base class method to set up the human readable name for logging
+ SetTestStepName(KTestImpOOM);
+ }
+
+TVerdict CTestImpOOM::doTestStepPreambleL()
+/**
+ * @return - TVerdict code
+ * Override of base class virtual
+ */
+ {
+ INFO_PRINTF1(_L("Start Import of vCards in OOM Test"));
+
+ iScheduler = new (ELeave) CActiveScheduler;
+ CActiveScheduler::Install(iScheduler);
+
+ SetTestStepResult(EPass);
+ return TestStepResult();
+ }
+
+TVerdict CTestImpOOM::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ */
+ {
+ SetTestStepResult(EPass);
+ TInt tryCount = 1;
+ TInt err = KErrNone;
+ TBool success = EFalse;
+ CArrayPtr<CContactItem>* item = NULL;
+
+ CContactDatabase *dBase = NULL;
+ _LIT(KTestDbName, "c:importcontact.cdb");
+ RFs fsSession;
+ RFileReadStream readStream;
+
+ //replace existing database
+ dBase = CContactDatabase::ReplaceL(KTestDbName);
+ CleanupStack::PushL(dBase);
+
+ //connect to file system
+ User::LeaveIfError(fsSession.Connect());
+ CleanupClosePushL(fsSession);
+
+ TFileName fileName;
+#ifdef __WINS__
+ fileName.Append(_L("c:"));
+#else
+ TFileName processFileName = RProcess().FileName();
+ TParsePtrC parse(processFileName);
+ fileName.Append(parse.Drive());
+#endif
+ fileName.Append(KImportOOM());
+
+ //Opens a file containing a stream and prepares the stream for reading
+ User::LeaveIfError(readStream.Open(fsSession, fileName, EFileRead));
+ CleanupClosePushL(readStream);
+
+ for ( ;; )
+ {
+ __UHEAP_SETFAIL(RHeap::EFailNext, tryCount);
+ TRAP(err, item = dBase->ImportContactsL(TUid::Uid(KUidVCardConvDefaultImpl), readStream, success, CContactDatabase::EDefault));
+
+ if ( err == KErrNone )
+ {
+ __UHEAP_RESET;
+ INFO_PRINTF1(_L("OOM testing of CContactDatabase::ImportContactsL Api is done"));
+ break;
+ }
+ if ( err != KErrNoMemory )
+ {
+ SetTestStepResult(EFail);
+ break;
+ }
+ __UHEAP_SETFAIL(RHeap::ENone, 0);
+ tryCount++;
+ }
+
+ // item = dBase->ImportContactsL(TUid::Uid(KUidVCardConvDefaultImpl), readStream, success, CContactDatabase::EDefault);
+ INFO_PRINTF2(_L("TRYCOUNT %d"), tryCount);
+ TInt contactsCount = (*item).Count();
+ INFO_PRINTF2(_L("Total number of contacts imported is %d "), contactsCount);
+ if (contactsCount == 0)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ readStream.Close();
+
+ // Cleanup
+ item->ResetAndDestroy();
+ delete item;
+ CleanupStack::PopAndDestroy(&readStream);
+ fsSession.Close();
+ CleanupStack::PopAndDestroy(&fsSession);
+ CleanupStack::PopAndDestroy(dBase);
+
+ return TestStepResult();
+ }
+
+TVerdict CTestImpOOM::doTestStepPostambleL()
+/**
+ * @return - TVerdict code
+ * Override of base class virtual
+ */
+ {
+ CActiveScheduler::Install(NULL);
+ delete iScheduler;
+ INFO_PRINTF1(_L("Completed Import of vCards in OOM Test"));
+ return TestStepResult();
+ }
+