messagingfw/biomsgfw/BDBTSRC/BioTest.h
changeset 0 8e480a14352b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/biomsgfw/BDBTSRC/BioTest.h	Mon Jan 18 20:36:02 2010 +0200
@@ -0,0 +1,233 @@
+// Copyright (c) 2000-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:
+// BioTest.h
+//
+
+#ifndef __BIOTEST_H__
+#define __BIOTEST_H__
+
+#include <e32test.h>
+#include "msvtestutilsbase.h"
+#include "BIODB.H"
+#include <bautils.h>
+#include <bifchangeobserver.h>
+
+// Constants
+_LIT(KBifFolderV2, "\\resource\\messaging\\Bif\\");     
+
+
+// The following must be defined by the test exe
+GLREF_D RTest test;
+LOCAL_C void doTestsL();
+
+// Globals
+TInt TestNum = 0;
+class CBioTestUtils;
+CBioTestUtils* theUtils = NULL;
+
+//**********************************
+// CBioTestUtils
+//**********************************
+
+class CBioTestUtils : public CTestUtils
+	{
+public:
+	static CBioTestUtils* NewL(RTest& aTest);
+	CBioTestUtils(RTest& aTest);
+	void Panic(TInt aPanic);
+	//
+public:
+	void Start(const TDesC& aDes);
+	void Complete();
+	void End(TInt aRet);
+	//
+	void ClearBifFoldersL();
+	void ClearBifFolderL(TInt aDrive);
+	TBool BifInstalledL(CBIODatabase& aDatabase, TUid aId);
+	TBool FindFileL(TParse& aParse, const TDesC& aDir, const TDesC& aName);
+	//
+private:
+	void ConstructL();
+	TBool DoFindFileL(TParse& aParse, TInt aDrive, const TDesC& aDir, const TDesC& aName);
+	//
+private:
+	TInt iTestNum;
+	};
+
+
+CBioTestUtils* CBioTestUtils::NewL(RTest& aTest)
+	{
+	CBioTestUtils* self = new(ELeave)CBioTestUtils(aTest);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(); // self
+	return self;
+	}
+
+CBioTestUtils::CBioTestUtils(RTest& aTest)
+: CTestUtils(aTest)
+	{
+	}
+
+void CBioTestUtils::ConstructL()
+	{
+	CTestUtils::ConstructL();
+
+	// Is there a D-drive?
+	TVolumeInfo info;
+	Test()(FileSession().Volume(info, EDriveD) == KErrNone);
+	}
+
+void CBioTestUtils::Panic(TInt)
+	{
+	Test()(EFalse);
+	}
+
+void CBioTestUtils::Start(const TDesC& aDes)
+	{
+	if (iTestNum == 0)
+		Test().Start(aDes);
+	else
+		Test().Next(aDes);
+
+	TestStart(++iTestNum, aDes);
+	}
+
+void CBioTestUtils::Complete()
+	{
+	TestFinish(iTestNum, KErrNone);
+	}
+
+void CBioTestUtils::End(TInt aRet)
+	{
+	if (!aRet)
+		TestHarnessCompleted();
+	else
+		TestHarnessFailed(aRet);
+	
+	Test()(aRet == KErrNone);
+
+	if (iTestNum > 0)
+		Test().End();
+
+	Test().Close();
+	}
+
+void CBioTestUtils::ClearBifFoldersL()
+	{
+	ClearBifFolderL(EDriveC);
+	ClearBifFolderL(EDriveD);
+	}
+
+void CBioTestUtils::ClearBifFolderL(TInt aDrive)
+	{
+	CFileMan* fileMan = CFileMan::NewL(FileSession());
+	CleanupStack::PushL(fileMan);
+
+	// Get drive name
+	TDriveUnit unit(aDrive);
+	TPtrC drive(unit.Name());
+
+	// Generate path
+	TParse parse;
+	TInt error;
+
+	User::LeaveIfError(parse.Set(KBifFolderV2(), &drive, NULL));
+
+	// Delete the folder
+	error = fileMan->RmDir(parse.DriveAndPath());
+	if (error != KErrNotFound && error != KErrPathNotFound)
+		User::LeaveIfError(error);
+
+	CleanupStack::PopAndDestroy(); // fileMan
+	}
+
+TBool CBioTestUtils::BifInstalledL(CBIODatabase& aDatabase, TUid aId)
+	{
+	TInt index;
+	TRAPD(error, aDatabase.GetBioIndexWithMsgIDL(aId, index));
+	return !error;
+	}
+
+TBool CBioTestUtils::FindFileL(TParse& aParse, const TDesC& aDir, const TDesC& aName)
+	{
+	// Check rom
+	if (DoFindFileL(aParse, EDriveZ, aDir, aName))
+		return ETrue;
+
+	// Check alternate drive
+	if (DoFindFileL(aParse, EDriveD, aDir, aName))
+		return ETrue;
+
+	// Check internal disk
+	if (DoFindFileL(aParse, EDriveC, aDir, aName))
+		return ETrue;
+
+	// File not found
+	return EFalse;
+	}
+
+TBool CBioTestUtils::DoFindFileL(TParse& aParse, TInt aDrive, const TDesC& aDir, const TDesC& aName)
+	{
+	// Generate drive name
+	TDriveUnit unit(aDrive);
+	TPtrC drive(unit.Name());
+
+	// Generate path and see if file exists
+	User::LeaveIfError(aParse.Set(drive, &aDir, &aName));
+	return BaflUtils::FileExists(FileSession(), aParse.FullName());
+	}
+
+//**********************************
+// Global
+//**********************************
+
+LOCAL_C void SetupL()
+	{
+	CActiveScheduler::Install(new(ELeave)CActiveScheduler);
+
+	// Create test class
+	theUtils = CBioTestUtils::NewL(test);
+	}
+
+LOCAL_C void Close(TInt aRet)
+	{
+	if (theUtils)
+		{
+		theUtils->End(aRet);
+		delete theUtils;
+		}
+
+	delete CActiveScheduler::Current();
+	}
+
+LOCAL_C void doMainL()
+	{
+	SetupL();	
+	doTestsL();
+	}
+
+GLDEF_C TInt E32Main()
+	{
+	__UHEAP_MARK;
+	CTrapCleanup* cleanup = CTrapCleanup::New();
+	__ASSERT_ALWAYS(cleanup, User::Invariant());
+	TRAPD(ret,doMainL());		
+	Close(ret);
+	delete cleanup;	
+	__UHEAP_MARKEND;
+	return KErrNone;
+	}
+
+#endif