baseintegtests/baseintegrationtest/testsuites/fat32/src/basetestfat32format.cpp
author John Imhofe
Mon, 19 Oct 2009 15:55:17 +0100
changeset 0 a41df078684a
permissions -rw-r--r--
Convert Kernelhwsrv package from SFL to EPL kernel\eka\compsupp is subject to the ARM EABI LICENSE userlibandfileserver\fatfilenameconversionplugins\unicodeTables is subject to the Unicode license kernel\eka\kernel\zlib is subject to the zlib license

// 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; 
	}