baseintegtests/baseintegrationtest/testsuites/fat32/src/basetestfat32format.cpp
changeset 0 a41df078684a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/baseintegtests/baseintegrationtest/testsuites/fat32/src/basetestfat32format.cpp	Mon Oct 19 15:55:17 2009 +0100
@@ -0,0 +1,120 @@
+// 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 the License "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:
+// Perofrms various types of formatting of a disk
+// 
+//
+
+#include "basetestfat32format.h"
+
+/**
+Class Constructor
+*/		    
+CBaseTestFat32Format::CBaseTestFat32Format() 
+	{
+	SetTestStepName(KTestStepFormat);
+	}
+	
+/**
+Class Destructor
+*/
+CBaseTestFat32Format::~CBaseTestFat32Format() 
+	{
+	}
+
+
+/** 
+Get the type of format required from the ini file and format the disk
+
+@return EPass if test passes and EFail if test fails
+*/ 
+
+TVerdict CBaseTestFat32Format::doTestStepL()
+	{
+	_LIT(KFormatType,"FormatType");
+	TBuf<4> formatType;
+	TPtrC16 format = formatType;
+	SetTestStepResult(EFail);
+	TDriveUnit drive (CurrentDrive());
+	TBool alright = GetStringFromConfig(ConfigSection(), KFormatType, format);
+	if(alright)
+		{
+		TInt r = FormatFat(drive, format);
+		if (r != KErrNone)
+			{
+			_LIT(KFormatError, "Error %d - could not format %c drive");
+			INFO_PRINTF3(KFormatError, r, (TUint)iDriveToTest);
+			SetTestStepResult(EFail);
+			return TestStepResult();
+			}
+		}
+	else
+		{
+		_LIT(KErrorRead, "Cannot get the format type from the ini file");
+		INFO_PRINTF1(KErrorRead);
+		SetTestStepResult(EFail);
+		return TestStepResult();
+		}
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+
+/** 
+Format the disk
+
+@param aDrive The drive to format
+@param aFormat The type of format to perform
+
+@return EPass if test passes and EFail if test fails
+*/ 
+TInt CBaseTestFat32Format::FormatFat(TDriveUnit aDrive, TPtrC16 aFormat)
+	{
+	TInt count;
+	RFormat format;
+	TInt r;
+	TFormatMode formatMode = EFullFormat;
+	if (aFormat == _L("Full"))
+		{
+		formatMode = EFullFormat;
+		}
+	else if (aFormat == _L("Special"))
+		{
+		formatMode = ESpecialFormat;
+		}
+	else if (aFormat == _L("Quick"))
+		{
+		formatMode = EQuickFormat;
+		}
+		
+	r = format.Open(iTheFs,aDrive.Name(),formatMode,count);
+	if(r!=KErrNone)
+		{
+		_LIT(KFormatOpen, "Device could not be opened for formatting");
+		INFO_PRINTF1(KFormatOpen);
+		return r;
+		}
+	INFO_PRINTF2(_L("Count = %d"), count);
+	do	{
+		r = format.Next(count);
+		if (r != KErrNone)
+			{
+			_LIT(KFormatNextError, "format.Next() error %d count %d\n");
+			INFO_PRINTF3(KFormatNextError, r, count);
+			return r;
+			}
+		}while (count > 0);
+	format.Close();
+	INFO_PRINTF2(_L("Count = %d"), count);
+	return r; 
+	}