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