kerneltest/f32test/server/t_fatcharsetconv_aux.h
author Tom Cosgrove <tom.cosgrove@nokia.com>
Fri, 28 May 2010 16:29:07 +0100
changeset 30 8aab599e3476
parent 0 a41df078684a
child 43 c1f20ce4abcf
permissions -rw-r--r--
Fix for bug 2283 (RVCT 4.0 support is missing from PDK 3.0.h) Have multiple extension sections in the bld.inf, one for each version of the compiler. The RVCT version building the tools will build the runtime libraries for its version, but make sure we extract all the other versions from zip archives. Also add the archive for RVCT4.

// Copyright (c) 2007-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:
// f32test\server\T_FatCharSetConv_Aux.h
// 
//

#ifndef T_FATCHARSETCONV_AUX_H
#define T_FATCHARSETCONV_AUX_H

#include <f32file.h>
#include <e32test.h>
#include <hal.h>
#include "t_server.h"
#include "fat_utils.h"

using namespace Fat_Test_Utils;
class TTestLogFailureData;
extern TTestLogFailureData gLogFailureData;
extern RRawDisk TheDisk;
extern TFatBootSector gBootSector;
extern TBool gIOTesting;
extern RFs TheFs;
extern RFile TheFile;
extern RDir TheDir;
extern TFileName gSessionPath;
extern TInt gAllocFailOff;
extern TInt gAllocFailOn;
extern TChar gDriveToTest;
extern TFileName gFileName;
extern TBool gAutoTest;


enum TTCType
	{ 
	EUnitaryTest,
	EBinaryTest,
	ESymbianFATSpecific
	};

extern TTCType gTCType;
extern TUint gTCId;

// function declarations
class TTestSwitches;
class TTestParamAll;
struct TTestCaseUnitaryBasic;

// Constants
const TInt KFileName350=350;
const TInt KFileName50=50;
const TInt KFileName20=20;

// Literals
// Code Pages
_LIT(KTestLocale, "t_tlocl_cp932.dll");

//Log file specific
_LIT(KLogFileName,"C:\\Failure");
_LIT(KExeLogFileName,"C:\\ExecutionFailure");
_LIT(KVerLogFileName,"C:\\VerificationFailure");
_LIT(KExtension,".txt");
_LIT(KComma,",");
_LIT(KUnderScore,"_");
_LIT(KNewLine,"\n");

// FileSystem specific
_LIT(KFAT,"Fat");
_LIT(KWin32,"Win32");

// test case type
_LIT(KUnitary,"Unitary");
_LIT(KBinary,"Binary");
_LIT(KSymbianFATSpecific,"SymbianFATSpecific");

// test case phases
_LIT(KExecution,"Execution");
_LIT(KVerification,"Verification");

// os names
_LIT(KWindows,"Windows");
_LIT(KSymbian,"Symbian");
_LIT(KNone,"None");

// log file header
_LIT(KLogFileHeader,"IOT,TestCase,FailedDuring,Id,Path,FileSystem,ExeOsName,ExeDrive,VerOsName,VerDrive,API,Line,FunctionName,File");

// general purpose
_LIT(KYes,"Yes");
_LIT(KNo,"No");

// function names
_LIT(KDoAllBasicUnitaryTestsL,"DoAllBasicUnitaryTestsL");
_LIT(KDoAllBasicBinaryTestsL,"DoAllBasicBinaryTestsL");
_LIT(KTestLeadingE5Handling,"TestLeadingE5Handling");
_LIT(KTestFileLengthMax,"TestFileLengthMax");
_LIT(KTestFileLengthExceedMax,"TestFileLengthExceedMax");
_LIT(KTestVFATCase1,"TestVFATCase1");
_LIT(KTestVFATCase2,"TestVFATCase2");
_LIT(KTestVFATCase3,"TestVFATCase3");
_LIT(KTestIllegalCharsWithDll,"TestIllegalCharsWithDll");
_LIT(KTestIllegalCharsWithoutDLL,"TestIllegalCharsWithoutDLL");
_LIT(KCheckDisk,"CheckDisk");
_LIT(KLogTestFailureData,"LogTestFailureData");
_LIT(KDataGenerationL,"DataGenerationL");
_LIT(KDeletePathAfterTest,"DeletePathAfterTest");
_LIT(KDataExecutionL,"DataExecutionL");
_LIT(KDataVerificationL,"DataVerificationL");
_LIT(KSearchTestCaseByArrayIdx,"SearchTestCaseByArrayIdx");
_LIT(KScanTestDrive,"ScanTestDrive");
_LIT(KTestCompatibility,"TestCompatibility");

// api names
_LIT(KGetShortName,"EGetShortName");
_LIT(KGetShortNameWithDLL,"EGetShortNameWithDLL");
_LIT(KGetShortNameWithoutDLL,"EGetShortNameWithoutDLL");
_LIT(KCreateFile,"ECreateFile");
_LIT(KIsValidName,"EIsValidName");
_LIT(KRenameFile,"ERenameFile");
_LIT(KReadFileSection,"EReadFileSection");
_LIT(KDeleteFile,"EDeleteFile");
_LIT(KOpenDir,"EOpenDir");
_LIT(KReadDir,"EReadDir");
_LIT(KRemoveDir,"ERemoveDir");
_LIT(KIsFileInRom,"EIsFileInRom");
_LIT(KReplaceFile,"EReplaceFile");
_LIT(KOperateOnFileNames,"EOperateOnFileNames");
_LIT(KFileModify,"EFileModify");
_LIT(KFileAttributes,"EFileAttributes");
_LIT(KRFsEntry,"ERFsEntry)");
_LIT(KRFsReplace,"ERFsReplace");
_LIT(KRFsRename,"ERFsRename");
_LIT(KGetDir,"EGetDir");
_LIT(KWriteToFile,"EWriteToFile");
_LIT(KReadFromFile,"EReadFromFile");
_LIT(KMkDir,"EMkDir");
_LIT(KMkDirAll,"EMkDirAll");
_LIT(KFileTemp,"EFileTemp");
_LIT(KLongShortConversion,"ELongShortConversion");

#ifdef LOG_FAILURE_DATA
#define testAndLog(flag)													\
	{																		\
	if(flag == EFalse)														\
		{																	\
		TInt line = __LINE__;												\
		test.Printf(_L("\nFAILURE on LINE: %d"),line);						\
		LogTestFailureData(gTCType, failedOnBuf, gTCId, tcUniquePath, line);	\
		}																	\
	}
#else
#define testAndLog(flag)													\
	{																		\
	test(flag);																\
	}
#endif


// forward declaration
struct TDirSetupFiles;

///////////////////////////////////////////////////////////////////////////////
//	Files Setup Pattern Definitions
///////////////////////////////////////////////////////////////////////////////
static TPtrC gDirPatterns[] = 
	{	
		
	// ******************************ALPHABETIC-CHARACTERS***************************************************

	_L("ABC(DE).TX"),				//0 MAJOR <8 ,EXT <3
	_L("ABC(DE).TXTTXT"),			//1 MAJOR <8 ,EXT >3
	_L("ABC(DE).TXT"),				//2 MAJOR <8 ,EXT =3
		
	_L("ABCDEF(GH).TX"),			//3 MAJOR >8 ,EXT <3
	_L("ABCDEF(GH).TXTTXT"),		//4 MAJOR >8 ,EXT >3
	_L("ABCDEF(GH).TXT"),			//5 MAJOR >8 ,EXT =3
			
	_L("ABC(DEF).TX"),				//6 MAJOR =8 ,EXT <3
	_L("ABC(DEF).TXTTXT"),			//7 MAJOR =8 ,EXT >3
	_L("ABC(DEF).TXT"),				//8 MAJOR =8 ,EXT =3
		
	// ******************************UNICODE-CHARACTERS*******************************************************	

	_L("\x65B0\x65B0.\x65B0"),						//9 MAJOR <8  ,EXT <3
	_L("\x65B0\x6587.\x65B0\x6587"),				//10 MAJOR <8 ,EXT 3>6
	_L("\x65B0\x65B0.\x65B0\x65B0\x65B0"),			//11 MAJOR <8 ,EXT =6
	_L("\x65B0\x65B0.\x65B0\x65B0\x65B0\x65B0"),	//12 MAJOR >8 ,EXT >6
		
	_L("\x65B0\x65B0\x65B0\x65B0.\x65B0"),						//13 MAJOR =8 ,EXT <3
	_L("\x65B0\x65B0\x65B0\x6587.\x65B0\x6587"),				//14 MAJOR =8 ,EXT 3>6
	_L("\x65B0\x65B0\x65B0\x4EF6.\x65B0\x65B0\x65B0"),			//15 MAJOR =8 ,EXT =6
	_L("\x65B0\x4EF6\x65B0\x6587.\x65B0\x4EF6\x65B0\x6587"),	//16 MAJOR =8 ,EXT >6
		
	_L("\x65B0\x65B0\x65B0\x65B0\x65B0\x65B0.\x65B0"),				//17 MAJOR 8<16 ,EXT <3
	_L("\x65B0\x4EF6\x65B0\x65B0\x6587.\x65B0\x6587"),				//18 MAJOR 8<16 ,EXT >3
	_L("\x65B0\x6587\x65B0\x4EF6\x65B0.\x65B0\x65B0\x65B0"),		//19 MAJOR 8<16 ,EXT =6
	_L("\x65B0\x6587\x6587\x6587\x4EF6.\x65B0\x65B0\x65B0\x65B0"),	//20 MAJOR 8<16 ,EXT >6
		
	_L("\x65B0\x4EF6\x65B0\x4EF6\x65B0\x4EF6\x65B0\x4EF6.\x4EF6"),						//21 MAJOR =16 ,EXT <3
	_L("\x4EF6\x4EF6\x65B0\x65B0\x65B0\x65B0\x65B0\x6587.\x65B0\x6587"),				//22 MAJOR =16 ,EXT 3>6
	_L("\x65B0\x65B0\x65B0\x4EF6\x65B0\x4EF6\x4EF6.\x65B0\x4EF6\x65B0"),				//23 MAJOR =16 ,EXT =6
	_L("\x65B0\x65B0\x65B0\x65B0\x65B0\x65B0\x65B0\x65B0.\x65B0\x65B0\x65B0\x65B0"),	//24 MAJOR =16 ,EXT >6
		
	_L("\x6587\x6587\x6587\x6587\x65B0\x65B0\x65B0\x65B0\x4EF6\x4EF6.\x65B0"),				//25 MAJOR >16 ,EXT <3
	_L("\x4EF6\x4EF6\x65B0\x65B0\x65B0\x65B0\x65B0\x65B0\x65B0\x65B0.\x65B0\x6587"),		//26 MAJOR >16 ,EXT 3>6
	_L("\x65B0\x65B0\x65B0\x65B0\x65B0\x65B0\x65B0\x65B0\x65B0.\x65B0\x65B0\x65B0"),		//27 MAJOR >16 ,EXT =6
	_L("\x65B0\x65B0\x4EF6\x65B0\x65B0\x65B0\x4EF6\x65B0\x65B0.\x65B0\x65B0\x65B0\x65B0"),	//28 MAJOR >16 ,EXT >6

	// ******************************MIXED-CHARACTERS*********************************************************************

	_L("\x65B0(A).\x65B0"),							//29 MAJOR <8 ,EXT <3
	_L("\x65B0(A).A\x65B0"),						//30 MAJOR <8 ,EXT =3
	_L("\x65B0(A).A\x65B0\x6587"),					//31 MAJOR <8 ,EXT 3<6
	_L("\x65B0(A).AB\x65B0\x65B0"),					//32 MAJOR <8 ,EXT <6
	_L("\x65B0(A).AB\x65B0\x65B0\x65B0\x65B0"),		//33 MAJOR <8 ,EXT >6
							
	_L("\x65B0\x65B0(AB).\x65B0"),						//34 MAJOR =8 ,EXT <3
	_L("(AB)\x65B0\x65B0.A\x65B0"),						//35 MAJOR =8 ,EXT =3
	_L("\x65B0(AB)\x65B0.A\x65B0\x6587"),				//36 MAJOR =8 ,EXT 3<6
	_L("\x65B0(\x65B0)AB.AB\x65B0\x65B0"),				//37 MAJOR =8 ,EXT <6
	_L("\x65B0\x65B0(CD).AB\x65B0\x65B0\x65B0\x65B0"),	//38 MAJOR =8 ,EXT >6

	_L("\x65B0\x65B0\x65B0\x65B0(AB).\x65B0"),							//39 MAJOR 8<16 ,EXT <3
	_L("\x65B0\x65B0\x65B0\x65B0(AB).A\x65B0"),							//40 MAJOR 8<16 ,EXT =3
	_L("AB\x65B0\x6587\x65B0\x65B0.A\x65B0\x6587"),						//41 MAJOR 8<16 ,EXT 3<6
	_L("CD\x65B0\x6587\x65B0\x65B0.AB\x65B0\x65B0"),					//42 MAJOR 8<16 ,EXT <6
	_L("\x65B0\x6587(\x65B0\x65B0).AB\x65B0\x65B0\x65B0\x65B0"),		//43 MAJOR 8<16 ,EXT >6

	_L("\x65B0\x65B0\x65B0\x65B0\x65B0\x65B0(AB).\x65B0"),						//44 MAJOR =16 ,EXT <3
	_L("(AB)\x65B0\x65B0\x65B0\x65B0\x65B0\x65B0.A\x65B0"),						//45 MAJOR =16  ,EXT =3
	_L("\x65B0\x65B0\x65B0(AB)\x65B0\x65B0\x65B0.A\x65B0\x6587"),				//46 MAJOR =16  ,EXT 3<6
	_L("\x65B0\x65B0\x65B0\x65B0\x65B0\x65B0(CD).AB\x65B0\x65B0"),				//47 MAJOR =16  ,EXT <6
	_L("\x65B0\x65B0(\x65B0\x65B0)CD\x65B0\x65B0.AB\x65B0\x65B0\x65B0\x65B0"),	//48 MAJOR =16  ,EXT >6
		
	_L("\x65B0\x65B0\x65B0\x65B0\x65B0\x65B0\x65B0\x65B0(AB).\x65B0"),						//49 MAJOR >16 ,EXT <3
	_L("(AB)\x65B0\x65B0\x65B0\x65B0\x65B0\x65B0\x65B0\x65B0.A\x65B0"),						//50 MAJOR >16 ,EXT =3
	_L("\x65B0\x65B0\x65B0\x65B0\x65B0\x65B0\x65B0\x65B0(CD).A\x65B0\x6587"),				//51 MAJOR >16 ,EXT 3<6
	_L("\x65B0\x65B0\x65B0(\x65B0\x65B0\x65B0)CD\x65B0\x65B0.AB\x65B0\x65B0"),				//52 MAJOR >16 ,EXT <6
	_L("CD\x65B0\x65B0(\x65B0\x65B0)\x65B0\x65B0\x65B0\x65B0.AB\x65B0\x65B0\x65B0\x65B0"),	//53 MAJOR >16 ,EXT >6

	// ****************************************************************************************************************************	

	_L("TESTDIR\\"),			//54
	_L("TESTDIR\\DIR1\\"),		//55	
	_L("TESTDIR\\DIR2\\"),		//56	
	_L("TESTDIR\\DIR3\\"),		//57
	_L("TESTDIR\\DIR4\\"),		//58	

	_L("TESTDIR_FS\\"),			//59	
	_L("TESTDIR_FS\\DIR3\\"),	//60		
	_L("TESTDIR_FS\\DIR1\\"),	//61		
	_L("TESTDIR_FS\\DIR2\\"),	//62		

	_L("TESTDIR_FS\\DIR3\\FILE03.TXT"),		//63
	_L("TESTDIR_FS\\DIR1\\FILE01.TXT"),		//64	
	_L("TESTDIR_FS\\DIR2\\FILE02.TXT"),		//65
	
	_L("TESTALPHA.TXT"), 		//66
	_L("TESTALPHA.TXTTXT"), 	//67
	
	_L("REPLACED.TXT"),		//68
	_L("REPLACED.TX"),		//69
	_L("REPLACED.TXTTXT"),	//70
	
	_L("XYZ\\"),			//71
	_L("TESTRENAME.DAT"),	//72
	
	_L("\x65B0\x65B0\x65B0\\"), 	//73
	_L("\x65B0\x6587\x4EF6\x4EF6\x6587\x65B0.\x65B0\x4EF6"),  //74
	
	_L("AB(\x65B0\x6587)CD\\"),				//75
	_L("AB\x65B0\x6587(CDEF).\x4EF6(AB)"),	//76
	
	
	_L("\x65B0\x6587\x65B0\x4EF6.TXT"),				//77
	_L("\x65B0\x6587\x65B0\x4EF6(A).TXT"),			//78
	_L("\x65B0\x6587\x65B0\x4EF6(B).TXT"),			//79
	_L("\x65B0\x6587\x65B0\x4EF6(C).TXT"),			//80
	
	_L("\x65B0.TXT"),							//81
	_L("\x65B0\x6587.TXTTXT"),					//82
	_L("\x65B0\x6587\x4EF6.TX"),				//83	
	
	_L("ABCDE.\x65B0\x65B0"),					//84
	_L("ABCDEFG.\x65B0\x65B0\x65B0"),			//85
	_L("ABCD.\x65B0T"),							//86
	_L("ABCDE.T\x65B0"),						//87
	
	_L("\x222F\x2F3A\x3C3E\x7C00.TXT"),			//88
	_L("\x235B\x245C\x255D\x265E.TXT"),			//89

	_L("\x65B0\x6587\\"),											//90
	_L("\x65B0\x6587\\\x65B0\x6587\x65B0\\"),						//91	
	_L("\x65B0\x6587\\\x65B0\x6587\x65B0\x6587\\"),					//92	
	_L("\x65B0\x6587\\\x65B0\x6587\x65B0\x6587\x65B0\\"),			//93
	_L("\x65B0\x6587\\\x65B0\x6587\x65B0\x6587\x65B0\x6587\\"),		//94	

	_L("\x65B0\x6587\x4EF6\\"),										//95	
	_L("\x65B0\x6587\x4EF6\\\x65B0\x4EF6\x65B0\\"),					//96		
	_L("\x65B0\x6587\x4EF6\\\x65B0\x4EF6\x65B0\x4EF6\\"),			//97		
	_L("\x65B0\x6587\x4EF6\\\x65B0\x4EF6\x65B0\x4EF6\x6587\\"),		//98		

	_L("\x65B0\x6587\x4EF6\\\x65B0\x4EF6\x65B0\\\x65B0\x4EF6\x65B0\x4EF6\x65B0\x4EF6\x65B0\x4EF6.\x4EF6"),						//99
	_L("\x65B0\x6587\x4EF6\\\x65B0\x4EF6\x65B0\x4EF6\\\x4EF6\x4EF6\x65B0\x65B0\x65B0\x65B0\x65B0\x6587.\x65B0\x6587"),			//100	
	_L("\x65B0\x6587\x4EF6\\\x65B0\x4EF6\x65B0\x4EF6\x6587\\\x65B0\x65B0\x65B0\x4EF6\x65B0\x4EF6\x4EF6.\x65B0\x4EF6\x65B0"),	//101
	
	_L("\x65B0(A)\x6587\\"),												//102
	_L("\x65B0(A)\x6587\\\x65B0(AB)\x65B0\\"),								//103	
	_L("\x65B0(A)\x6587\\\x65B0(ABCD)\x65B0\\"),							//104	
	_L("\x65B0(A)\x6587\\\x65B0\x65B0(ABCDEF)\x65B0\x65B0\\"),				//105
	_L("\x65B0(A)\x6587\\\x65B0\x65B0\x65B0(ABGH)\x65B0\x65B0\x65B0\\"),	//106	

	_L("\x65B0\x6587(AB)\\"),										//107	
	_L("\x65B0\x6587(AB)\\\x65B0(A)\x65B0\\"),						//108		
	_L("\x65B0\x6587(AB)\\\x65B0\x4EF6(AB)\x4EF6\\"),				//109		
	_L("\x65B0\x6587(AB)\\\x65B0\x4EF6(ABCDEF)\x4EF6\x6587\\"),		//110		

	_L("\x65B0\x6587(AB)\\\x65B0(A)\x65B0\\\x65B0\x4EF6\x65B0(AB)\x4EF6\x65B0\x4EF6.\x4EF6"),							//111
	_L("\x65B0\x6587(AB)\\\x65B0\x4EF6(AB)\x4EF6\\\x4EF6\x4EF6(ABC)\x65B0\x65B0\x6587.\x65B0\x6587"),					//112	
	_L("\x65B0\x6587(AB)\\\x65B0\x4EF6(ABCDEF)\x4EF6\x6587\\\x65B0\x65B0\x65B0(CD)\x4EF6\x4EF6.\x65B0\x4EF6\x65B0"),	//113
	};

#define EOB 	-1			// 'End Of Block' tag
#define CON 	(EOB - 1)	// 'Continue' tag
#define LAST 	130 		// Last item's tag
//...

// Predefined dir data blocks for testing data setup:
#define ALL			{0,CON,LAST,EOB}		// Block includes all items

#define EMPTY		{EOB}					// Empty block

#define BLOCK01		{0,CON,8,EOB}
#define BLOCK02		{9,CON,12,EOB}
#define BLOCK03		{13,CON,16,EOB}
#define BLOCK04		{17,CON,20,EOB}
#define BLOCK05		{21,CON,24,EOB}
#define BLOCK06		{25,CON,28,EOB}
#define BLOCK07		{29,CON,33,EOB}
#define BLOCK08		{34,CON,38,EOB}
#define BLOCK09		{39,CON,43,EOB}
#define BLOCK10		{44,CON,48,EOB}
#define BLOCK11		{49,CON,53,EOB}
#define BLOCK12		{54,CON,58,EOB}
#define BLOCK13		{59,CON,62,EOB}
#define BLOCK14		{63,CON,65,EOB}
#define BLOCK15		{77,CON,80,EOB}
#define BLOCK16		{81,CON,87,EOB}
#define BLOCK17		{90,CON,94,EOB}
#define BLOCK18		{95,CON,98,EOB}
#define BLOCK19		{99,CON,101,EOB}
#define BLOCK20		{102,CON,106,EOB}
#define BLOCK21		{107,CON,110,EOB}
#define BLOCK22		{111,CON,113,EOB}




///////////////////////////////////////////////////////////////////////////////
//	Data structures for building test case parameters
///////////////////////////////////////////////////////////////////////////////
enum TTestingAPI
	{ 
	EGetShortName,
	EGetShortNameWithDLL,
	EGetShortNameWithoutDLL,
	ECreateFile,
	EIsValidName,
	ERenameFile,
	EReadFileSection,
	EDeleteFile,
	EOpenDir,
	EReadDir,
	ERemoveDir,
	EIsFileInRom,
	EReplaceFile,
	EOperateOnFileNames,
	EFileModify,
	EFileAttributes,
	ERFsEntry,
	ERFsReplace,
	ERFsRename,
	EGetDir,
	EWriteToFile,
	EReadFromFile,
	EMkDir,
	EMkDirAll,
	EFileTemp,
	ELongShortConversion,
	};

struct TDirSetupFiles
	{
	TInt iAddingBlock[25];
	TInt iDeductBlock[25];
	};
// Basic Testing Parameters
struct TTestParamBasic
	{
	TUint 			iTestCaseID;
	TTestingAPI		iAPI;
	TUint 			iSwitch;
	TInt			iSyncReturn;
	TInt			iAsyncReturn;
	TInt			iAsyncStatus;
	};
	

// Basic Presettings Parameters
struct TTestParamBasicPrs
	{
	TChar* 			iDrvChar;
	TText16*		iCmdPath;		
	TText16*		iPrsPath;
	TDirSetupFiles 	iPrsFiles;
	TText16*		iCmpPath;
	TDirSetupFiles 	iCmpFiles;
	
	};

// Presettings with file open mode
struct TTestParamPrsFileOpen
	{
	TTestParamBasicPrs 	iBasicPrs;
	TBool				iFileOpen;
	};

// Presettings with file attribs and modified time
struct TTestParamPrsAttribsTime
	{
	TTestParamBasicPrs 	iBasicPrs;
	TUint				iAttribsSet;
	TTime				iTime;
	};


///////////////////////////////////////////////////////////
//	Test case data structures
///////////////////////////////////////////////////////////
struct TTestCaseUnitaryBasic
	{
	TTestParamBasic 	iBasic;
	TTestParamBasicPrs 	iSrcPrsBasic;
	};

struct TTestCaseBinaryBasic
	{
	TTestParamBasic 	iBasic;
	TTestParamBasicPrs 	iSrcPrsBasic;
	TTestParamBasicPrs 	iTrgPrsBasic;
	};	

struct TTestCaseUnitaryAttribTime
	{
	TTestParamBasic 			iBasic;
	TUint						iSetAttribs;
	TUint						iClearAttribs;
	TTestParamPrsAttribsTime	iSrcPrsAT;
	};

struct TTestCaseBinaryAttribTime
	{
	TTestParamBasic 			iBasic;
	TTestParamPrsAttribsTime	iSrcPrsAT;
	TTestParamPrsAttribsTime	iTrgPrsAT;
	};

////////////////////////////////////////////////////////////
//	An interface between test framework and test cases
////////////////////////////////////////////////////////////
class TTestParamAll
	{
public:
	TUint 			iTestCaseID;
	TTestingAPI		iAPI;
	TFileName		iAPIName;
	TUint 			iSwitch;
	TInt			iSyncReturn;
	TInt			iAsyncReturn;
	TInt			iAsyncStatus;

	TBool			iIsWithDLL;
	
	TUint			iSetAttribs;
	TUint			iClearAttribs;
	TTime			iSetModified;

	TChar* 			iSrcDrvChar;

	TFileName		iSrcCmdPath;
	TFileName		iSrcPrsPath;
	TFileName		iTrgCmdPath;

	TDirSetupFiles 	iSrcPrsFiles;
	TUint			iSrcPrsAttribs;
	TTime			iSrcPrsTime;
	TBool			iSrcPrsFileOpen;


	TChar* 			iTrgDrvChar;

	};

class TTestSwitches
	{
public:
	
	TBool 		iExeOnSymbian;
	TBool		iVerOnSymbian;
	TBool		iExeOnWindows;
	TBool		iVerOnWindows;
	TChar		iExeDriveChar;
	TChar		iVerDriveChar;
	TInt		iExeDriveNum;
	TInt		iVerDriveNum;
	TBuf<20>	iMountedFSName;
	};

class TTestLogFailureData
	{
public:

	TFileName		iTCTypeName; // unitary/binary/Special
	TFileName		iTCFailureOn; // test phase data execution/data verification
	TUint 			iTCId;
	TFileName 		iTCUniquePath; // complete path with DLL/without DLL with Synch/Asynch etc
	TBuf<20>		iFSName;
	TFileName		iExeOsName; // OS name
	TFileName		iVerOsName; // OS name
	TChar			iExeDrive;
	TChar			iVerDrive;
	TFileName		iAPIName;
	TInt			iLineNum;
	TFileName		iFuncName;
	TBuf8<50>		iFileName;
	};


void LogTestFailureData(TTCType tcType, TFileName failedOn, TUint tcId, TFileName tcUniquePath,TInt line);
void ClearTCLogData();
void InitLogData();
void CheckDisk();
void GetBootInfo();
void ReadBootSector(TFatBootSector& aBootSector);
void QuickFormat();
TInt SearchTestCaseByArrayIdx(TUint aIdx, const TTestCaseUnitaryBasic aBasicBinaryTestCaseGroup[], TTestParamAll& aTestCaseFound, TBool aIsWithDLL);
TInt SearchTestCaseByArrayIdx(TUint aIdx, const TTestCaseBinaryBasic aBasicBinaryTestCaseGroup[], TTestParamAll& aTestCaseFound, TBool aIsWithDLL);
void Help();
void ClearSwitches(TTestSwitches& aSwitches);
void ParseCommandArguments(TTestSwitches& aSwitches);
void InitialiseL();
void RmDir(const TDesC& aDirName);
void Cleanup();
void ParsingDirDataBlock(const TInt aDataBlock[], RArray<TInt>& aDirDataArray);
void CheckIfIOTesting(TTestSwitches& aSwitches);
/*template <class C>
TInt controlIo(RFs &fs, TInt drv, TInt fkn, C &c);*/
void MakeFile(const TDesC& aFileName,const TUidType& aUidType,const TDesC8& aFileContents);
void MakeFile(const TDesC& aFileName,const TDesC8& aFileContents);
void MakeFile(const TDesC& aFileName,TInt anAttributes);
void MakeFile(const TDesC& aFileName);
TInt CurrentDrive(TChar aDriveChar);
TInt CurrentDrive();
void CreateTestDirectory(const TDesC& aSessionPath);
void ReportCheckDiskFailure(TInt aRet);
void MakeDir(const TDesC& aDirName);
void Format(TInt aDrive);

//Function declarations
void RmDir(const TDesC& aDirName);
TBool CompareL(const TDesC& aDir1,const TDesC& aDir2);
void SetupDirectories(TBool aCreateFiles, TFileName* aDestOtherDrive);
void InitialiseL();
void Cleanup();
void CleanupFileHandles();
void ParsingDirDataBlock(TInt aDataBlock[], RArray<TInt>& aFinalDirDataArray);
void SetupDir(TDesC& aPath, TDirSetupFiles aDirSetupData);
void SetupDirFiles(const TDesC& aPath, const TDirSetupFiles& aDirFiles);
void PrintDir(const TDesC& aPath, const TChar& aDrv);
void DoSymbianSpecificCases();
inline TBool isFAT(const TDesC& aFSName)
	{
	return (aFSName.Compare(KFAT) == 0);
	}
inline TBool isWin32(const TDesC& aFSName)
	{
	return (aFSName.Compare(KWin32) == 0);
	}

//functions that are required by both the .cpp files.
GLREF_C void TestLeadingE5Handling();
GLREF_C void TestFileLengthMax();
GLREF_C void TestFileLengthExceedMax();
GLREF_C void TestIllegalCharsWithoutDLL();
GLREF_C void TestIllegalCharsWithDll();
GLREF_C void TestVFATCase1();
GLREF_C void TestVFATCase2();
GLREF_C void TestVFATCase3();

GLREF_C void GetBootInfo();
GLREF_C void QuickFormat();
GLREF_C void ReadBootSector(TFatBootSector& aBootSector);



#endif /*T_FATCHARSETCONV_AUX_H*/