os/kernelhwsrv/kerneltest/f32test/server/b_gen.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
// Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of the License "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
//
sl@0
    15
sl@0
    16
#include <f32file.h>
sl@0
    17
#include <e32test.h>
sl@0
    18
#include <e32math.h>
sl@0
    19
#include <e32hal.h>
sl@0
    20
#include "t_server.h"
sl@0
    21
#include "t_chlffs.h"
sl@0
    22
sl@0
    23
#ifdef __VC32__
sl@0
    24
    // Solve compilation problem caused by non-English locale
sl@0
    25
    #pragma setlocale("english")
sl@0
    26
#endif
sl@0
    27
sl@0
    28
GLDEF_D RTest test(_L("B_GEN"));
sl@0
    29
//
sl@0
    30
// File test - general test of local filing system routines
sl@0
    31
//             (finishes with formating current device).
sl@0
    32
// Modified from BB's epoc test code
sl@0
    33
sl@0
    34
#define MINIMUM_DATE (315532800L)
sl@0
    35
#define DateTests   10
sl@0
    36
sl@0
    37
// GLREF_D P_DEVICE p_file;
sl@0
    38
// GLREF_D P_DEVICE p_wind,p_screen,p_cons;
sl@0
    39
sl@0
    40
GLDEF_D TBuf<0x100> gNameBuf;
sl@0
    41
GLDEF_D	TBuf<0x100> gNameOut;
sl@0
    42
GLDEF_D RFile gFile;
sl@0
    43
GLDEF_D RFile gFileErr;
sl@0
    44
GLDEF_D RFile gFile2;
sl@0
    45
GLDEF_D RDir gDir;
sl@0
    46
GLDEF_D RFormat gFormat;
sl@0
    47
//GLDEF_D void *chan1,*chan2;
sl@0
    48
GLDEF_D TFileName fBuf;
sl@0
    49
//GLDEF_D TUint8 fBuf[P_FNAMESIZE];
sl@0
    50
sl@0
    51
sl@0
    52
LOCAL_D TBuf8<0x4000> gDataBuf;
sl@0
    53
LOCAL_D TEntry gFileEntry;
sl@0
    54
// LOCAL_D P_DINFO volInfo;
sl@0
    55
LOCAL_D TVolumeInfo volInfo;
sl@0
    56
// LOCAL_D P_NINFO nInfo;
sl@0
    57
LOCAL_D TFileName pathBuf;
sl@0
    58
sl@0
    59
sl@0
    60
LOCAL_D TInt NameErr=KErrBadName;
sl@0
    61
LOCAL_D TInt DirErr=KErrPathNotFound;
sl@0
    62
LOCAL_D TInt AccessErr=KErrAccessDenied;
sl@0
    63
LOCAL_D TInt LockedErr=KErrInUse;
sl@0
    64
LOCAL_D TInt ExistsErr=KErrAlreadyExists;
sl@0
    65
LOCAL_D TInt NotExistsErr=KErrNotFound;
sl@0
    66
LOCAL_D TInt EofErr=KErrEof;
sl@0
    67
LOCAL_D TInt DeviceErr=KErrNotReady;
sl@0
    68
//LOCAL_D TInt NoFileSystemErr=KErrNotReady;
sl@0
    69
//LOCAL_D TInt NotSupportedErr=KErrNotSupported;
sl@0
    70
LOCAL_D TInt ReadOnlyErr=KErrAccessDenied;
sl@0
    71
sl@0
    72
LOCAL_D TInt P_FASTREAM=EFileStream;
sl@0
    73
LOCAL_D TInt P_FAEXEC=0;
sl@0
    74
LOCAL_D TInt P_FAMOD=KEntryAttArchive;
sl@0
    75
LOCAL_D TInt P_FAREAD=KEntryAttReadOnly;
sl@0
    76
//LOCAL_D TInt P_FAHIDDEN=KEntryAttHidden;
sl@0
    77
//LOCAL_D TInt P_FASYSTEM=KEntryAttSystem;
sl@0
    78
//LOCAL_C TInt P_FAVOLUME=KEntryAttVolume;
sl@0
    79
LOCAL_C TInt P_FADIR=KEntryAttDir;
sl@0
    80
LOCAL_C TInt P_FRANDOM=0;
sl@0
    81
LOCAL_C TInt P_FABS=ESeekStart;
sl@0
    82
sl@0
    83
LOCAL_C TInt P_FUPDATE=EFileWrite;
sl@0
    84
sl@0
    85
sl@0
    86
LOCAL_C void doError(const TDesC &aMess, TInt anErr, TInt line)
sl@0
    87
	{ 
sl@0
    88
    test.Printf(_L("%S failed at line %d. Error %d\n"),&aMess, line, anErr);
sl@0
    89
    test(0);
sl@0
    90
	}
sl@0
    91
#define Error(aMess, anErr) doError(aMess, anErr, __LINE__)
sl@0
    92
sl@0
    93
LOCAL_C void doError2(const TDesC &aMess, TInt anErr, TInt line, TInt callLine)
sl@0
    94
	{ 
sl@0
    95
    test.Printf(_L("%S failed at line %d. Error %d. Called from line %d\n"),&aMess, line, anErr, callLine); \
sl@0
    96
    test(0);
sl@0
    97
	}
sl@0
    98
#define Error2(aMess, anErr, line) doError2(aMess, anErr, __LINE__, line)
sl@0
    99
sl@0
   100
LOCAL_C void testWrite(const TDesC& aName,TInt aLen,TInt32 aSize,TBool aShouldChange)
sl@0
   101
//
sl@0
   102
// Write to a file
sl@0
   103
//
sl@0
   104
    {
sl@0
   105
sl@0
   106
	TTime saveTime;
sl@0
   107
	TInt c;
sl@0
   108
	test.Printf(_L("Write %u bytes %u\n"),aLen,aShouldChange);
sl@0
   109
	if ((c=TheFs.Entry(aName,gFileEntry))!=KErrNone)
sl@0
   110
		Error(_L("File info 600"),c);
sl@0
   111
	saveTime=gFileEntry.iModified;
sl@0
   112
	User::After(3000000L); // 30 tenths of a sec = 30 00000 micro seconds
sl@0
   113
	if ((c=gFile.Open(TheFs,aName,EFileWrite))!=KErrNone)
sl@0
   114
		Error(_L("Open 50"),c);
sl@0
   115
	if ((c=gFile.Write(gDataBuf,aLen))!=KErrNone)
sl@0
   116
		Error(_L("Write"),c);
sl@0
   117
	gFile.Close();
sl@0
   118
	if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone)
sl@0
   119
		Error(_L("File info 601"),c);
sl@0
   120
	if ((saveTime!=gFileEntry.iModified)!=aShouldChange)
sl@0
   121
		Error(_L("Change flag check 6"),0);
sl@0
   122
	if (gFileEntry.iSize!=aSize)
sl@0
   123
		Error(_L("Size check 602"),0);
sl@0
   124
    }
sl@0
   125
sl@0
   126
LOCAL_C void testSetEof(const TDesC& aName,TUint32 aPos,TBool aShouldChange)
sl@0
   127
//
sl@0
   128
// Set the end of a file
sl@0
   129
//
sl@0
   130
	{
sl@0
   131
sl@0
   132
	TTime saveTime;
sl@0
   133
	TInt c;
sl@0
   134
	test.Printf(_L("Set EOF to %u %u\n"),aPos,aShouldChange);
sl@0
   135
	if ((c=TheFs.Entry(aName,gFileEntry))!=KErrNone)
sl@0
   136
		Error(_L("File info 500"),c);
sl@0
   137
	saveTime=gFileEntry.iModified;
sl@0
   138
	User::After(3000000L);
sl@0
   139
	if ((c=gFile.Open(TheFs,aName,EFileWrite))!=KErrNone)
sl@0
   140
		Error(_L("Open 50"),c);
sl@0
   141
	if ((c=gFile.SetSize(aPos))!=KErrNone)
sl@0
   142
		Error(_L("Set EOF 50"),c);
sl@0
   143
	gFile.Close();
sl@0
   144
	if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone)
sl@0
   145
		Error(_L("File info 501"),c);
sl@0
   146
	if ((saveTime!=gFileEntry.iModified)!=aShouldChange)
sl@0
   147
		Error(_L("Change flag check 5"),0);
sl@0
   148
	}
sl@0
   149
sl@0
   150
sl@0
   151
LOCAL_C void testDir(const TDesC& aDirName)
sl@0
   152
//
sl@0
   153
// Create a directory
sl@0
   154
//
sl@0
   155
    {
sl@0
   156
sl@0
   157
	TInt c;
sl@0
   158
	test.Printf(_L("Test dir %S\n"),&aDirName);
sl@0
   159
	c=gDir.Open(TheFs,aDirName,KEntryAttNormal);
sl@0
   160
sl@0
   161
	if (c!=KErrNone)
sl@0
   162
		Error(_L("Directory open 1000"),c);
sl@0
   163
	
sl@0
   164
	gDir.Close();
sl@0
   165
	
sl@0
   166
	TChar drive(aDirName[0]);
sl@0
   167
	TInt driveNo;
sl@0
   168
	c=RFs::CharToDrive(drive,driveNo);
sl@0
   169
	test(c==KErrNone);
sl@0
   170
	if ((c=TheFs.Volume(volInfo,driveNo))!=KErrNone)
sl@0
   171
		Error(_L("Device info 1000"),c);
sl@0
   172
    }
sl@0
   173
sl@0
   174
sl@0
   175
/*
sl@0
   176
LOCAL_C void testNodeInfo(const TDesC& aName,TInt type,TInt anErr)
sl@0
   177
//
sl@0
   178
// Test p_ninfo.
sl@0
   179
//
sl@0
   180
    {
sl@0
   181
sl@0
   182
//    TInt c;
sl@0
   183
	test.Printf(_L("Node info: %S\n"),&aName);
sl@0
   184
//	if ((c=p_ninfo(aDirName,&nInfo))!=anErr)
sl@0
   185
//		Error(_L("Device info"),c);
sl@0
   186
	if (anErr==0)
sl@0
   187
		{
sl@0
   188
//		if (!(nInfo.version==2 || nInfo.version==3))
sl@0
   189
//			Error(_L("Node version check"),0);
sl@0
   190
//		if (nInfo.type!=type)
sl@0
   191
//			Error(_L("Node type check"),0);
sl@0
   192
		}
sl@0
   193
    }
sl@0
   194
*/
sl@0
   195
sl@0
   196
LOCAL_C void testDeviceInfo(const TDesC& aDeviceName,TInt anErr)
sl@0
   197
//
sl@0
   198
// Test p_dinfo.
sl@0
   199
//
sl@0
   200
    {
sl@0
   201
sl@0
   202
	TInt c;
sl@0
   203
	test.Printf(_L("Device info: %S\n"),&aDeviceName);
sl@0
   204
	TInt drive=KDefaultDrive;
sl@0
   205
	if (aDeviceName.Length())
sl@0
   206
		{
sl@0
   207
		c=RFs::CharToDrive(aDeviceName[0],drive);
sl@0
   208
		test(c==KErrNone);
sl@0
   209
		}		
sl@0
   210
	if ((c=TheFs.Volume(volInfo,drive))!=anErr)
sl@0
   211
		Error(_L("Device info"),c);
sl@0
   212
	if (anErr==0)
sl@0
   213
		{
sl@0
   214
//		if (!(volInfo.version==2 || volInfo.version==3)) ********* version is not a member of TVolumeInfo
sl@0
   215
//			Error(_L("Device version check"),0);
sl@0
   216
		if (volInfo.iFree>volInfo.iSize)
sl@0
   217
			Error(_L("Free greater than size check"),0);
sl@0
   218
		}
sl@0
   219
    }
sl@0
   220
sl@0
   221
LOCAL_C void testFileInfo(const TDesC& aFileName,TInt anErr)
sl@0
   222
//
sl@0
   223
// Test entry info
sl@0
   224
//
sl@0
   225
	{
sl@0
   226
sl@0
   227
	TInt c;
sl@0
   228
	test.Printf(_L("File info: %S\n"),&aFileName);
sl@0
   229
	if ((c=TheFs.Entry(aFileName,gFileEntry))!=anErr)
sl@0
   230
		Error(_L("Get info 100"),c);
sl@0
   231
	if (anErr==0)
sl@0
   232
		{
sl@0
   233
		if (aFileName.Length()>=2 && aFileName[0]=='Z' && aFileName[1]==':')
sl@0
   234
			{
sl@0
   235
			if ((gFileEntry.iAtt&(P_FAREAD|P_FAEXEC|P_FASTREAM)) != (TUint32)(P_FAREAD|P_FAEXEC|P_FASTREAM) && gFileEntry.iAtt!=KEntryAttDir)
sl@0
   236
				Error(_L("Info status check Z:\\"),0);
sl@0
   237
			}
sl@0
   238
		else
sl@0
   239
			{
sl@0
   240
			if (gFileEntry.iAtt&KEntryAttDir)
sl@0
   241
				return; // Found directory entry
sl@0
   242
			if (gFileEntry.iAtt!=(TUint32)(P_FASTREAM|P_FAMOD))
sl@0
   243
				Error(_L("Info status check"),0);
sl@0
   244
			if (gFileEntry.iSize!=0L)
sl@0
   245
				Error(_L("Info size check"),0);
sl@0
   246
			}
sl@0
   247
		}
sl@0
   248
	}
sl@0
   249
sl@0
   250
LOCAL_C void testRenameFromRoot(const TDesC& aRName,const TDesC& aDName)
sl@0
   251
//
sl@0
   252
//
sl@0
   253
//
sl@0
   254
	{
sl@0
   255
sl@0
   256
	TInt c;
sl@0
   257
	if ((c=TheFs.Rename(aRName,aDName))!=KErrNone)
sl@0
   258
		Error(_L("Rename 92"),c);
sl@0
   259
	if ((c=gFile.Open(TheFs,aDName,EFileStream))!=KErrNone)
sl@0
   260
		Error(_L("Open 92"),c);
sl@0
   261
	gFile.Close();
sl@0
   262
	if ((c=TheFs.Delete(aRName))!=NotExistsErr)
sl@0
   263
		Error(_L("Delete 92"),c);
sl@0
   264
	}
sl@0
   265
sl@0
   266
LOCAL_C void testRenameToRoot(const TDesC& pName,const TDesC& rName)
sl@0
   267
//
sl@0
   268
//
sl@0
   269
//
sl@0
   270
	{
sl@0
   271
sl@0
   272
	TInt c;
sl@0
   273
	if ((c=gFile.Replace(TheFs,pName,EFileStream))!=KErrNone)
sl@0
   274
		Error(_L("Create 91"),c);
sl@0
   275
	gFile.Close();
sl@0
   276
	if ((c=TheFs.Rename(pName,rName))!=KErrNone)
sl@0
   277
		Error(_L("Rename 91"),c);
sl@0
   278
	if ((c=gFile.Open(TheFs,rName,EFileStream))!=KErrNone)
sl@0
   279
		Error(_L("Open 91"),c);
sl@0
   280
	gFile.Close();
sl@0
   281
	if ((c=TheFs.Delete(pName))!=NotExistsErr)
sl@0
   282
		Error(_L("Delete 91"),c);
sl@0
   283
	}
sl@0
   284
sl@0
   285
LOCAL_C void verifyTestPat1()
sl@0
   286
//
sl@0
   287
//
sl@0
   288
//
sl@0
   289
	{
sl@0
   290
sl@0
   291
	TInt i;
sl@0
   292
	TInt c;
sl@0
   293
	if ((c=gFile.Open(TheFs,_L("\\TESTPAT1.DAT"),EFileStream))!=KErrNone)
sl@0
   294
		Error(_L("Create testpat1"),c);
sl@0
   295
	gDataBuf.SetLength(0);
sl@0
   296
	if ((c=gFile.Read(gDataBuf,512))!=KErrNone || gDataBuf.Length()!=512)
sl@0
   297
		Error(_L("Read 90"),c);
sl@0
   298
	gFile.Close();
sl@0
   299
	for (i=0;i<512;i++)
sl@0
   300
		{
sl@0
   301
		if (gDataBuf[i]!='X')
sl@0
   302
			Error(_L("Data check"),0);
sl@0
   303
		}
sl@0
   304
	}
sl@0
   305
sl@0
   306
void TestINC103141() // PDEF104017
sl@0
   307
	{
sl@0
   308
	test.Printf(_L("Test INC103141\n"));
sl@0
   309
	_LIT(KDir1, "\\INC103141\\TEST");
sl@0
   310
	_LIT(KDir2, "\\INC103141\\test");
sl@0
   311
	TBuf<32> dirname;
sl@0
   312
	dirname.Copy(KDir1);
sl@0
   313
	dirname.Append(KPathDelimiter);
sl@0
   314
	MakeDir(dirname);
sl@0
   315
	TInt err = TheFs.Rename(KDir1, KDir2);
sl@0
   316
	test(err == KErrNone);
sl@0
   317
	err = TheFs.RmDir(dirname);
sl@0
   318
	test(err == KErrNone);
sl@0
   319
	err = TheFs.RmDir(KDir1);
sl@0
   320
	test(err == KErrNone);
sl@0
   321
	}
sl@0
   322
	
sl@0
   323
LOCAL_C void testRename()
sl@0
   324
//
sl@0
   325
// Test TheFs.Rename function.
sl@0
   326
//
sl@0
   327
	{
sl@0
   328
sl@0
   329
	TBuf<32> xName;
sl@0
   330
	TInt i;
sl@0
   331
	TInt c;
sl@0
   332
	test.Printf(_L("Test TheFs.Rename\n"));
sl@0
   333
sl@0
   334
	test.Printf(_L("Test rename into root\n"));
sl@0
   335
	if ((c=gFile.Replace(TheFs,_L("\\TESTPAT1.DAT"),EFileStream|P_FUPDATE))!=KErrNone)
sl@0
   336
		Error(_L("Create testpat1"),c);
sl@0
   337
	gDataBuf.Fill('X',512);
sl@0
   338
	if ((c=gFile.Write(gDataBuf,512))!=KErrNone)
sl@0
   339
		Error(_L("Write 90"),c);
sl@0
   340
	gFile.Close();
sl@0
   341
	if ((c=TheFs.MkDir(_L("\\DIRX\\")))!=KErrNone)
sl@0
   342
		Error(_L("Make dir 90"),c);
sl@0
   343
	for (i=0;i<32;i++)
sl@0
   344
		{
sl@0
   345
		xName.Format(_L("\\DIRX\\FILEX%u"),i);
sl@0
   346
		TPtrC rootName(xName.Ptr()+5,xName.Length()-5);
sl@0
   347
		testRenameToRoot(xName,rootName);
sl@0
   348
		verifyTestPat1();
sl@0
   349
		}
sl@0
   350
sl@0
   351
	test.Printf(_L("Test rename from root\n"));
sl@0
   352
	for (i=0;i<32;i++)
sl@0
   353
		{
sl@0
   354
		xName.Format(_L("\\DIRX\\FILEX%u"),i);
sl@0
   355
		TPtrC rootName(xName.Ptr()+5,xName.Length()-5);
sl@0
   356
		testRenameFromRoot(rootName,xName);
sl@0
   357
		verifyTestPat1();
sl@0
   358
		}
sl@0
   359
	for (i=0;i<32;i++)
sl@0
   360
		{
sl@0
   361
		xName.Format(_L("\\DIRX\\FILEX%u"),i);
sl@0
   362
		if ((c=TheFs.Delete(xName))!=KErrNone)
sl@0
   363
			Error(_L("Delete 93"),c);
sl@0
   364
		}
sl@0
   365
	if ((c=TheFs.RmDir(_L("\\DIRX\\")))!=KErrNone)
sl@0
   366
		Error(_L("Delete DIRX"),c);
sl@0
   367
	verifyTestPat1();
sl@0
   368
	if ((c=TheFs.Delete(_L("\\TESTPAT1.DAT")))!=KErrNone)
sl@0
   369
		Error(_L("Delete 80"),c);
sl@0
   370
sl@0
   371
	test.Printf(_L("Test rename with wild cards\n"));
sl@0
   372
	if ((c=TheFs.Rename(_L("*.*"),_L("FRED")))!=NameErr)
sl@0
   373
		Error(_L("Rename 100"),c);
sl@0
   374
	if ((c=TheFs.Rename(_L("?"),_L("FRED")))!=NameErr)
sl@0
   375
		Error(_L("Rename 101"),c);
sl@0
   376
	if ((c=TheFs.Rename(_L(""),_L("FRED")))!=KErrBadName) // NameErr)
sl@0
   377
		Error(_L("Rename 101.11"),c);
sl@0
   378
	if ((c=TheFs.Rename(_L("."),_L("FRED")))!=NameErr)
sl@0
   379
		Error(_L("Rename 101.12"),c);
sl@0
   380
	if ((c=TheFs.Rename(_L("NOEXIST"),_L("*")))!=NameErr)
sl@0
   381
		Error(_L("Rename 101.1"),c);
sl@0
   382
	if ((c=gFile.Create(TheFs,_L("FILE1"),EFileStream))!=KErrNone)
sl@0
   383
		Error(_L("Create 101.2"),c);
sl@0
   384
	gFile.Close();
sl@0
   385
	if ((c=TheFs.Rename(_L("FILE1"),_L("AAA?")))!=NameErr)
sl@0
   386
		Error(_L("Rename 101.3"),c);
sl@0
   387
	if ((c=TheFs.Rename(_L("FILE1"),_L("")))!=KErrBadName) // NameErr)
sl@0
   388
		Error(_L("Rename 101.41"),c);
sl@0
   389
	if ((c=TheFs.Rename(_L(""),_L("")))!=KErrBadName) // NameErr)
sl@0
   390
		Error(_L("Rename 101.42"),c);
sl@0
   391
	if ((c=TheFs.Delete(_L("FILE1")))!=KErrNone)
sl@0
   392
		Error(_L("Delete 101.5"),c);
sl@0
   393
	if ((c=TheFs.Rename(_L("\\"),_L("FRED")))!=NameErr)
sl@0
   394
		Error(_L("Rename 101.6"),c);
sl@0
   395
sl@0
   396
	test.Printf(_L("Test rename of directories\n"));
sl@0
   397
	if ((c=TheFs.MkDir(_L("\\DIR1\\")))!=KErrNone)
sl@0
   398
		Error(_L("Make dir 102"),c);
sl@0
   399
	if ((c=TheFs.Rename(_L("\\DIR1"),_L("\\A2345678.123")))!=KErrNone)
sl@0
   400
		Error(_L("Rename 103.1"),c);
sl@0
   401
	if ((c=TheFs.Rename(_L("\\A2345678.123"),_L("\\DIR2")))!=KErrNone)
sl@0
   402
		Error(_L("Rename 103.2"),c);
sl@0
   403
	if ((c=TheFs.Rename(_L("\\DIR2"),_L("\\A234567.1234")))!=KErrNone) // ****** NameErr) Long filenames are supported
sl@0
   404
		Error(_L("Rename 103.3"),c);
sl@0
   405
	if ((c=TheFs.Rename(_L("\\A234567.1234"),_L("\\DIR2")))!=KErrNone)
sl@0
   406
		Error(_L("Rename 103.3"),c);
sl@0
   407
	if ((c=TheFs.MkDir(_L("\\DIR1\\")))!=KErrNone)
sl@0
   408
		Error(_L("Make dir 104"),c);
sl@0
   409
sl@0
   410
	test.Printf(_L("Test rename of open files\n"));
sl@0
   411
	if ((c=gFile.Create(TheFs,_L("\\DIR1\\FILE1"),EFileStreamText))!=KErrNone)
sl@0
   412
		Error(_L("Create 105"),c);
sl@0
   413
	if ((c=TheFs.Rename(_L("\\DIR1\\FILE1"),_L("\\DIR1\\FILE1")))!=LockedErr)
sl@0
   414
		Error(_L("Rename 106"),c);
sl@0
   415
	if ((c=TheFs.Rename(_L("\\DIR1\\FILE1"),_L("\\DIR2\\FILE1")))!=LockedErr)
sl@0
   416
		Error(_L("Rename 106.1"),c);
sl@0
   417
	if ((c=gFile2.Open(TheFs,_L("\\DIR2\\FILE1"),EFileStream))!=NotExistsErr)
sl@0
   418
		Error(_L("Create 105"),c);
sl@0
   419
	gFile.Close();
sl@0
   420
sl@0
   421
	test.Printf(_L("Test rename to same name\n"));
sl@0
   422
	if ((c=TheFs.Rename(_L("\\DIR1\\FILE1"),_L("\\DIR1\\FILE1")))!=KErrNone) // !=ExistsErr)
sl@0
   423
		Error(_L("Rename 105.1"),c);
sl@0
   424
	if ((c=TheFs.Rename(_L("\\DIR1"),_L("\\DIR1")))!=KErrNone) // !=ExistsErr)
sl@0
   425
		Error(_L("Rename 105.2"),c);
sl@0
   426
sl@0
   427
	test.Printf(_L("Test rename of read-only files\n"));     // IS ALLOWED //
sl@0
   428
	if ((c=TheFs.SetAtt(_L("\\DIR1\\FILE1"),KEntryAttReadOnly,0))!=KErrNone)
sl@0
   429
		Error(_L("Att 106"),c);
sl@0
   430
	if ((c=TheFs.Entry(_L("\\DIR1\\FILE1"),gFileEntry))!=KErrNone)
sl@0
   431
		Error(_L("File info 106.1"),c);
sl@0
   432
	test.Printf(_L("STATUS=%04x\n"),gFileEntry.iAtt);
sl@0
   433
	if (gFileEntry.iAtt!=(TUint32)(P_FAREAD|P_FASTREAM|P_FAMOD))
sl@0
   434
		Error(_L("Status check 106.2"),0);
sl@0
   435
	if ((c=TheFs.Entry(_L("\\DIR1"),gFileEntry))!=KErrNone)
sl@0
   436
		Error(_L("File info 106.3"),c);
sl@0
   437
	test.Printf(_L("STATUS=%04x\n"),gFileEntry.iAtt);
sl@0
   438
	if (gFileEntry.iAtt!=(TUint32)(P_FASTREAM|P_FADIR))
sl@0
   439
		Error(_L("Status check 106.4"),0);
sl@0
   440
sl@0
   441
	if ((c=TheFs.Rename(_L("\\DIR1\\FILE1"),_L("\\DIR1\\FILE1")))!=KErrNone) // !=ExistsErr)
sl@0
   442
		Error(_L("Rename 107"),c);
sl@0
   443
	if ((c=TheFs.Rename(_L("\\DIR1\\FILE1"),_L("\\DIR1\\FILE2")))!=KErrNone)
sl@0
   444
		Error(_L("Rename 108"),c);
sl@0
   445
	if ((c=TheFs.Rename(_L("\\DIR1\\FILE2"),_L("\\DIR2\\FILE2")))!=KErrNone)
sl@0
   446
		Error(_L("Rename 109"),c);
sl@0
   447
	if ((c=gFile2.Open(TheFs,_L("\\DIR2\\FILE2"),EFileStream))!=KErrNone)
sl@0
   448
		Error(_L("Create 110"),c);
sl@0
   449
	gFile2.Close();
sl@0
   450
	if ((c=TheFs.Rename(_L("\\DIR2\\FILE2"),_L("\\DIR1\\FILE1")))!=KErrNone)
sl@0
   451
		Error(_L("Rename 110.1"),c);
sl@0
   452
	if ((c=TheFs.SetAtt(_L("\\DIR1\\FILE1"),0,KEntryAttReadOnly))!=KErrNone)
sl@0
   453
		Error(_L("Att 111"),c);
sl@0
   454
sl@0
   455
	test.Printf(_L("Test rename of files across directories\n"));
sl@0
   456
	if ((c=TheFs.Rename(_L("\\DIR1\\FILE1"),_L("\\DIR2\\FILE1")))!=KErrNone)
sl@0
   457
		Error(_L("Rename 112"),c);
sl@0
   458
	if ((c=gFile.Open(TheFs,_L("\\DIR2\\FILE1"),EFileStream))!=KErrNone)
sl@0
   459
		Error(_L("Exist 113"),c);
sl@0
   460
	gFile.Close();
sl@0
   461
sl@0
   462
	test.Printf(_L("Test rename of directories across directories\n"));
sl@0
   463
	if ((c=TheFs.Rename(_L("\\DIR1"),_L("\\DIR2\\DIR1")))!=KErrNone) // ******** AccessErr)
sl@0
   464
		Error(_L("Rename 114"),c);
sl@0
   465
	if ((c=TheFs.Rename(_L("\\DIR1"),_L("\\")))!=NameErr)
sl@0
   466
		Error(_L("Rename 114.1"),c);
sl@0
   467
sl@0
   468
	if ((c=TheFs.Delete(_L("\\DIR2\\FILE1")))!=KErrNone)
sl@0
   469
		Error(_L("Delete 115"),c);
sl@0
   470
	if ((c=TheFs.RmDir(_L("\\DIR2\\DIR1\\")))!=KErrNone)
sl@0
   471
		Error(_L("Delete 115"),c);
sl@0
   472
	if ((c=TheFs.RmDir(_L("\\DIR2\\")))!=KErrNone)
sl@0
   473
		Error(_L("Delete 115"),c);
sl@0
   474
	
sl@0
   475
	TestINC103141();  // PDEF104017
sl@0
   476
	}    
sl@0
   477
sl@0
   478
LOCAL_C void testDelete()
sl@0
   479
//
sl@0
   480
// Test RFs::Delete function.
sl@0
   481
//
sl@0
   482
	{
sl@0
   483
sl@0
   484
	TInt c;
sl@0
   485
	test.Printf(_L("Test RFs::Delete\n"));
sl@0
   486
	test.Printf(_L("Test delete non-empty directories\n"));
sl@0
   487
	if ((c=TheFs.MkDir(_L("\\TESTDIR\\")))!=KErrNone)
sl@0
   488
		Error(_L("Make dir 500"),c);
sl@0
   489
	if ((c=gFile.Create(TheFs,_L("\\TESTDIR\\NAME.EXT"),EFileStream))!=KErrNone)
sl@0
   490
		Error(_L("Create"),c);
sl@0
   491
	if ((c=TheFs.Delete(_L("\\TESTDIR\\")))!=KErrBadName) // ******* AccessErr)
sl@0
   492
		Error(_L("Delete 501"),c);
sl@0
   493
sl@0
   494
	test.Printf(_L("Test delete open file\n"));
sl@0
   495
	if ((c=TheFs.Delete(_L("\\TESTDIR\\NAME.EXT")))!=LockedErr)
sl@0
   496
		Error(_L("Delete 502"),c);
sl@0
   497
	gFile.Close();
sl@0
   498
	if ((c=TheFs.Delete(_L("\\TESTDIR\\NAME.EXT")))!=KErrNone)
sl@0
   499
		Error(_L("Delete 503"),c);
sl@0
   500
	if ((c=TheFs.RmDir(_L("\\TESTDIR\\")))!=KErrNone)
sl@0
   501
		Error(_L("Delete 504"),c);
sl@0
   502
	}
sl@0
   503
sl@0
   504
LOCAL_C void testUnique(TUint fileFormat)
sl@0
   505
//
sl@0
   506
// Test RFile::Temp
sl@0
   507
//
sl@0
   508
	{
sl@0
   509
sl@0
   510
	TInt pos;
sl@0
   511
	TInt c;
sl@0
   512
	test.Printf(_L("Test RFile::Temp\n"));
sl@0
   513
	gDataBuf.SetLength(1);
sl@0
   514
	if ((c=gFile.Temp(TheFs,_L(""),gNameBuf,fileFormat))!=KErrNone)
sl@0
   515
		Error(_L("Directory open 2000"),c);
sl@0
   516
	if ((c=gFile.Write(gDataBuf,0))!=KErrNone)
sl@0
   517
		Error(_L("Write 2000"),c);
sl@0
   518
	if ((c=gFile.Write(gDataBuf,1))!=KErrNone)
sl@0
   519
		Error(_L("Write 2000"),c);
sl@0
   520
	pos=0L;
sl@0
   521
	if ((c=gFile.Seek(ESeekStart,pos))!=KErrNone) // !=E_FILE_INV) Temp file is random access
sl@0
   522
		Error(_L("Seek 2000"),c);
sl@0
   523
	gFile.Close();
sl@0
   524
	if ((c=TheFs.Delete(gNameBuf))!=KErrNone)
sl@0
   525
		Error(_L("Delete"),c);
sl@0
   526
	}
sl@0
   527
sl@0
   528
LOCAL_C void testFileName(const TDesC& aFileName,TInt res)
sl@0
   529
//
sl@0
   530
//
sl@0
   531
//
sl@0
   532
	{
sl@0
   533
sl@0
   534
	TInt c;
sl@0
   535
	if ((c=aFileName.Length())>20)
sl@0
   536
		test.Printf(_L("%u char name\n"),c);
sl@0
   537
	else
sl@0
   538
		test.Printf(_L("\"%S\"\n"),&aFileName);
sl@0
   539
	if ((c=gFile.Create(TheFs,aFileName,EFileStream))!=res)
sl@0
   540
		Error(_L("Create 200"),c);
sl@0
   541
	if (res==KErrNone)
sl@0
   542
		{
sl@0
   543
		gFile.Close();
sl@0
   544
		if ((c=gFile.Open(TheFs,aFileName,EFileStream))!=KErrNone)
sl@0
   545
			Error(_L("Open 200"),c);
sl@0
   546
		gFile.Close();
sl@0
   547
		if ((c=TheFs.Delete(aFileName))!=KErrNone)
sl@0
   548
			Error(_L("Delete 200"),c);
sl@0
   549
		}
sl@0
   550
	else
sl@0
   551
		{
sl@0
   552
		if ((c=gFile.Open(TheFs,aFileName,EFileStream))!=res)    // test eg *.* //
sl@0
   553
			Error(_L("Open 201"),c);
sl@0
   554
		if ((c=gFile.Replace(TheFs,aFileName,EFileStream))!=res)
sl@0
   555
			Error(_L("Replace 202"),c);
sl@0
   556
		}
sl@0
   557
	}
sl@0
   558
sl@0
   559
#if defined(_UNICODE)
sl@0
   560
LOCAL_C void testFileName(const TDesC8& aFileName,TInt res)
sl@0
   561
//
sl@0
   562
// Defined to cope with all the instances of testFileName(gDataBuf,...)
sl@0
   563
//
sl@0
   564
	{
sl@0
   565
	TPtrC gDataBuf16((TText*)aFileName.Ptr(),gDataBuf.Size()/sizeof(TText8));
sl@0
   566
	testFileName(gDataBuf16,res);
sl@0
   567
	}
sl@0
   568
#endif
sl@0
   569
sl@0
   570
LOCAL_C void testVolumeName(const TDesC& aVolumeName,TInt aResultExpected)
sl@0
   571
//
sl@0
   572
//
sl@0
   573
//
sl@0
   574
	{
sl@0
   575
sl@0
   576
	TInt result;
sl@0
   577
	test.Printf(_L("\"%S\"\n"),&aVolumeName);
sl@0
   578
	TInt drive=KDefaultDrive;
sl@0
   579
	if (aVolumeName.Length()>=2 && aVolumeName[0]=='Z' && aVolumeName[1]==':')
sl@0
   580
		{
sl@0
   581
		drive=25;
sl@0
   582
		TPtr volName((TText*)&aVolumeName[2],(aVolumeName.Length()-2),(aVolumeName.Length()-2));
sl@0
   583
		result=TheFs.SetVolumeLabel(volName,drive);
sl@0
   584
		}
sl@0
   585
	else
sl@0
   586
		result=TheFs.SetVolumeLabel(aVolumeName,drive);
sl@0
   587
	
sl@0
   588
	if (result==KErrGeneral)
sl@0
   589
		{
sl@0
   590
		test.Printf(_L("KErrGeneral: Cannot set volume label on a substed drive!\n"));
sl@0
   591
		return;
sl@0
   592
		}
sl@0
   593
	if (result!=aResultExpected)
sl@0
   594
		Error(_L("Set volume name returned"),result);
sl@0
   595
	
sl@0
   596
/*	if (aResultExpected==FALSE)
sl@0
   597
		{
sl@0
   598
		if ((result=TheFs.Volume(volInfo))!=KErrNone)
sl@0
   599
			Error(_L("Volume Info failed"),result);
sl@0
   600
		TPtrC vol(aVolumeName);
sl@0
   601
		if (vol!=volInfo.iName)
sl@0
   602
			Error(_L("Check volume name failed"),0);
sl@0
   603
		}
sl@0
   604
*/
sl@0
   605
	}
sl@0
   606
sl@0
   607
#define testMakeDir(aDirName, res) TestMakeDirLine(aDirName, res, __LINE__)
sl@0
   608
LOCAL_C void TestMakeDirLine(const TDesC& aDirName,TInt res, TInt line)
sl@0
   609
//
sl@0
   610
//
sl@0
   611
//
sl@0
   612
	{
sl@0
   613
sl@0
   614
    TInt c;
sl@0
   615
    TUint l;
sl@0
   616
    TFileName buf;
sl@0
   617
    if ((c=aDirName.Length())>20)
sl@0
   618
        test.Printf(_L("%u char name\n"),c);
sl@0
   619
    else
sl@0
   620
        test.Printf(_L("\"%S\"\n"),&aDirName);
sl@0
   621
    if ((c=TheFs.MkDirAll(aDirName))!=res)
sl@0
   622
        Error2(_L("Make directory 1"),c, line);
sl@0
   623
    if (res==FALSE)
sl@0
   624
		{
sl@0
   625
        TParse parse;
sl@0
   626
        c=TheFs.Parse(aDirName,parse);
sl@0
   627
        test(c==KErrNone);
sl@0
   628
        buf=parse.Path();
sl@0
   629
        buf.Append(_L("*"));
sl@0
   630
        if (buf.Length()<=64)
sl@0
   631
			{
sl@0
   632
            test.Printf(_L("Open dir...\n"));
sl@0
   633
            if ((c=gDir.Open(TheFs,buf,KEntryAttMaskSupported))!=KErrNone)
sl@0
   634
                Error2(_L("Directory open 1"),c, line);
sl@0
   635
            gDataBuf[0]=0;
sl@0
   636
            if ((c=gDir.Read(gFileEntry))!=EofErr)
sl@0
   637
            	{
sl@0
   638
                test.Printf(_L("buf=\"%S\"\n"),&gFileEntry.iName);
sl@0
   639
                Error2(_L("Directory read"),c, line);
sl@0
   640
            	}
sl@0
   641
            gDir.Close();
sl@0
   642
        	}
sl@0
   643
        buf=aDirName;
sl@0
   644
        l=buf.Length();
sl@0
   645
        FOREVER
sl@0
   646
			{
sl@0
   647
            test.Printf(_L("Delete \"%S\"\n"),&buf);
sl@0
   648
            if ((c=TheFs.RmDir(buf))!=KErrNone)
sl@0
   649
                Error2(_L("Delete directory"),c, line);
sl@0
   650
            while (--l)
sl@0
   651
				{
sl@0
   652
                if (buf[l]=='\\')
sl@0
   653
					{
sl@0
   654
                    buf.SetLength(l);
sl@0
   655
                    if (buf.LocateReverse('\\')==0)
sl@0
   656
                        return;
sl@0
   657
                    break;
sl@0
   658
                	}
sl@0
   659
            	}
sl@0
   660
            if (l == 0)
sl@0
   661
                break;
sl@0
   662
        	}
sl@0
   663
    	}
sl@0
   664
	}
sl@0
   665
sl@0
   666
#if defined(_UNICODE)
sl@0
   667
LOCAL_C void TestMakeDirLine(const TDesC8& aDirName, TInt res, TInt line)
sl@0
   668
//
sl@0
   669
// Defined to cope with all the instances of testMakeDir(gDataBuf,...)
sl@0
   670
//
sl@0
   671
{
sl@0
   672
    
sl@0
   673
    TPtrC gDataBuf16((TText*)aDirName.Ptr(),gDataBuf.Size()/sizeof(TText8));
sl@0
   674
    //	Not sizeof(TText16) since gDataBuf is a TBuf*!	
sl@0
   675
    TestMakeDirLine(gDataBuf16, res, line);
sl@0
   676
}
sl@0
   677
#endif
sl@0
   678
sl@0
   679
#ifdef  TEST_MEDIA
sl@0
   680
LOCAL_C void testMedia(const TDesC& instructions,TInt anErr)
sl@0
   681
//
sl@0
   682
//
sl@0
   683
//
sl@0
   684
	{
sl@0
   685
sl@0
   686
	TBuf<0x40> errBuf;
sl@0
   687
	TInt openErr;
sl@0
   688
	TInt c;
sl@0
   689
//	p_errs(&errBuf[0],anErr);
sl@0
   690
	pathBuf=fBuf;
sl@0
   691
	pathBuf.SetLength(7);
sl@0
   692
	test.Printf(_L("Test %S\n"),&errBuf);
sl@0
   693
	test.Printf(_L("%S %S\n"),&instructions,&pathBuf);
sl@0
   694
	p_getch();
sl@0
   695
	openErr=anErr;
sl@0
   696
	if (anErr==WriteProtectErr)
sl@0
   697
		openErr=0;
sl@0
   698
	if ((c=gFile.Open(TheFs,fBuf,P_FDIR))!=openErr)
sl@0
   699
		Error(_L("Directory open 100"),c);
sl@0
   700
	if (openErr==KErrNone)
sl@0
   701
		{
sl@0
   702
		if (c=gFile.Close())
sl@0
   703
			Error(_L("Close 100"),c);
sl@0
   704
		}
sl@0
   705
	gNameBuf.SetLength(0);
sl@0
   706
	if ((c=gFile.Open(TheFs,gNameBuf,P_FUNIQUE|EFileStream))!=anErr)
sl@0
   707
		Error(_L("Create unique 100"),c);
sl@0
   708
	if (anErr==0)
sl@0
   709
		{
sl@0
   710
		if (c=gFile.Close())
sl@0
   711
			Error(_L("Close 100"),c);
sl@0
   712
		}
sl@0
   713
	}
sl@0
   714
#endif
sl@0
   715
sl@0
   716
GLDEF_C void CallTestsL()
sl@0
   717
//
sl@0
   718
// Do All tests
sl@0
   719
//
sl@0
   720
    {
sl@0
   721
	TInt c;
sl@0
   722
	TInt i,count;
sl@0
   723
	TInt pos;
sl@0
   724
	TInt64 seed;
sl@0
   725
	TInt attrib,mask;
sl@0
   726
	TTime saveTime;
sl@0
   727
	TInt testSize;
sl@0
   728
sl@0
   729
	CreateTestDirectory(_L("\\F32-TST\\BGEN\\"));
sl@0
   730
//	if (p_date()<MINIMUM_DATE)
sl@0
   731
//	p_sdate(MINIMUM_DATE);
sl@0
   732
sl@0
   733
	seed=(TInt64)1732;
sl@0
   734
	fBuf=gSessionPath;
sl@0
   735
	pathBuf=fBuf;
sl@0
   736
	pathBuf.Append('*');
sl@0
   737
	testDir(pathBuf);
sl@0
   738
//	testDir(_L("Z:")); // Session Path gets added -> KErrPathNotFound
sl@0
   739
//	testDir(_L("Z:*"));  // Session Path gets added -> KErrPathNotFound
sl@0
   740
//	testDir(_L("Z:*.*")); // Session Path gets added -> KErrPathNotFound
sl@0
   741
	testDir(_L("Z:\\"));
sl@0
   742
	testDir(_L("Z:\\*"));
sl@0
   743
	testDir(_L("Z:\\*.*"));
sl@0
   744
sl@0
   745
	test.Printf(_L("Test names containing '\\'\n"));
sl@0
   746
	if ((c=gFile.Create(TheFs,_L("Q\\ZZZ"),EFileWrite))!=NameErr)
sl@0
   747
		Error(_L("Create 1"),c);
sl@0
   748
sl@0
   749
	test.Printf(_L("Test create in non-exist directory\n"));
sl@0
   750
	if ((c=gFile.Create(TheFs,_L("\\Q1DDX\\ZZZ"),EFileWrite))!=DirErr)
sl@0
   751
		Error(_L("Create 2"),c);
sl@0
   752
sl@0
   753
	test.Printf(_L("Test filenames starting with '.'\n"));
sl@0
   754
	if ((c=gFile.Create(TheFs,_L("\\.ZZZ"),EFileWrite))!=KErrNone) // ****** NameErr)
sl@0
   755
		Error(_L("Create 3"),c);
sl@0
   756
	gFile.Close();
sl@0
   757
	if ((c=TheFs.Delete(_L("\\.ZZZ")))!=KErrNone)
sl@0
   758
		Error(_L("Delete 3"),c);
sl@0
   759
sl@0
   760
	test.Printf(_L("Test filenames starting with 05/E5\n"));
sl@0
   761
	gNameBuf.SetLength(5);
sl@0
   762
	gNameBuf[0]=0xE5;
sl@0
   763
	gNameBuf[1]='X';
sl@0
   764
	gNameBuf[2]='X';
sl@0
   765
	gNameBuf[3]='X';
sl@0
   766
	gNameBuf[4]=0x00;
sl@0
   767
	gNameBuf.SetLength(4);
sl@0
   768
	if ((c=gFile.Replace(TheFs,gNameBuf,EFileWrite))!=KErrNone)
sl@0
   769
		Error(_L("Replace 4"),c);
sl@0
   770
	gFile.Close();
sl@0
   771
	if ((c=gFile.Open(TheFs,gNameBuf,EFileRead))!=KErrNone)
sl@0
   772
		Error(_L("Open 4"),c);
sl@0
   773
	gFile.Close();
sl@0
   774
sl@0
   775
// *************** Silly filename stuff rightly disallowed by NT
sl@0
   776
//	gNameBuf.SetLength(5);
sl@0
   777
//	gNameBuf[0]=0x05;
sl@0
   778
//	gNameBuf[1]='Y';
sl@0
   779
//	gNameBuf[2]='Y';
sl@0
   780
//	gNameBuf[3]='Y';
sl@0
   781
//	gNameBuf[4]=0x00; // Zero terminator gets lost by VFAT
sl@0
   782
//	if ((c=gFile.Replace(TheFs,gNameBuf,EFileWrite))!=KErrNone)
sl@0
   783
//		Error(_L("Create 5"),c);
sl@0
   784
//	gFile.Close();
sl@0
   785
//	gNameBuf[0]=0xE5;
sl@0
   786
//	if ((c=gFile.Open(TheFs,gNameBuf,EFileRead))!=KErrNone)
sl@0
   787
//		Error(_L("Open 5"),c);
sl@0
   788
//	gFile.Close();
sl@0
   789
//
sl@0
   790
sl@0
   791
//
sl@0
   792
//#ifdef  TEST_MEDIA
sl@0
   793
//	if (fBuf[5]!='B')
sl@0
   794
//		goto skipMediaTest;
sl@0
   795
//	testMedia(_L("OPEN DOOR ON"),NotReadyErr);
sl@0
   796
//	testMedia(_L("INSERT CORRUPT RAM PACK (WRITE ENABLED) INTO"),CorruptMediaErr);
sl@0
   797
//	testMedia(_L("INSERT CORRUPT RAM PACK (WRITE PROTECTED) INTO"),CorruptMediaErr);
sl@0
   798
//	testMedia(_L("INSERT CORRUPT FLASH PACK (WRITE ENABLED) INTO"),CorruptMediaErr);
sl@0
   799
//	testMedia(_L("INSERT CORRUPT FLASH PACK (WRITE PROTECTED) INTO"),CorruptMediaErr);
sl@0
   800
//#ifdef FULL_TEST
sl@0
   801
//	testMedia(_L("INSERT UNKNOWN MEDIA INTO"),UnknownErr);
sl@0
   802
//#endif
sl@0
   803
//	testMedia(_L("INSERT GOOD RAM PACK (WRITE PROTECTED) INTO"),WriteProtectErr);
sl@0
   804
//	if ((c=gFile.Open(TheFs,fBuf,P_FFORMAT))!=WriteProtectErr)
sl@0
   805
//		Error(_L("Format RAM write protect"),c);
sl@0
   806
//	testMedia(_L("INSERT GOOD FLASH PACK (WRITE PROTECTED) INTO"),WriteProtectErr);
sl@0
   807
//	if ((c=gFile.Open(TheFs,fBuf,P_FFORMAT))!=WriteProtectErr)
sl@0
   808
//		Error(_L("Format FLASH write protect"),c);
sl@0
   809
//	testMedia(_L("INSERT GOOD PACK (WRITE ENABLED) INTO"),0);
sl@0
   810
//
sl@0
   811
//skipMediaTest:
sl@0
   812
//#endif // TEST_MEDIA //
sl@0
   813
//
sl@0
   814
sl@0
   815
// Test update is assumed for unique //
sl@0
   816
sl@0
   817
	testUnique(EFileStream);
sl@0
   818
	testUnique(EFileStreamText);
sl@0
   819
	testDelete();
sl@0
   820
	testRename();
sl@0
   821
	test.Printf(_L("Test get file info\n"));
sl@0
   822
//	testFileInfo(_L("*.*"),NameErr); ********** Allowed (?)
sl@0
   823
	testFileInfo(_L(""),KErrNone); // NameErr);
sl@0
   824
	testFileInfo(_L("\\"),NameErr);
sl@0
   825
	testFileInfo(_L("."),NameErr);
sl@0
   826
	testFileInfo(_L(".."),NameErr);
sl@0
   827
	testFileInfo(_L("a.1234"),KErrNotFound); // ********* NameErr);
sl@0
   828
	testFileInfo(_L("a23456789"),KErrNotFound); // ********* NameErr);
sl@0
   829
	testFileInfo(_L(".a"),KErrNotFound); // ********** NameErr);
sl@0
   830
	testFileInfo(_L("?"),NameErr);
sl@0
   831
	testFileInfo(_L("NOEXIST"),NotExistsErr);
sl@0
   832
	testFileInfo(_L("\\NODIR\\NAME"),DirErr);
sl@0
   833
	testFileInfo(_L("L:\\NAME"),DeviceErr);
sl@0
   834
	gNameBuf.SetLength(0);
sl@0
   835
	if ((c=gFile.Temp(TheFs,gNameBuf,gNameOut,EFileStream))!=KErrNone)
sl@0
   836
		Error(_L("Open 1.1"),c);
sl@0
   837
	testFileInfo(gNameOut,FALSE);       // Not locked //
sl@0
   838
	gFile.Close();
sl@0
   839
	testFileInfo(gNameOut,FALSE);
sl@0
   840
	if ((c=TheFs.Delete(gNameOut))!=KErrNone)
sl@0
   841
		Error(_L("Delete"),c);
sl@0
   842
sl@0
   843
	test.Printf(_L("Test get device info\n"));
sl@0
   844
	testDeviceInfo(_L(""),FALSE);           // NULL is current device //
sl@0
   845
	testDeviceInfo(_L("L:"),DeviceErr);
sl@0
   846
	testDeviceInfo(_L("Z:"),FALSE);
sl@0
   847
	testDeviceInfo(fBuf,FALSE);
sl@0
   848
	
sl@0
   849
sl@0
   850
//	test.Printf(_L("Test get node info\n"));
sl@0
   851
//	testNodeInfo(_L("LOC::"),P_FSYSTYPE_HIER,FALSE);
sl@0
   852
//	testNodeInfo(_L("Z:"),P_FSYSTYPE_FLAT,FALSE);
sl@0
   853
//	testNodeInfo(_L("LOC:"),P_FSYSTYPE_HIER,FALSE);
sl@0
   854
//	testNodeInfo(_L("LOC"),P_FSYSTYPE_HIER,FALSE);
sl@0
   855
//	testNodeInfo(_L("*"),P_FSYSTYPE_HIER,FALSE);
sl@0
   856
//	testNodeInfo(_L(""),P_FSYSTYPE_HIER,FALSE);
sl@0
   857
//	testNodeInfo(_L("?"),P_FSYSTYPE_HIER,FALSE);
sl@0
   858
//	testNodeInfo(_L("FRED"),P_FSYSTYPE_HIER,FALSE);
sl@0
   859
//	testNodeInfo(_L("FRED::"),P_FSYSTYPE_HIER,FALSE);
sl@0
   860
//	testNodeInfo(_L("....."),P_FSYSTYPE_HIER,FALSE);
sl@0
   861
//	testNodeInfo(_L("LOC::zzzzzzzzzzzzzzzzzzzzzzzzz"),P_FSYSTYPE_HIER,FALSE);
sl@0
   862
//	testNodeInfo(_L("LOC::\\"),P_FSYSTYPE_HIER,FALSE);
sl@0
   863
//	testNodeInfo(_L("XXX::"),0,E_GEN_FSYS);
sl@0
   864
//	testNodeInfo(_L("REM::"),0,E_GEN_FSYS);
sl@0
   865
//	testNodeInfo(_L("...::"),0,E_GEN_FSYS);
sl@0
   866
sl@0
   867
//	testFileInfo(_L("Z:SYS$WSRV.IMG"),FALSE);
sl@0
   868
//	testFileInfo(_L("Z:\\SYS$WSRV.IMG"),NameErr);    // \ not allowed  - no path //
sl@0
   869
//	testFileInfo(_L("Z:*"),FALSE);               // Z: allows *'s ! //
sl@0
   870
//	testFileInfo(_L("Z:SYS$WSRV."),NotExistsErr);
sl@0
   871
//	testFileInfo(_L("XXX::"),NoFileSystemErr);
sl@0
   872
	if(PlatSec::ConfigSetting(PlatSec::EPlatSecEnforceSysBin))
sl@0
   873
		testFileInfo(_L("Z:\\Sys\\Bin\\ESHELL.EXE"),FALSE);    // we now have paths //
sl@0
   874
	else
sl@0
   875
		testFileInfo(_L("Z:\\System\\Bin\\ESHELL.EXE"),FALSE);    // we now have paths //
sl@0
   876
//	testFileInfo(_L("Z:*"),KErrPathNotFound); // session path gets inserted ,FALSE);
sl@0
   877
//	testFileInfo(_L("Z:SYS$WSRV."),NotExistsErr);
sl@0
   878
//	testFileInfo(_L("H:"),KErrBadName); // ************** NoFileSystemErr);
sl@0
   879
sl@0
   880
	test.Printf(_L("Test weird filenames\n"));
sl@0
   881
// Test SPACES // 
sl@0
   882
sl@0
   883
	testFileName(_L("A B"),KErrNone); // ******* NameErr);
sl@0
   884
	testFileName(_L(" AB"),KErrNone); // ******* NameErr);
sl@0
   885
	testFileName(_L(" AB      "),KErrNone); // ******* NameErr);
sl@0
   886
	testFileName(_L("    AB"),KErrNone);
sl@0
   887
	testFileName(_L(" AB  . cdef"),KErrNone);
sl@0
   888
	testFileName(_L(" AB  .  cdef  "),KErrNone);
sl@0
   889
	testFileName(_L("A2345678 "),KErrNone); // ******* NameErr);
sl@0
   890
	testFileName(_L("A2345678.XY "),KErrNone); // ******* NameErr);
sl@0
   891
	testFileName(_L("A2345678.XYZ "),KErrNone); // ******* NameErr);
sl@0
   892
	testFileName(_L("A2345678 XYZ"),KErrNone); // ******* NameErr);
sl@0
   893
	testFileName(_L(" "),NameErr);
sl@0
   894
	testFileName(_L("\\A B\\NAME"),KErrPathNotFound); // ******* NameErr);
sl@0
   895
	testFileName(_L("\\ \\NAME"),NameErr);
sl@0
   896
	testFileName(_L("\\asdf\\qer\\   \\asdf\\NAME"),NameErr);
sl@0
   897
	testFileName(_L("     "),NameErr);
sl@0
   898
	testFileName(_L("C:\\asdf\\     "),NameErr);
sl@0
   899
// Test short names //
sl@0
   900
	testFileName(_L(""),NameErr);
sl@0
   901
	testFileName(_L("\\"),NameErr);
sl@0
   902
	testFileName(_L("1"),FALSE);
sl@0
   903
	testFileName(_L(".1"),KErrNone); // ******* NameErr);
sl@0
   904
	testFileName(_L(".1"),KErrNone); // ******* NameErr);
sl@0
   905
	testFileName(_L("\\.1"),KErrNone); // ******* NameErr);
sl@0
   906
	testFileName(_L("1.1"),FALSE);
sl@0
   907
// Test long names //
sl@0
   908
	testFileName(_L("12345678.123"),FALSE);
sl@0
   909
	testFileName(_L("123456789.123"),KErrNone); // ******* NameErr);
sl@0
   910
	testFileName(_L("12345678.1234"),KErrNone); // ******* NameErr);
sl@0
   911
	testFileName(_L("1.1234"),KErrNone); // ******* NameErr);
sl@0
   912
	testFileName(_L("123456789"),KErrNone); // ******* NameErr);
sl@0
   913
	gDataBuf.SetLength(256);
sl@0
   914
	gDataBuf.Fill('A',255);
sl@0
   915
	testFileName(gDataBuf,NameErr);
sl@0
   916
	gDataBuf.SetLength(257);
sl@0
   917
	gDataBuf.Fill('B',256);
sl@0
   918
	testFileName(gDataBuf,NameErr);
sl@0
   919
	gDataBuf.SetLength(258);
sl@0
   920
	gDataBuf.Fill('C',257);
sl@0
   921
	testFileName(gDataBuf,NameErr);
sl@0
   922
	gDataBuf.SetLength(4096);
sl@0
   923
	gDataBuf.Fill('D',4095);
sl@0
   924
	testFileName(gDataBuf,NameErr);
sl@0
   925
// Test DOTS //
sl@0
   926
	testFileName(_L("A.X"),FALSE);
sl@0
   927
	testFileName(_L("A..X"),KErrNone); // ******* NameErr);
sl@0
   928
	testFileName(_L("A.........X"),KErrNone); // ******* NameErr);
sl@0
   929
	testFileName(_L("A."),FALSE);
sl@0
   930
	testFileName(_L(".X"),KErrNone); // ******* NameErr);
sl@0
   931
	testFileName(_L("."),NameErr);
sl@0
   932
	testFileName(_L(".."),NameErr);
sl@0
   933
//	testFileName(_L("..."),KErrNone); // NameErr); // !!! ********* NT error KErrAccessDenied (?)
sl@0
   934
	testFileName(_L("\\a.x\\NAME"),DirErr); // DirErr == KErrPathNotFound
sl@0
   935
	testFileName(_L("\\a..x\\NAME"),DirErr); // ******** NameErr);
sl@0
   936
	testFileName(_L("\\.\\NAME"),NameErr);
sl@0
   937
	testFileName(_L("\\..\\NAME"),NameErr);
sl@0
   938
//	testFileName(_L("\\...\\NAME"),KErrPathNotFound); // ******** NameErr); // !! NT treats ... as .. ??
sl@0
   939
// Test WILD CARDS //
sl@0
   940
	testFileName(_L("*.*"),NameErr);
sl@0
   941
	testFileName(_L("*"),NameErr);
sl@0
   942
	testFileName(_L("\\*"),NameErr);
sl@0
   943
	testFileName(_L("?"),NameErr);
sl@0
   944
	testFileName(_L("\\?"),NameErr);
sl@0
   945
	testFileName(_L("\\A?B\\NAME"),NameErr);
sl@0
   946
	testFileName(_L("\\A*B\\NAME"),NameErr);
sl@0
   947
	testFileName(_L("\\*\\NAME"),NameErr);
sl@0
   948
	testFileName(_L("\\********.***\\NAME"),NameErr);
sl@0
   949
	testFileName(_L("A?X"),NameErr);
sl@0
   950
sl@0
   951
	test.Printf(_L("Test set volume name\n"));
sl@0
   952
// New behaviour: SetVolumeName accepts any string < 12 chars
sl@0
   953
// No modifications are made on the string.
sl@0
   954
#if defined(__WINS__)
sl@0
   955
	TInt ret=TheFs.SetVolumeLabel(_L("TEST"),KDefaultDrive);
sl@0
   956
	if(ret==KErrNotSupported||ret==KErrAccessDenied)
sl@0
   957
		{
sl@0
   958
		test.Printf(_L("Error: Cannot set volume label on substed drive\n"));
sl@0
   959
		//test.Getch();
sl@0
   960
		}
sl@0
   961
	else
sl@0
   962
#endif
sl@0
   963
	{
sl@0
   964
	testVolumeName(_L("TESTNAME.VOL"),KErrBadName);	//	12 chars - too long for volume label
sl@0
   965
	testVolumeName(_L("TESTNAME"),FALSE);			//	OK for 8 bit - too long for UNICODE
sl@0
   966
	testVolumeName(_L("PQRSTUVWXYZ"),FALSE);		//	just uses the first 5 characters
sl@0
   967
	testVolumeName(_L("ABCDE"),FALSE);
sl@0
   968
	testVolumeName(_L("FGHIJK"),FALSE);
sl@0
   969
	testVolumeName(_L(""),FALSE);
sl@0
   970
	testVolumeName(_L(""),FALSE);
sl@0
   971
	testVolumeName(_L("\\"),FALSE);
sl@0
   972
	gNameBuf.SetLength(0);
sl@0
   973
	if ((c=gFile.Temp(TheFs,gNameBuf,gNameOut,EFileStream))!=KErrNone)
sl@0
   974
		Error(_L("Open 60"),c);
sl@0
   975
	testVolumeName(_L("TEST_NAME"),FALSE);	//	Check not locked 
sl@0
   976
	gFile.Close();
sl@0
   977
	if ((c=TheFs.Delete(gNameOut))!=KErrNone)
sl@0
   978
		Error(_L("Delete"),c);
sl@0
   979
	testVolumeName(_L("voL1"),FALSE);
sl@0
   980
	testVolumeName(_L("\\vol1"),FALSE);
sl@0
   981
	testVolumeName(_L("\\12345678.123"),KErrBadName);
sl@0
   982
	testVolumeName(_L("\\123456.123"),FALSE);
sl@0
   983
	testVolumeName(_L("\\vol1\\"),KErrNone); 
sl@0
   984
	testVolumeName(_L("."),KErrBadName);	//	Bug fix SW1-728 to prevent illegal characters
sl@0
   985
	testVolumeName(_L(".."),KErrBadName);	//	in the volume name
sl@0
   986
	testVolumeName(_L("A."),KErrBadName);
sl@0
   987
	if (!IsTestingLFFS())
sl@0
   988
		{ // ???
sl@0
   989
		testVolumeName(_L("!\"\x9C$%^&@.(){"),KErrBadName);
sl@0
   990
		testVolumeName(_L("!\"\x9C$%^&@("),KErrBadName);
sl@0
   991
		}
sl@0
   992
	testVolumeName(_L("*.*"),KErrBadName);	// Wild cards not allowed
sl@0
   993
	testVolumeName(_L("?.?"),KErrBadName); 
sl@0
   994
	testVolumeName(_L("????????.???"),KErrBadName);
sl@0
   995
	testVolumeName(_L("????????.??"),KErrBadName);
sl@0
   996
	testVolumeName(_L("ABC>DEF"),KErrBadName);
sl@0
   997
	testVolumeName(_L("ABC<DEF"),KErrBadName);
sl@0
   998
	testVolumeName(_L("ABC|DEF"),KErrBadName);
sl@0
   999
	testVolumeName(_L("ABC/DEF"),KErrBadName);
sl@0
  1000
	testVolumeName(_L("ABC\"DEF"),KErrBadName);
sl@0
  1001
	testVolumeName(_L("ABC*DEF"),KErrBadName);
sl@0
  1002
	testVolumeName(_L("ABC:DEF"),KErrBadName);
sl@0
  1003
	testVolumeName(_L("ABC?DEF"),KErrBadName);
sl@0
  1004
	testVolumeName(_L("ABC\\DEF"),KErrBadName);
sl@0
  1005
	testVolumeName(_L("ABCDEFGHIJKLMNOPQRSTUVWXYZ"),KErrBadName);	//	Too long
sl@0
  1006
	testVolumeName(_L("VOLUME1"),FALSE);							//	Too long in UNICODE
sl@0
  1007
	testVolumeName(_L("Z:VOLUME1"),KErrAccessDenied);
sl@0
  1008
	}
sl@0
  1009
		
sl@0
  1010
	test.Printf(_L("Test make directory\n"));
sl@0
  1011
sl@0
  1012
// Test path 
sl@0
  1013
	testMakeDir(_L("\\A2345678.A23\\NAME"),FALSE);
sl@0
  1014
	testMakeDir(_L("\\A23456789.A23\\NAME"),KErrNone); // ******** NameErr);
sl@0
  1015
	testMakeDir(_L("\\A2345678.A234\\NAME"),KErrNone); // ******** NameErr);
sl@0
  1016
	testMakeDir(_L("\\A.1234\\NAME"),KErrNone); // ********* NameErr);
sl@0
  1017
	testMakeDir(_L("\\A2345678\\NAME"),FALSE);
sl@0
  1018
	testMakeDir(_L("\\A23456789\\NAME"),KErrNone); // ******** NameErr);
sl@0
  1019
	testMakeDir(_L("\\A.X\\NAME"),FALSE);
sl@0
  1020
	testMakeDir(_L("\\A..X\\NAME"),KErrNone); // ******** NameErr);
sl@0
  1021
	testMakeDir(_L("\\A.\\NAME"),NameErr);
sl@0
  1022
	testMakeDir(_L("\\.X\\NAME"),KErrNone); // ******** NameErr);
sl@0
  1023
	testMakeDir(_L("\\.\\NAME"),NameErr);
sl@0
  1024
	testMakeDir(_L("\\..\\NAME"),NameErr);
sl@0
  1025
	testMakeDir(_L("\\\\NAME"),NameErr);
sl@0
  1026
	testMakeDir(_L("\\\\"),NameErr);
sl@0
  1027
	testMakeDir(_L("\\A\\A2\\A23\\a2345678\\a2345678.\\a2345678.1\\a2345678.123"),NameErr);
sl@0
  1028
	testMakeDir(_L("\\A\\A2\\A23\\a2345678\\a2345678.\\a2345678.1\\a2345678..123"),NameErr); // ******* NameErr);
sl@0
  1029
	testMakeDir(_L("\\A\\A2\\A23\\a2345678\\a2345678.\\a2345678.1\\a2345678.1234"),NameErr); // ******* NameErr);
sl@0
  1030
	gDataBuf.SetLength(256);
sl@0
  1031
	gDataBuf.Fill('V',255);
sl@0
  1032
	testMakeDir(gDataBuf,NameErr);
sl@0
  1033
	gDataBuf.SetLength(257);
sl@0
  1034
	gDataBuf.Fill('W',256);
sl@0
  1035
	testMakeDir(gDataBuf,NameErr);
sl@0
  1036
	gDataBuf.SetLength(258);
sl@0
  1037
	gDataBuf.Fill('X',257);
sl@0
  1038
	testMakeDir(gDataBuf,NameErr);
sl@0
  1039
	gDataBuf.SetLength(259);
sl@0
  1040
	gDataBuf.Fill('Y',258);
sl@0
  1041
	testMakeDir(gDataBuf,NameErr);
sl@0
  1042
	gDataBuf.SetLength(4096);
sl@0
  1043
	gDataBuf.Fill('Z',4095);
sl@0
  1044
	testMakeDir(gDataBuf,NameErr);
sl@0
  1045
sl@0
  1046
// Test names 
sl@0
  1047
	testMakeDir(_L("A..X"),KErrAlreadyExists); // ******* NameErr);
sl@0
  1048
	testMakeDir(_L("\\A\\"),FALSE);
sl@0
  1049
	testMakeDir(_L("\\12345678.123\\"),FALSE);
sl@0
  1050
	testMakeDir(_L("\\.\\"),NameErr);
sl@0
  1051
	testMakeDir(_L("\\..\\"),NameErr);
sl@0
  1052
	testMakeDir(_L("\\X\\"),FALSE);
sl@0
  1053
	testMakeDir(_L("\\12345678.1234\\"),KErrNone); // ******* NameErr);
sl@0
  1054
	testMakeDir(_L("\\123456789\\"),KErrNone); // ******** NameErr);
sl@0
  1055
// Test max levels
sl@0
  1056
	testMakeDir(_L("\\A\\B\\C\\D\\E\\F\\G\\H\\I\\J\\K\\L\\M\\N\\O\\P\\Q\\R\\S\\T\\U\\V\\W\\X\\Y\\Z"),FALSE);
sl@0
  1057
	testMakeDir(_L("\\00000000.000\\11111111.111\\22222222.222\\33333333.333\\45678901.3"),FALSE);
sl@0
  1058
	testMakeDir(_L("\\00000000.000\\11111111.111\\22222222.222\\33333333.333\\45678901.34"),FALSE);
sl@0
  1059
	testMakeDir(_L("\\00000000.000\\11111111.111\\22222222.222\\33333333.333\\45678901.345"),FALSE);
sl@0
  1060
	testMakeDir(_L("\\00000000.000\\11111111.111\\22222222.222\\33333333.333\\45678901.3\\xxxxxxxx.xxx"),FALSE);
sl@0
  1061
	testMakeDir(_L("\\00000000.000\\11111111.111\\22222222.222\\33333333.333\\45678901.34\\xxxxxxxx.xxx"),KErrNone); // ******* NameErr);
sl@0
  1062
	testMakeDir(_L("\\00000000.000\\11111111.111\\22222222.222\\33333333.333\\45678901.345\\xxxxxxxx.xxx"),KErrNone); // ******* NameErr);
sl@0
  1063
	testMakeDir(_L("\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\23"),FALSE);
sl@0
  1064
	testMakeDir(_L("\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\23456789.123"),FALSE);
sl@0
  1065
	testMakeDir(_L("\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\23\\5"),FALSE);
sl@0
  1066
	testMakeDir(_L("\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\23\\56789012.456"),FALSE);
sl@0
  1067
	testMakeDir(_L("\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\2\\4\\6\\8\\0\\234\\6"),KErrNone); // ******** NameErr);
sl@0
  1068
	testMakeDir(_L("Z:\\ROMDIR\\"),KErrAccessDenied); // *********** NotSupportedErr);
sl@0
  1069
	test.Printf(_L("Test setEof to same length\n"));
sl@0
  1070
	gNameBuf.SetLength(0);
sl@0
  1071
	if ((c=gFile.Temp(TheFs,gNameBuf,gNameOut,EFileStream|P_FUPDATE))!=KErrNone)
sl@0
  1072
		Error(_L("Open 50"),c);
sl@0
  1073
	gFile.Close();
sl@0
  1074
	testSetEof(gNameOut,0L,FALSE);  // should be no change //
sl@0
  1075
	testSetEof(gNameOut,1L,TRUE);   // should be change //
sl@0
  1076
	testSetEof(gNameOut,1L,FALSE);  // should be no change //
sl@0
  1077
	testSetEof(gNameOut,1L,FALSE);
sl@0
  1078
	if (fBuf[5]=='M')
sl@0
  1079
		testSize=650L;                  // No room on M: for 65536 ! //
sl@0
  1080
	else
sl@0
  1081
		testSize=65536L;
sl@0
  1082
	testSetEof(gNameOut,testSize,TRUE);
sl@0
  1083
	testSetEof(gNameOut,testSize,FALSE);
sl@0
  1084
	testSetEof(gNameOut,testSize+1L,TRUE);
sl@0
  1085
	testSetEof(gNameOut,testSize,TRUE);
sl@0
  1086
sl@0
  1087
	testSetEof(gNameOut,0L,TRUE);
sl@0
  1088
	testSetEof(gNameOut,0L,FALSE);
sl@0
  1089
	if ((c=TheFs.Delete(gNameOut))!=KErrNone)
sl@0
  1090
		Error(_L("Delete"),c);
sl@0
  1091
sl@0
  1092
	test.Printf(_L("Test read of zero bytes\n"));
sl@0
  1093
	gNameBuf.SetLength(0);
sl@0
  1094
sl@0
  1095
	if ((c=gFile.Temp(TheFs,gNameBuf,gNameOut,EFileStream|P_FUPDATE))!=KErrNone)
sl@0
  1096
		Error(_L("Open 60"),c);
sl@0
  1097
	if ((c=gFile.Read(gDataBuf,0))!=KErrNone) // ******** EofErr)
sl@0
  1098
		Error(_L("Read 61"),c);
sl@0
  1099
	if ((c=gFile.Read(gDataBuf,0))!=KErrNone) // ******** EofErr)
sl@0
  1100
		Error(_L("Read 62"),c);
sl@0
  1101
	if ((c=gFile.Write(gDataBuf,0))!=KErrNone)
sl@0
  1102
		Error(_L("Write 63"),c);
sl@0
  1103
	if ((c=gFile.Read(gDataBuf,0))!=KErrNone) // ******** EofErr)
sl@0
  1104
		Error(_L("Read 64"),c);
sl@0
  1105
	gFile.Close();
sl@0
  1106
	if ((c=gFile.Open(TheFs,gNameOut,EFileStream|P_FUPDATE|P_FRANDOM))!=KErrNone)
sl@0
  1107
		Error(_L("Open 70"),c);
sl@0
  1108
	if ((c=gFile.Read(gDataBuf,0))!=KErrNone) // ******** EofErr)
sl@0
  1109
		Error(_L("Read 71"),c);
sl@0
  1110
	gDataBuf.SetLength(1);
sl@0
  1111
	gDataBuf[0]=0xf0;
sl@0
  1112
	if ((c=gFile.Write(gDataBuf,1))!=KErrNone)
sl@0
  1113
		Error(_L("Write 72"),c);
sl@0
  1114
	if ((c=gFile.Read(gDataBuf,0))!=KErrNone) // ********* EofErr)
sl@0
  1115
		Error(_L("Read 73"),c);
sl@0
  1116
	pos=0L;
sl@0
  1117
	if ((c=gFile.Seek((TSeek)P_FABS,pos))!=KErrNone)
sl@0
  1118
		Error(_L("Seek 74"),c);
sl@0
  1119
	gDataBuf.SetLength(1);
sl@0
  1120
	gDataBuf[0]=0x83;
sl@0
  1121
	if ((c=gFile.Read(gDataBuf,0))!=KErrNone)
sl@0
  1122
		Error(_L("Read 75"),c);
sl@0
  1123
//	if (gDataBuf[0]!=0x83) *********** Read zeros the length of a buffer after a zero length read
sl@0
  1124
	if (gDataBuf.Length()!=0)
sl@0
  1125
		Error(_L("buffer 1 check"),0);
sl@0
  1126
	if ((c=gFile.Read(gDataBuf,0))!=KErrNone)
sl@0
  1127
		Error(_L("Read 76"),c);
sl@0
  1128
	if ((c=gFile.Read(gDataBuf,1))!=KErrNone || gDataBuf.Length()!=1)
sl@0
  1129
		Error(_L("Read 77"),c);
sl@0
  1130
	if (gDataBuf[0]!=0xf0)
sl@0
  1131
		Error(_L("buffer 1 check"),0);
sl@0
  1132
	if ((c=gFile.Read(gDataBuf,0))!=KErrNone) // ******** EofErr)
sl@0
  1133
		Error(_L("Read 78"),c);
sl@0
  1134
	if ((c=gFile.Read(gDataBuf,16384))!=KErrNone) // ******* EofErr)
sl@0
  1135
		Error(_L("Read 79"),c);
sl@0
  1136
	gFile.Close();
sl@0
  1137
	if ((c=TheFs.Delete(gNameOut))!=KErrNone)
sl@0
  1138
		Error(_L("Delete"),c);
sl@0
  1139
sl@0
  1140
    test.Printf(_L("Test write of zero bytes\n"));
sl@0
  1141
    gNameBuf.SetLength(0);
sl@0
  1142
    if ((c=gFile.Temp(TheFs,gNameBuf,gNameOut,EFileStream|P_FUPDATE))!=KErrNone)
sl@0
  1143
        Error(_L("Open 50"),c);
sl@0
  1144
    gFile.Close();
sl@0
  1145
//	********** Error(_L("Close"),c); close has no return value
sl@0
  1146
	gDataBuf.SetLength(16384);
sl@0
  1147
sl@0
  1148
    testWrite(gNameOut,0,0L,FALSE); // should be no change //
sl@0
  1149
    testWrite(gNameOut,1,1L,TRUE);  // should be change //
sl@0
  1150
    testWrite(gNameOut,0,1L,FALSE);
sl@0
  1151
    testWrite(gNameOut,0,1L,FALSE);
sl@0
  1152
    testWrite(gNameOut,16384,16384L,TRUE);
sl@0
  1153
    testWrite(gNameOut,0,16384L,FALSE);
sl@0
  1154
    testWrite(gNameOut,16383,16384L,TRUE);
sl@0
  1155
sl@0
  1156
sl@0
  1157
    if ((c=TheFs.Delete(gNameOut))!=KErrNone)
sl@0
  1158
        Error(_L("Delete"),c);
sl@0
  1159
sl@0
  1160
	test.Printf(_L("Test ReadOnly files\n"));
sl@0
  1161
	gNameBuf.SetLength(0);
sl@0
  1162
	if ((c=gFile.Create(TheFs,_L("TEST1.TMP"),EFileStream|P_FUPDATE))!=KErrNone)
sl@0
  1163
		Error(_L("Create 40"),c);
sl@0
  1164
	gFile.Close();
sl@0
  1165
	if ((c=gFile.Temp(TheFs,gNameBuf,gNameOut,EFileStream|P_FUPDATE))!=KErrNone)
sl@0
  1166
		Error(_L("Open 40"),c);
sl@0
  1167
	mask=0;
sl@0
  1168
	attrib=KEntryAttReadOnly;                       // Remove writable //
sl@0
  1169
	if ((c=TheFs.SetAtt(gNameOut,attrib,mask))!=LockedErr)
sl@0
  1170
		Error(_L("TheFs.SetAtt not locked"),c);
sl@0
  1171
	gFile.Close();
sl@0
  1172
	if ((c=TheFs.SetAtt(gNameOut,attrib,mask))!=KErrNone)
sl@0
  1173
		Error(_L("Att 41"),c);
sl@0
  1174
	if ((c=gFile.Open(TheFs,gNameOut,EFileStream|P_FUPDATE))!=AccessErr)
sl@0
  1175
		Error(_L("Open 41"),c);
sl@0
  1176
	if ((c=gFile.Open(TheFs,gNameOut,EFileStream))!=KErrNone)
sl@0
  1177
		Error(_L("Open 42"),c);
sl@0
  1178
	if ((c=gFileErr.Open(TheFs,gNameOut,EFileStream))!=LockedErr)
sl@0
  1179
		Error(_L("Open 43"),c);
sl@0
  1180
	if ((c=TheFs.Rename(_L("TEST1.TMP"),gNameOut))!=ExistsErr)
sl@0
  1181
		Error(_L("Rename 43.1"),c);
sl@0
  1182
	if ((c=gFileErr.Create(TheFs,gNameOut,EFileStream))!=ExistsErr) // LockedErr)
sl@0
  1183
		Error(_L("Open 44"),c);
sl@0
  1184
	if ((c=gFileErr.Replace(TheFs,gNameOut,EFileStream))!=LockedErr)
sl@0
  1185
		Error(_L("Open 45"),c);
sl@0
  1186
	gFile.Close();
sl@0
  1187
	if ((c=gFile.Create(TheFs,gNameOut,EFileStream))!=ExistsErr)
sl@0
  1188
		Error(_L("Create 46"),c);
sl@0
  1189
	if ((c=gFile.Replace(TheFs,gNameOut,EFileStream))!=AccessErr)
sl@0
  1190
		Error(_L("Replace 47"),c);
sl@0
  1191
	if ((c=gFile.Create(TheFs,_L("FILE1.TMP"),EFileStream))!=KErrNone)
sl@0
  1192
		Error(_L("Create 48"),c);
sl@0
  1193
	if ((c=TheFs.Rename(_L("FILE1.TMP"),_L("FILE2.TMP")))!=LockedErr)
sl@0
  1194
		Error(_L("Rename 49"),c);
sl@0
  1195
	gFile.Close();
sl@0
  1196
	if ((c=TheFs.Rename(_L("FILE1.TMP"),_L("FILE2.TMP")))!=KErrNone)
sl@0
  1197
		Error(_L("Rename 50"),c);
sl@0
  1198
	if ((c=TheFs.Rename(_L("FILE2.TMP"),gNameOut))!=ExistsErr)
sl@0
  1199
		Error(_L("Rename 51"),c);
sl@0
  1200
	if ((c=TheFs.Delete(gNameOut))!=AccessErr)
sl@0
  1201
		Error(_L("Delete"),c);
sl@0
  1202
	mask=KEntryAttReadOnly;
sl@0
  1203
	attrib=0;
sl@0
  1204
	if ((c=TheFs.SetAtt(gNameOut,attrib,mask))!=KErrNone)
sl@0
  1205
		Error(_L("Att 42"),c);
sl@0
  1206
	if ((c=TheFs.Delete(gNameOut))!=KErrNone)
sl@0
  1207
		Error(_L("Delete 1"),c);
sl@0
  1208
	if ((c=TheFs.Delete(_L("TEST1.TMP")))!=KErrNone)
sl@0
  1209
		Error(_L("Delete 2"),c);
sl@0
  1210
	if ((c=TheFs.Delete(_L("FILE2.TMP")))!=KErrNone)
sl@0
  1211
		Error(_L("Delete 3"),c);
sl@0
  1212
sl@0
  1213
	test.Printf(_L("Test write/setEof without UPDATE\n"));
sl@0
  1214
	if ((c=gFile.Create(TheFs,_L("B_GEN.001"),EFileStream))!=KErrNone)
sl@0
  1215
		Error(_L("Open 30"),c);
sl@0
  1216
	gFile.Close();
sl@0
  1217
	if ((c=gFile.Open(TheFs,_L("B_GEN.001"),EFileStream))!=KErrNone)
sl@0
  1218
		Error(_L("Open 30"),c);
sl@0
  1219
	pos=1L;
sl@0
  1220
	if ((c=gFile.SetSize(pos))!=ReadOnlyErr)
sl@0
  1221
		Error(_L("Set EOF 30"),c);
sl@0
  1222
	if ((c=TheFs.Entry(_L("B_GEN.001"),gFileEntry))!=KErrNone)
sl@0
  1223
		Error(_L("File info 30"),c);
sl@0
  1224
	if (gFileEntry.iSize!=0L)
sl@0
  1225
		Error(_L("Size check 30"),0);
sl@0
  1226
	if ((c=gFile.Write(gDataBuf,1))!=ReadOnlyErr)
sl@0
  1227
		Error(_L("Write 30"),c);
sl@0
  1228
	if ((c=TheFs.Entry(_L("B_GEN.001"),gFileEntry))!=KErrNone)
sl@0
  1229
		Error(_L("File info 31"),c);
sl@0
  1230
	if (gFileEntry.iSize!=0L)
sl@0
  1231
		Error(_L("Size check 31"),0);
sl@0
  1232
	gFile.Close();
sl@0
  1233
	if ((c=TheFs.Entry(_L("B_GEN.001"),gFileEntry))!=KErrNone)
sl@0
  1234
		Error(_L("File info 32"),c);
sl@0
  1235
	if (gFileEntry.iSize!=0L)
sl@0
  1236
		Error(_L("Size check 32"),0);
sl@0
  1237
	if ((c=TheFs.Delete(_L("B_GEN.001")))!=KErrNone)
sl@0
  1238
		Error(_L("Delete"),c);
sl@0
  1239
sl@0
  1240
sl@0
  1241
	test.Printf(_L("Test dir entries are written out\n"));
sl@0
  1242
	gNameBuf.SetLength(0);
sl@0
  1243
	if ((c=gFile.Temp(TheFs,gNameBuf,gNameOut,EFileStream|P_FRANDOM))!=KErrNone)
sl@0
  1244
		Error(_L("Open 20"),c); 
sl@0
  1245
	if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone)
sl@0
  1246
		Error(_L("File info 0"),c);
sl@0
  1247
	if ((gFileEntry.iAtt & P_FAMOD)==0)
sl@0
  1248
		Error(_L("Status 20"),0);
sl@0
  1249
	test.Printf(_L("Size=%u\n"),gFileEntry.iSize);
sl@0
  1250
	if (gFileEntry.iSize!=0L)
sl@0
  1251
		Error(_L("Size check 0"),0);
sl@0
  1252
	saveTime=gFileEntry.iModified;
sl@0
  1253
	test.Printf(_L("Wait 3 seconds...\n"));
sl@0
  1254
	User::After(3000000L);
sl@0
  1255
	gDataBuf.SetLength(1);
sl@0
  1256
	if ((c=gFile.Write(gDataBuf,1))!=KErrNone)
sl@0
  1257
		Error(_L("Write 1"),c);
sl@0
  1258
	if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone)
sl@0
  1259
		Error(_L("File info 1"),c);
sl@0
  1260
	test.Printf(_L("Size=%u\n"),gFileEntry.iSize);
sl@0
  1261
	if (gFileEntry.iSize!=1L)
sl@0
  1262
		Error(_L("Size check 1"),0);
sl@0
  1263
	if (gFileEntry.iModified==saveTime)
sl@0
  1264
		Error(_L("Time update"),0);
sl@0
  1265
	gDataBuf.SetLength(16384);
sl@0
  1266
	if ((c=gFile.Write(gDataBuf,16384))!=KErrNone)
sl@0
  1267
		Error(_L("Write 2"),c);
sl@0
  1268
	if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone)
sl@0
  1269
		Error(_L("File info 2"),c);
sl@0
  1270
	test.Printf(_L("Size=%u\n"),gFileEntry.iSize);
sl@0
  1271
	if (gFileEntry.iSize!=16385L)
sl@0
  1272
		Error(_L("Size check 2"),0);
sl@0
  1273
	pos=0L;
sl@0
  1274
	if ((c=gFile.Seek((TSeek)P_FABS,pos))!=KErrNone)
sl@0
  1275
		Error(_L("Seek 0"),c);
sl@0
  1276
	if ((c=gFile.Write(gDataBuf,1))!=KErrNone)
sl@0
  1277
		Error(_L("Write 3"),c);
sl@0
  1278
	if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone)
sl@0
  1279
		Error(_L("File info 3"),c);
sl@0
  1280
	test.Printf(_L("Size=%u\n"),gFileEntry.iSize);
sl@0
  1281
	if (gFileEntry.iSize!=16385L)
sl@0
  1282
		Error(_L("Size check 3"),0);
sl@0
  1283
	pos=0L;
sl@0
  1284
	if ((c=gFile.Seek((TSeek)P_FABS,pos))!=KErrNone)
sl@0
  1285
		Error(_L("Seek 1"),c);
sl@0
  1286
	if ((c=gFile.Write(gDataBuf,16384))!=KErrNone)
sl@0
  1287
		Error(_L("Write 4"),c);
sl@0
  1288
	if ((c=gFile.Write(gDataBuf,1))!=KErrNone)
sl@0
  1289
		Error(_L("Write 5"),c);
sl@0
  1290
	if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone)
sl@0
  1291
		Error(_L("File info 4"),c);
sl@0
  1292
	test.Printf(_L("Size=%u\n"),gFileEntry.iSize);
sl@0
  1293
	if (gFileEntry.iSize!=16385L)
sl@0
  1294
		Error(_L("Size check 4"),0);
sl@0
  1295
	if ((c=gFile.Write(gDataBuf,1))!=KErrNone)
sl@0
  1296
		Error(_L("Write 6"),c);
sl@0
  1297
	if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone)
sl@0
  1298
		Error(_L("File info 5"),c);
sl@0
  1299
	test.Printf(_L("Size=%u\n"),gFileEntry.iSize);
sl@0
  1300
	if (gFileEntry.iSize!=16386L)
sl@0
  1301
		Error(_L("Size check 5"),0);
sl@0
  1302
	for (i=0;i<50;i++)
sl@0
  1303
		{
sl@0
  1304
		TInt r=(Math::Rand(seed) & 0x7fff);
sl@0
  1305
		test.Printf(_L("%u) Set eof to %u\n"),i,r);
sl@0
  1306
		pos=r;
sl@0
  1307
		if ((c=gFile.SetSize(pos))!=KErrNone)
sl@0
  1308
			Error(_L("Set EOF 1"),c);
sl@0
  1309
		if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone)
sl@0
  1310
			Error(_L("File info 6"),c);
sl@0
  1311
		if (gFileEntry.iSize!=r)
sl@0
  1312
			Error(_L("Size check 6"),i);
sl@0
  1313
		}
sl@0
  1314
	pos=0L;
sl@0
  1315
	if ((c=gFile.SetSize(pos))!=KErrNone)
sl@0
  1316
		Error(_L("Set EOF 2"),c);
sl@0
  1317
	if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone)
sl@0
  1318
		Error(_L("File info 7"),c);
sl@0
  1319
	if (gFileEntry.iSize!=0L)
sl@0
  1320
		Error(_L("Size check 7"),0);
sl@0
  1321
	gFile.Close();
sl@0
  1322
	if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone)
sl@0
  1323
		Error(_L("File info 8"),c);
sl@0
  1324
	if (gFileEntry.iSize!=0L)
sl@0
  1325
		Error(_L("Size check 7"),0);
sl@0
  1326
	mask=P_FAMOD;
sl@0
  1327
	attrib=0;
sl@0
  1328
	if ((c=TheFs.SetAtt(gNameOut,attrib,mask))!=KErrNone)
sl@0
  1329
		Error(_L("Att 20"),c);
sl@0
  1330
sl@0
  1331
//
sl@0
  1332
	if ((c=gFile.Open(TheFs,gNameOut,EFileStream|P_FUPDATE|P_FRANDOM))!=KErrNone)
sl@0
  1333
		Error(_L("Open 21"),c);
sl@0
  1334
	if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone)
sl@0
  1335
		Error(_L("File info 9"),c);
sl@0
  1336
	if (gFileEntry.iAtt & P_FAMOD)
sl@0
  1337
		Error(_L("Status 21"),0);
sl@0
  1338
	if ((c=gFile.Write(gDataBuf,0))!=KErrNone)
sl@0
  1339
		Error(_L("Write 21"),c);
sl@0
  1340
	if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone)
sl@0
  1341
		Error(_L("File info 9"),c);
sl@0
  1342
	if ((gFileEntry.iAtt & P_FAMOD))       // write 0 should not modify //
sl@0
  1343
		Error(_L("Status 22"),0);
sl@0
  1344
	gFile.Close();
sl@0
  1345
	mask=P_FAMOD;
sl@0
  1346
	attrib=0;
sl@0
  1347
	if ((c=TheFs.SetAtt(gNameOut,attrib,mask))!=KErrNone)
sl@0
  1348
		Error(_L("Att 20"),c);
sl@0
  1349
	if ((c=gFile.Open(TheFs,gNameOut,EFileStream|P_FUPDATE|P_FRANDOM))!=KErrNone)
sl@0
  1350
		Error(_L("Open 22"),c);
sl@0
  1351
	if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone)
sl@0
  1352
		Error(_L("File info 9"),c);
sl@0
  1353
	if (gFileEntry.iAtt & P_FAMOD)
sl@0
  1354
		Error(_L("Status 23"),0);
sl@0
  1355
	pos=0L;
sl@0
  1356
	if ((c=gFile.SetSize(pos))!=KErrNone)        // no change //
sl@0
  1357
		Error(_L("Set EOF 21"),c);
sl@0
  1358
	if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone)
sl@0
  1359
		Error(_L("File info 9"),c);
sl@0
  1360
	if ((gFileEntry.iAtt & P_FAMOD))
sl@0
  1361
		Error(_L("Status 24"),0);
sl@0
  1362
	gFile.Close();
sl@0
  1363
	if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone)
sl@0
  1364
		Error(_L("File info 0"),c);
sl@0
  1365
	if ((c=gFile.Open(TheFs,gNameOut,EFileStream|P_FUPDATE|P_FRANDOM))!=KErrNone)
sl@0
  1366
		Error(_L("Open 23"),c);
sl@0
  1367
	saveTime=gFileEntry.iModified;
sl@0
  1368
	test.Printf(_L("Wait 3 seconds...\n"));
sl@0
  1369
	User::After(3000000L);
sl@0
  1370
	if ((c=gFile.Flush())!=KErrNone)        // Should not alter time //
sl@0
  1371
		Error(_L("Flush 0"),c);
sl@0
  1372
	if (gFileEntry.iModified!=saveTime)
sl@0
  1373
		Error(_L("Flush new time"),0);
sl@0
  1374
	gFile.Close();
sl@0
  1375
	if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone)
sl@0
  1376
		Error(_L("File info 61"),c);
sl@0
  1377
	if (gFileEntry.iModified!=saveTime)
sl@0
  1378
		Error(_L("Close new time"),0);
sl@0
  1379
	if ((c=gFile.Open(TheFs,gNameOut,EFileStream|P_FUPDATE|P_FRANDOM))!=KErrNone)
sl@0
  1380
		Error(_L("Open 24"),c);
sl@0
  1381
	if ((c=gFile.Write(gDataBuf,1))!=KErrNone)
sl@0
  1382
		Error(_L("Write 60"),c);
sl@0
  1383
	if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone)
sl@0
  1384
		Error(_L("File info 62"),c);
sl@0
  1385
	if (gFileEntry.iModified==saveTime)
sl@0
  1386
		Error(_L("Write new time 1"),0);
sl@0
  1387
	saveTime=gFileEntry.iModified;
sl@0
  1388
	test.Printf(_L("Wait 3 seconds...\n"));
sl@0
  1389
	User::After(3000000L);
sl@0
  1390
	if ((c=gFile.Flush())!=KErrNone)        // Should alter time //
sl@0
  1391
		Error(_L("Flush 1"),c);
sl@0
  1392
	if ((c=TheFs.Entry(gNameOut,gFileEntry))!=KErrNone)
sl@0
  1393
		Error(_L("File info 64"),c);
sl@0
  1394
	if (gFileEntry.iModified!=saveTime) // ==saveTime) // !!! Flush doesn't alter the time unless the file is modified
sl@0
  1395
		Error(_L("Flush new time 1"),0);
sl@0
  1396
	gFile.Close();
sl@0
  1397
	if ((c=TheFs.Delete(gNameOut))!=KErrNone)
sl@0
  1398
		Error(_L("Delete"),c);
sl@0
  1399
sl@0
  1400
	test.Printf(_L("Test set file date\n"));
sl@0
  1401
	gNameOut.SetLength(0);
sl@0
  1402
	if ((c=gFile.Temp(TheFs,gNameBuf,gNameOut,EFileStream))!=KErrNone)
sl@0
  1403
		Error(_L("Open 10"),c);
sl@0
  1404
	gFile.Close();
sl@0
  1405
	if ((c=gFile.Open(TheFs,gNameOut,EFileStream))!=KErrNone)
sl@0
  1406
		Error(_L("Open 10"),c); // Temp file is created as writable. 
sl@0
  1407
	TTime fileTime(0);
sl@0
  1408
	if ((c=gFile.SetModified(fileTime))!=AccessErr) // LockedErr)
sl@0
  1409
		Error(_L("Set file date 10"),c);
sl@0
  1410
	gFile.Close();
sl@0
  1411
sl@0
  1412
sl@0
  1413
	for (i=0;i<DateTests;i++)
sl@0
  1414
		{
sl@0
  1415
//      TUint32 testSeconds[] = 
sl@0
  1416
//          {
sl@0
  1417
//          0L, 
sl@0
  1418
//          315532799L, 315532800L,	315532801L,315532802L,
sl@0
  1419
//          0xfffffffeL,0xffffffffL,0x7fffffffL,
sl@0
  1420
//          0x80000000L,0x80000001L
sl@0
  1421
//          };
sl@0
  1422
//      TUint32 checkSeconds[] = 
sl@0
  1423
//	        { 
sl@0
  1424
//	        315532800L,	315532800L,	315532800L,	315532800L, 315532802L,
sl@0
  1425
//	        0xfffffffeL,0xfffffffeL,0x7ffffffeL,
sl@0
  1426
//	        0x80000000L,0x80000000L
sl@0
  1427
//	        };
sl@0
  1428
//		TInt64 num64((TReal)(testSeconds[i]*1000000)); // !!! NT fails on dates < 1601
sl@0
  1429
//		TTime fileTime(num64);
sl@0
  1430
//		if ((c=TheFs.SetModified(gNameBuf,fileTime))!=KErrNone)
sl@0
  1431
//			Error(_L("Set file date 0"),c);
sl@0
  1432
//		if ((c=TheFs.Entry(gNameBuf,gFileEntry))!=KErrNone)
sl@0
  1433
//			Error(_L("File info 10"),c);
sl@0
  1434
//		num64=(TReal)checkSeconds[i]*1000000;
sl@0
  1435
//		if (gFileEntry.iModified.Int64()!=num64)
sl@0
  1436
//			Error(_L("Date check 0"),i);
sl@0
  1437
		}
sl@0
  1438
	if ((c=TheFs.Delete(gNameOut))!=KErrNone)
sl@0
  1439
		Error(_L("Delete 1"),c);
sl@0
  1440
	test.Printf(_L("Test format\n"));
sl@0
  1441
	gNameOut.SetLength(0);
sl@0
  1442
	if ((c=gFile.Temp(TheFs,gNameBuf,gNameOut,EFileStream))!=KErrNone)
sl@0
  1443
		Error(_L("Open 1"),c);
sl@0
  1444
	if ((c=gFormat.Open(TheFs,fBuf,EFullFormat,count))!=LockedErr)
sl@0
  1445
		Error(_L("Format lock check 1"),c);
sl@0
  1446
	if ((c=gFormat.Open(TheFs,fBuf,EQuickFormat,count))!=LockedErr)
sl@0
  1447
		Error(_L("Format lock check 2"),c);
sl@0
  1448
	gFile.Close();
sl@0
  1449
sl@0
  1450
	if ((c=gFormat.Open(TheFs,fBuf,EFullFormat,count))!=KErrNone)
sl@0
  1451
		{
sl@0
  1452
		if (c==LockedErr || c==AccessErr)
sl@0
  1453
			{
sl@0
  1454
			test.Printf(_L("Format: locked, no test\n"));
sl@0
  1455
			goto noFormat;
sl@0
  1456
			}
sl@0
  1457
		Error(_L("Format lock check"),c);
sl@0
  1458
		}
sl@0
  1459
sl@0
  1460
//	if ((c=p_read(chan2,&count,2))<0)
sl@0
  1461
//		{
sl@0
  1462
//		if (c==NotSupportedErr)
sl@0
  1463
//			{
sl@0
  1464
//			test.Printf(_L("Format: not supported, no test\n"));
sl@0
  1465
//			goto noFormatClose;
sl@0
  1466
//			}
sl@0
  1467
//		Error(_L("Read format count"),c);
sl@0
  1468
//		}
sl@0
  1469
//	for (i=1;;i++)
sl@0
  1470
//		{
sl@0
  1471
//		if ((c=g(chan2,&val,2))<0)
sl@0
  1472
//			{
sl@0
  1473
//			if (c==EofErr)
sl@0
  1474
//			break;
sl@0
  1475
//			Error(_L("Format"),c);
sl@0
  1476
//			}
sl@0
  1477
//		test.Printf(_L("\r%05u %05u\n"),i,val);
sl@0
  1478
//		}
sl@0
  1479
//	if ((i-1)!=count)
sl@0
  1480
//		Error(_L("Format count"),i);
sl@0
  1481
// noFormatClose:
sl@0
  1482
//	if ((c=p_close(chan2))!=KErrNone)
sl@0
  1483
//		Error(_L("Close"),c);
sl@0
  1484
noFormat:
sl@0
  1485
	gFormat.Close();
sl@0
  1486
	DeleteTestDirectory();
sl@0
  1487
	
sl@0
  1488
	}