kerneltest/f32test/cfileman/t_cfileman_aux.h
author Tom Cosgrove <tom.cosgrove@nokia.com>
Fri, 28 May 2010 16:29:07 +0100
changeset 30 8aab599e3476
parent 0 a41df078684a
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) 2008-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\cfileman\t_cfileman_aux.h
// 
//

#ifndef T_CFILEMAN_AUX_H
#define T_CFILEMAN_AUX_H

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

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();

struct TDirSetupFiles;

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);

///////////////////////////////////////////////////////////////////////////////
//	Files Setup Pattern Definitions
///////////////////////////////////////////////////////////////////////////////
static TPtrC gDirPatterns[] = 
	{
	_L("FILE1.TXT"),			// 0
	_L("FILE2.TXT"),			// 1
	_L("FILE01.TXT"),			// 2
	_L("FILE02.TXT"),			// 3
	_L("FILE.TXT"),				// 4
	_L("OTHER.TXT"),			// 5
	_L("FILE.DAT"),				// 6
	_L("FILE"),					// 7
	
	_L("DIR1\\"),				// 8
	
	_L("DIR1\\FILE1.TXT"),		// 9
	_L("DIR1\\FILE2.TXT"),		// 10
	_L("DIR1\\FILE01.TXT"),		// 11
	_L("DIR1\\FILE02.TXT"),		// 12
	_L("DIR1\\FILE.TXT"),		// 13
	_L("DIR1\\OTHER.TXT"),		// 14
	_L("DIR1\\FILE.DAT"),		// 15
	_L("DIR1\\FILE"),			// 16
	
	_L("DIR2\\"),				// 17
	
	_L("DIR2\\FILE1.TXT"),		// 18
	_L("DIR2\\FILE2.TXT"),		// 19
	_L("DIR2\\FILE01.TXT"),		// 20
	_L("DIR2\\FILE02.TXT"),		// 21
	_L("DIR2\\FILE.TXT"),		// 22
	_L("DIR2\\OTHER.TXT"),		// 23
	_L("DIR2\\FILE.DAT"),		// 24
	_L("DIR2\\FILE"),			// 25
	
	
	_L("DIR1\\DIR11\\"),		// 26
	
	_L("DIR1\\DIR11\\FILE1.TXT"),	// 27
	_L("DIR1\\DIR11\\FILE2.TXT"),	// 28
	_L("DIR1\\DIR11\\FILE01.TXT"),	// 29
	_L("DIR1\\DIR11\\FILE02.TXT"),	// 30
	_L("DIR1\\DIR11\\FILE.TXT"),	// 31
	_L("DIR1\\DIR11\\OTHER.TXT"),	// 32
	_L("DIR1\\DIR11\\FILE.DAT"),	// 33
	_L("DIR1\\DIR11\\FILE"),		// 34
	
		
	_L("DIR1\\DIR12\\"),		// 35
	
	_L("DIR1\\DIR12\\FILE1.TXT"),	// 36
	_L("DIR1\\DIR12\\FILE2.TXT"),	// 37
	_L("DIR1\\DIR12\\FILE01.TXT"),	// 38
	_L("DIR1\\DIR12\\FILE02.TXT"),	// 39
	_L("DIR1\\DIR12\\FILE.TXT"),	// 40
	_L("DIR1\\DIR12\\OTHER.TXT"),	// 41
	_L("DIR1\\DIR12\\FILE.DAT"),	// 42
	_L("DIR1\\DIR12\\FILE"),		// 43
	
	//Special
	_L("RENAMED.TXT"),				//44
	_L("RENAMED1.TXT"),				//45
	_L("RENAMED2.TXT"),				//46
	_L("RENAMED01.TXT"),			//47
	_L("RENAMED02.TXT"),			//48
	_L("RENAMED.DAT"),				//49
	_L("RENAMED"),					//50
	
	_L("FILE1.REN"),			//51
	_L("FILE2.REN"),			//52
	_L("FILE01.REN"),			//53
	_L("FILE02.REN"),			//54
	_L("FILE.REN"),				//55
	_L("OTHER.REN"),			//56
	_L("RENAMED.REN"),			//57
	_L("RENAMED1.REN"),			//58
	_L("RENAMED2.REN"),			//59
	_L("RENAMED01.REN"),		//60
	_L("RENAMED02.REN"),		//61
	_L("abcEtxt"),				//62
	_L("DIR1\\RENAMED.TXT"),	//63
	_L("DIR1\\RENAMED1.TXT"),	//64
	_L("DIR1\\RENAMED2.TXT"),	//65
	_L("DIR1\\RENAMED01.TXT"),	//66
	_L("DIR1\\RENAMED02.TXT"),	//67
	_L("DIR1\\DIR11\\RENAMED.TXT"),	//68
	_L("DIR1\\DIR11\\RENAMED1.TXT"),	//69
	_L("DIR1\\DIR11\\RENAMED2.TXT"),	//70
	_L("DIR1\\DIR11\\RENAMED01.TXT"),	//71
	_L("DIR1\\DIR11\\RENAMED02.TXT"),	//72
	_L("DIR1\\DIR12\\RENAMED.TXT"),	//73
	_L("DIR1\\DIR12\\RENAMED1.TXT"),	//74
	_L("DIR1\\DIR12\\RENAMED2.TXT"),	//75
	_L("DIR1\\DIR12\\RENAMED01.TXT"),	//76
	_L("DIR1\\DIR12\\RENAMED02.TXT"),	//77
	_L("DIR2\\RENAMED.TXT"),	//78
	_L("DIR2\\RENAMED1.TXT"),	//79
	_L("DIR2\\RENAMED2.TXT"),	//80
	_L("DIR2\\RENAMED01.TXT"),	//81
	_L("DIR2\\RENAMED02.TXT"),	//82
	_L("DIR1\\FILE1.REN"),		//83
	_L("DIR1\\FILE2.REN"),		//84
	_L("DIR1\\FILE01.REN"),		//85
	_L("DIR1\\FILE02.REN"),		//86
	_L("DIR1\\FILE.REN"),		//87
	_L("DIR1\\OTHER.REN"),		//88
	_L("DIR1\\RENAMED.REN"),	//89
	_L("DIR1\\RENAMED1.REN"),	//90
	_L("DIR1\\RENAMED2.REN"),	//91
	_L("DIR1\\RENAMED01.REN"),	//92
	_L("DIR1\\RENAMED02.REN"),	//93
	_L("DIR1\\DIR11\\FILE1.REN"),		//94
	_L("DIR1\\DIR11\\FILE2.REN"),		//95
	_L("DIR1\\DIR11\\FILE01.REN"),		//96
	_L("DIR1\\DIR11\\FILE02.REN"),		//97
	_L("DIR1\\DIR11\\FILE.REN"),		//98
	_L("DIR1\\DIR11\\OTHER.REN"),		//99
	_L("DIR1\\DIR11\\RENAMED.REN"),		//100
	_L("DIR1\\DIR11\\RENAMED1.REN"),	//101
	_L("DIR1\\DIR11\\RENAMED2.REN"),	//102
	_L("DIR1\\DIR11\\RENAMED01.REN"),	//103
	_L("DIR1\\DIR11\\RENAMED02.REN"),	//104
	_L("DIR1\\DIR12\\FILE1.REN"),		//105
	_L("DIR1\\DIR12\\FILE2.REN"),		//106
	_L("DIR1\\DIR12\\FILE01.REN"),		//107
	_L("DIR1\\DIR12\\FILE02.REN"),		//108
	_L("DIR1\\DIR12\\FILE.REN"),		//109
	_L("DIR1\\DIR12\\OTHER.REN"),		//110
	_L("DIR1\\DIR12\\RENAMED.REN"),		//111
	_L("DIR1\\DIR12\\RENAMED1.REN"),	//112
	_L("DIR1\\DIR12\\RENAMED2.REN"),	//113
	_L("DIR1\\DIR12\\RENAMED01.REN"),	//114
	_L("DIR1\\DIR12\\RENAMED02.REN"),	//115
	_L("DIR2\\FILE1.REN"),		//116
	_L("DIR2\\FILE2.REN"),		//117
	_L("DIR2\\FILE01.REN"),		//118
	_L("DIR2\\FILE02.REN"),		//119
	_L("DIR2\\FILE.REN"),		//120
	_L("DIR2\\OTHER.REN"),		//121
	_L("DIR2\\RENAMED.REN"),	//122
	_L("DIR2\\RENAMED1.REN"),	//123
	_L("DIR2\\RENAMED2.REN"),	//124
	_L("DIR2\\RENAMED01.REN"),	//125
	_L("DIR2\\RENAMED02.REN"),	//126
	_L("DIR1\\RENAMED.DAT"),	//127
	_L("DIR1\\DIR11\\RENAMED.DAT"),	//128
	_L("DIR1\\DIR12\\RENAMED.DAT"),	//129
	_L("DIR2\\RENAMED.DAT"),	//130
	
	};

#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,7,EOB}
#define BLOCK02		{0,CON,4,EOB}
#define BLOCK03		{0,CON,5,EOB}
#define BLOCK04		{0,CON,7,9,CON,16,18,CON,25,27,CON,34,36,CON,43,EOB}// Src\\*
#define BLOCK05		{0,CON,4,9,CON,13,18,CON,22,27,CON,31,36,CON,40,EOB}// Src\\FILE*.TXT
#define BLOCK06		{0,1,9,10,18,19,27,28,36,37,EOB}// Src\\FILE?.TXT
#define BLOCK07		{0,CON,5,9,CON,14,18,CON,23,27,CON,32,36,CON,41,EOB}//Src\\*.TXT
#define BLOCK08		{4,6,13,15,22,24,31,33,40,42,55,EOB}//Src\\FILE.*
#define BLOCK09		{8,CON,16,26,CON,43,EOB}
#define BLOCK10     {26,CON,34,EOB}
#define BLOCK11		{9,CON,16,26,CON,43,EOB}
#define BLOCK12		{9,CON,16,EOB}
#define BLOCK13		{0,CON,3,EOB}
#define BLOCK14 	{0,1,EOB}
#define BLOCK15		{0,1,8,9,10,17,18,19,26,27,28,35,36,37,EOB}
#define BLOCK16		{5,8,14,17,23,26,32,35,41,EOB}
#define BLOCK17		{3,8,12,17,21,26,30,35,39,EOB}
#define BLOCK18		{8,CON,16,EOB}
#define BLOCK19		{51,CON,61,EOB}
#define BLOCK20		{0,CON,5,44,CON,48,EOB}
#define BLOCK21		{0,CON,25,35,CON,61,EOB}
#define BLOCK22		{9,CON,63,EOB}
#define BLOCK23		{63,CON,71}
#define BLOCK24		{0,CON,7,44,CON,62,EOB}
#define BLOCK25		{0,CON,7,9,CON,16,18,CON,25,27,CON,34,36,CON,62,EOB}
#define BLOCK26		{0,CON,5,9,CON,14,18,CON,23,27,CON,32,36,CON,41,44,CON,48,EOB}
#define BLOCK27		{4,6,13,15,22,24,31,33,40,42,55,EOB}
#define BLOCK28		{8,CON,43,EOB}
#define BLOCK29		{0,CON,5,44,CON,48,EOB}
#define BLOCK30		{44,8,63,17,68,26,73,35,78,EOB}
#define BLOCK31	    {44,CON,48,63,CON,82,EOB}
#define BLOCK32		{51,CON,61,83,CON,126,EOB}
#define BLOCK33		{44,49,57,89,100,111,122,127,CON,130,EOB}
#define BLOCK36     {0,CON,5,9,CON,14,18,CON,23,27,CON,32,36,CON,41,44,CON,48,63,CON,82,EOB}
#define BLOCK37     {4,6,13,15,22,24,31,33,40,42,55,87,98,109,120,EOB}					
#define BLOCK39		{8,CON,16,26,CON,43,63,CON,77,83,CON,115,127,CON,129,EOB}
#define BLOCK45		{51,CON,61,83,CON,126,EOB}
#define BLOCK46		{44,49,57,63,68,73,78,89,100,111,122,127,128,129,130,EOB}
#define BLOCK47		{44,49,55,57,63,68,73,78,87,89,98,100,109,111,120,122,127,128,129,130,EOB}

#define BLOCK34		{0,CON,5,9,CON,14,18,CON,23,27,CON,32,36,CON,41,44,CON,48,63,CON,82,EOB}
#define BLOCK35		{4,6,13,15,22,24,31,33,40,42,55,87,98,109,120,EOB} 
#define BLOCK40 	{44,49,57,63,68,73,78,89,100,111,122,127,CON,130,EOB} 
#define BLOCK41		{8,CON,16,26,CON,43,63,CON,77,83,CON,115,127,CON,129,EOB}
#define BLOCK42		{0,CON,7,44,CON,49,51,CON,61,EOB}
#define BLOCK43 	{9,CON,16,26,CON,43,63,CON,77,83,CON,115,127,CON,129,EOB}

///////////////////////////////////////////////////////////////////////////////
//	Data structures for building test case parameters
///////////////////////////////////////////////////////////////////////////////
enum TTestingAPI
	{ 
	ECFMDelete,
	ECFMMove,
	ECFMRmDir,
	ECFMCopy,
	ECFMRename,
	ECFMCopyHandle,
	ECFMAttribs,
	};

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 TTestCaseUnitaryFileOpen
	{
	TTestParamBasic 		iBasic;
	TTestParamPrsFileOpen	iSrcPrsFO;
	};

struct TTestCaseBinaryFileOpen
	{
	TTestParamBasic 		iBasic;
	TTestParamPrsFileOpen	iSrcPrsFO;
	TTestParamPrsFileOpen	iTrgPrsFO;
	};

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;
	TUint 			iSwitch;
	TInt			iSyncReturn;
	TInt			iAsyncReturn;
	TInt			iAsyncStatus;

	TUint			iSetAttribs;
	TUint			iClearAttribs;
	TTime			iSetModified;

	TChar* 			iSrcDrvChar;
	TPtrC			iSrcCmdPath;

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

	TPtrC			iSrcCmpPath;
	TDirSetupFiles 	iSrcCmpFiles;
	TUint			iSrcCmpAttribs;
	TTime			iSrcCmpTime;
	TBool			iSrcCmpFileOpen;

	TChar* 			iTrgDrvChar;
	TPtrC			iTrgCmdPath;

	TPtrC			iTrgPrsPath;
	TDirSetupFiles 	iTrgPrsFiles;
	TUint			iTrgPrsAttribs;
	TTime			iTrgPrsTime;
	TBool			iTrgPrsFileOpen;

	TPtrC			iTrgCmpPath;
	TDirSetupFiles 	iTrgCmpFiles;
	TUint			iTrgCmpAttribs;
	TTime			iTrgCmpTime;
	TBool			iTrgCmpFileOpen;
	};
#endif /*T_CFILEMAN_AUX_H*/