kerneltest/f32test/server/t_nmbs.cpp
changeset 0 a41df078684a
child 109 b3a1d9898418
child 256 c1f20ce4abcf
equal deleted inserted replaced
-1:000000000000 0:a41df078684a
       
     1 // Copyright (c) 1995-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 "t_server.h"
       
    19 #include "t_chlffs.h"
       
    20 
       
    21 GLDEF_D RTest test(_L("T_NMBS"));
       
    22 
       
    23 LOCAL_C void testMkDirRmDir()
       
    24 //
       
    25 // Test the MkDir functions.
       
    26 //
       
    27 	{
       
    28 
       
    29 	test.Next(_L("Test MkDir"));
       
    30 
       
    31 	TInt r=TheFs.RmDir(_L("\\F32-TST\\TNMBS\\"));
       
    32 	test(r==KErrNone);
       
    33 	r=TheFs.MkDir(_L("\\F32-TST\\TNMBS\\TEST\\"));
       
    34 	test(r==KErrPathNotFound);
       
    35 	r=TheFs.MkDir(_L("\\F32-TST\\TNMBS\\"));
       
    36 	test(r==KErrNone);
       
    37 	r=TheFs.MkDir(_L("\\F32-TST\\TNMBS\\TEST\\"));
       
    38 	test(r==KErrNone);
       
    39 
       
    40 	test.Next(_L("Test RmDir 1.0"));
       
    41 	r=TheFs.RmDir(_L("\\F32-TST\\TNMBS\\TEST\\"));
       
    42 	test(r==KErrNone);
       
    43 	r=TheFs.RmDir(_L("\\F32-TST\\TNMBS\\"));
       
    44 	test(r==KErrNone);
       
    45 
       
    46 	test.Next(_L("Test MkDirAll 1.0"));
       
    47 	r=TheFs.MkDirAll(_L("\\F32-TST\\TNMBS\\TEST\\"));
       
    48 	test(r==KErrNone);
       
    49 
       
    50 	test.Next(_L("Test RmDir 2.0"));
       
    51 	r=TheFs.RmDir(_L("\\F32-TST\\TNMBS\\TEST\\"));
       
    52 	test(r==KErrNone);
       
    53 	r=TheFs.RmDir(_L("\\F32-TST\\TNMBS\\"));
       
    54 	test(r==KErrNone);
       
    55 
       
    56 	test.Next(_L("Test MkDirAll 2.0"));
       
    57 	r=TheFs.MkDirAll(_L("\\F32-TST\\TNMBS\\"));
       
    58 	test(r==KErrNone);
       
    59 	r=TheFs.MkDirAll(_L("\\F32-TST\\TNMBS\\TEST\\"));
       
    60 	test(r==KErrNone);
       
    61 
       
    62 	test.Next(_L("Test RmDir 3.0"));
       
    63 	r=TheFs.RmDir(_L("\\F32-TST\\TNMBS\\TEST\\"));
       
    64 	test(r==KErrNone);
       
    65 	r=TheFs.RmDir(_L("\\F32-TST\\TNMBS\\"));
       
    66 	test(r==KErrNone);
       
    67 
       
    68 	test.Next(_L("Test mkdir and rmdir on root"));
       
    69 	r=TheFs.RmDir(_L("\\File.TXT"));
       
    70 	test(r==KErrInUse);
       
    71 	r=TheFs.MkDir(_L("\\asdf.ere"));
       
    72 	test(r==KErrAlreadyExists);
       
    73 	r=TheFs.MkDirAll(_L("\\asdf.ere"));
       
    74 	test(r==KErrAlreadyExists);
       
    75 
       
    76 	test.Next(_L("Test error code return values"));
       
    77 	r=TheFs.MkDir(_L("\\F32-TST\\\\ABCDEF\\"));
       
    78 
       
    79 	test(r==KErrBadName);
       
    80 
       
    81 	test.Next(_L("Test MkDir with trailing spaces"));
       
    82 	r=TheFs.MkDir(_L("\\F32-TST\\TESTMKDIR    \\"));
       
    83 	test(r==KErrNone);
       
    84 	r=TheFs.RmDir(_L("\\F32-TST\\TESTMKDIR\\"));
       
    85 	test(r==KErrNone);
       
    86 	r=TheFs.MkDirAll(_L("\\F32-TST\\TESTMKDIR    \\NOTCREATED\\NORTHIS   \\"));
       
    87 	test(r==KErrPathNotFound);
       
    88 	r=TheFs.RmDir(_L("\\F32-TST\\TESTMKDIR\\NOTCREATED\\"));
       
    89 	test(r==KErrNotFound);
       
    90 	r=TheFs.RmDir(_L("\\F32-TST\\TESTMKDIR\\"));
       
    91 	test(r==KErrNone);
       
    92 
       
    93 	r=TheFs.MkDirAll(_L("\\F32-TST\\TNMBS\\"));
       
    94 	test(r==KErrNone);
       
    95 	}
       
    96 
       
    97 LOCAL_C void testRename()
       
    98 //
       
    99 // Test the rename function.
       
   100 //
       
   101 	{
       
   102 
       
   103 	test.Next(_L("Test rename directories"));
       
   104 	TInt r=TheFs.MkDirAll(_L("\\F32-TST\\ABCDEF\\GPQ\\"));
       
   105 	test(r==KErrNone || r==KErrAlreadyExists);
       
   106 	r=TheFs.Rename(_L("\\F32-TST\\ABCDEF\\"),_L("\\F32-TST\\ABCDEF\\LMED"));
       
   107 	test(r==KErrInUse);
       
   108 	r=TheFs.Rename(_L("\\F32-TST\\ABCDEF\\GPQ"),_L("\\F32-TST\\LMED"));
       
   109 	test(r==KErrNone);
       
   110 	r=TheFs.RmDir(_L("\\F32-TST\\LMED\\"));
       
   111 	test(r==KErrNone);
       
   112 
       
   113 	MakeDir(_L("\\F32-TST\\ABC\\"));
       
   114 	MakeFile(_L("\\F32-TST\\ABCDEF\\GPQ\\asdf.txt"));
       
   115 	MakeFile(_L("\\F32-TST\\asdf.txt"));
       
   116 	
       
   117 	test.Next(_L("Test rename directory while subfile is open"));
       
   118 	RFile f;
       
   119 	r=f.Open(TheFs,_L("\\F32-TST\\ABCDEF\\GPQ\\asdf.txt"),EFileRead);
       
   120 	test(r==KErrNone);
       
   121 	r=TheFs.Rename(_L("\\F32-TST\\ABCDEF"),_L("\\F32-TST\\xxxyyy"));
       
   122 	test(r==KErrInUse);
       
   123 	r=TheFs.Rename(_L("\\F32-TST\\ABCDEF"),_L("\\F32-TST\\xxxyyy"));
       
   124 	test(r==KErrInUse);
       
   125 	r=TheFs.Rename(_L("\\F32-TST\\ABC"),_L("\\F32-TST\\XXX"));
       
   126 	test(r==KErrNone);
       
   127 	f.Close();
       
   128 	r=TheFs.Rename(_L("\\F32-TST\\ABCDEF"),_L("\\F32-TST\\xxxyyy"));
       
   129 	test(r==KErrNone);
       
   130 	r=TheFs.Rename(_L("\\F32-TST\\XXX"),_L("\\F32-TST\\ABC"));
       
   131 	test(r==KErrNone);
       
   132 	r=TheFs.Rename(_L("\\"),_L("\\BLARG"));
       
   133 	test(r==KErrBadName);
       
   134 
       
   135 	r=f.Open(TheFs,_L("\\F32-TST\\asdf.txt"),EFileRead);
       
   136 	test(r==KErrNone);
       
   137 	r=TheFs.Rename(_L("\\F32-TST\\xxxyyy"),_L("\\F32-TST\\ABCDEF"));
       
   138 	test(r==KErrNone);
       
   139 	r=TheFs.Rename(_L("\\F32-TST\\"),_L("\\ABCDEF"));
       
   140 	test(r==KErrInUse);
       
   141 	f.Close();
       
   142 
       
   143 	r=TheFs.Delete(_L("\\F32-TST\\ABCDEF\\GPQ\\asdf.txt"));
       
   144 	test(r==KErrNone);
       
   145 	r=TheFs.Delete(_L("\\F32-TST\\asdf.txt"));
       
   146 	test(r==KErrNone);
       
   147 	r=TheFs.RmDir(_L("\\F32-TST\\ABCDEF\\GPQ\\"));
       
   148 	test(r==KErrNone);
       
   149 	r=TheFs.RmDir(_L("\\F32-TST\\ABC\\"));
       
   150 	test(r==KErrNone);
       
   151 
       
   152 	r=TheFs.Rename(_L("\\TST-E32\\123456"),_L("\\F32-TST\\ABCDEF"));
       
   153 	test(r==KErrPathNotFound);
       
   154 	r=TheFs.Rename(_L("\\F32-TST\\123456"),_L("\\F32-TST\\ABCDEF"));
       
   155 	test(r==KErrNotFound);
       
   156 	r=TheFs.Rename(_L("\\TST-E32\\123456"),_L("\\F32-TST\\FEDCBA"));
       
   157 	test(r==KErrPathNotFound);
       
   158 	r=TheFs.Rename(_L("\\F32-TST\\FEDCBA"),_L("\\TST-E32\\123456"));
       
   159 	test(r==KErrNotFound);
       
   160 	r=TheFs.Rename(_L("\\F32-TST\\ABCDEF"),_L("\\F32-TST\\123456"));
       
   161 	test(r==KErrNone);
       
   162 	r=TheFs.Rename(_L("\\F32-TST\\123456"),_L("\\F32-TST\\XYZABC"));
       
   163 	test(r==KErrNone);
       
   164 
       
   165 	test.Next(_L("Test rename files"));
       
   166 	r=f.Create(TheFs,_L("\\F32-TST\\XYZABC\\OLDNAME.TXT"),EFileRead|EFileWrite);
       
   167 	test(r==KErrNone);
       
   168 	f.Close();
       
   169 	r=TheFs.Rename(_L("\\F32-TST\\XYZABC\\OLDNAME.TXT"),_L("\\F32-TST\\XYZABC\\NEWNAME.TXT"));
       
   170 	test(r==KErrNone);
       
   171 	r=TheFs.Delete(_L("\\F32-TST\\XYZABC\\NEWNAME.TXT"));
       
   172 	test(r==KErrNone);
       
   173 
       
   174 	test.Next(_L("Test rename checks for duplicate entries"));
       
   175 	r=TheFs.MkDirAll(_L("\\F32-TST\\ABCDEF\\"));
       
   176 	test(r==KErrNone);
       
   177 	r=TheFs.Rename(_L("\\F32-TST\\ABCDEF"),_L("\\F32-TST\\XYZABC"));
       
   178 	test(r==KErrAlreadyExists);
       
   179 	r=f.Create(TheFs,_L("\\F32-TST\\XYZABC\\OLDNAME.TXT"),EFileRead|EFileWrite);
       
   180 	test(r==KErrNone);
       
   181 	f.Close();
       
   182 	r=f.Create(TheFs,_L("\\F32-TST\\XYZABC\\NEWNAME.TXT"),EFileRead|EFileWrite);
       
   183 	test(r==KErrNone);
       
   184 	f.Close();
       
   185 	r=TheFs.Rename(_L("\\F32-TST\\XYZABC\\OLDNAME.TXT"),_L("\\F32-TST\\XYZABC\\NEWNAME.TXT"));
       
   186 	test(r==KErrAlreadyExists);
       
   187 
       
   188 	test.Next(_L("Test rename across directories"));
       
   189 	r=TheFs.Rename(_L("\\F32-TST\\XYZABC\\NEWNAME.TXT"),_L("\\F32-TST\\ABCDEF\\OLDNAME.TXT"));
       
   190 	test(r==KErrNone);
       
   191 	r=TheFs.Rename(_L("\\F32-TST\\XYZABC\\NEWNAME.TXT"),_L("\\F32-TST\\ABCDEF\\OLDNAME.TXT"));
       
   192 	test(r==KErrNotFound);
       
   193 	r=TheFs.Rename(_L("\\F32-TST\\XYZABC\\NEWNAME.TXT"),_L("\\F32-TST\\ABCDEF\\DIFNAME.TXT"));
       
   194 	test(r==KErrNotFound);
       
   195 	r=TheFs.Rename(_L("\\F32-TST\\XYZABC"),_L("\\F32-TST\\ABCDEF\\XYZABC"));
       
   196 	test(r==KErrNone);
       
   197 	r=TheFs.Rename(_L("\\F32-TST\\ABCDEF\\XYZABC\\OLDNAME.TXT"),_L("\\F32-TST\\ABCDEF\\NEWNAME.TXT"));
       
   198 	test(r==KErrNone);
       
   199 	r=TheFs.Rename(_L("\\F32-TST\\ABCDEF\\NewNAME.TXT"),_L("\\F32-TST\\ABCDEF\\XYZABC\\OLDNAME.TXT"));
       
   200 	test(r==KErrNone);
       
   201 	test.Next(_L("Test rename across drive error code"));
       
   202 	r=TheFs.Rename(_L("Z:\\BLEG"),_L("C:\\FRUM"));
       
   203 	test(r==KErrArgument);	
       
   204 	test.Next(_L("Test rename to identical names"));
       
   205 	r=TheFs.Rename(_L("\\F32-TST\\ABCDEF\\XYZABC\\OLDNAME.TXT"),_L("\\F32-TST\\ABCDEF\\XYZABC\\OLDNAME.TXT"));
       
   206 	test(r==KErrNone);
       
   207 	CheckFileExists(_L("\\F32-TST\\ABCDEF\\XYZABC\\OLDNAME.TXT"),KErrNone);
       
   208 	r=TheFs.Rename(_L("\\F32-TST\\ABCDEF\\XYZABC\\OLDNAME.TXT"),_L("\\F32-TST\\ABCDEF\\XYZABC\\OLdnAME.TXT"));
       
   209 	test(r==KErrNone);
       
   210 	CheckFileExists(_L("\\F32-TST\\ABCDEF\\XYZABC\\OLDNAME.TXT"),KErrNone,EFalse);
       
   211 	CheckFileExists(_L("\\F32-TST\\ABCDEF\\XYZABC\\OLdnAME.TXT"),KErrNone,ETrue);
       
   212 
       
   213 	r=TheFs.Rename(_L("\\F32-TST\\ABCDEF\\XYZABC\\OLDNAME.TXT"),_L("\\F32-TST\\ABCDEF\\NEWNAME.TXT"));
       
   214 	test(r==KErrNone);
       
   215 	test.Next(_L("Test RmDir"));
       
   216 	r=TheFs.Delete(_L("\\F32-TST\\ABCDEF\\NEWNAME.TXT"));
       
   217 	test(r==KErrNone);
       
   218 	r=TheFs.Delete(_L("\\F32-TST\\ABCDEF\\OLDNAME.TXT"));
       
   219 	test(r==KErrNone);
       
   220 	r=TheFs.RmDir(_L("\\F32-TST\\ABCDEF\\XYZABC\\"));
       
   221 	test(r==KErrNone);
       
   222 	r=TheFs.RmDir(_L("\\F32-TST\\ABCDEF\\"));
       
   223 	test(r==KErrNone);
       
   224 	}
       
   225 LOCAL_C void TestLongFileName()
       
   226 	{
       
   227 	#ifndef __EPOC32__ //emulator
       
   228 	if (gDriveToTest.GetLowerCase()=='c')
       
   229 		return;//don't perform this test for c: in emulator as emulator uses windows system calls
       
   230 		//windows doesn't create a directory with length more than 244 characters
       
   231 	#endif 
       
   232 	
       
   233 	 test.Next(_L("Test renaming 257 characters directories"));
       
   234 	_LIT(KLongFileName256, "256dir_IncludingBackslash_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
       
   235 	_LIT(KLongFileName257, "257dir_IncludingBackslash_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
       
   236 	TBuf<260> Path;
       
   237 	TBuf<10> baseDir;
       
   238 			
       
   239 	baseDir.Format(_L("%c:\\"),(TUint)(gDriveToTest));
       
   240 	Path.Copy(baseDir);
       
   241 	Path.Append(KLongFileName256);
       
   242 	Path.Append(_L("\\"));
       
   243 	
       
   244 	TInt 	result = KErrNone;
       
   245 	//-- 1. create directory in Root which total path length is 256 symbols.	result = TheFs.MkDirAll(Path);
       
   246 	result=TheFs.MkDirAll(Path);
       
   247 	test((result==KErrNone)||(result==KErrAlreadyExists));
       
   248 	
       
   249 	test.Next(_L("Renaming a 265 char directory to a 257 char directory"));
       
   250 	result=TheFs.SetSessionPath(baseDir);
       
   251 	test(result==KErrNone);	
       
   252 	TheFs.SessionPath(baseDir);
       
   253 	test.Printf(_L("Session path was set to: %S"), &baseDir);
       
   254 
       
   255 	//-- 2. try to rename this directory to one with 257 character total path length
       
   256 	test.Printf(_L("Renaming 256-char directory to 257"));
       
   257 	result = KErrNone;
       
   258 	Path.Copy(KLongFileName257);
       
   259 	result = TheFs.Rename(KLongFileName256, Path);
       
   260 	test(result==KErrBadName);
       
   261 	//-- 3. try to rename this directory to one with 258 character total path length
       
   262 
       
   263 	Path.Append(_L("z"));
       
   264 	result = TheFs.Rename(KLongFileName256, Path);
       
   265 	test(result==KErrBadName);
       
   266 
       
   267 	}
       
   268 LOCAL_C void testRenameCase()
       
   269 //
       
   270 // Test renaming "AGENDA" to "agenda"
       
   271 //
       
   272 	{
       
   273 
       
   274 	test.Next(_L("Test rename case"));
       
   275 	MakeDir(_L("\\F32-TST\\RENAMECASE\\"));
       
   276 	TInt r=TheFs.SetSessionPath(_L("\\F32-TST\\RENAMECASE\\"));
       
   277 	test(r==KErrNone);
       
   278 
       
   279 	MakeFile(_L("file1.txt"));
       
   280 	MakeFile(_L("FILE2.TXT"));
       
   281 	MakeFile(_L("AGENDA"));
       
   282 	MakeFile(_L("agenda.one"));
       
   283 
       
   284 	TEntry entry;
       
   285 	r=TheFs.Rename(_L("FILE1.TXT"),_L("FILE1.TXT"));
       
   286 	test(r==KErrNone);
       
   287 	r=TheFs.Entry(_L("File1.txt"),entry);
       
   288 	test(r==KErrNone);
       
   289 	test(entry.iName==_L("FILE1.TXT"));
       
   290 
       
   291 	r=TheFs.Rename(_L("file2.txt"),_L("file2.txt"));
       
   292 	test(r==KErrNone);
       
   293 	r=TheFs.Entry(_L("File2.txt"),entry);
       
   294 	test(r==KErrNone);
       
   295 	test(entry.iName==_L("file2.txt"));
       
   296 
       
   297 	r=TheFs.Rename(_L("agenda."),_L("agenda.two"));
       
   298 	test(r==KErrNone);
       
   299 	r=TheFs.Entry(_L("Agenda.two"),entry);
       
   300 	test(r==KErrNone);
       
   301 	test(entry.iName==_L("agenda.two"));
       
   302 
       
   303 	r=TheFs.Rename(_L("AGENDA.ONE"),_L("AGENDA.ONE"));
       
   304 	test(r==KErrNone);
       
   305 	r=TheFs.Entry(_L("Agenda.one"),entry);
       
   306 	test(r==KErrNone);
       
   307 	test(entry.iName==_L("AGENDA.ONE"));
       
   308 
       
   309 	r=TheFs.Rename(_L("FILE1.TXT"),_L("file1.txt"));
       
   310 	test(r==KErrNone);
       
   311 	r=TheFs.Entry(_L("File1.txt"),entry);
       
   312 	test(r==KErrNone);
       
   313 	test(entry.iName==_L("file1.txt"));
       
   314 
       
   315 	r=TheFs.Rename(_L("file2.txt"),_L("FILE2.TXT"));
       
   316 	test(r==KErrNone);
       
   317 	r=TheFs.Entry(_L("File2.txt"),entry);
       
   318 	test(r==KErrNone);
       
   319 	test(entry.iName==_L("FILE2.TXT"));
       
   320 
       
   321 	r=TheFs.Rename(_L("agenda.two"),_L("AGENDA"));
       
   322 	test(r==KErrNone);
       
   323 	r=TheFs.Entry(_L("Agenda"),entry);
       
   324 	test(r==KErrNone);
       
   325 	test(entry.iName==_L("AGENDA"));
       
   326 
       
   327 	r=TheFs.Rename(_L("AGENDA.ONE"),_L("agenda.one"));
       
   328 	test(r==KErrNone);
       
   329 	r=TheFs.Entry(_L("Agenda.one"),entry);
       
   330 	test(r==KErrNone);
       
   331 	test(entry.iName==_L("agenda.one"));
       
   332 
       
   333 	r=TheFs.Rename(_L("FILE1.TXT"),_L("FILe1.txt"));
       
   334 	test(r==KErrNone);
       
   335 	r=TheFs.Entry(_L("File1.txt"),entry);
       
   336 	test(r==KErrNone);
       
   337 	test(entry.iName==_L("FILe1.txt"));
       
   338 
       
   339 	r=TheFs.Rename(_L("file2.txt"),_L("FILE3.TXT"));
       
   340 	test(r==KErrNone);
       
   341 	r=TheFs.Entry(_L("File3.txt"),entry);
       
   342 	test(r==KErrNone);
       
   343 	test(entry.iName==_L("FILE3.TXT"));
       
   344 
       
   345 	r=TheFs.Rename(_L("agenda."),_L("AGENDA1"));
       
   346 	test(r==KErrNone);
       
   347 	r=TheFs.Entry(_L("Agenda1"),entry);
       
   348 	test(r==KErrNone);
       
   349 	test(entry.iName==_L("AGENDA1"));
       
   350 
       
   351 	r=TheFs.Rename(_L("AGENDA.ONE"),_L("Agenda.One"));
       
   352 	test(r==KErrNone);
       
   353 	r=TheFs.Entry(_L("Agenda.one"),entry);
       
   354 	test(r==KErrNone);
       
   355 	test(entry.iName==_L("Agenda.One"));
       
   356 
       
   357 	r=TheFs.Delete(_L("file1.txt"));
       
   358 	test(r==KErrNone);
       
   359 	r=TheFs.Delete(_L("file3.txt"));
       
   360 	test(r==KErrNone);
       
   361 	r=TheFs.Delete(_L("Agenda1"));
       
   362 	test(r==KErrNone);
       
   363 	r=TheFs.Delete(_L("AGENDA.ONE"));
       
   364 	test(r==KErrNone);
       
   365 	r=TheFs.RmDir(_L("\\F32-TST\\RENAMECASE\\"));
       
   366 	test(r==KErrNone);
       
   367 	r=TheFs.SetSessionPath(gSessionPath);
       
   368 	test(r==KErrNone);
       
   369 	}
       
   370 
       
   371 LOCAL_C void testReplace()
       
   372 //
       
   373 // Test the replace function
       
   374 //
       
   375 	{
       
   376 
       
   377 	test.Next(_L("Test Replace"));
       
   378 	TInt r=TheFs.MkDirAll(_L("\\F32-TST\\ABCDEF\\"));
       
   379 	test(r==KErrNone);
       
   380 	r=TheFs.Replace(_L("\\TST-E32\\123456"),_L("\\F32-TST\\ABCDEF"));
       
   381 	test(r==KErrAccessDenied); // Do not replace directories
       
   382 	r=TheFs.Replace(_L("\\F32-TST\\123456"),_L("\\F32-TST\\ABCDEF"));
       
   383 	test(r==KErrAccessDenied);
       
   384 	r=TheFs.Replace(_L("\\TST-E32\\123456"),_L("\\F32-TST\\FEDCBA"));
       
   385 	test(r==KErrPathNotFound);
       
   386 	r=TheFs.Replace(_L("\\F32-TST\\ABCDEF"),_L("\\F32-TST\\123456"));
       
   387 	test(r==KErrAccessDenied);
       
   388 
       
   389 	test.Next(_L("Replace a file with itself (8.3 filename)"));
       
   390 	MakeFile(_L("\\F32-TST\\ABCDEF\\TEST1.SPR"));
       
   391 	r=TheFs.Replace(_L("\\F32-TST\\ABCDEF\\TEST1.SPR"),_L("\\F32-TST\\ABCDEF\\TEST1.SPR"));
       
   392 	test(r==KErrNone);
       
   393 	CheckFileExists(_L("\\F32-TST\\ABCDEF\\TEST1.SPR"),KErrNone);
       
   394 	r=TheFs.Replace(_L("\\F32-TST\\ABCDEF\\TEST1.SPR"),_L("\\F32-TST\\ABCDEF\\test1.spr"));
       
   395 	test(r==KErrNone);
       
   396 	CheckFileExists(_L("\\F32-TST\\ABCDEF\\TEST1.SPR"),KErrNone,ETrue); // Replace does not rename existing file
       
   397 	CheckFileExists(_L("\\F32-TST\\ABCDEF\\test1.spr"),KErrNone,EFalse);
       
   398 
       
   399 	test.Next(_L("Replace a file with itself (vfat filename)"));
       
   400 	MakeFile(_L("\\F32-TST\\ABCDEF\\TEST_SHEET(01).SPR"));
       
   401 	r=TheFs.Replace(_L("\\F32-TST\\ABCDEF\\TEST_SHEET(01).SPR"),_L("\\F32-TST\\ABCDEF\\TEST_SHEET(01).SPR"));
       
   402 	test(r==KErrNone);
       
   403 	CheckFileExists(_L("\\F32-TST\\ABCDEF\\TEST_SHEET(01).SPR"),KErrNone);
       
   404 	r=TheFs.Replace(_L("\\F32-TST\\ABCDEF\\TEST_SHEET(01).SPR"),_L("\\F32-TST\\ABCDEF\\test_sheet(01).spr"));
       
   405 	test(r==KErrNone);
       
   406 	CheckFileExists(_L("\\F32-TST\\ABCDEF\\TEST_SHEET(01).SPR"),KErrNone,ETrue); // Replace does not rename existing file
       
   407 	CheckFileExists(_L("\\F32-TST\\ABCDEF\\test_sheet(01).spr"),KErrNone,EFalse);
       
   408 
       
   409 	test.Next(_L("Replace preserves file contents (8.3 filename)"));
       
   410 	MakeFile(_L("\\F32-TST\\ABCDEF\\SHEET1.SPR"),_L8("Original Data"));
       
   411 	MakeFile(_L("\\F32-TST\\ABCDEF\\TEMP0001.SPR"),_L8("NewData"));
       
   412 	r=TheFs.Replace(_L("\\F32-TST\\ABCDEF\\TEMP0001.SPR"),_L("\\F32-TST\\ABCDEF\\SHEET1.SPR"));
       
   413 	test(r==KErrNone);
       
   414 	CheckFileContents(_L("\\F32-TST\\ABCDEF\\SHEET1.SPR"),_L8("NewData"));
       
   415 	CheckFileExists(_L("\\F32-TST\\ABCDEF\\TEMP0001.SPR"),KErrNotFound);
       
   416 
       
   417 	r=TheFs.Rename(_L("\\F32-TST\\ABCDEF\\SHEET1.SPR"),_L("\\F32-TST\\ABCDEF\\TEMP0001.SPR"));
       
   418 	test(r==KErrNone);
       
   419     r=TheFs.Replace(_L("\\F32-TST\\ABCDEF\\TEMP0001.SPR"),_L("\\F32-TST\\ABCDEF\\SHEET1.SPR"));
       
   420 	test(r==KErrNone);
       
   421 	CheckFileContents(_L("\\F32-TST\\ABCDEF\\SHEET1.SPR"),_L8("NewData"));
       
   422 	CheckFileExists(_L("\\F32-TST\\ABCDEF\\TEMP0001.SPR"),KErrNotFound);
       
   423 
       
   424 	test.Next(_L("Replace preserves file contents (vfat fileName)"));
       
   425 	MakeFile(_L("\\F32-TST\\ABCDEF\\SHEET_TEST1.SPR"),_L8("Original Data"));
       
   426 	MakeFile(_L("\\F32-TST\\ABCDEF\\NEW_TEMP0001.SPR"),_L8("NewData"));
       
   427 	r=TheFs.Replace(_L("\\F32-TST\\ABCDEF\\NEW_TEMP0001.SPR"),_L("\\F32-TST\\ABCDEF\\SHEET_TEST1.SPR"));
       
   428 	test(r==KErrNone);
       
   429 	CheckFileContents(_L("\\F32-TST\\ABCDEF\\SHEET_TEST1.SPR"),_L8("NewData"));
       
   430 	CheckFileExists(_L("\\F32-TST\\ABCDEF\\NEW_TEMP0001.SPR"),KErrNotFound);
       
   431 
       
   432 	r=TheFs.Rename(_L("\\F32-TST\\ABCDEF\\SHEET_TEST1.SPR"),_L("\\F32-TST\\ABCDEF\\NEW_TEMP0001.SPR"));
       
   433 	test(r==KErrNone);
       
   434     r=TheFs.Replace(_L("\\F32-TST\\ABCDEF\\NEW_TEMP0001.SPR"),_L("\\F32-TST\\ABCDEF\\SHEET_TEST1.SPR"));
       
   435 	test(r==KErrNone);
       
   436 	CheckFileContents(_L("\\F32-TST\\ABCDEF\\SHEET_TEST1.SPR"),_L8("NewData"));
       
   437 	CheckFileExists(_L("\\F32-TST\\ABCDEF\\NEW_TEMP0001.SPR"),KErrNotFound);
       
   438 
       
   439 	r=TheFs.RmDir(_L("\\F32-TST\\ABCDEF\\"));
       
   440 	test(r==KErrInUse);
       
   441 	r=TheFs.RmDir(_L("\\F32-TST\\ABCDEF\\SHEET1.SPR\\"));
       
   442 	test(r==KErrPathNotFound);
       
   443 	r=TheFs.Delete(_L("\\F32-TST\\ABCDEF\\SHEET1.SPR"));
       
   444 	test(r==KErrNone);
       
   445 	r=TheFs.Delete(_L("\\F32-TST\\ABCDEF\\SHEET_TEST1.SPR"));
       
   446 	test(r==KErrNone);
       
   447 	r=TheFs.Delete(_L("\\F32-TST\\ABCDEF\\TEST1.SPR"));
       
   448 	test(r==KErrNone);
       
   449 	r=TheFs.Delete(_L("\\F32-TST\\ABCDEF\\TEST_SHEET(01).SPR"));
       
   450 	test(r==KErrNone);
       
   451 	r=TheFs.RmDir(_L("\\F32-TST\\ABCDEF\\"));
       
   452 	test(r==KErrNone);
       
   453 
       
   454 	test.Next(_L("Check file date is retained"));
       
   455 	MakeFile(_L("OldFile.Old"));
       
   456 	MakeFile(_L("NewFile.new"));
       
   457 
       
   458 	TDateTime newDate(1998,(TMonth)2,3,11,12,0,0);
       
   459 	TTime newTime(newDate);
       
   460 	
       
   461 	r=TheFs.SetEntry(_L("NewFile.new"),newTime,0,0);
       
   462 	test(r==KErrNone);
       
   463 	
       
   464 	TEntry entry;
       
   465 	r=TheFs.Entry(_L("NewFile.new"),entry);
       
   466 	test(r==KErrNone);
       
   467 	
       
   468 	TTime checkReturnedTime=entry.iModified;
       
   469 	TDateTime dateTime=checkReturnedTime.DateTime();
       
   470 	
       
   471 	test(entry.iModified==newTime);
       
   472 
       
   473 	TDateTime oldDate(1996,(TMonth)2,3,23,0,0,0);
       
   474 	TTime oldTime(oldDate);
       
   475 	r=TheFs.SetEntry(_L("OldFile.old"),oldTime,0,0);
       
   476 	test(r==KErrNone);
       
   477 
       
   478 	TheFs.Replace(_L("NewFile.new"),_L("OldFile.old"));
       
   479 	test(r==KErrNone);
       
   480 	TTime check;
       
   481 	r=TheFs.Modified(_L("OldFile.old"),check);
       
   482 	test(r==KErrNone);
       
   483 	TDateTime checkDateTime=check.DateTime();
       
   484 	
       
   485 	test(checkDateTime.Year()==dateTime.Year());
       
   486 	test(checkDateTime.Month()==dateTime.Month());
       
   487 	test(checkDateTime.Day()==dateTime.Day());
       
   488 	test(checkDateTime.Hour()==dateTime.Hour());
       
   489 	test(checkDateTime.Minute()==dateTime.Minute());
       
   490 	test(checkDateTime.Second()==dateTime.Second());
       
   491 
       
   492 	test.Next(_L("Replace 'Agenda' with 'Agenda.'"));
       
   493 	MakeFile(_L("Agenda"));
       
   494 	r=TheFs.Replace(_L("Agenda"),_L("Agenda."));
       
   495 	test(r==KErrNone);
       
   496 	CheckFileExists(_L("Agenda"),KErrNone,ETrue);
       
   497 	CheckFileExists(_L("Agenda."),KErrNone,ETrue);
       
   498 	CheckFileExists(_L("AGENDA"),KErrNone,EFalse);
       
   499 	CheckFileExists(_L("AGENDA."),KErrNone,EFalse);
       
   500 
       
   501 	r=TheFs.Replace(_L("Agenda"),_L("Agenda."));
       
   502 	test(r==KErrNone);
       
   503 	CheckFileExists(_L("Agenda"),KErrNone,ETrue);
       
   504 	CheckFileExists(_L("Agenda."),KErrNone,ETrue);
       
   505 	CheckFileExists(_L("AGENDA"),KErrNone,EFalse);
       
   506 	CheckFileExists(_L("AGENDA."),KErrNone,EFalse);
       
   507 
       
   508 	r=TheFs.Replace(_L("Agenda."),_L("AGENDA"));
       
   509 	test(r==KErrNone);
       
   510 	CheckFileExists(_L("Agenda"),KErrNone,ETrue);  // Replace does not rename existing file
       
   511 	CheckFileExists(_L("Agenda."),KErrNone,ETrue);
       
   512 	CheckFileExists(_L("AGENDA"),KErrNone,EFalse);
       
   513 	CheckFileExists(_L("AGENDA."),KErrNone,EFalse);
       
   514 
       
   515 	r=TheFs.Replace(_L("AGENDA."),_L("AGENDA.")); // Unchanged, ie still 'Agenda'
       
   516 	test(r==KErrNone);
       
   517 	CheckFileExists(_L("Agenda"),KErrNone,ETrue);
       
   518 	CheckFileExists(_L("Agenda."),KErrNone,ETrue);
       
   519 	CheckFileExists(_L("AGENDA"),KErrNone,EFalse);
       
   520 	CheckFileExists(_L("AGENDA."),KErrNone,EFalse);
       
   521 	}
       
   522 
       
   523 LOCAL_C void testEntry()
       
   524 //
       
   525 // Test RFs::Entry(..) function
       
   526 //
       
   527 	{
       
   528 
       
   529 	test.Next(_L("Get directory entry"));
       
   530 	TEntry entry;
       
   531 	TInt r=TheFs.Entry(_L("\\BLEERRG\\"),entry);
       
   532 	test(r==KErrNotFound); // BLEERRG does not exist
       
   533 	r=TheFs.Entry(_L("\\F32-TST"),entry);
       
   534 	test(r==KErrNone);
       
   535 	test(entry.iName==_L("F32-TST")||entry.iName==_L("F32-TST."));
       
   536 	if (IsTestingLFFS())
       
   537 		{
       
   538 		r=TheFs.Rename(_L("\\F32-TST.\\"),_L("\\F32-TST\\"));
       
   539 		test(r==KErrBadName);
       
   540 		r=TheFs.Entry(_L("\\F32-TST"),entry);
       
   541 		test(r==KErrNone);
       
   542 		}
       
   543 	test(entry.iName==_L("F32-TST"));
       
   544 	test(entry.IsDir());
       
   545 
       
   546 	test.Next(_L("Get file entry"));
       
   547 	RFile f;
       
   548 	r=f.Replace(TheFs,_L("ENTRY.TXT"),EFileStream);
       
   549 	test(r==KErrNone);
       
   550 	r=f.Write(_L8("Entry data"));
       
   551 	test(r==KErrNone);
       
   552 	f.Close();
       
   553 	r=TheFs.Entry(_L("\\F32-TST\\TNMBS\\ENTRY.TXT"),entry);
       
   554 	test(r==KErrNone);
       
   555 	test(entry.iName==_L("ENTRY.TXT"));
       
   556 	test(!entry.IsDir());
       
   557 
       
   558 	test.Next(_L("Get the root directory"));
       
   559 	r=TheFs.Entry(_L("\\"),entry);
       
   560 	test(r==KErrBadName);
       
   561 	}
       
   562 
       
   563 LOCAL_C void testRenameRegression()
       
   564 //
       
   565 // Regression tests for rename
       
   566 //
       
   567 	{
       
   568 
       
   569 	test.Next(_L("More rename tests"));
       
   570 	MakeFile(_L("\\F32-TST\\asdf"));
       
   571 	TInt r=TheFs.Rename(_L("\\F32-TST\\asdf"),_L("*"));
       
   572 	test(r==KErrBadName);
       
   573 	r=TheFs.Rename(_L("\\F32-TST\\"),_L("*"));
       
   574 	test(r==KErrBadName);
       
   575 	r=TheFs.Rename(_L("\\F32-TST\\"),_L("\\F32-TST.\\"));
       
   576 	test(r==KErrBadName);
       
   577 	CheckFileExists(_L("\\F32-TST\\asdf"),KErrNone);
       
   578 	r=TheFs.Rename(_L("\\F32-TST\\asdf"),_L("\\F32-TST\\Asdf."));
       
   579 	test(r==KErrNone);
       
   580 	CheckFileExists(_L("\\F32-TST\\asdf"),KErrNone,EFalse);
       
   581 	CheckFileExists(_L("\\F32-TST\\Asdf"),KErrNone,ETrue);
       
   582 
       
   583 	TBuf<4> shortName;
       
   584 	shortName.SetLength(1);
       
   585 	shortName[0]=0xff;
       
   586 	r=TheFs.Rename(_L("\\F32-TST\\asdf"),shortName);
       
   587 	test(r==KErrNone);
       
   588 	r=TheFs.Delete(_L("\\F32-TST\\Asdf"));
       
   589 	test(r==KErrNotFound);
       
   590 	r=TheFs.Delete(shortName);
       
   591 	test(r==KErrNone);
       
   592 	}
       
   593 
       
   594 LOCAL_C void testMaxNameLength()
       
   595 //
       
   596 // Create files and directories with the maximum name length
       
   597 //
       
   598 	{
       
   599 
       
   600 	test.Next(_L("Test max name length"));
       
   601 	TBuf<128> longNameBase=_L("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
       
   602 	TFullName longName=_L("\\F32-TST\\MAXNAMELEN\\");
       
   603 
       
   604 	longName.Append(longNameBase);
       
   605 	longName.Append(_L("\\"));
       
   606 	longName.Append(longNameBase);
       
   607 	longName.Append(_L("\\"));
       
   608 
       
   609 	TInt r=TheFs.MkDirAll(longName);
       
   610 	test(r==KErrNone);
       
   611 
       
   612 	TInt i=0;
       
   613 	FOREVER
       
   614 		{
       
   615 		longName.Append(_L("X"));
       
   616 		longName.Append(_L("\\"));
       
   617 		r=TheFs.MkDirAll(longName);
       
   618 		if (r!=KErrNone)
       
   619 			break;
       
   620 		i++;
       
   621 		}
       
   622 	
       
   623 	longName.SetLength(longName.Length()-2);
       
   624 	r=TheFs.RmDir(longName);
       
   625 	test(r==KErrNone); // Make room for file
       
   626 	longName.SetLength(longName.Length()-2);
       
   627 
       
   628 	TFullName oldSessionPath;
       
   629 	r=TheFs.SessionPath(oldSessionPath);
       
   630 	test(r==KErrNone);
       
   631 	r=TheFs.SetSessionPath(longName);
       
   632 	test(r==KErrNone);
       
   633 	r=TheFs.SessionPath(longName);
       
   634 	test(r==KErrNone);
       
   635 
       
   636 	test.Printf(_L("MaxPathLength achieved = %d chars\n"),longName.Length());
       
   637 	TBuf<32> fileName=_L("012345678901234567890");
       
   638 	RFile f;
       
   639 	while (fileName.Length())
       
   640 		{
       
   641 		r=f.Replace(TheFs,fileName,EFileWrite);
       
   642 		if (r==KErrNone)
       
   643 			break;
       
   644 		fileName.SetLength(fileName.Length()-1);
       
   645 		}
       
   646 	
       
   647 	f.Close();
       
   648 	test.Printf(_L("Added filename %S\n"),&fileName);
       
   649 	r=f.Open(TheFs,fileName,EFileRead);
       
   650 	test(r==KErrNone);
       
   651 	f.Close();
       
   652 
       
   653 	CFileMan* fMan=CFileMan::NewL(TheFs);
       
   654 	r=fMan->RmDir(_L("\\F32-TST\\MAXNAMELEN\\"));
       
   655 	test(r==KErrNone);
       
   656 	delete fMan;
       
   657 
       
   658 	r=f.Open(TheFs,fileName,EFileRead);
       
   659 	test(r==KErrPathNotFound);
       
   660 	r=TheFs.SetSessionPath(oldSessionPath);
       
   661 	test(r==KErrNone);
       
   662 	}
       
   663 
       
   664 LOCAL_C void testErrorReturnValues()
       
   665 //
       
   666 // Test error return values
       
   667 //
       
   668 	{
       
   669 
       
   670     TInt r;
       
   671 	test.Next(_L("Create folder with the name of an existing file"));
       
   672 	MakeFile(_L("\\BLUE"));
       
   673     if (!IsTestingLFFS())
       
   674         { //FIXME: Bad error codes from LFFS
       
   675 	    r=TheFs.MkDir(_L("\\BLUE\\"));
       
   676         test(r==KErrAccessDenied);
       
   677         MakeFile(_L("\\RED\\BLUE"));
       
   678         r=TheFs.MkDir(_L("\\RED\\BLUE\\"));
       
   679         test(r==KErrAccessDenied);
       
   680         r=TheFs.MkDirAll(_L("\\BLUE\\GREEN\\ORANGE\\"));
       
   681         test(r==KErrAccessDenied);
       
   682         }
       
   683 
       
   684 	test.Next(_L("Create folder with the name of an existing folder"));
       
   685 	MakeDir(_L("\\VOLVO\\"));
       
   686 	r=TheFs.MkDir(_L("\\VOLVO\\"));
       
   687 	test(r==KErrAlreadyExists);
       
   688 	MakeDir(_L("\\FORD\\VOLKSWAGEN\\"));
       
   689 	r=TheFs.MkDirAll(_L("\\ford\\volkswagen\\"));
       
   690 	test(r==KErrAlreadyExists);
       
   691 
       
   692 	RFile f;
       
   693     if (!IsTestingLFFS())
       
   694         { //FIXME Bad error codes from LFFS
       
   695 	    test.Next(_L("Create a file with the name of an existing folder"));
       
   696 	    r=f.Create(TheFs,_L("\\VOLVO"),EFileRead|EFileWrite);
       
   697 	    test(r==KErrAccessDenied);
       
   698 	    r=f.Replace(TheFs,_L("\\VOLVO"),EFileRead|EFileWrite);
       
   699 	    test(r==KErrAccessDenied);
       
   700 	    r=f.Open(TheFs,_L("\\VOLVO"),EFileRead|EFileWrite);
       
   701 	    test(r==KErrAccessDenied);
       
   702 	    r=f.Create(TheFs,_L("\\FORD\\VOLKSWAGEN"),EFileRead|EFileWrite);
       
   703 	    test(r==KErrAccessDenied);
       
   704 	    r=f.Replace(TheFs,_L("\\FORD\\VOLKSWAGEN"),EFileRead|EFileWrite);
       
   705 	    test(r==KErrAccessDenied);
       
   706 	    r=f.Open(TheFs,_L("\\FORD\\VOLKSWAGEN"),EFileRead|EFileWrite);
       
   707 	    test(r==KErrAccessDenied);
       
   708         }
       
   709 
       
   710 	test.Next(_L("Create a file with the name of an existing file"));
       
   711 	r=f.Create(TheFs,_L("\\BLUE"),EFileRead|EFileWrite);
       
   712 	test(r==KErrAlreadyExists);
       
   713 	}
       
   714 
       
   715 LOCAL_C void testSetEntry()
       
   716 //
       
   717 // Test set entry
       
   718 //
       
   719 	{
       
   720 
       
   721 	test.Next(_L("Test SetEntry"));
       
   722 //	TDateTime dateTime(1968,ENovember,19,12,59,0,0); Year must be > 1980
       
   723 	TDateTime dateTime(1981,ENovember,19,12,59,0,0);
       
   724 	TTime time(dateTime);
       
   725 	MakeFile(_L("DUMENTRY."));
       
   726 	
       
   727 	RFile f;
       
   728 	TInt r=f.Open(TheFs,_L("dumentry"),EFileRead);
       
   729 	test(r==KErrNone);
       
   730 	r=TheFs.SetEntry(_L("dumentry."),time,KEntryAttReadOnly,KEntryAttArchive);
       
   731 	test(r==KErrInUse);
       
   732 	f.Close();
       
   733 	
       
   734 	r=TheFs.SetEntry(_L("dumentry."),time,KEntryAttReadOnly,KEntryAttArchive);
       
   735 	test(r==KErrNone);
       
   736 	CheckEntry(_L("DUMEntry"),KEntryAttReadOnly,TTime(dateTime));
       
   737 	r=TheFs.SetEntry(_L("dumentry."),time,0,KEntryAttReadOnly);
       
   738 	test(r==KErrNone);
       
   739 	CheckEntry(_L("DUMEntry"),0,TTime(dateTime));
       
   740 	r=TheFs.SetEntry(_L("dumentry."),time,KEntryAttDir,0);
       
   741 	test(r==KErrNone);
       
   742 	CheckEntry(_L("DUMEntry"),0,TTime(dateTime));
       
   743 	r=TheFs.SetEntry(_L("dumentry."),time,KEntryAttVolume,0);
       
   744 	test(r==KErrNone);
       
   745 	CheckEntry(_L("DUMEntry"),0,TTime(dateTime));
       
   746 	r=TheFs.SetEntry(_L("dumentry."),time,KEntryAttRemote,0);
       
   747 	test(r==KErrNone);
       
   748 	CheckEntry(_L("DUMEntry"),0,TTime(dateTime));
       
   749 	r=TheFs.SetEntry(_L("dumentry."),time,KEntryAttDir|KEntryAttVolume,0);
       
   750 	test(r==KErrNone);
       
   751 	CheckEntry(_L("DUMEntry"),0,TTime(dateTime));
       
   752 	r=TheFs.SetEntry(_L("dumentry."),time,KEntryAttDir|KEntryAttRemote,0);
       
   753 	test(r==KErrNone);
       
   754 	CheckEntry(_L("DUMEntry"),0,TTime(dateTime));
       
   755 	r=TheFs.SetEntry(_L("dumentry."),time,KEntryAttVolume|KEntryAttRemote,0);
       
   756 	test(r==KErrNone);
       
   757 	CheckEntry(_L("DUMEntry"),0,TTime(dateTime));
       
   758 	r=TheFs.SetEntry(_L("dumentry."),time,KEntryAttDir|KEntryAttVolume|KEntryAttRemote,0);
       
   759 	test(r==KErrNone);
       
   760 	CheckEntry(_L("DUMEntry"),0,TTime(dateTime));
       
   761 	r=TheFs.SetEntry(_L("dumentry."),time,0,KEntryAttDir);
       
   762 	test(r==KErrNone);
       
   763 	CheckEntry(_L("DUMEntry"),0,TTime(dateTime));
       
   764 	r=TheFs.SetEntry(_L("dumentry."),time,0,KEntryAttVolume);
       
   765 	test(r==KErrNone);
       
   766 	CheckEntry(_L("DUMEntry"),0,TTime(dateTime));
       
   767 	r=TheFs.SetEntry(_L("dumentry."),time,0,KEntryAttRemote);
       
   768 	test(r==KErrNone);
       
   769 	CheckEntry(_L("DUMEntry"),0,TTime(dateTime));
       
   770 	r=TheFs.SetEntry(_L("dumentry."),time,0,KEntryAttDir|KEntryAttVolume);
       
   771 	test(r==KErrNone);
       
   772 	CheckEntry(_L("DUMEntry"),0,TTime(dateTime));
       
   773 	r=TheFs.SetEntry(_L("dumentry."),time,0,KEntryAttDir|KEntryAttRemote);
       
   774 	test(r==KErrNone);
       
   775 	CheckEntry(_L("DUMEntry"),0,TTime(dateTime));
       
   776 	r=TheFs.SetEntry(_L("dumentry."),time,0,KEntryAttVolume|KEntryAttRemote);
       
   777 	test(r==KErrNone);
       
   778 	CheckEntry(_L("DUMEntry"),0,TTime(dateTime));
       
   779 	r=TheFs.SetEntry(_L("dumentry."),time,0,KEntryAttDir|KEntryAttVolume|KEntryAttRemote);
       
   780 	test(r==KErrNone);
       
   781 	CheckEntry(_L("DUMEntry"),0,TTime(dateTime));
       
   782 	r=TheFs.SetEntry(_L("dumentry."),time,KEntryAttDir,KEntryAttVolume);
       
   783 	test(r==KErrNone);
       
   784 	CheckEntry(_L("DUMEntry"),0,TTime(dateTime));
       
   785 	r=TheFs.SetEntry(_L("dumentry."),time,KEntryAttDir,KEntryAttRemote);
       
   786 	test(r==KErrNone);
       
   787 	CheckEntry(_L("DUMEntry"),0,TTime(dateTime));	
       
   788 	r=TheFs.SetEntry(_L("dumentry."),time,KEntryAttVolume,KEntryAttDir);
       
   789 	test(r==KErrNone);
       
   790 	CheckEntry(_L("DUMEntry"),0,TTime(dateTime));
       
   791 	r=TheFs.SetEntry(_L("dumentry."),time,KEntryAttVolume,KEntryAttRemote);
       
   792 	test(r==KErrNone);
       
   793 	CheckEntry(_L("DUMEntry"),0,TTime(dateTime));
       
   794 	r=TheFs.SetEntry(_L("dumentry."),time,KEntryAttRemote,KEntryAttDir);
       
   795 	test(r==KErrNone);
       
   796 	CheckEntry(_L("DUMEntry"),0,TTime(dateTime));
       
   797 	r=TheFs.SetEntry(_L("dumentry."),time,KEntryAttRemote,KEntryAttVolume);
       
   798 	test(r==KErrNone);
       
   799 	CheckEntry(_L("DUMEntry"),0,TTime(dateTime));
       
   800 
       
   801 	r=f.Open(TheFs,_L("dumentry"),EFileWrite);
       
   802 	test(r==KErrNone);	
       
   803 
       
   804 	r=f.SetAtt(KEntryAttDir,0);
       
   805 	test(r==KErrNone);
       
   806 	CheckEntry(_L("DUMEntry"),0,TTime(dateTime));
       
   807 	r=f.SetAtt(KEntryAttVolume,KEntryAttDir);
       
   808 	test(r==KErrNone);
       
   809 	CheckEntry(_L("DUMEntry"),0,TTime(dateTime));
       
   810 	f.Close();
       
   811 	r=TheFs.Delete(_L("dumEntry."));
       
   812 	test(r==KErrNone);
       
   813 
       
   814 	MakeDir(_L("\\DumEntry\\"));
       
   815 	r=TheFs.SetEntry(_L("\\dumentry\\"),time,KEntryAttReadOnly,KEntryAttArchive);
       
   816 	test(r==KErrNone);
       
   817 	CheckEntry(_L("\\DUMEntry"),KEntryAttReadOnly|KEntryAttDir,TTime(dateTime));
       
   818 	r=TheFs.SetEntry(_L("\\dumentry."),time,0,KEntryAttReadOnly);
       
   819 	test(r==KErrNone);
       
   820 	CheckEntry(_L("\\DUMEntry"),KEntryAttDir,TTime(dateTime));
       
   821 	r=TheFs.SetEntry(_L("\\dumentry"),time,KEntryAttDir,0);
       
   822 	test(r==KErrNone);
       
   823 	CheckEntry(_L("\\DUMEntry"),KEntryAttDir,TTime(dateTime));
       
   824 	r=TheFs.SetEntry(_L("\\dumentry"),time,KEntryAttVolume,0);
       
   825 	test(r==KErrNone);
       
   826 	CheckEntry(_L("\\DUMEntry"),KEntryAttDir,TTime(dateTime));
       
   827 	r=TheFs.SetEntry(_L("\\dumentry"),time,KEntryAttVolume|KEntryAttDir,0);
       
   828 	test(r==KErrNone);
       
   829 	CheckEntry(_L("\\DUMEntry"),KEntryAttDir,TTime(dateTime));
       
   830 	r=TheFs.SetEntry(_L("\\dumentry"),time,0,KEntryAttVolume|KEntryAttDir);
       
   831 	test(r==KErrNone);
       
   832 	CheckEntry(_L("\\DUMEntry"),KEntryAttDir,TTime(dateTime));
       
   833 	r=TheFs.SetEntry(_L("\\dumentry"),time,0,KEntryAttVolume);
       
   834 	test(r==KErrNone);
       
   835 	CheckEntry(_L("\\DUMEntry"),KEntryAttDir,TTime(dateTime));
       
   836 	r=TheFs.SetEntry(_L("\\dumentry"),time,0,KEntryAttDir);
       
   837 	test(r==KErrNone);
       
   838 	CheckEntry(_L("\\DUMEntry"),KEntryAttDir,TTime(dateTime));
       
   839 	r=TheFs.SetEntry(_L("\\dumentry"),time,KEntryAttVolume,KEntryAttDir);
       
   840 	test(r==KErrNone);
       
   841 	CheckEntry(_L("\\DUMEntry"),KEntryAttDir,TTime(dateTime));
       
   842 	r=TheFs.SetEntry(_L("\\dumentry"),time,KEntryAttDir,KEntryAttVolume);
       
   843 	test(r==KErrNone);
       
   844 	CheckEntry(_L("\\DUMEntry"),KEntryAttDir,TTime(dateTime));
       
   845 	r=TheFs.RmDir(_L("\\dumEntry\\"));
       
   846 	test(r==KErrNone);
       
   847 	}
       
   848 
       
   849 	
       
   850 LOCAL_C void testSetFileAttributes()
       
   851 //
       
   852 // Test RFile::SetAtt() and RFile::Set()
       
   853 //
       
   854 	{
       
   855 //	First test RFile::SetAtt() function
       
   856 	
       
   857 	test.Next(_L("Test RFile::SetAtt()"));
       
   858 
       
   859 //	Create a file "TEMPFILE.TMP" and set attributes to hidden	
       
   860 	RFile file;
       
   861 	TInt r=file.Replace(TheFs,_L("TEMPFILE.TMP"),0);
       
   862 	test(r==KErrNone || r==KErrPathNotFound);	
       
   863 	r=file.SetAtt(KEntryAttHidden,0);
       
   864 	test(r==KErrNone);
       
   865 	file.Close();
       
   866 
       
   867 //	Check attributes are as set
       
   868 	file.Open(TheFs,_L("TEMPFILE.TMP"),EFileWrite);
       
   869 	TUint atts;
       
   870 	r=file.Att(atts);
       
   871 	test(r==KErrNone);
       
   872 	file.Close();
       
   873 	test(atts&KEntryAttHidden);
       
   874 
       
   875 //	Change attributes from hidden to system	
       
   876 	file.Open(TheFs,_L("TEMPFILE.TMP"),EFileWrite);
       
   877 	r=file.SetAtt(KEntryAttSystem,KEntryAttHidden);
       
   878 	test(r==KErrNone);
       
   879 	file.Close();
       
   880 
       
   881 //	Check attributes have been changed
       
   882 	file.Open(TheFs,_L("TEMPFILE.TMP"),EFileWrite);
       
   883 	r=file.Att(atts);
       
   884 	test(r==KErrNone);
       
   885 	file.Close();
       
   886 	test(atts&KEntryAttSystem);
       
   887 
       
   888 //	Change attributes to normal
       
   889 	file.Open(TheFs,_L("TEMPFILE.TMP"),EFileWrite);
       
   890 	r=file.SetAtt(KEntryAttNormal,KEntryAttSystem|KEntryAttArchive);
       
   891 	test(r==KErrNone);
       
   892 	file.Close();
       
   893 
       
   894 //	Check attributes have been changed
       
   895 	file.Open(TheFs,_L("TEMPFILE.TMP"),EFileWrite);
       
   896 	r=file.Att(atts);
       
   897 	test(r==KErrNone);
       
   898 	file.Close();
       
   899 	test(atts==KEntryAttNormal);
       
   900 
       
   901 //	Attempt to change attributes from normal file to directory	
       
   902 	file.Open(TheFs,_L("TEMPFILE.TMP"),EFileWrite);
       
   903 	r=file.SetAtt(KEntryAttDir,KEntryAttNormal);
       
   904 	test(r==KErrNone);	//	Returns KErrNone but DOESN'T change the file to a directory
       
   905 	file.Close();
       
   906 
       
   907 //	Check the file has not been changed to a directory
       
   908 	file.Open(TheFs,_L("TEMPFILE.TMP"),EFileWrite);
       
   909 	r=file.Att(atts);
       
   910 	test(r==KErrNone);
       
   911 	file.Close();
       
   912 	test((TInt)(atts&KEntryAttDir)==KErrNone);
       
   913 
       
   914 //	Change the attributes from normal file to hidden file
       
   915 	file.Open(TheFs,_L("TEMPFILE.TMP"),EFileWrite);
       
   916 	r=file.SetAtt(KEntryAttHidden,KEntryAttNormal);
       
   917 	test(r==KErrNone);
       
   918 	file.Close();
       
   919 
       
   920 //	Check the attributes have been changed
       
   921 	file.Open(TheFs,_L("TEMPFILE.TMP"),EFileWrite);
       
   922 	r=file.Att(atts);
       
   923 	test(r==KErrNone);
       
   924 	file.Close();
       
   925 	test(atts&KEntryAttHidden);
       
   926 
       
   927 //	Try to change the attributes from hidden file to volume	
       
   928 	file.Open(TheFs,_L("TEMPFILE.TMP"),EFileWrite);
       
   929 	r=file.SetAtt(KEntryAttVolume,KEntryAttHidden);
       
   930 	test(r==KErrNone);	//	Returns KErrNone but DOESN'T change the file to a volume
       
   931 	file.Close();
       
   932 
       
   933 //	Check that the hidden file has not been changed to a volume
       
   934 	file.Open(TheFs,_L("TEMPFILE.TMP"),EFileWrite);
       
   935 	r=file.Att(atts);
       
   936 	test(r==KErrNone);
       
   937 	file.Close();
       
   938 	test((TInt)(atts&KEntryAttVolume)==KErrNone);
       
   939 
       
   940 //	Test RFile::Set() function	
       
   941 	
       
   942 	test.Next(_L("Test RFile::Set()"));	
       
   943 
       
   944 //	Check attributes 
       
   945 	file.Open(TheFs,_L("TEMPFILE.TMP"),EFileWrite);
       
   946 	r=file.Att(atts);
       
   947 	test(r==KErrNone);
       
   948 	file.Close();
       
   949 	test(atts==KEntryAttNormal);
       
   950 
       
   951 //	Change attributes from hidden to system	- and change modification time
       
   952 	TDateTime dateTime(1998,EMay,25,18,23,0,0);
       
   953 	TTime modTime1(dateTime);
       
   954 	TTime retTime;
       
   955 	file.Open(TheFs,_L("TEMPFILE.TMP"),EFileWrite);
       
   956 	r=file.Set(modTime1,KEntryAttSystem,KEntryAttNormal);
       
   957 	test(r==KErrNone);
       
   958 	file.Close();
       
   959 
       
   960 //	Check attributes have been changed
       
   961 	file.Open(TheFs,_L("TEMPFILE.TMP"),EFileWrite);
       
   962 	r=file.Att(atts);
       
   963 	test(r==KErrNone);
       
   964 	r=file.Modified(retTime);
       
   965 	test(r==KErrNone);
       
   966 	file.Close();
       
   967 	test(atts&KEntryAttSystem);
       
   968 	test(retTime==modTime1);
       
   969 
       
   970 //	Change attributes to normal - and change modification time
       
   971 	dateTime.Set(1997,EMay,24,17,25,0,0);
       
   972 	TTime modTime2(dateTime);
       
   973 	file.Open(TheFs,_L("TEMPFILE.TMP"),EFileWrite);
       
   974 	r=file.Set(modTime2,KEntryAttNormal,KEntryAttSystem|KEntryAttArchive);
       
   975 	test(r==KErrNone);
       
   976 	file.Close();
       
   977 
       
   978 //	Check attributes have been changed
       
   979 	file.Open(TheFs,_L("TEMPFILE.TMP"),EFileWrite);
       
   980 	r=file.Att(atts);
       
   981 	test(r==KErrNone);
       
   982 	r=file.Modified(retTime);
       
   983 	test(r==KErrNone);
       
   984 	file.Close();
       
   985 	test(atts==KEntryAttNormal);
       
   986 	test(retTime==modTime2);
       
   987 
       
   988 //	Attempt to change attributes from normal file to directory	
       
   989 	file.Open(TheFs,_L("TEMPFILE.TMP"),EFileWrite);
       
   990 	r=file.Set(modTime1,KEntryAttDir,KEntryAttNormal);
       
   991 	test(r==KErrNone);	//	Returns KErrNone but DOESN'T change the file to a directory
       
   992 	file.Close();
       
   993 
       
   994 //	Check the file has not been changed to a directory
       
   995 	file.Open(TheFs,_L("TEMPFILE.TMP"),EFileWrite);
       
   996 	r=file.Att(atts);
       
   997 	test(r==KErrNone);
       
   998 	r=file.Modified(retTime);
       
   999 	test(r==KErrNone);
       
  1000 	file.Close();
       
  1001 	test((TInt)(atts&KEntryAttDir)==KErrNone);
       
  1002 	test(retTime==modTime1);//	Modification time should have been set successfully
       
  1003 
       
  1004 //	Change the attributes from normal file to hidden file - and change modification time
       
  1005 	file.Open(TheFs,_L("TEMPFILE.TMP"),EFileWrite);
       
  1006 	r=file.Set(modTime1,KEntryAttHidden,KEntryAttNormal);
       
  1007 	test(r==KErrNone);
       
  1008 	file.Close();
       
  1009 
       
  1010 //	Check the attributes have been changed
       
  1011 	file.Open(TheFs,_L("TEMPFILE.TMP"),EFileWrite);
       
  1012 	r=file.Att(atts);
       
  1013 	test(r==KErrNone);
       
  1014 	r=file.Modified(retTime);
       
  1015 	file.Close();
       
  1016 	test(atts&KEntryAttHidden);
       
  1017 	test(retTime==modTime1);
       
  1018 
       
  1019 //	Try to change the attributes from hidden file to volume	
       
  1020 	file.Open(TheFs,_L("TEMPFILE.TMP"),EFileWrite);
       
  1021 	r=file.Set(modTime2,KEntryAttVolume,KEntryAttHidden);
       
  1022 	test(r==KErrNone);	//	Returns KErrNone but DOESN'T change the file to a volume
       
  1023 	file.Close();
       
  1024 
       
  1025 //	Check that the hidden file has not been changed to a volume
       
  1026 	file.Open(TheFs,_L("TEMPFILE.TMP"),EFileWrite);
       
  1027 	r=file.Att(atts);
       
  1028 	test(r==KErrNone);
       
  1029 	r=file.Modified(retTime);
       
  1030 	test(r==KErrNone);
       
  1031 	file.Close();
       
  1032 	test((TInt)(atts&KEntryAttVolume)==KErrNone);
       
  1033 	test(retTime==modTime2);	//	Modification time should have been set successfully
       
  1034 	
       
  1035 	r=TheFs.Delete(_L("TEMPFILE.TMP"));
       
  1036 	
       
  1037 	}	
       
  1038 
       
  1039 
       
  1040 GLDEF_C void CallTestsL()
       
  1041 //
       
  1042 // Do tests relative to session path
       
  1043 //
       
  1044 	{
       
  1045 
       
  1046 	TurnAllocFailureOff();
       
  1047 	CreateTestDirectory(_L("\\F32-TST\\TNMBS\\"));
       
  1048 	testMkDirRmDir(); // Must come first
       
  1049 	testSetEntry();
       
  1050 	testSetFileAttributes();
       
  1051 	testRename();
       
  1052 	TestLongFileName();
       
  1053 	testRenameRegression();
       
  1054 	testRenameCase();
       
  1055 	testMaxNameLength();
       
  1056 	testEntry();
       
  1057 	testReplace();
       
  1058 	testErrorReturnValues();
       
  1059 	DeleteTestDirectory();
       
  1060 	}
       
  1061