kerneltest/f32test/server/t_file.cpp
branchRCL_3
changeset 44 3e88ff8f41d5
parent 43 c1f20ce4abcf
equal deleted inserted replaced
43:c1f20ce4abcf 44:3e88ff8f41d5
    48 	KErrAccessDenied to the write operation but EFat returns
    48 	KErrAccessDenied to the write operation but EFat returns
    49 	KErrNone...
    49 	KErrNone...
    50 
    50 
    51 	RFile f1;
    51 	RFile f1;
    52 	TInt r=f1.Open(TheFs,_L("TESTER"),EFileRead|EFileShareAny);
    52 	TInt r=f1.Open(TheFs,_L("TESTER"),EFileRead|EFileShareAny);
    53 	test_KErrNone(r);
    53 	test(r==KErrNone);
    54 	RFile f2;
    54 	RFile f2;
    55 	r=f2.Open(TheFs,_L("TESTER"),EFileWrite|EFileShareAny);
    55 	r=f2.Open(TheFs,_L("TESTER"),EFileWrite|EFileShareAny);
    56 	test_KErrNone(r);
    56 	test(r==KErrNone);
    57 
    57 
    58 	r=f2.Write(_L("0"));
    58 	r=f2.Write(_L("0"));
    59 	test.Printf(_L("returned %d"),r);
    59 	test.Printf(_L("returned %d"),r);
    60 
    60 
    61 	f1.Close();
    61 	f1.Close();
    62 	f2.Close();
    62 	f2.Close();
    63 
    63 
    64 	r=TheFs.Delete(_L("TESTER"));
    64 	r=TheFs.Delete(_L("TESTER"));
    65 	test_KErrNone(r);
    65 	test(r==KErrNone);
    66 */
    66 */
    67 
    67 
    68 	RFile f1;
    68 	RFile f1;
    69 	TInt r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
    69 	TInt r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
    70 	test_KErrNone(r);
    70 	test(r==KErrNone);
    71 	RFile f2;
    71 	RFile f2;
    72 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
    72 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
    73 	test_Value(r, r == KErrInUse);
    73 	test(r==KErrInUse);
    74 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
    74 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
    75 	test_Value(r, r == KErrInUse);
    75 	test(r==KErrInUse);
    76 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
    76 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
    77 	test_Value(r, r == KErrInUse);
    77 	test(r==KErrInUse);
    78 	f1.Close();
    78 	f1.Close();
    79 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileWrite|EFileShareExclusive);
    79 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileWrite|EFileShareExclusive);
    80 	test_KErrNone(r);
    80 	test(r==KErrNone);
    81 	f1.Close();
    81 	f1.Close();
    82 
    82 
    83 	test.Next(_L("Test readers only sharing"));
    83 	test.Next(_L("Test readers only sharing"));
    84 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileWrite|EFileShareReadersOnly);
    84 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileWrite|EFileShareReadersOnly);
    85 	test_Value(r, r == KErrArgument);
    85 	test(r==KErrArgument);
    86 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
    86 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
    87 	test_KErrNone(r);
    87 	test(r==KErrNone);
    88 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
    88 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
    89 	test_Value(r, r == KErrInUse);
    89 	test(r==KErrInUse);
    90 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
    90 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
    91 	test_Value(r, r == KErrInUse);
    91 	test(r==KErrInUse);
    92 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileWrite|EFileShareReadersOnly);
    92 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileWrite|EFileShareReadersOnly);
    93 	test_Value(r, r == KErrArgument);
    93 	test(r==KErrArgument);
    94 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
    94 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
    95 	test_KErrNone(r);
    95 	test(r==KErrNone);
    96 	f1.Close();
    96 	f1.Close();
    97 	f2.Close();
    97 	f2.Close();
    98 
    98 
    99 	test.Next(_L("Test any sharing"));
    99 	test.Next(_L("Test any sharing"));
   100 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileWrite|EFileShareAny);
   100 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileWrite|EFileShareAny);
   101 	test_KErrNone(r);
   101 	test(r==KErrNone);
   102 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
   102 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
   103 	test_Value(r, r == KErrInUse);
   103 	test(r==KErrInUse);
   104 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
   104 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
   105 	test_Value(r, r == KErrInUse);
   105 	test(r==KErrInUse);
   106 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
   106 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
   107 	test_KErrNone(r);
   107 	test(r==KErrNone);
   108 	f1.Close();
   108 	f1.Close();
   109 	f2.Close();
   109 	f2.Close();
   110 
   110 
   111 	test.End();
   111 	test.End();
   112 	}
   112 	}
   119 
   119 
   120 	test.Start(_L("Test change mode"));
   120 	test.Start(_L("Test change mode"));
   121 	RFile f1;
   121 	RFile f1;
   122 	RFile f2;
   122 	RFile f2;
   123 	TInt r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
   123 	TInt r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
   124 	test_KErrNone(r); // Opened exclusive
   124 	test(r==KErrNone); // Opened exclusive
   125 	r=f1.ChangeMode(EFileShareReadersOnly);
   125 	r=f1.ChangeMode(EFileShareReadersOnly);
   126 	test_KErrNone(r); // Change to readers only
   126 	test(r==KErrNone); // Change to readers only
   127 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
   127 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
   128 	test_KErrNone(r); // Open as reader
   128 	test(r==KErrNone); // Open as reader
   129 	r=f1.ChangeMode(EFileShareExclusive);
   129 	r=f1.ChangeMode(EFileShareExclusive);
   130 	test_Value(r, r == KErrAccessDenied); // Change back to exclusive fails
   130 	test(r==KErrAccessDenied); // Change back to exclusive fails
   131 	r=f2.ChangeMode(EFileShareExclusive);
   131 	r=f2.ChangeMode(EFileShareExclusive);
   132 	test_Value(r, r == KErrAccessDenied); // Change to exclusive fails
   132 	test(r==KErrAccessDenied); // Change to exclusive fails
   133 	f1.Close(); // Close other reader
   133 	f1.Close(); // Close other reader
   134 	r=f2.ChangeMode(EFileShareExclusive);
   134 	r=f2.ChangeMode(EFileShareExclusive);
   135 	test_KErrNone(r); // Change to exclusive succeeds.
   135 	test(r==KErrNone); // Change to exclusive succeeds.
   136 	f2.Close();
   136 	f2.Close();
   137 
   137 
   138 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
   138 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
   139 	test_KErrNone(r); // Opened readers only
   139 	test(r==KErrNone); // Opened readers only
   140 	r=f1.ChangeMode(EFileShareExclusive);
   140 	r=f1.ChangeMode(EFileShareExclusive);
   141 	test_KErrNone(r); // Change to exclusive
   141 	test(r==KErrNone); // Change to exclusive
   142 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
   142 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
   143 	test_Value(r, r == KErrInUse); // Open as reader fails
   143 	test(r==KErrInUse); // Open as reader fails
   144 	r=f1.ChangeMode(EFileShareReadersOnly);
   144 	r=f1.ChangeMode(EFileShareReadersOnly);
   145 	test_KErrNone(r); // Change to readers only
   145 	test(r==KErrNone); // Change to readers only
   146 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
   146 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
   147 	test_KErrNone(r); // Open as reader
   147 	test(r==KErrNone); // Open as reader
   148 	r=f1.ChangeMode(EFileShareExclusive);
   148 	r=f1.ChangeMode(EFileShareExclusive);
   149 	test_Value(r, r == KErrAccessDenied); // Change back to exclusive fails
   149 	test(r==KErrAccessDenied); // Change back to exclusive fails
   150 	r=f2.ChangeMode(EFileShareExclusive);
   150 	r=f2.ChangeMode(EFileShareExclusive);
   151 	test_Value(r, r == KErrAccessDenied); // Change to exclusive fails
   151 	test(r==KErrAccessDenied); // Change to exclusive fails
   152 	f1.Close(); // Close other reader
   152 	f1.Close(); // Close other reader
   153 	r=f2.ChangeMode(EFileShareExclusive);
   153 	r=f2.ChangeMode(EFileShareExclusive);
   154 	test_KErrNone(r); // Change to exclusive succeeds.
   154 	test(r==KErrNone); // Change to exclusive succeeds.
   155 	f2.Close();
   155 	f2.Close();
   156 
   156 
   157 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileWrite|EFileShareExclusive);
   157 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileWrite|EFileShareExclusive);
   158 	test_KErrNone(r); // Opened exclusive for writing
   158 	test(r==KErrNone); // Opened exclusive for writing
   159 	r=f1.ChangeMode(EFileShareReadersOnly);
   159 	r=f1.ChangeMode(EFileShareReadersOnly);
   160 	test_Value(r, r == KErrAccessDenied); // Change to readers fails
   160 	test(r==KErrAccessDenied); // Change to readers fails
   161 	r=f1.ChangeMode(EFileShareExclusive);
   161 	r=f1.ChangeMode(EFileShareExclusive);
   162 	test_KErrNone(r); // No change ok
   162 	test(r==KErrNone); // No change ok
   163 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
   163 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
   164 	test_Value(r, r == KErrInUse); // Open as reader fails
   164 	test(r==KErrInUse); // Open as reader fails
   165 	f1.Close();
   165 	f1.Close();
   166 
   166 
   167 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
   167 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
   168 	test_KErrNone(r); // Opened share any
   168 	test(r==KErrNone); // Opened share any
   169 	r=f1.ChangeMode(EFileShareExclusive);
   169 	r=f1.ChangeMode(EFileShareExclusive);
   170 	test_Value(r, r == KErrAccessDenied); // Change to exclusive fails
   170 	test(r==KErrAccessDenied); // Change to exclusive fails
   171 	r=f1.ChangeMode(EFileShareReadersOnly);
   171 	r=f1.ChangeMode(EFileShareReadersOnly);
   172 	test_Value(r, r == KErrAccessDenied); // Change to readers only fails
   172 	test(r==KErrAccessDenied); // Change to readers only fails
   173 	f1.Close();
   173 	f1.Close();
   174 
   174 
   175 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
   175 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
   176 	test_KErrNone(r); // Opened exclusive
   176 	test(r==KErrNone); // Opened exclusive
   177 	r=f1.ChangeMode(EFileShareAny);
   177 	r=f1.ChangeMode(EFileShareAny);
   178 	test_Value(r, r == KErrArgument); // Change to share any fails KErrArgument
   178 	test(r==KErrArgument); // Change to share any fails KErrArgument
   179 	r=f1.ChangeMode((TFileMode)42);
   179 	r=f1.ChangeMode((TFileMode)42);
   180 	test_Value(r, r == KErrArgument); // Change to random value fails
   180 	test(r==KErrArgument); // Change to random value fails
   181 	f1.Close();
   181 	f1.Close();
   182 	test.End();
   182 	test.End();
   183 	}
   183 	}
   184 
   184 
   185 static void testReadFile()
   185 static void testReadFile()
   188 //
   188 //
   189 	{
   189 	{
   190 
   190 
   191 	test.Start(_L("Test read file"));
   191 	test.Start(_L("Test read file"));
   192 	RFile f,ZFile;
   192 	RFile f,ZFile;
   193 	
   193 	TInt r=f.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText);
   194     TInt r=f.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText);
   194 	test(r==KErrNone);
   195 	test_KErrNone(r);
   195 	TFileName fn = _L("Z:\\TEST\\T_FILE.CPP");
   196 	
       
   197     TFileName fn = _L("Z:\\TEST\\T_FILE.CPP");
       
   198 	fn[0] = gExeFileName[0];
   196 	fn[0] = gExeFileName[0];
   199 	
   197 	r=ZFile.Open(TheFs,fn,EFileStreamText);
   200     r=ZFile.Open(TheFs,fn,EFileStreamText);
   198 	test(r==KErrNone);
   201 	test_KErrNone(r);
       
   202 
   199 
   203 	// check the file on the Z: drive his read-only
   200 	// check the file on the Z: drive his read-only
   204 	TEntry fileAtt;
   201 	TEntry fileAtt;
   205 	r=TheFs.Entry(fn,fileAtt);
   202 	r=TheFs.Entry(fn,fileAtt);
   206 	test_KErrNone(r);
   203 	test_KErrNone(r);
   207 	test((fileAtt.iAtt & KEntryAttReadOnly) == KEntryAttReadOnly);
   204 	test((fileAtt.iAtt & KEntryAttReadOnly) == KEntryAttReadOnly);
   208 
   205 
   209 
   206 
   210 	test.Next(_L("Read file"));
   207 	test.Next(_L("Read file"));
   211 	TBuf8<0x100> a,b;
   208 	TBuf8<0x100> a,b;
   212 	
   209 	FOREVER
   213     for(;;)
       
   214 		{
   210 		{
   215 		r=f.Read(b);
   211 		r=f.Read(b);
   216 		test_KErrNone(r);
   212 		test(r==KErrNone);
   217 		
   213 		r=ZFile.Read(a);
   218         r=ZFile.Read(a);
   214 		test(r==KErrNone);
   219 		test_KErrNone(r);
   215 		test(a==b);
   220 		
   216 		if (b.Length()<b.MaxLength())
   221         test(CompareBuffers(a, b));
       
   222 		
       
   223         if (b.Length()<b.MaxLength())
       
   224 			break;
   217 			break;
   225 		}
   218 		}
   226 
       
   227 	b.SetLength(10);
   219 	b.SetLength(10);
   228 	r=f.Read(b);
   220 	r=f.Read(b);
   229 	test_KErrNone(r);
   221 	test(r==KErrNone);
   230 	test(b.Length()==0);
   222 	test(b.Length()==0);
   231 	f.Close();
   223 	f.Close();
   232 	ZFile.Close();
   224 	ZFile.Close();
   233 
   225 
   234 	test.Next(_L("Read way beyond the end of the file"));
   226 	test.Next(_L("Read way beyond the end of the file"));
   235 	r=f.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText);
   227 	r=f.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText);
   236 	test_KErrNone(r);
   228 	test(r==KErrNone);
   237 	r=f.Read(3000000,gBuf);
   229 	r=f.Read(3000000,gBuf);
   238 	test_KErrNone(r);
   230 	test(r==KErrNone);
   239 	f.Close();
   231 	f.Close();
   240 
   232 
   241 	test.Next(_L("Write way beyond the end of the file"));
   233 	test.Next(_L("Write way beyond the end of the file"));
   242 	r=f.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileWrite);
   234 	r=f.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileWrite);
   243 	test_KErrNone(r);
   235 	test(r==KErrNone);
   244 	gBuf.SetLength(10);
   236 	gBuf.SetLength(10);
   245 	r=f.Write(3000000,gBuf);
   237 	r=f.Write(3000000,gBuf);
   246 	test_KErrNone(r);
   238 	test(r==KErrNone);
   247 	f.Close();
   239 	f.Close();
   248 	test.End();
   240 	test.End();
   249 	}
   241 	}
   250 
   242 
   251 static void testMultipleReadFile()
   243 static void testMultipleReadFile()
   253 // Test multiple read file handling.
   245 // Test multiple read file handling.
   254 //
   246 //
   255 	{
   247 	{
   256 
   248 
   257 	test.Start(_L("Test multiple read file"));
   249 	test.Start(_L("Test multiple read file"));
   258 	
   250 	RFile f1;
   259     RFile f1;
       
   260 	TInt r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
   251 	TInt r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
   261 	test_KErrNone(r);
   252 	test(r==KErrNone);
   262 	
   253 	RFile f2;
   263     RFile f2;
       
   264 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
   254 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
   265 	test_KErrNone(r);
   255 	test(r==KErrNone);
   266 
   256 
   267 	test.Next(_L("Read file"));
   257 	test.Next(_L("Read file"));
   268 	
   258 	FOREVER
   269     TBuf8<0x100> b1;
       
   270     TBuf8<0x100> b2;
       
   271     
       
   272     for(;;)
       
   273 		{
   259 		{
   274         r=f1.Read(b1);
   260 		TBuf8<0x100> b1;
   275 		test_KErrNone(r);
   261 		r=f1.Read(b1);
   276         
   262 		test(r==KErrNone);
       
   263 		TBuf8<0x100> b2;
   277 		r=f2.Read(b2);
   264 		r=f2.Read(b2);
   278 		test_KErrNone(r);
   265 		test(r==KErrNone);
   279 		
   266 		test(b1==b2);
   280         test(CompareBuffers(b1, b2));
       
   281 
       
   282 		if (b1.Length()<b1.MaxLength())
   267 		if (b1.Length()<b1.MaxLength())
   283 			break;
   268 			break;
   284 		}
   269 		}
   285 
   270 
   286 	test.Next(_L("Close file"));
   271 	test.Next(_L("Close file"));
   300 	TFileName fn = _L("File.File");
   285 	TFileName fn = _L("File.File");
   301 	TBuf8<16> testData=_L8("testData");
   286 	TBuf8<16> testData=_L8("testData");
   302 
   287 
   303 	// write test 1
   288 	// write test 1
   304 	TInt r=file.Replace(TheFs,fn,EFileStreamText);
   289 	TInt r=file.Replace(TheFs,fn,EFileStreamText);
   305 	test_KErrNone(r);
   290 	test(r==KErrNone);
   306 
   291 
   307 	test.Next(_L("Write file"));
   292 	test.Next(_L("Write file"));
   308 
   293 
   309 	r=file.Write(testData);
   294 	r=file.Write(testData);
   310 	test_KErrNone(r);
   295 	test(r==KErrNone);
   311 
   296 
   312 	file.Close();
   297 	file.Close();
   313 
   298 
   314 	// test write modes
   299 	// test write modes
   315 	// test writing with EFileRead
   300 	// test writing with EFileRead
   316 	r=file.Open(TheFs,fn,EFileStreamText|EFileRead);
   301 	r=file.Open(TheFs,fn,EFileStreamText|EFileRead);
   317 	test_KErrNone(r);
   302 	test(r==KErrNone);
   318 
   303 
   319 	test.Next(_L("Write file"));
   304 	test.Next(_L("Write file"));
   320 	r=file.Write(testData);
   305 	r=file.Write(testData);
   321 	test_Value(r, r == KErrAccessDenied);
   306 	test(r==KErrAccessDenied);
   322 	file.Close();
   307 	file.Close();
   323 
   308 
   324 	// test writing with EFileWrite
   309 	// test writing with EFileWrite
   325 	r=file.Open(TheFs,fn,EFileStreamText|EFileWrite);
   310 	r=file.Open(TheFs,fn,EFileStreamText|EFileWrite);
   326 	test_KErrNone(r);
   311 	test(r==KErrNone);
   327 
   312 
   328 	test.Next(_L("Write file"));
   313 	test.Next(_L("Write file"));
   329 	r=file.Write(testData);
   314 	r=file.Write(testData);
   330 	test_KErrNone(r);
   315 	test(r==KErrNone);
   331 	file.Close();
   316 	file.Close();
   332 
   317 
   333 	// test writing with share mode EFileShareExclusive
   318 	// test writing with share mode EFileShareExclusive
   334 	r=file.Open(TheFs,fn,EFileStreamText|EFileWrite|EFileShareExclusive);
   319 	r=file.Open(TheFs,fn,EFileStreamText|EFileWrite|EFileShareExclusive);
   335 	test_KErrNone(r);
   320 	test(r==KErrNone);
   336 
   321 
   337 	test.Next(_L("Write file"));
   322 	test.Next(_L("Write file"));
   338 	r=file.Write(testData);
   323 	r=file.Write(testData);
   339 	test_KErrNone(r);
   324 	test(r==KErrNone);
   340 	file.Close();
   325 	file.Close();
   341 
   326 
   342 	// test writing with share mode EFileShareReadersOnly (fails with KErrArgument)
   327 	// test writing with share mode EFileShareReadersOnly (fails with KErrArgument)
   343 	r=file.Open(TheFs,fn,EFileStreamText|EFileWrite|EFileShareReadersOnly);
   328 	r=file.Open(TheFs,fn,EFileStreamText|EFileWrite|EFileShareReadersOnly);
   344 	test_Value(r, r == KErrArgument);
   329 	test(r==KErrArgument);
   345 
   330 
   346 	// test writing with share mode EFileShareReadersOrWriters
   331 	// test writing with share mode EFileShareReadersOrWriters
   347 	r=file.Open(TheFs,fn,EFileStreamText|EFileWrite|EFileShareReadersOrWriters);
   332 	r=file.Open(TheFs,fn,EFileStreamText|EFileWrite|EFileShareReadersOrWriters);
   348 	test_KErrNone(r);
   333 	test(r==KErrNone);
   349 
   334 
   350 	test.Next(_L("Write file"));
   335 	test.Next(_L("Write file"));
   351 	r=file.Write(testData);
   336 	r=file.Write(testData);
   352 	test_KErrNone(r);
   337 	test(r==KErrNone);
   353 	file.Close();
   338 	file.Close();
   354 
   339 
   355 	// test writing with share mode EFileShareAny
   340 	// test writing with share mode EFileShareAny
   356 	r=file.Open(TheFs,fn,EFileStreamText|EFileWrite|EFileShareAny);
   341 	r=file.Open(TheFs,fn,EFileStreamText|EFileWrite|EFileShareAny);
   357 	test_KErrNone(r);
   342 	test(r==KErrNone);
   358 
   343 
   359 	test.Next(_L("Write file"));
   344 	test.Next(_L("Write file"));
   360 	r=file.Write(testData);
   345 	r=file.Write(testData);
   361 	test_KErrNone(r);
   346 	test(r==KErrNone);
   362 	file.Close();
   347 	file.Close();
   363 
   348 
   364 	// tidy up
   349 	// tidy up
   365 	r=TheFs.Delete(fn);
   350 	r=TheFs.Delete(fn);
   366 	test_KErrNone(r);
   351 	test(r==KErrNone);
   367 
   352 
   368 	test.End();
   353 	test.End();
   369 	}
   354 	}
   370 
   355 
   371 static void CopyFileToTestDirectory()
   356 static void CopyFileToTestDirectory()
   377 	TFileName fn = _L("Z:\\TEST\\T_FILE.CPP");
   362 	TFileName fn = _L("Z:\\TEST\\T_FILE.CPP");
   378 	fn[0] = gExeFileName[0];
   363 	fn[0] = gExeFileName[0];
   379 	TParse f;
   364 	TParse f;
   380 	TInt r;
   365 	TInt r;
   381 	r=TheFs.Parse(fn,f);
   366 	r=TheFs.Parse(fn,f);
   382 	test_KErrNone(r);
   367 	test(r==KErrNone);
   383 	TParse fCopy;
   368 	TParse fCopy;
   384 	r=TheFs.Parse(f.NameAndExt(),fCopy);
   369 	r=TheFs.Parse(f.NameAndExt(),fCopy);
   385 	test_KErrNone(r);
   370 	test(r==KErrNone);
   386 
   371 
   387 	RFile f1;
   372 	RFile f1;
   388 	r=f1.Open(TheFs,f.FullName(),EFileStreamText|EFileShareReadersOnly);
   373 	r=f1.Open(TheFs,f.FullName(),EFileStreamText|EFileShareReadersOnly);
   389 	test_KErrNone(r);
   374 	test(r==KErrNone);
   390 	RFile f2;
   375 	RFile f2;
   391 	r=f2.Replace(TheFs,fCopy.FullName(),EFileWrite);
   376 	r=f2.Replace(TheFs,fCopy.FullName(),EFileWrite);
   392 	test_KErrNone(r);
   377 	test(r==KErrNone);
   393 	TBuf8<512> copyBuf;
   378 	TBuf8<512> copyBuf;
   394 	TInt rem;
   379 	TInt rem;
   395 	r=f1.Size(rem);
   380 	r=f1.Size(rem);
   396 	test_KErrNone(r);
   381 	test(r==KErrNone);
   397 	TInt pos=0;
   382 	TInt pos=0;
   398 	while (rem)
   383 	while (rem)
   399 		{
   384 		{
   400 		TInt s=Min(rem,copyBuf.MaxSize());
   385 		TInt s=Min(rem,copyBuf.MaxSize());
   401 		r=f1.Read(pos,copyBuf,s);
   386 		r=f1.Read(pos,copyBuf,s);
   402 		test_KErrNone(r);
   387 		test(r==KErrNone);
   403 		test(copyBuf.Length()==s);
   388 		test(copyBuf.Length()==s);
   404 		r=f2.Write(pos,copyBuf,s);
   389 		r=f2.Write(pos,copyBuf,s);
   405 		test_KErrNone(r);
   390 		test(r==KErrNone);
   406 		pos+=s;
   391 		pos+=s;
   407 		rem-=s;
   392 		rem-=s;
   408 		}
   393 		}
   409 	f1.Close();
   394 	f1.Close();
   410 	f2.Close();
   395 	f2.Close();
   424 	record[3].Set(_L("Fourth record"));
   409 	record[3].Set(_L("Fourth record"));
   425 	record[4].Set(_L("Fifth record"));
   410 	record[4].Set(_L("Fifth record"));
   426 
   411 
   427 	RFile f;
   412 	RFile f;
   428 	TInt r=f.Replace(TheFs,_L("TEXTFILE.TXT"),0);
   413 	TInt r=f.Replace(TheFs,_L("TEXTFILE.TXT"),0);
   429 	test_KErrNone(r);
   414 	test(r==KErrNone);
   430 	TFileText textFile;
   415 	TFileText textFile;
   431 	textFile.Set(f);
   416 	textFile.Set(f);
   432 	TInt i=0;
   417 	TInt i=0;
   433 	for (i=0;i<5;i++)
   418 	for (i=0;i<5;i++)
   434 		{
   419 		{
   435 		r=textFile.Write(record[i]);
   420 		r=textFile.Write(record[i]);
   436 		test_KErrNone(r);
   421 		test(r==KErrNone);
   437 		}
   422 		}
   438 	r=textFile.Seek(ESeekStart);
   423 	r=textFile.Seek(ESeekStart);
   439 	test_KErrNone(r);
   424 	test(r==KErrNone);
   440 	TBuf<16> recBuf;
   425 	TBuf<16> recBuf;
   441 	for(i=0;i<5;i++)
   426 	for(i=0;i<5;i++)
   442 		{
   427 		{
   443 		r=textFile.Read(recBuf);
   428 		r=textFile.Read(recBuf);
   444 		test_KErrNone(r);
   429 		test(r==KErrNone);
   445 		test(recBuf==record[i]);
   430 		test(recBuf==record[i]);
   446 		}
   431 		}
   447 	r=textFile.Read(recBuf);
   432 	r=textFile.Read(recBuf);
   448 	test_Value(r, r == KErrEof);
   433 	test(r==KErrEof);
   449 	test(recBuf.Length()==0);
   434 	test(recBuf.Length()==0);
   450 	f.Close();
   435 	f.Close();
   451 
   436 
   452 	test.Next(_L("Test dosfile terminator"));
   437 	test.Next(_L("Test dosfile terminator"));
   453 	TPtrC8 trecord[7];
   438 	TPtrC8 trecord[7];
   465 	trecord[3].Set((TUint8*)tTextrecord[3].Ptr(),tTextrecord[3].Length()*sizeof(TText));
   450 	trecord[3].Set((TUint8*)tTextrecord[3].Ptr(),tTextrecord[3].Length()*sizeof(TText));
   466 	trecord[4].Set((TUint8*)tTextrecord[4].Ptr(),tTextrecord[4].Length()*sizeof(TText));
   451 	trecord[4].Set((TUint8*)tTextrecord[4].Ptr(),tTextrecord[4].Length()*sizeof(TText));
   467 	trecord[5].Set((TUint8*)tTextrecord[5].Ptr(),tTextrecord[5].Length()*sizeof(TText));
   452 	trecord[5].Set((TUint8*)tTextrecord[5].Ptr(),tTextrecord[5].Length()*sizeof(TText));
   468 	trecord[6].Set((TUint8*)tTextrecord[6].Ptr(),tTextrecord[6].Length()*sizeof(TText));
   453 	trecord[6].Set((TUint8*)tTextrecord[6].Ptr(),tTextrecord[6].Length()*sizeof(TText));
   469 	r=f.Replace(TheFs,_L("TEXTFILE.TXT"),0);
   454 	r=f.Replace(TheFs,_L("TEXTFILE.TXT"),0);
   470 	test_KErrNone(r);
   455 	test(r==KErrNone);
   471 	for(i=0;i<7;i++)
   456 	for(i=0;i<7;i++)
   472 		{
   457 		{
   473 		TBuf8<256> buf;
   458 		TBuf8<256> buf;
   474 		buf.Copy(trecord[i]);
   459 		buf.Copy(trecord[i]);
   475 		r=f.Write(buf);
   460 		r=f.Write(buf);
   476 		test_KErrNone(r);
   461 		test(r==KErrNone);
   477 		}
   462 		}
   478 	textFile.Set(f);
   463 	textFile.Set(f);
   479 	textFile.Seek(ESeekStart);
   464 	textFile.Seek(ESeekStart);
   480 	for(i=0;i<5;i++)
   465 	for(i=0;i<5;i++)
   481 		{
   466 		{
   482 		r=textFile.Read(recBuf);
   467 		r=textFile.Read(recBuf);
   483 		test_KErrNone(r);
   468 		test(r==KErrNone);
   484 		test(recBuf==record[i]);
   469 		test(recBuf==record[i]);
   485 		}
   470 		}
   486 	r=textFile.Read(recBuf);
   471 	r=textFile.Read(recBuf);
   487 	test_KErrNone(r);
   472 	test(r==KErrNone);
   488 	test(recBuf==_L("Sixth record"));
   473 	test(recBuf==_L("Sixth record"));
   489 	r=textFile.Read(recBuf);
   474 	r=textFile.Read(recBuf);
   490 	test_KErrNone(r);
   475 	test(r==KErrNone);
   491 	test(recBuf==_L("\rSeventh record"));
   476 	test(recBuf==_L("\rSeventh record"));
   492 	r=textFile.Read(recBuf);
   477 	r=textFile.Read(recBuf);
   493 	test_Value(r, r == KErrEof);
   478 	test(r==KErrEof);
   494 	test(recBuf.Length()==0);
   479 	test(recBuf.Length()==0);
   495 	f.Close();
   480 	f.Close();
   496 
   481 
   497 	test.Next(_L("Test read with bufferSize == dataSize"));
   482 	test.Next(_L("Test read with bufferSize == dataSize"));
   498 	r=f.Replace(TheFs,_L("TEXTFILE.TXT"),0);
   483 	r=f.Replace(TheFs,_L("TEXTFILE.TXT"),0);
   499 	test_KErrNone(r);
   484 	test(r==KErrNone);
   500 	record[0].Set(_L("1234567890123456"));
   485 	record[0].Set(_L("1234567890123456"));
   501 //	trecord[0].Set(_L8("1234567890123456\r\n"));
   486 //	trecord[0].Set(_L8("1234567890123456\r\n"));
   502 //	trecord[1].Set(_L8("1234567890123456\n"));
   487 //	trecord[1].Set(_L8("1234567890123456\n"));
   503 
   488 
   504 	TPtrC tmpTextrecord;
   489 	TPtrC tmpTextrecord;
   509 	trecord[1].Set((TUint8*)tmpTextrecord.Ptr(),tmpTextrecord.Length()*sizeof(TText));
   494 	trecord[1].Set((TUint8*)tmpTextrecord.Ptr(),tmpTextrecord.Length()*sizeof(TText));
   510 
   495 
   511 	for (i=0;i<2;i++)
   496 	for (i=0;i<2;i++)
   512 		{
   497 		{
   513 		r=f.Write(trecord[i]);
   498 		r=f.Write(trecord[i]);
   514 		test_KErrNone(r);
   499 		test(r==KErrNone);
   515 		}
   500 		}
   516 	textFile.Set(f);
   501 	textFile.Set(f);
   517 	textFile.Seek(ESeekStart);
   502 	textFile.Seek(ESeekStart);
   518 	for(i=0;i<2;i++)
   503 	for(i=0;i<2;i++)
   519 		{
   504 		{
   520 		r=textFile.Read(recBuf);
   505 		r=textFile.Read(recBuf);
   521 		test_KErrNone(r);
   506 		test(r==KErrNone);
   522 		test(recBuf==record[0]);
   507 		test(recBuf==record[0]);
   523 		}
   508 		}
   524 	r=textFile.Read(recBuf);
   509 	r=textFile.Read(recBuf);
   525 	test_Value(r, r == KErrEof);
   510 	test(r==KErrEof);
   526 	test(recBuf.Length()==0);
   511 	test(recBuf.Length()==0);
   527 	f.Close();
   512 	f.Close();
   528 
   513 
   529 	test.Next(_L("Read into a buffer < recordSize"));
   514 	test.Next(_L("Read into a buffer < recordSize"));
   530 	TBuf<8> smallBuf;
   515 	TBuf<8> smallBuf;
   531 	r=f.Open(TheFs,_L("TEXTFILE.txt"),0);
   516 	r=f.Open(TheFs,_L("TEXTFILE.txt"),0);
   532 	test_KErrNone(r);
   517 	test(r==KErrNone);
   533 	textFile.Set(f);
   518 	textFile.Set(f);
   534 	for(i=0;i<2;i++)
   519 	for(i=0;i<2;i++)
   535 		{
   520 		{
   536 		r=textFile.Read(smallBuf);
   521 		r=textFile.Read(smallBuf);
   537 		test_Value(r, r == KErrTooBig);
   522 		test(r==KErrTooBig);
   538 		test(smallBuf==_L("12345678"));
   523 		test(smallBuf==_L("12345678"));
   539 		}
   524 		}
   540 	f.Close();
   525 	f.Close();
   541 
   526 
   542 	test.Next(_L("Nasty cases: 1) \\r \\n split over buffer boundary"));
   527 	test.Next(_L("Nasty cases: 1) \\r \\n split over buffer boundary"));
   543 	r=f.Replace(TheFs,_L("TEXTFILE.txt"),0);
   528 	r=f.Replace(TheFs,_L("TEXTFILE.txt"),0);
   544 	test_KErrNone(r);
   529 	test(r==KErrNone);
   545 	HBufC* largeRecord=HBufC::NewL(600);
   530 	HBufC* largeRecord=HBufC::NewL(600);
   546 	largeRecord->Des().SetLength(250);
   531 	largeRecord->Des().SetLength(250);
   547 	largeRecord->Des().Fill('A');
   532 	largeRecord->Des().Fill('A');
   548 	largeRecord->Des()[249]='\n';
   533 	largeRecord->Des()[249]='\n';
   549 	TPtrC8 bufPtr;
   534 	TPtrC8 bufPtr;
   550 	bufPtr.Set((TUint8*)largeRecord->Ptr(),largeRecord->Size()); // Size() returns length in bytes
   535 	bufPtr.Set((TUint8*)largeRecord->Ptr(),largeRecord->Size()); // Size() returns length in bytes
   551 	r=f.Write(bufPtr);
   536 	r=f.Write(bufPtr);
   552 	test_KErrNone(r);
   537 	test(r==KErrNone);
   553 	TBuf<16> boundaryBuf=_L("12345\r\n");
   538 	TBuf<16> boundaryBuf=_L("12345\r\n");
   554 	bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size());
   539 	bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size());
   555 	r=f.Write(bufPtr);
   540 	r=f.Write(bufPtr);
   556 	test_KErrNone(r);
   541 	test(r==KErrNone);
   557 	r=f.Write(trecord[0]);
   542 	r=f.Write(trecord[0]);
   558 	test_KErrNone(r);
   543 	test(r==KErrNone);
   559 
   544 
   560 	textFile.Set(f);
   545 	textFile.Set(f);
   561 	textFile.Seek(ESeekStart);
   546 	textFile.Seek(ESeekStart);
   562 	r=textFile.Read(recBuf);
   547 	r=textFile.Read(recBuf);
   563 	test_Value(r, r == KErrTooBig);
   548 	test(r==KErrTooBig);
   564 	test(recBuf==_L("AAAAAAAAAAAAAAAA"));
   549 	test(recBuf==_L("AAAAAAAAAAAAAAAA"));
   565 	r=textFile.Read(recBuf);
   550 	r=textFile.Read(recBuf);
   566 	test_KErrNone(r);
   551 	test(r==KErrNone);
   567 	test(recBuf==_L("12345"));
   552 	test(recBuf==_L("12345"));
   568 	r=textFile.Read(recBuf);
   553 	r=textFile.Read(recBuf);
   569 	test_KErrNone(r);
   554 	test(r==KErrNone);
   570 	test(recBuf==record[0]);
   555 	test(recBuf==record[0]);
   571 	f.Close();
   556 	f.Close();
   572 
   557 
   573 	test.Next(_L("Nasty cases: 2) \\r on buffer boundary"));
   558 	test.Next(_L("Nasty cases: 2) \\r on buffer boundary"));
   574 	r=f.Replace(TheFs,_L("TEXTFILE.txt"),0);
   559 	r=f.Replace(TheFs,_L("TEXTFILE.txt"),0);
   575 	test_KErrNone(r);
   560 	test(r==KErrNone);
   576 	largeRecord->Des().SetLength(250);
   561 	largeRecord->Des().SetLength(250);
   577 	largeRecord->Des().Fill('A');
   562 	largeRecord->Des().Fill('A');
   578 	largeRecord->Des()[249]='\n';
   563 	largeRecord->Des()[249]='\n';
   579 	bufPtr.Set((TUint8*)largeRecord->Ptr(),largeRecord->Size());
   564 	bufPtr.Set((TUint8*)largeRecord->Ptr(),largeRecord->Size());
   580 	r=f.Write(bufPtr);
   565 	r=f.Write(bufPtr);
   581 	test_KErrNone(r);
   566 	test(r==KErrNone);
   582 	boundaryBuf=_L("12345\rxyz\n");
   567 	boundaryBuf=_L("12345\rxyz\n");
   583 	bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size());
   568 	bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size());
   584 	r=f.Write(bufPtr);
   569 	r=f.Write(bufPtr);
   585 	test_KErrNone(r);
   570 	test(r==KErrNone);
   586 	r=f.Write(trecord[0]);
   571 	r=f.Write(trecord[0]);
   587 	test_KErrNone(r);
   572 	test(r==KErrNone);
   588 
   573 
   589 	textFile.Set(f);
   574 	textFile.Set(f);
   590 	textFile.Seek(ESeekStart);
   575 	textFile.Seek(ESeekStart);
   591 	r=textFile.Read(recBuf);
   576 	r=textFile.Read(recBuf);
   592 	test_Value(r, r == KErrTooBig);
   577 	test(r==KErrTooBig);
   593 	test(recBuf==_L("AAAAAAAAAAAAAAAA"));
   578 	test(recBuf==_L("AAAAAAAAAAAAAAAA"));
   594 	r=textFile.Read(recBuf);
   579 	r=textFile.Read(recBuf);
   595 	test_KErrNone(r);
   580 	test(r==KErrNone);
   596 	test(recBuf==_L("12345\rxyz"));
   581 	test(recBuf==_L("12345\rxyz"));
   597 	r=textFile.Read(recBuf);
   582 	r=textFile.Read(recBuf);
   598 	test_KErrNone(r);
   583 	test(r==KErrNone);
   599 	test(recBuf==record[0]);
   584 	test(recBuf==record[0]);
   600 	f.Close();
   585 	f.Close();
   601 
   586 
   602 	test.Next(_L("Nasty cases: 3) record size > buffer size"));
   587 	test.Next(_L("Nasty cases: 3) record size > buffer size"));
   603 	r=f.Replace(TheFs,_L("TEXTFILE.txt"),0);
   588 	r=f.Replace(TheFs,_L("TEXTFILE.txt"),0);
   604 	test_KErrNone(r);
   589 	test(r==KErrNone);
   605 	largeRecord->Des().SetLength(600);
   590 	largeRecord->Des().SetLength(600);
   606 	largeRecord->Des().Fill('Z');
   591 	largeRecord->Des().Fill('Z');
   607 	largeRecord->Des()[511]='\r';
   592 	largeRecord->Des()[511]='\r';
   608 	largeRecord->Des()[599]='\n';
   593 	largeRecord->Des()[599]='\n';
   609 	bufPtr.Set((TUint8*)largeRecord->Ptr(),largeRecord->Size());
   594 	bufPtr.Set((TUint8*)largeRecord->Ptr(),largeRecord->Size());
   610 	r=f.Write(bufPtr);
   595 	r=f.Write(bufPtr);
   611 	test_KErrNone(r);
   596 	test(r==KErrNone);
   612 	boundaryBuf=_L("12345\rxyz\n");
   597 	boundaryBuf=_L("12345\rxyz\n");
   613 	bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size());
   598 	bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size());
   614 	r=f.Write(bufPtr);
   599 	r=f.Write(bufPtr);
   615 	test_KErrNone(r);
   600 	test(r==KErrNone);
   616 	r=f.Write(trecord[0]);
   601 	r=f.Write(trecord[0]);
   617 	test_KErrNone(r);
   602 	test(r==KErrNone);
   618 
   603 
   619 	textFile.Set(f);
   604 	textFile.Set(f);
   620 	textFile.Seek(ESeekStart);
   605 	textFile.Seek(ESeekStart);
   621 	r=textFile.Read(recBuf);
   606 	r=textFile.Read(recBuf);
   622 	test_Value(r, r == KErrTooBig);
   607 	test(r==KErrTooBig);
   623 	test(recBuf==_L("ZZZZZZZZZZZZZZZZ"));
   608 	test(recBuf==_L("ZZZZZZZZZZZZZZZZ"));
   624 	r=textFile.Read(recBuf);
   609 	r=textFile.Read(recBuf);
   625 	test_KErrNone(r);
   610 	test(r==KErrNone);
   626 	test(recBuf==_L("12345\rxyz"));
   611 	test(recBuf==_L("12345\rxyz"));
   627 	r=textFile.Read(recBuf);
   612 	r=textFile.Read(recBuf);
   628 	test_KErrNone(r);
   613 	test(r==KErrNone);
   629 	test(recBuf==record[0]);
   614 	test(recBuf==record[0]);
   630 
   615 
   631 	TBuf<601> bigBuf;
   616 	TBuf<601> bigBuf;
   632 	TPtrC largePtr((TText*)largeRecord->Ptr(),(largeRecord->Length()-1));
   617 	TPtrC largePtr((TText*)largeRecord->Ptr(),(largeRecord->Length()-1));
   633 	textFile.Seek(ESeekStart);
   618 	textFile.Seek(ESeekStart);
   634 	r=textFile.Read(bigBuf);
   619 	r=textFile.Read(bigBuf);
   635 	test_KErrNone(r);
   620 	test(r==KErrNone);
   636 	test(bigBuf==largePtr);
   621 	test(bigBuf==largePtr);
   637 	r=textFile.Read(recBuf);
   622 	r=textFile.Read(recBuf);
   638 	test_KErrNone(r);
   623 	test(r==KErrNone);
   639 	test(recBuf==_L("12345\rxyz"));
   624 	test(recBuf==_L("12345\rxyz"));
   640 	r=textFile.Read(recBuf);
   625 	r=textFile.Read(recBuf);
   641 	test_KErrNone(r);
   626 	test(r==KErrNone);
   642 	test(recBuf==record[0]);
   627 	test(recBuf==record[0]);
   643 	f.Close();
   628 	f.Close();
   644 
   629 
   645 	User::Free(largeRecord);
   630 	User::Free(largeRecord);
   646 	}
   631 	}
   652 	{
   637 	{
   653 
   638 
   654 	test.Next(_L("Test FileText last record has no terminator"));
   639 	test.Next(_L("Test FileText last record has no terminator"));
   655 	RFile f;
   640 	RFile f;
   656 	TInt r=f.Replace(TheFs,_L("TextFile"),0);
   641 	TInt r=f.Replace(TheFs,_L("TextFile"),0);
   657 	test_KErrNone(r);
   642 	test(r==KErrNone);
   658 	TPtrC8 bufPtr;
   643 	TPtrC8 bufPtr;
   659 	TBuf<16>boundaryBuf=_L("Record1\n");
   644 	TBuf<16>boundaryBuf=_L("Record1\n");
   660 	bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size());
   645 	bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size());
   661 	r=f.Write(bufPtr);
   646 	r=f.Write(bufPtr);
   662 	test_KErrNone(r);
   647 	test(r==KErrNone);
   663 	boundaryBuf=_L("Record2\n");
   648 	boundaryBuf=_L("Record2\n");
   664 	bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size());
   649 	bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size());
   665 	r=f.Write(bufPtr);
   650 	r=f.Write(bufPtr);
   666 	test_KErrNone(r);
   651 	test(r==KErrNone);
   667 	boundaryBuf=_L("Record3\n");
   652 	boundaryBuf=_L("Record3\n");
   668 	bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size());
   653 	bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size());
   669 	r=f.Write(bufPtr);
   654 	r=f.Write(bufPtr);
   670 	test_KErrNone(r);
   655 	test(r==KErrNone);
   671 
   656 
   672 	TFileText fText;
   657 	TFileText fText;
   673 	fText.Set(f);
   658 	fText.Set(f);
   674 	r=fText.Seek(ESeekStart);
   659 	r=fText.Seek(ESeekStart);
   675 	test_KErrNone(r);
   660 	test(r==KErrNone);
   676 	TBuf<32> recBuf;
   661 	TBuf<32> recBuf;
   677 	r=fText.Read(recBuf);
   662 	r=fText.Read(recBuf);
   678 	test_KErrNone(r);
   663 	test(r==KErrNone);
   679 	test(recBuf.MatchF(_L("record1"))!=KErrNotFound);
   664 	test(recBuf.MatchF(_L("record1"))!=KErrNotFound);
   680 	r=fText.Read(recBuf);
   665 	r=fText.Read(recBuf);
   681 	test_KErrNone(r);
   666 	test(r==KErrNone);
   682 	test(recBuf.MatchF(_L("record2"))!=KErrNotFound);
   667 	test(recBuf.MatchF(_L("record2"))!=KErrNotFound);
   683 	r=fText.Read(recBuf);
   668 	r=fText.Read(recBuf);
   684 	test_KErrNone(r);
   669 	test(r==KErrNone);
   685 	test(recBuf.MatchF(_L("record3"))!=KErrNotFound);
   670 	test(recBuf.MatchF(_L("record3"))!=KErrNotFound);
   686 	r=fText.Read(recBuf);
   671 	r=fText.Read(recBuf);
   687 	test_Value(r, r == KErrEof);
   672 	test(r==KErrEof);
   688 	test(recBuf.Length()==0);
   673 	test(recBuf.Length()==0);
   689 	f.Close();
   674 	f.Close();
   690 
   675 
   691 	TBuf<0x100> bigBuf(0x100);
   676 	TBuf<0x100> bigBuf(0x100);
   692 	bigBuf.Fill('A');
   677 	bigBuf.Fill('A');
   693 	r=f.Replace(TheFs,_L("TextFile"),0);
   678 	r=f.Replace(TheFs,_L("TextFile"),0);
   694 	test_KErrNone(r);
   679 	test(r==KErrNone);
   695 
   680 
   696     bufPtr.Set((TUint8*)bigBuf.Ptr(),bigBuf.Size());
   681     bufPtr.Set((TUint8*)bigBuf.Ptr(),bigBuf.Size());
   697 	r=f.Write(bufPtr);
   682 	r=f.Write(bufPtr);
   698 	test_KErrNone(r);
   683 	test(r==KErrNone);
   699 
   684 
   700 	fText.Set(f);
   685 	fText.Set(f);
   701 	r=fText.Seek(ESeekStart);
   686 	r=fText.Seek(ESeekStart);
   702 	test_KErrNone(r);
   687 	test(r==KErrNone);
   703 	bigBuf.SetLength(0);
   688 	bigBuf.SetLength(0);
   704 	r=fText.Read(bigBuf);
   689 	r=fText.Read(bigBuf);
   705 	test.Printf(_L("fText.Read returns %d\n"),r);
   690 	test.Printf(_L("fText.Read returns %d\n"),r);
   706 	test_KErrNone(r);
   691 	test(r==KErrNone);
   707 	test.Printf(_L("BigBuf.Length()==%d\n"),bigBuf.Length());
   692 	test.Printf(_L("BigBuf.Length()==%d\n"),bigBuf.Length());
   708 	test(bigBuf.Length()==0x100);
   693 	test(bigBuf.Length()==0x100);
   709 	r=fText.Read(bigBuf);
   694 	r=fText.Read(bigBuf);
   710 	test_Value(r, r == KErrEof);
   695 	test(r==KErrEof);
   711 	test(bigBuf.Length()==0);
   696 	test(bigBuf.Length()==0);
   712 	f.Close();
   697 	f.Close();
   713 	}
   698 	}
   714 
   699 
   715 static void testFileNames()
   700 static void testFileNames()
   720 
   705 
   721 	test.Next(_L("Test temp filenames specify drive"));
   706 	test.Next(_L("Test temp filenames specify drive"));
   722 	TFileName tempFileName;
   707 	TFileName tempFileName;
   723 	RFile f;
   708 	RFile f;
   724 	TInt r=f.Temp(TheFs,_L(""),tempFileName,EFileRead);
   709 	TInt r=f.Temp(TheFs,_L(""),tempFileName,EFileRead);
   725 	test_KErrNone(r);
   710 	test(r==KErrNone);
   726 	TParse p;
   711 	TParse p;
   727 	p.Set(tempFileName,NULL,NULL);
   712 	p.Set(tempFileName,NULL,NULL);
   728 	test(p.DrivePresent());
   713 	test(p.DrivePresent());
   729 	test(p.PathPresent());
   714 	test(p.PathPresent());
   730 	test(p.NamePresent());
   715 	test(p.NamePresent());
   731 	test(p.ExtPresent());
   716 	test(p.ExtPresent());
   732 	f.Close();
   717 	f.Close();
   733 
   718 
   734 	r=f.Replace(TheFs,_L("WELCOMETO"),EFileWrite);
   719 	r=f.Replace(TheFs,_L("WELCOMETO"),EFileWrite);
   735 	test_KErrNone(r);
   720 	test(r==KErrNone);
   736 	f.Close();
   721 	f.Close();
   737 	r=f.Replace(TheFs,_L("WELCOMETO.WRD"),EFileWrite);
   722 	r=f.Replace(TheFs,_L("WELCOMETO.WRD"),EFileWrite);
   738 	test_KErrNone(r);
   723 	test(r==KErrNone);
   739 	f.Close();
   724 	f.Close();
   740 	}
   725 	}
   741 
   726 
   742 // Nasty hack - mask attributes returned by RFile::Att() with this.
   727 // Nasty hack - mask attributes returned by RFile::Att() with this.
   743 // File server used to do this but that stopped the XIP attribute on the ROM file system
   728 // File server used to do this but that stopped the XIP attribute on the ROM file system
   752 	{
   737 	{
   753 
   738 
   754 	test.Next(_L("Archive att is set after creation"));
   739 	test.Next(_L("Archive att is set after creation"));
   755 	RFile f;
   740 	RFile f;
   756 	TInt r=TheFs.Delete(_L("FILEATT.ARC"));
   741 	TInt r=TheFs.Delete(_L("FILEATT.ARC"));
   757 	test_Value(r, r == KErrNone || r==KErrNotFound);
   742 	test(r==KErrNone || r==KErrNotFound);
   758 	r=f.Create(TheFs,_L("FILEATT.ARC"),EFileRead);
   743 	r=f.Create(TheFs,_L("FILEATT.ARC"),EFileRead);
   759 	test_KErrNone(r);
   744 	test(r==KErrNone);
   760 	TUint atts;
   745 	TUint atts;
   761 	r=f.Att(atts);
   746 	r=f.Att(atts);
   762 	test_KErrNone(r);
   747 	test(r==KErrNone);
   763 	test((atts&ATT_MASK)==KEntryAttArchive);
   748 	test((atts&ATT_MASK)==KEntryAttArchive);
   764 	TEntry fileAtt;
   749 	TEntry fileAtt;
   765 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   750 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   766 	test_KErrNone(r);
   751 	test(r==KErrNone);
   767 	test(fileAtt.iAtt==KEntryAttArchive);
   752 	test(fileAtt.iAtt==KEntryAttArchive);
   768 	f.Close();
   753 	f.Close();
   769 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   754 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   770 	test_KErrNone(r);
   755 	test(r==KErrNone);
   771 	test(fileAtt.iAtt==KEntryAttArchive);
   756 	test(fileAtt.iAtt==KEntryAttArchive);
   772 
   757 
   773 	test.Next(_L("Archive att is set after a write"));
   758 	test.Next(_L("Archive att is set after a write"));
   774 	TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttArchive);
   759 	TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttArchive);
   775 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   760 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   776 	test_KErrNone(r);
   761 	test(r==KErrNone);
   777 	test(fileAtt.iAtt==0);
   762 	test(fileAtt.iAtt==0);
   778 	r=f.Open(TheFs,_L("FILEATT.ARC"),EFileWrite);
   763 	r=f.Open(TheFs,_L("FILEATT.ARC"),EFileWrite);
   779 	test_KErrNone(r);
   764 	test(r==KErrNone);
   780 	r=f.Write(_L8("Hello World"));
   765 	r=f.Write(_L8("Hello World"));
   781 	test_KErrNone(r);
   766 	test(r==KErrNone);
   782 	r=f.Att(atts);
   767 	r=f.Att(atts);
   783 	test_KErrNone(r);
   768 	test(r==KErrNone);
   784 	test((atts&ATT_MASK)==KEntryAttArchive);
   769 	test((atts&ATT_MASK)==KEntryAttArchive);
   785 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   770 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   786 	test_KErrNone(r);
   771 	test(r==KErrNone);
   787 	test(fileAtt.iAtt==KEntryAttArchive);
   772 	test(fileAtt.iAtt==KEntryAttArchive);
   788 	f.Close();
   773 	f.Close();
   789 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   774 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   790 	test_KErrNone(r);
   775 	test(r==KErrNone);
   791 	test(fileAtt.iAtt==KEntryAttArchive);
   776 	test(fileAtt.iAtt==KEntryAttArchive);
   792 
   777 
   793 	test.Next(_L("Archive att is set after setsize"));
   778 	test.Next(_L("Archive att is set after setsize"));
   794 	TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttArchive);
   779 	TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttArchive);
   795 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   780 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   796 	test_KErrNone(r);
   781 	test(r==KErrNone);
   797 	test(fileAtt.iAtt==0);
   782 	test(fileAtt.iAtt==0);
   798 	r=f.Open(TheFs,_L("FILEATT.ARC"),EFileWrite);
   783 	r=f.Open(TheFs,_L("FILEATT.ARC"),EFileWrite);
   799 	test_KErrNone(r);
   784 	test(r==KErrNone);
   800 	r=f.SetSize(447);
   785 	r=f.SetSize(447);
   801 	test_KErrNone(r);
   786 	test(r==KErrNone);
   802 	TInt size;
   787 	TInt size;
   803 	r=f.Size(size);
   788 	r=f.Size(size);
   804 	test_KErrNone(r);
   789 	test(r==KErrNone);
   805 	test(size==447);
   790 	test(size==447);
   806 	r=f.Att(atts);
   791 	r=f.Att(atts);
   807 	test_KErrNone(r);
   792 	test(r==KErrNone);
   808 	test((atts&ATT_MASK)==KEntryAttArchive);
   793 	test((atts&ATT_MASK)==KEntryAttArchive);
   809 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   794 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   810 	test_KErrNone(r);
   795 	test(r==KErrNone);
   811 	test(fileAtt.iAtt==KEntryAttArchive);
   796 	test(fileAtt.iAtt==KEntryAttArchive);
   812 	f.Close();
   797 	f.Close();
   813 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   798 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   814 	test_KErrNone(r);
   799 	test(r==KErrNone);
   815 	test(fileAtt.iAtt==KEntryAttArchive);
   800 	test(fileAtt.iAtt==KEntryAttArchive);
   816 
   801 
   817 	test.Next(_L("Archive att is not set after open"));
   802 	test.Next(_L("Archive att is not set after open"));
   818 	r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttArchive);
   803 	r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttArchive);
   819 	test_KErrNone(r);
   804 	test(r==KErrNone);
   820 	r=f.Open(TheFs,_L("FILEATT.ARC"),EFileWrite);
   805 	r=f.Open(TheFs,_L("FILEATT.ARC"),EFileWrite);
   821 	test_KErrNone(r);
   806 	test(r==KErrNone);
   822 	r=f.Att(atts);
   807 	r=f.Att(atts);
   823 	test_KErrNone(r);
   808 	test(r==KErrNone);
   824 	test((atts&ATT_MASK)==0);
   809 	test((atts&ATT_MASK)==0);
   825 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   810 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   826 	test_KErrNone(r);
   811 	test(r==KErrNone);
   827 	test(fileAtt.iAtt==0);
   812 	test(fileAtt.iAtt==0);
   828 	f.Close();
   813 	f.Close();
   829 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   814 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   830 	test_KErrNone(r);
   815 	test(r==KErrNone);
   831 	test(fileAtt.iAtt==0);
   816 	test(fileAtt.iAtt==0);
   832 
   817 
   833 	test.Next(_L("Archive att is not set after a read"));
   818 	test.Next(_L("Archive att is not set after a read"));
   834 	TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttArchive);
   819 	TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttArchive);
   835 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   820 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   836 	test_KErrNone(r);
   821 	test(r==KErrNone);
   837 	test(fileAtt.iAtt==0);
   822 	test(fileAtt.iAtt==0);
   838 	r=f.Open(TheFs,_L("FILEATT.ARC"),EFileWrite);
   823 	r=f.Open(TheFs,_L("FILEATT.ARC"),EFileWrite);
   839 	test_KErrNone(r);
   824 	test(r==KErrNone);
   840 	TBuf8<16> readBuf;
   825 	TBuf8<16> readBuf;
   841 	r=f.Read(readBuf);
   826 	r=f.Read(readBuf);
   842 	test_KErrNone(r);
   827 	test(r==KErrNone);
   843 	r=f.Att(atts);
   828 	r=f.Att(atts);
   844 	test_KErrNone(r);
   829 	test(r==KErrNone);
   845 	test((atts&ATT_MASK)==0);
   830 	test((atts&ATT_MASK)==0);
   846 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   831 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   847 	test_KErrNone(r);
   832 	test(r==KErrNone);
   848 	test(fileAtt.iAtt==0);
   833 	test(fileAtt.iAtt==0);
   849 	f.Close();
   834 	f.Close();
   850 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   835 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   851 	test_KErrNone(r);
   836 	test(r==KErrNone);
   852 	test(fileAtt.iAtt==0);
   837 	test(fileAtt.iAtt==0);
   853 
   838 
   854 	test.Next(_L("Archive att is set after replace"));
   839 	test.Next(_L("Archive att is set after replace"));
   855 	r=f.Replace(TheFs,_L("FILEATT.ARC"),EFileWrite);
   840 	r=f.Replace(TheFs,_L("FILEATT.ARC"),EFileWrite);
   856 	test_KErrNone(r);
   841 	test(r==KErrNone);
   857 	r=f.Att(atts);
   842 	r=f.Att(atts);
   858 	test_KErrNone(r);
   843 	test(r==KErrNone);
   859 	test((atts&ATT_MASK)==KEntryAttArchive);
   844 	test((atts&ATT_MASK)==KEntryAttArchive);
   860 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   845 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   861 	test_KErrNone(r);
   846 	test(r==KErrNone);
   862 	test(fileAtt.iAtt==KEntryAttArchive);
   847 	test(fileAtt.iAtt==KEntryAttArchive);
   863 	f.Close();
   848 	f.Close();
   864 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   849 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   865 	test_KErrNone(r);
   850 	test(r==KErrNone);
   866 	test(fileAtt.iAtt==KEntryAttArchive);
   851 	test(fileAtt.iAtt==KEntryAttArchive);
   867 
   852 
   868 	test.Next(_L("Read only bit can be unset"));
   853 	test.Next(_L("Read only bit can be unset"));
   869 	r=TheFs.SetAtt(_L("FILEATT.ARC"),KEntryAttReadOnly|KEntryAttHidden,0);
   854 	r=TheFs.SetAtt(_L("FILEATT.ARC"),KEntryAttReadOnly|KEntryAttHidden,0);
   870 	test_KErrNone(r);
   855 	test(r==KErrNone);
   871 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   856 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   872 	test_KErrNone(r);
   857 	test(r==KErrNone);
   873 	test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttHidden|KEntryAttArchive));
   858 	test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttHidden|KEntryAttArchive));
   874 
   859 
   875 	r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttHidden);
   860 	r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttHidden);
   876 	test_KErrNone(r);
   861 	test(r==KErrNone);
   877 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   862 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   878 	test_KErrNone(r);
   863 	test(r==KErrNone);
   879 	test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttArchive));
   864 	test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttArchive));
   880 
   865 
   881 	r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttReadOnly);
   866 	r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttReadOnly);
   882 	test_KErrNone(r);
   867 	test(r==KErrNone);
   883 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   868 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   884 	test_KErrNone(r);
   869 	test(r==KErrNone);
   885 	test(fileAtt.iAtt==(KEntryAttArchive));
   870 	test(fileAtt.iAtt==(KEntryAttArchive));
   886 
   871 
   887 	r=TheFs.SetAtt(_L("FILEATT.ARC"),KEntryAttReadOnly|KEntryAttHidden,0);
   872 	r=TheFs.SetAtt(_L("FILEATT.ARC"),KEntryAttReadOnly|KEntryAttHidden,0);
   888 	test_KErrNone(r);
   873 	test(r==KErrNone);
   889 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   874 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   890 	test_KErrNone(r);
   875 	test(r==KErrNone);
   891 	test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttHidden|KEntryAttArchive));
   876 	test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttHidden|KEntryAttArchive));
   892 
   877 
   893 	r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttReadOnly);
   878 	r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttReadOnly);
   894 	test_KErrNone(r);
   879 	test(r==KErrNone);
   895 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   880 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   896 	test_KErrNone(r);
   881 	test(r==KErrNone);
   897 	test(fileAtt.iAtt==(KEntryAttHidden|KEntryAttArchive));
   882 	test(fileAtt.iAtt==(KEntryAttHidden|KEntryAttArchive));
   898 
   883 
   899 	r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttHidden);
   884 	r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttHidden);
   900 	test_KErrNone(r);
   885 	test(r==KErrNone);
   901 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   886 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   902 	test_KErrNone(r);
   887 	test(r==KErrNone);
   903 	test(fileAtt.iAtt==(KEntryAttArchive));
   888 	test(fileAtt.iAtt==(KEntryAttArchive));
   904 
   889 
   905 	TTime time(0);
   890 	TTime time(0);
   906 	r=TheFs.SetEntry(_L("FILEATT.ARC"),time,KEntryAttReadOnly|KEntryAttHidden,0);
   891 	r=TheFs.SetEntry(_L("FILEATT.ARC"),time,KEntryAttReadOnly|KEntryAttHidden,0);
   907 	test_KErrNone(r);
   892 	test(r==KErrNone);
   908 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   893 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   909 	test_KErrNone(r);
   894 	test(r==KErrNone);
   910 	test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttHidden|KEntryAttArchive));
   895 	test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttHidden|KEntryAttArchive));
   911 
   896 
   912 	r=TheFs.SetEntry(_L("FILEATT.ARC"),time,0,KEntryAttHidden);
   897 	r=TheFs.SetEntry(_L("FILEATT.ARC"),time,0,KEntryAttHidden);
   913 	test_KErrNone(r);
   898 	test(r==KErrNone);
   914 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   899 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   915 	test_KErrNone(r);
   900 	test(r==KErrNone);
   916 	test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttArchive));
   901 	test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttArchive));
   917 
   902 
   918 	r=TheFs.SetEntry(_L("FILEATT.ARC"),time,0,KEntryAttReadOnly);
   903 	r=TheFs.SetEntry(_L("FILEATT.ARC"),time,0,KEntryAttReadOnly);
   919 	test_KErrNone(r);
   904 	test(r==KErrNone);
   920 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   905 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   921 	test_KErrNone(r);
   906 	test(r==KErrNone);
   922 	test(fileAtt.iAtt==(KEntryAttArchive));
   907 	test(fileAtt.iAtt==(KEntryAttArchive));
   923 
   908 
   924 	r=TheFs.SetEntry(_L("FILEATT.ARC"),time,KEntryAttReadOnly|KEntryAttHidden,0);
   909 	r=TheFs.SetEntry(_L("FILEATT.ARC"),time,KEntryAttReadOnly|KEntryAttHidden,0);
   925 	test_KErrNone(r);
   910 	test(r==KErrNone);
   926 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   911 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   927 	test_KErrNone(r);
   912 	test(r==KErrNone);
   928 	test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttHidden|KEntryAttArchive));
   913 	test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttHidden|KEntryAttArchive));
   929 
   914 
   930 	r=TheFs.SetEntry(_L("FILEATT.ARC"),time,0,KEntryAttReadOnly);
   915 	r=TheFs.SetEntry(_L("FILEATT.ARC"),time,0,KEntryAttReadOnly);
   931 	test_KErrNone(r);
   916 	test(r==KErrNone);
   932 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   917 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   933 	test_KErrNone(r);
   918 	test(r==KErrNone);
   934 	test(fileAtt.iAtt==(KEntryAttHidden|KEntryAttArchive));
   919 	test(fileAtt.iAtt==(KEntryAttHidden|KEntryAttArchive));
   935 
   920 
   936 	r=TheFs.SetEntry(_L("FILEATT.ARC"),time,0,KEntryAttHidden);
   921 	r=TheFs.SetEntry(_L("FILEATT.ARC"),time,0,KEntryAttHidden);
   937 	test_KErrNone(r);
   922 	test(r==KErrNone);
   938 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   923 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   939 	test_KErrNone(r);
   924 	test(r==KErrNone);
   940 	test(fileAtt.iAtt==(KEntryAttArchive));
   925 	test(fileAtt.iAtt==(KEntryAttArchive));
   941 
   926 
   942 	test.Next(_L("Cashing the 'read-only' attribute"));
   927 	test.Next(_L("Cashing the 'read-only' attribute"));
   943 	const TDesC& fname = _L("TEST.RO");
   928 	const TDesC& fname = _L("TEST.RO");
   944 
   929 
   945 	// Test RO attribute after creating a file
   930 	// Test RO attribute after creating a file
   946 	r=f.Create(TheFs,fname,EFileWrite);
   931 	r=f.Create(TheFs,fname,EFileWrite);
   947 	test_KErrNone(r);
   932 	test(r==KErrNone);
   948 	r=f.SetAtt(KEntryAttReadOnly,0);
   933 	r=f.SetAtt(KEntryAttReadOnly,0);
   949 	test_KErrNone(r);
   934 	test(r==KErrNone);
   950 	r=f.Write(_L8("Hello World"));
   935 	r=f.Write(_L8("Hello World"));
   951 	test_KErrNone(r);					// <-- here!
   936 	test(r==KErrNone);					// <-- here!
   952 	f.Close();
   937 	f.Close();
   953 
   938 
   954 	// Test we can't open for write or delete a RO file
   939 	// Test we can't open for write or delete a RO file
   955 	r=f.Open(TheFs,fname,EFileWrite);
   940 	r=f.Open(TheFs,fname,EFileWrite);
   956 	test_Value(r, r == KErrAccessDenied);
   941 	test(r==KErrAccessDenied);
   957 	r=TheFs.Delete(fname);
   942 	r=TheFs.Delete(fname);
   958 	test_Value(r, r == KErrAccessDenied);
   943 	test(r==KErrAccessDenied);
   959 
   944 
   960 	// Tidy up and re-create test file
   945 	// Tidy up and re-create test file
   961 	r=TheFs.SetAtt(fname,0,KEntryAttReadOnly);
   946 	r=TheFs.SetAtt(fname,0,KEntryAttReadOnly);
   962 	test_KErrNone(r);
   947 	test(r==KErrNone);
   963 	r=TheFs.Delete(fname);
   948 	r=TheFs.Delete(fname);
   964 	test_KErrNone(r);
   949 	test(r==KErrNone);
   965 	r=f.Create(TheFs,fname,EFileWrite);
   950 	r=f.Create(TheFs,fname,EFileWrite);
   966 	test_KErrNone(r);
   951 	test(r==KErrNone);
   967 	f.Close();
   952 	f.Close();
   968 
   953 
   969 	// Test RO attribute after opening a file
   954 	// Test RO attribute after opening a file
   970 	r=f.Open(TheFs,fname,EFileWrite);
   955 	r=f.Open(TheFs,fname,EFileWrite);
   971 	test_KErrNone(r);
   956 	test(r==KErrNone);
   972 	r=f.SetAtt(KEntryAttReadOnly,0);
   957 	r=f.SetAtt(KEntryAttReadOnly,0);
   973 	test_KErrNone(r);
   958 	test(r==KErrNone);
   974 	r=f.Write(_L8("Hello World"));
   959 	r=f.Write(_L8("Hello World"));
   975 	test_KErrNone(r);
   960 	test(r==KErrNone);
   976 	f.Close();
   961 	f.Close();
   977 
   962 
   978 
   963 
   979 	test.Next(_L("Internal attribute can't be read"));
   964 	test.Next(_L("Internal attribute can't be read"));
   980 
   965 
  1013 	f.Close();
   998 	f.Close();
  1014 
   999 
  1015 
  1000 
  1016 	// Tidy up
  1001 	// Tidy up
  1017 	r=TheFs.SetAtt(fname,0,KEntryAttReadOnly);
  1002 	r=TheFs.SetAtt(fname,0,KEntryAttReadOnly);
  1018 	test_KErrNone(r);
  1003 	test(r==KErrNone);
  1019 	r=TheFs.Delete(fname);
  1004 	r=TheFs.Delete(fname);
  1020 	test_KErrNone(r);
  1005 	test(r==KErrNone);
  1021 	}
  1006 	}
  1022 
  1007 
  1023 static void testShortNameAccessorFunctions()
  1008 static void testShortNameAccessorFunctions()
  1024 //
  1009 //
  1025 // Test RFs::GetShortName(...)
  1010 // Test RFs::GetShortName(...)
  1034         }
  1019         }
  1035 
  1020 
  1036 
  1021 
  1037 	TBuf<64> sessionPath;
  1022 	TBuf<64> sessionPath;
  1038 	TInt r=TheFs.SessionPath(sessionPath);
  1023 	TInt r=TheFs.SessionPath(sessionPath);
  1039 	test_KErrNone(r);
  1024 	test(r==KErrNone);
  1040 	RFile f;
  1025 	RFile f;
  1041 	r=TheFs.MkDirAll(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\RANDOM.ENDBIT"));
  1026 	r=TheFs.MkDirAll(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\RANDOM.ENDBIT"));
  1042 	test_Value(r, r == KErrNone || r==KErrAlreadyExists);
  1027 	test(r==KErrNone || r==KErrAlreadyExists);
  1043 	r=f.Replace(TheFs,_L("LONGFILENAME.LONGEXT"),EFileWrite);
  1028 	r=f.Replace(TheFs,_L("LONGFILENAME.LONGEXT"),EFileWrite);
  1044 	test_KErrNone(r);
  1029 	test(r==KErrNone);
  1045 	f.Close();
  1030 	f.Close();
  1046 	r=f.Replace(TheFs,_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\LONGFILENAME.LONGEXT"),EFileWrite);
  1031 	r=f.Replace(TheFs,_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\LONGFILENAME.LONGEXT"),EFileWrite);
  1047 	test_KErrNone(r);
  1032 	test(r==KErrNone);
  1048 	f.Close();
  1033 	f.Close();
  1049 	r=f.Replace(TheFs,_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\BAD CHAR"),EFileWrite);
  1034 	r=f.Replace(TheFs,_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\BAD CHAR"),EFileWrite);
  1050 	test_KErrNone(r);
  1035 	test(r==KErrNone);
  1051 	f.Close();
  1036 	f.Close();
  1052 	r=f.Replace(TheFs,_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\GoodCHAR.TXT"),EFileWrite);
  1037 	r=f.Replace(TheFs,_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\GoodCHAR.TXT"),EFileWrite);
  1053 	test_KErrNone(r);
  1038 	test(r==KErrNone);
  1054 	f.Close();
  1039 	f.Close();
  1055 	TBuf<12> shortName1;
  1040 	TBuf<12> shortName1;
  1056 	TBuf<12> shortName2;
  1041 	TBuf<12> shortName2;
  1057 	TBuf<12> shortName3;
  1042 	TBuf<12> shortName3;
  1058 	TBuf<12> shortName4;
  1043 	TBuf<12> shortName4;
  1059 	TBuf<12> shortName5;
  1044 	TBuf<12> shortName5;
  1060 	r=TheFs.GetShortName(_L("LONGFILENAME.LONGEXT"),shortName1);
  1045 	r=TheFs.GetShortName(_L("LONGFILENAME.LONGEXT"),shortName1);
  1061 	test_KErrNone(r);
  1046 	test(r==KErrNone);
  1062 	r=TheFs.GetShortName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\LONGFILENAME.LONGEXT"),shortName2);
  1047 	r=TheFs.GetShortName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\LONGFILENAME.LONGEXT"),shortName2);
  1063 	test_KErrNone(r);
  1048 	test(r==KErrNone);
  1064 	r=TheFs.GetShortName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\BAD CHAR"),shortName3);
  1049 	r=TheFs.GetShortName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\BAD CHAR"),shortName3);
  1065 	test_KErrNone(r);
  1050 	test(r==KErrNone);
  1066 	r=TheFs.GetShortName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\GOODCHAR.TXT"),shortName4);
  1051 	r=TheFs.GetShortName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\GOODCHAR.TXT"),shortName4);
  1067 	test_KErrNone(r);
  1052 	test(r==KErrNone);
  1068 	r=TheFs.GetShortName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY"),shortName5);
  1053 	r=TheFs.GetShortName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY"),shortName5);
  1069 	test_KErrNone(r);
  1054 	test(r==KErrNone);
  1070 
  1055 
  1071 	if(Is_Win32(TheFs, gDriveNum))
  1056 	if(Is_Win32(TheFs, gDriveNum))
  1072 		{
  1057 		{
  1073 		test(shortName1==_L("LONGFI~1.LON"));
  1058 		test(shortName1==_L("LONGFI~1.LON"));
  1074 		test(shortName2==_L("LONGFI~1.LON"));
  1059 		test(shortName2==_L("LONGFI~1.LON"));
  1093 	TFileName longName5;
  1078 	TFileName longName5;
  1094 
  1079 
  1095 	if (Is_Win32(TheFs, gDriveNum))
  1080 	if (Is_Win32(TheFs, gDriveNum))
  1096 		{
  1081 		{
  1097 		r=TheFs.GetLongName(_L("LONGFI~1.LON"),longName1);
  1082 		r=TheFs.GetLongName(_L("LONGFI~1.LON"),longName1);
  1098 		test_KErrNone(r);
  1083 		test(r==KErrNone);
  1099 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\LONGFI~1.LON"),longName2);
  1084 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\LONGFI~1.LON"),longName2);
  1100 		test_KErrNone(r);
  1085 		test(r==KErrNone);
  1101 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\BADCHA~1"),longName3);
  1086 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\BADCHA~1"),longName3);
  1102 		test_KErrNone(r);
  1087 		test(r==KErrNone);
  1103 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\GOODCHAR.TXT"),longName4);
  1088 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\GOODCHAR.TXT"),longName4);
  1104 		test_KErrNone(r);
  1089 		test(r==KErrNone);
  1105 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE~1"),longName5);
  1090 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE~1"),longName5);
  1106 		test_KErrNone(r);
  1091 		test(r==KErrNone);
  1107 		}
  1092 		}
  1108 	else if (!IsTestingLFFS())
  1093 	else if (!IsTestingLFFS())
  1109 		{
  1094 		{
  1110 		r=TheFs.GetLongName(_L("LONGFI~1.LON"),longName1);
  1095 		r=TheFs.GetLongName(_L("LONGFI~1.LON"),longName1);
  1111 		test_KErrNone(r);
  1096 		test(r==KErrNone);
  1112 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\LONGFI~1.LON"),longName2);
  1097 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\LONGFI~1.LON"),longName2);
  1113 		test_KErrNone(r);
  1098 		test(r==KErrNone);
  1114 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\BAD_CHAR"),longName3);
  1099 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\BAD_CHAR"),longName3);
  1115 		test_KErrNone(r);
  1100 		test(r==KErrNone);
  1116 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\GOODCHAR.TXT"),longName4);
  1101 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\GOODCHAR.TXT"),longName4);
  1117 		test_KErrNone(r);
  1102 		test(r==KErrNone);
  1118 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE~1"),longName5);
  1103 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE~1"),longName5);
  1119 		test_KErrNone(r);
  1104 		test(r==KErrNone);
  1120 		}
  1105 		}
  1121     else
  1106     else
  1122     	{
  1107     	{
  1123 		// LFFS longname tests
  1108 		// LFFS longname tests
  1124         r=TheFs.GetLongName(shortName1,longName1);
  1109         r=TheFs.GetLongName(shortName1,longName1);
  1125         test_KErrNone(r);
  1110         test(r==KErrNone);
  1126         r=TheFs.SetSessionPath(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\"));
  1111         r=TheFs.SetSessionPath(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\"));
  1127         test_KErrNone(r);
  1112         test(r==KErrNone);
  1128         r=TheFs.GetLongName(shortName2,longName2);
  1113         r=TheFs.GetLongName(shortName2,longName2);
  1129         test_KErrNone(r);
  1114         test(r==KErrNone);
  1130         r=TheFs.GetLongName(shortName3,longName3);
  1115         r=TheFs.GetLongName(shortName3,longName3);
  1131         test_KErrNone(r);
  1116         test(r==KErrNone);
  1132         r=TheFs.GetLongName(shortName4,longName4);
  1117         r=TheFs.GetLongName(shortName4,longName4);
  1133         test_KErrNone(r);
  1118         test(r==KErrNone);
  1134         r=TheFs.SetSessionPath(_L("\\F32-TST\\TFILE\\TOPLEVEL\\"));
  1119         r=TheFs.SetSessionPath(_L("\\F32-TST\\TFILE\\TOPLEVEL\\"));
  1135         test_KErrNone(r);
  1120         test(r==KErrNone);
  1136         r=TheFs.GetLongName(shortName5,longName5);
  1121         r=TheFs.GetLongName(shortName5,longName5);
  1137         test_KErrNone(r);
  1122         test(r==KErrNone);
  1138         r=TheFs.SetSessionPath(sessionPath);
  1123         r=TheFs.SetSessionPath(sessionPath);
  1139         test_KErrNone(r);
  1124         test(r==KErrNone);
  1140     	}
  1125     	}
  1141 
  1126 
  1142 	test(longName1==_L("LONGFILENAME.LONGEXT"));
  1127 	test(longName1==_L("LONGFILENAME.LONGEXT"));
  1143 	test(longName2==_L("LONGFILENAME.LONGEXT"));
  1128 	test(longName2==_L("LONGFILENAME.LONGEXT"));
  1144 	test(longName3==_L("BAD CHAR"));
  1129 	test(longName3==_L("BAD CHAR"));
  1145 	test(longName4.FindF(_L("GOODCHAR.TXT"))>=0);
  1130 	test(longName4.FindF(_L("GOODCHAR.TXT"))>=0);
  1146 	test(longName5==_L("MIDDLE-DIRECTORY"));
  1131 	test(longName5==_L("MIDDLE-DIRECTORY"));
  1147 
  1132 
  1148 	r=TheFs.GetShortName(_L("XXX.YYY"),shortName1);
  1133 	r=TheFs.GetShortName(_L("XXX.YYY"),shortName1);
  1149 	test_Value(r, r == KErrNotFound);
  1134 	test(r==KErrNotFound);
  1150 	r=TheFs.GetShortName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-YROTCERID\\LASTDIR\\BAD-CHAR"),shortName1);
  1135 	r=TheFs.GetShortName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-YROTCERID\\LASTDIR\\BAD-CHAR"),shortName1);
  1151 	test_Value(r, r == KErrPathNotFound);
  1136 	test(r==KErrPathNotFound);
  1152 	r=TheFs.GetLongName(_L("XXX.YYY"),longName1);
  1137 	r=TheFs.GetLongName(_L("XXX.YYY"),longName1);
  1153 	test_Value(r, r == KErrNotFound);
  1138 	test(r==KErrNotFound);
  1154 	r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-YROTCERID\\LASTDIR\\BAD-CHAR"),longName1);
  1139 	r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-YROTCERID\\LASTDIR\\BAD-CHAR"),longName1);
  1155 	test_Value(r, r == KErrPathNotFound);
  1140 	test(r==KErrPathNotFound);
  1156 
  1141 
  1157 	r=TheFs.Delete(_L("LONGFILENAME.LONGEXT"));
  1142 	r=TheFs.Delete(_L("LONGFILENAME.LONGEXT"));
  1158 	test_KErrNone(r);
  1143 	test(r==KErrNone);
  1159 
  1144 
  1160 	TEntry romEntry;
  1145 	TEntry romEntry;
  1161 	r=TheFs.Entry(_L("Z:\\System"),romEntry);
  1146 	r=TheFs.Entry(_L("Z:\\System"),romEntry);
  1162 	if (r==KErrNotReady)
  1147 	if (r==KErrNotReady)
  1163 		{
  1148 		{
  1164 		test.Printf(_L("ERROR: No rom filesystem present"));
  1149 		test.Printf(_L("ERROR: No rom filesystem present"));
  1165 		//test.Getch();
  1150 		//test.Getch();
  1166 		//return;
  1151 		//return;
  1167 		}
  1152 		}
  1168 	test_KErrNone(r);
  1153 	test(r==KErrNone);
  1169 	TBuf<64> romFileName=_L("Z:\\");
  1154 	TBuf<64> romFileName=_L("Z:\\");
  1170 	romFileName.Append(romEntry.iName);
  1155 	romFileName.Append(romEntry.iName);
  1171 	r=TheFs.GetShortName(romFileName,shortName1);
  1156 	r=TheFs.GetShortName(romFileName,shortName1);
  1172 	test_Value(r, r == KErrNotSupported);
  1157 	test(r==KErrNotSupported);
  1173 	r=TheFs.GetLongName(_L("Z:\\system"),longName1);
  1158 	r=TheFs.GetLongName(_L("Z:\\system"),longName1);
  1174 	test_Value(r, r == KErrNotSupported);
  1159 	test(r==KErrNotSupported);
  1175 	}
  1160 	}
  1176 
  1161 
  1177 static void RmDir(const TDesC& aDirName)
  1162 static void RmDir(const TDesC& aDirName)
  1178 //
  1163 //
  1179 // Remove a directory
  1164 // Remove a directory
  1180 //
  1165 //
  1181 	{
  1166 	{
  1182 	CFileMan* fMan=CFileMan::NewL(TheFs);
  1167 	CFileMan* fMan=CFileMan::NewL(TheFs);
  1183 	test(fMan!=NULL);
  1168 	test(fMan!=NULL);
  1184 	TInt r=TheFs.SessionPath(gSessionPath);
  1169 	TInt r=TheFs.SessionPath(gSessionPath);
  1185 	test_KErrNone(r);
  1170 	test(r==KErrNone);
  1186 	r=TheFs.CheckDisk(gSessionPath);
  1171 	r=TheFs.CheckDisk(gSessionPath);
  1187 	if (r!=KErrNone && r!=KErrNotSupported)
  1172 	if (r!=KErrNone && r!=KErrNotSupported)
  1188 		ReportCheckDiskFailure(r);
  1173 		ReportCheckDiskFailure(r);
  1189 
  1174 
  1190 	TFileName removeDirName = gSessionPath;
  1175 	TFileName removeDirName = gSessionPath;
  1191 	removeDirName.Append(aDirName);
  1176 	removeDirName.Append(aDirName);
  1192 
  1177 
  1193 	fMan->Attribs(removeDirName, 0, KEntryAttReadOnly, 0, CFileMan::ERecurse);
  1178 	fMan->Attribs(removeDirName, 0, KEntryAttReadOnly, 0, CFileMan::ERecurse);
  1194 	r=fMan->RmDir(removeDirName);
  1179 	r=fMan->RmDir(removeDirName);
  1195 	test_Value(r, r == KErrNone || r==KErrNotFound || r==KErrPathNotFound);
  1180 	test(r==KErrNone || r==KErrNotFound || r==KErrPathNotFound);
  1196 
  1181 
  1197 	delete fMan;
  1182 	delete fMan;
  1198 	}
  1183 	}
  1199 //---------------------------------------------
  1184 //---------------------------------------------
  1200 //! @SYMTestCaseID			PBASE-T_TFILE-0659
  1185 //! @SYMTestCaseID			PBASE-T_TFILE-0659
  1231 	MakeFile(KOrigFileName,_L8("FILE PATH : \\F32-TST\\TFILE\\INC112803\\Private2\\101f875a\\"));
  1216 	MakeFile(KOrigFileName,_L8("FILE PATH : \\F32-TST\\TFILE\\INC112803\\Private2\\101f875a\\"));
  1232 
  1217 
  1233 	// Check the generated shortname of the original file
  1218 	// Check the generated shortname of the original file
  1234 	TBuf<12> shortName;
  1219 	TBuf<12> shortName;
  1235 	err = TheFs.GetShortName(KOrigFileName, shortName);
  1220 	err = TheFs.GetShortName(KOrigFileName, shortName);
  1236 	test_KErrNone(err);
  1221 	test(err==KErrNone);
  1237 
  1222 
  1238 	// Validate the generated shortname against the original filename.
  1223 	// Validate the generated shorname against the original filename.
  1239 	if(!IsTestingLFFS())
  1224 	if (Is_Win32(TheFs, gDriveNum))
       
  1225 		{
       
  1226 		test(shortName==_L("2222~1.JAR"));
       
  1227 		}
       
  1228 	else if(!IsTestingLFFS())
  1240 		{
  1229 		{
  1241 		// LFFS short names not the same as VFAT ones
  1230 		// LFFS short names not the same as VFAT ones
  1242 		test(shortName==_L("2222~1.JAR"));
  1231 		test(shortName==_L("2222~1.JAR"));
  1243 		}
  1232 		}
  1244 
  1233 
  1245 	// Validate that the file "2222~1.JAR" can not be created as this is the shortname for "2222.JARX".
  1234 	// Validate that the file "2222~1.JAR" can not be created as this is the shortname for "2222.JARX".
  1246 	MakeFile(KOrigFileShortName,_L8("FILE PATH : \\F32-TST\\TFILE\\INC112803\\Private2\\101f875a\\"));
  1235 	MakeFile(KOrigFileShortName,_L8("FILE PATH : \\F32-TST\\TFILE\\INC112803\\Private2\\101f875a\\"));
  1247 	CheckFileExists(KOrigFileShortName, KErrNone, EFalse);
  1236 	CheckFileExists(KOrigFileShortName, KErrNone, EFalse);
  1248 
  1237 
  1249 	err = TheFs.Rename(KOrigFileName,KDestinationFileName);
  1238 	err = TheFs.Rename(KOrigFileName,KDestinationFileName);
  1250 	test_KErrNone(err);
  1239 	test(err==KErrNone);
  1251 
  1240 
  1252 	// Clean up before leaving
  1241 	// Clean up before leaving
  1253 	RmDir(_L("INC112803\\"));
  1242 	RmDir(_L("INC112803\\"));
  1254 	}
  1243 	}
  1255 
  1244 
  1260 	{
  1249 	{
  1261 
  1250 
  1262 	test.Next(_L("Test IsFileOpen"));
  1251 	test.Next(_L("Test IsFileOpen"));
  1263 	TBool answer;
  1252 	TBool answer;
  1264 	TInt r=TheFs.IsFileOpen(_L("OPEN.FILE"),answer);
  1253 	TInt r=TheFs.IsFileOpen(_L("OPEN.FILE"),answer);
  1265 	test_Value(r, r == KErrNotFound || (r==KErrNone && answer==EFalse));
  1254 	test(r==KErrNotFound || (r==KErrNone && answer==EFalse));
  1266 	RFile f;
  1255 	RFile f;
  1267 	r=f.Replace(TheFs,_L("OPEN.FILE"),EFileWrite);
  1256 	r=f.Replace(TheFs,_L("OPEN.FILE"),EFileWrite);
  1268 	test_KErrNone(r);
  1257 	test(r==KErrNone);
  1269 	r=TheFs.IsFileOpen(_L("OPEN.FILE"),answer);
  1258 	r=TheFs.IsFileOpen(_L("OPEN.FILE"),answer);
  1270 	test_KErrNone(r);
  1259 	test(r==KErrNone);
  1271 	test(answer!=EFalse);
  1260 	test(answer!=EFalse);
  1272 	f.Close();
  1261 	f.Close();
  1273 	r=TheFs.IsFileOpen(_L("OPEN.FILE"),answer);
  1262 	r=TheFs.IsFileOpen(_L("OPEN.FILE"),answer);
  1274 	test_KErrNone(r);
  1263 	test(r==KErrNone);
  1275 	test(answer==EFalse);
  1264 	test(answer==EFalse);
  1276 	r=TheFs.Delete(_L("OPEN.FILE"));
  1265 	r=TheFs.Delete(_L("OPEN.FILE"));
  1277 	test_KErrNone(r);
  1266 	test(r==KErrNone);
  1278 
  1267 
  1279 	RFile f2;
  1268 	RFile f2;
  1280 	r=f2.Replace(TheFs,_L("AnotherOpen.File"),EFileWrite);
  1269 	r=f2.Replace(TheFs,_L("AnotherOpen.File"),EFileWrite);
  1281 	test_KErrNone(r);
  1270 	test(r==KErrNone);
  1282 	r=TheFs.IsFileOpen(_L("AnotherOpen.File"),answer);
  1271 	r=TheFs.IsFileOpen(_L("AnotherOpen.File"),answer);
  1283 	test_KErrNone(r);
  1272 	test(r==KErrNone);
  1284 	test(answer!=EFalse);
  1273 	test(answer!=EFalse);
  1285 	r=f.Replace(TheFs,_L("OPEN.FILE"),EFileWrite);
  1274 	r=f.Replace(TheFs,_L("OPEN.FILE"),EFileWrite);
  1286 	test_KErrNone(r);
  1275 	test(r==KErrNone);
  1287 	r=TheFs.IsFileOpen(_L("OPEN.FILE"),answer);
  1276 	r=TheFs.IsFileOpen(_L("OPEN.FILE"),answer);
  1288 	test_KErrNone(r);
  1277 	test(r==KErrNone);
  1289 	test(answer!=EFalse);
  1278 	test(answer!=EFalse);
  1290 	f2.Close();
  1279 	f2.Close();
  1291 	r=TheFs.IsFileOpen(_L("OPEN.FILE"),answer);
  1280 	r=TheFs.IsFileOpen(_L("OPEN.FILE"),answer);
  1292 	test_KErrNone(r);
  1281 	test(r==KErrNone);
  1293 	test(answer!=EFalse);
  1282 	test(answer!=EFalse);
  1294 	f.Close();
  1283 	f.Close();
  1295 	r=TheFs.IsFileOpen(_L("OPEN.FILE"),answer);
  1284 	r=TheFs.IsFileOpen(_L("OPEN.FILE"),answer);
  1296 	test_KErrNone(r);
  1285 	test(r==KErrNone);
  1297 	test(answer==EFalse);
  1286 	test(answer==EFalse);
  1298 	r=TheFs.Delete(_L("AnotherOpen.File"));
  1287 	r=TheFs.Delete(_L("AnotherOpen.File"));
  1299 	test_KErrNone(r);
  1288 	test(r==KErrNone);
  1300 	r=TheFs.Delete(_L("OPEN.FILE"));
  1289 	r=TheFs.Delete(_L("OPEN.FILE"));
  1301 	test_KErrNone(r);
  1290 	test(r==KErrNone);
  1302 	}
  1291 	}
  1303 
  1292 
  1304 static void testDeleteOpenFiles()
  1293 static void testDeleteOpenFiles()
  1305 //
  1294 //
  1306 // Test opened files cannot be deleted
  1295 // Test opened files cannot be deleted
  1309 
  1298 
  1310 	test.Next(_L("Test opened files cannot be deleted"));
  1299 	test.Next(_L("Test opened files cannot be deleted"));
  1311 	RFile f;
  1300 	RFile f;
  1312 	f.Close();
  1301 	f.Close();
  1313 	TInt r=f.Replace(TheFs,_L("Open.File"),EFileWrite);
  1302 	TInt r=f.Replace(TheFs,_L("Open.File"),EFileWrite);
  1314 	test_KErrNone(r);
  1303 	test(r==KErrNone);
  1315 	r=TheFs.Delete(_L("OPEN.FILE"));
  1304 	r=TheFs.Delete(_L("OPEN.FILE"));
  1316 	test_Value(r, r == KErrInUse);
  1305 	test(r==KErrInUse);
  1317 	f.Close();
  1306 	f.Close();
  1318 	f.Close();
  1307 	f.Close();
  1319 	f.Close();
  1308 	f.Close();
  1320 	r=TheFs.Delete(_L("Open.FILe"));
  1309 	r=TheFs.Delete(_L("Open.FILe"));
  1321 	test_KErrNone(r);
  1310 	test(r==KErrNone);
  1322 
  1311 
  1323 	TFileName fileName;
  1312 	TFileName fileName;
  1324 	r=f.Temp(TheFs,_L(""),fileName,EFileWrite);
  1313 	r=f.Temp(TheFs,_L(""),fileName,EFileWrite);
  1325 	test_KErrNone(r);
  1314 	test(r==KErrNone);
  1326 	r=TheFs.Delete(fileName);
  1315 	r=TheFs.Delete(fileName);
  1327 	test_Value(r, r == KErrInUse);
  1316 	test(r==KErrInUse);
  1328 	f.Close();
  1317 	f.Close();
  1329 	r=TheFs.Delete(fileName);
  1318 	r=TheFs.Delete(fileName);
  1330 	test_KErrNone(r);
  1319 	test(r==KErrNone);
  1331 
  1320 
  1332 	MakeFile(_L("\\Documents\\TEstfile.txt"));
  1321 	MakeFile(_L("\\Documents\\TEstfile.txt"));
  1333 	r=f.Open(TheFs,_L("\\Documents\\TEstfile.txt"),EFileWrite);
  1322 	r=f.Open(TheFs,_L("\\Documents\\TEstfile.txt"),EFileWrite);
  1334 	test_KErrNone(r);
  1323 	test(r==KErrNone);
  1335 	r=TheFs.Delete(_L("\\Documents\\TEstfile.txt"));
  1324 	r=TheFs.Delete(_L("\\Documents\\TEstfile.txt"));
  1336 	test_Value(r, r == KErrInUse);
  1325 	test(r==KErrInUse);
  1337 	r=TheFs.Delete(_L("\\documents\\TEstfile.txt"));
  1326 	r=TheFs.Delete(_L("\\documents\\TEstfile.txt"));
  1338 	test_Value(r, r == KErrInUse);
  1327 	test(r==KErrInUse);
  1339 	r=TheFs.Delete(_L("\\Documents.\\TEstfile.txt"));
  1328 	r=TheFs.Delete(_L("\\Documents.\\TEstfile.txt"));
  1340 	test_Value(r, r == KErrBadName);
  1329 	test(r==KErrBadName);
  1341 	r=TheFs.Delete(_L("\\documents.\\TEstfile.txt"));
  1330 	r=TheFs.Delete(_L("\\documents.\\TEstfile.txt"));
  1342 	test_Value(r, r == KErrBadName);
  1331 	test(r==KErrBadName);
  1343 	r=TheFs.Delete(_L("\\Documents\\Testfile.txt"));
  1332 	r=TheFs.Delete(_L("\\Documents\\Testfile.txt"));
  1344 	test_Value(r, r == KErrInUse);
  1333 	test(r==KErrInUse);
  1345 	r=TheFs.Delete(_L("\\documents\\testfile.txt"));
  1334 	r=TheFs.Delete(_L("\\documents\\testfile.txt"));
  1346 	test_Value(r, r == KErrInUse);
  1335 	test(r==KErrInUse);
  1347 	r=TheFs.Delete(_L("\\Documents.\\TEstfile.TXT"));
  1336 	r=TheFs.Delete(_L("\\Documents.\\TEstfile.TXT"));
  1348 	test_Value(r, r == KErrBadName);
  1337 	test(r==KErrBadName);
  1349 	r=TheFs.Delete(_L("\\docUMENTS.\\TESTFILE.TXT"));
  1338 	r=TheFs.Delete(_L("\\docUMENTS.\\TESTFILE.TXT"));
  1350 	test_Value(r, r == KErrBadName);
  1339 	test(r==KErrBadName);
  1351 	f.Close();
  1340 	f.Close();
  1352 	r=TheFs.Delete(_L("\\Documents\\TEstfile.TXT"));
  1341 	r=TheFs.Delete(_L("\\Documents\\TEstfile.TXT"));
  1353 	test_KErrNone(r);
  1342 	test(r==KErrNone);
  1354 
  1343 
  1355 	MakeFile(_L("\\Documents\\Documents\\TEstfile.txt"));
  1344 	MakeFile(_L("\\Documents\\Documents\\TEstfile.txt"));
  1356 	r=f.Open(TheFs,_L("\\Documents\\Documents\\TEstfile.txt"),EFileWrite);
  1345 	r=f.Open(TheFs,_L("\\Documents\\Documents\\TEstfile.txt"),EFileWrite);
  1357 	test_KErrNone(r);
  1346 	test(r==KErrNone);
  1358 	r=TheFs.Delete(_L("\\Documents\\documents.\\TEstfile.txt"));
  1347 	r=TheFs.Delete(_L("\\Documents\\documents.\\TEstfile.txt"));
  1359 	test_Value(r, r == KErrBadName);
  1348 	test(r==KErrBadName);
  1360 	r=TheFs.Delete(_L("\\documents\\Documents.\\TEstfile.txt"));
  1349 	r=TheFs.Delete(_L("\\documents\\Documents.\\TEstfile.txt"));
  1361 	test_Value(r, r == KErrBadName);
  1350 	test(r==KErrBadName);
  1362 	r=TheFs.Delete(_L("\\Documents.\\documents\\TEstfile.txt"));
  1351 	r=TheFs.Delete(_L("\\Documents.\\documents\\TEstfile.txt"));
  1363 	test_Value(r, r == KErrBadName);
  1352 	test(r==KErrBadName);
  1364 	r=TheFs.Delete(_L("\\documents.\\Documents\\TEstfile.txt"));
  1353 	r=TheFs.Delete(_L("\\documents.\\Documents\\TEstfile.txt"));
  1365 	test_Value(r, r == KErrBadName);
  1354 	test(r==KErrBadName);
  1366 	r=TheFs.Delete(_L("\\Documents\\Documents\\Testfile.txt"));
  1355 	r=TheFs.Delete(_L("\\Documents\\Documents\\Testfile.txt"));
  1367 	test_Value(r, r == KErrInUse);
  1356 	test(r==KErrInUse);
  1368 	r=TheFs.Delete(_L("\\documents\\documents\\testfile.txt"));
  1357 	r=TheFs.Delete(_L("\\documents\\documents\\testfile.txt"));
  1369 	test_Value(r, r == KErrInUse);
  1358 	test(r==KErrInUse);
  1370 	r=TheFs.Delete(_L("\\Documents.\\Documents.\\TEstfile.TXT"));
  1359 	r=TheFs.Delete(_L("\\Documents.\\Documents.\\TEstfile.TXT"));
  1371 	test_Value(r, r == KErrBadName);
  1360 	test(r==KErrBadName);
  1372 	r=TheFs.Delete(_L("\\docUMENTS.\\docUMENTS.\\TESTFILE.TXT"));
  1361 	r=TheFs.Delete(_L("\\docUMENTS.\\docUMENTS.\\TESTFILE.TXT"));
  1373 	test_Value(r, r == KErrBadName);
  1362 	test(r==KErrBadName);
  1374 
  1363 
  1375 
  1364 
  1376 	r=TheFs.RmDir(_L("\\Documents\\"));
  1365 	r=TheFs.RmDir(_L("\\Documents\\"));
  1377 	test_Value(r, r == KErrInUse);
  1366 	test(r==KErrInUse);
  1378 	r=TheFs.RmDir(_L("\\documents\\"));
  1367 	r=TheFs.RmDir(_L("\\documents\\"));
  1379 	test_Value(r, r == KErrInUse);
  1368 	test(r==KErrInUse);
  1380 	r=TheFs.RmDir(_L("\\Documents.\\"));
  1369 	r=TheFs.RmDir(_L("\\Documents.\\"));
  1381 	test_Value(r, r == KErrBadName);
  1370 	test(r==KErrBadName);
  1382 	r=TheFs.RmDir(_L("\\documents.\\"));
  1371 	r=TheFs.RmDir(_L("\\documents.\\"));
  1383 	test_Value(r, r == KErrBadName);
  1372 	test(r==KErrBadName);
  1384 	r=TheFs.RmDir(_L("\\Documents\\documents\\"));
  1373 	r=TheFs.RmDir(_L("\\Documents\\documents\\"));
  1385 	test_Value(r, r == KErrInUse);
  1374 	test(r==KErrInUse);
  1386 	r=TheFs.RmDir(_L("\\documents\\documents.\\"));
  1375 	r=TheFs.RmDir(_L("\\documents\\documents.\\"));
  1387 	test_Value(r, r == KErrBadName);
  1376 	test(r==KErrBadName);
  1388 	r=TheFs.RmDir(_L("\\Documents.\\Documents\\"));
  1377 	r=TheFs.RmDir(_L("\\Documents.\\Documents\\"));
  1389 	test_Value(r, r == KErrBadName);
  1378 	test(r==KErrBadName);
  1390 	r=TheFs.RmDir(_L("\\documents.\\Documents.\\"));
  1379 	r=TheFs.RmDir(_L("\\documents.\\Documents.\\"));
  1391 	test_Value(r, r == KErrBadName);
  1380 	test(r==KErrBadName);
  1392 	r=TheFs.RmDir(_L("\\Documents\\TestFile.TXT"));
  1381 	r=TheFs.RmDir(_L("\\Documents\\TestFile.TXT"));
  1393 	test_Value(r, r == KErrInUse);
  1382 	test(r==KErrInUse);
  1394 	r=TheFs.RmDir(_L("\\documents\\TestFile"));
  1383 	r=TheFs.RmDir(_L("\\documents\\TestFile"));
  1395 	test_Value(r, r == KErrInUse);
  1384 	test(r==KErrInUse);
  1396 	r=TheFs.RmDir(_L("\\Documents.\\Testfile."));
  1385 	r=TheFs.RmDir(_L("\\Documents.\\Testfile."));
  1397 	test_Value(r, r == KErrBadName);
  1386 	test(r==KErrBadName);
  1398 	r=TheFs.RmDir(_L("\\documents.\\t"));
  1387 	r=TheFs.RmDir(_L("\\documents.\\t"));
  1399 	test_Value(r, r == KErrBadName);
  1388 	test(r==KErrBadName);
  1400 	f.Close();
  1389 	f.Close();
  1401 	r=TheFs.Delete(_L("\\Documents\\documents\\TEstfile.TXT"));
  1390 	r=TheFs.Delete(_L("\\Documents\\documents\\TEstfile.TXT"));
  1402 	test_KErrNone(r);
  1391 	test(r==KErrNone);
  1403 	r=TheFs.RmDir(_L("\\Documents\\documents.\\"));
  1392 	r=TheFs.RmDir(_L("\\Documents\\documents.\\"));
  1404 	test_Value(r, r == KErrBadName);
  1393 	test(r==KErrBadName);
  1405 	r=TheFs.RmDir(_L("\\Documents.\\"));
  1394 	r=TheFs.RmDir(_L("\\Documents.\\"));
  1406 	test_Value(r, r == KErrBadName);
  1395 	test(r==KErrBadName);
  1407 	}
  1396 	}
  1408 
  1397 
  1409 static void testFileSeek()
  1398 static void testFileSeek()
  1410 //
  1399 //
  1411 // Test seeking
  1400 // Test seeking
  1412 //
  1401 //
  1413 	{
  1402 	{
  1414 	test.Next(_L("Test file seek"));
  1403 	test.Next(_L("Test file seek"));
  1415 	RFile f;
  1404 	RFile f;
  1416 	TInt r=f.Open(TheFs,_L("T_File.cpp"),EFileWrite);
  1405 	TInt r=f.Open(TheFs,_L("T_File.cpp"),EFileWrite);
  1417 	test_KErrNone(r);
  1406 	test(r==KErrNone);
  1418 
  1407 
  1419 	TBuf8<20> text1;TInt pos1=0;
  1408 	TBuf8<20> text1;TInt pos1=0;
  1420 	TBuf8<20> text2;TInt pos2=510;
  1409 	TBuf8<20> text2;TInt pos2=510;
  1421 	TBuf8<20> text3;TInt pos3=900;
  1410 	TBuf8<20> text3;TInt pos3=900;
  1422 	TBuf8<20> text4;TInt pos4=2010;
  1411 	TBuf8<20> text4;TInt pos4=2010;
  1423 	TBuf8<20> text5;TInt pos5=4999;
  1412 	TBuf8<20> text5;TInt pos5=4999;
  1424 
  1413 
  1425 	r=f.Read(pos1,text1);
  1414 	r=f.Read(pos1,text1);
  1426 	test_KErrNone(r);
  1415 	test(r==KErrNone);
  1427 	r=f.Read(pos2,text2);
  1416 	r=f.Read(pos2,text2);
  1428 	test_KErrNone(r);
  1417 	test(r==KErrNone);
  1429 	r=f.Read(pos3,text3);
  1418 	r=f.Read(pos3,text3);
  1430 	test_KErrNone(r);
  1419 	test(r==KErrNone);
  1431 	r=f.Read(pos4,text4);
  1420 	r=f.Read(pos4,text4);
  1432 	test_KErrNone(r);
  1421 	test(r==KErrNone);
  1433 	r=f.Read(pos5,text5);
  1422 	r=f.Read(pos5,text5);
  1434 	test_KErrNone(r);
  1423 	test(r==KErrNone);
  1435 
  1424 
  1436 	TBuf8<20> testBuf;
  1425 	TBuf8<20> testBuf;
  1437 
  1426 
  1438 	r=f.Read(pos3,testBuf);
  1427 	r=f.Read(pos3,testBuf);
  1439 	test_KErrNone(r);
  1428 	test(r==KErrNone);
  1440 	test(testBuf==text3);
  1429 	test(testBuf==text3);
  1441 
  1430 
  1442 	r=f.Read(pos1,testBuf);
  1431 	r=f.Read(pos1,testBuf);
  1443 	test_KErrNone(r);
  1432 	test(r==KErrNone);
  1444 	test(testBuf==text1);
  1433 	test(testBuf==text1);
  1445 
  1434 
  1446 	r=f.Read(pos4,testBuf);
  1435 	r=f.Read(pos4,testBuf);
  1447 	test_KErrNone(r);
  1436 	test(r==KErrNone);
  1448 	test(testBuf==text4);
  1437 	test(testBuf==text4);
  1449 
  1438 
  1450 	r=f.Read(pos2,testBuf);
  1439 	r=f.Read(pos2,testBuf);
  1451 	test_KErrNone(r);
  1440 	test(r==KErrNone);
  1452 	test(testBuf==text2);
  1441 	test(testBuf==text2);
  1453 
  1442 
  1454 	r=f.Read(pos5,testBuf);
  1443 	r=f.Read(pos5,testBuf);
  1455 	test_KErrNone(r);
  1444 	test(r==KErrNone);
  1456 	test(testBuf==text5);
  1445 	test(testBuf==text5);
  1457 
  1446 
  1458 	r=f.Read(pos2,testBuf);
  1447 	r=f.Read(pos2,testBuf);
  1459 	test_KErrNone(r);
  1448 	test(r==KErrNone);
  1460 	test(testBuf==text2);
  1449 	test(testBuf==text2);
  1461 	r=f.SetSize(1023);
  1450 	r=f.SetSize(1023);
  1462 	test_KErrNone(r);
  1451 	test(r==KErrNone);
  1463 	r=f.Read(pos2,testBuf);
  1452 	r=f.Read(pos2,testBuf);
  1464 	test_KErrNone(r);
  1453 	test(r==KErrNone);
  1465 	test(testBuf==text2);
  1454 	test(testBuf==text2);
  1466 	r=f.SetSize(1024);
  1455 	r=f.SetSize(1024);
  1467 	test_KErrNone(r);
  1456 	test(r==KErrNone);
  1468 	r=f.Read(pos1,testBuf);
  1457 	r=f.Read(pos1,testBuf);
  1469 	test_KErrNone(r);
  1458 	test(r==KErrNone);
  1470 	test(testBuf==text1);
  1459 	test(testBuf==text1);
  1471 	r=f.Read(pos2,testBuf);
  1460 	r=f.Read(pos2,testBuf);
  1472 	test_KErrNone(r);
  1461 	test(r==KErrNone);
  1473 	test(testBuf==text2);
  1462 	test(testBuf==text2);
  1474 
  1463 
  1475 	r=f.Read(pos1,testBuf);
  1464 	r=f.Read(pos1,testBuf);
  1476 	test_KErrNone(r);
  1465 	test(r==KErrNone);
  1477 	test(testBuf==text1);
  1466 	test(testBuf==text1);
  1478 	r=f.SetSize(511);
  1467 	r=f.SetSize(511);
  1479 	test_KErrNone(r);
  1468 	test(r==KErrNone);
  1480 	r=f.Read(pos1,testBuf);
  1469 	r=f.Read(pos1,testBuf);
  1481 	test_KErrNone(r);
  1470 	test(r==KErrNone);
  1482 	test(testBuf==text1);
  1471 	test(testBuf==text1);
  1483 	r=f.SetSize(512);
  1472 	r=f.SetSize(512);
  1484 	test_KErrNone(r);
  1473 	test(r==KErrNone);
  1485 	r=f.Read(pos1,testBuf);
  1474 	r=f.Read(pos1,testBuf);
  1486 	test_KErrNone(r);
  1475 	test(r==KErrNone);
  1487 	test(testBuf==text1);
  1476 	test(testBuf==text1);
  1488 	f.Close();
  1477 	f.Close();
  1489 	}
  1478 	}
  1490 
  1479 
  1491 static void testMoreFileSeek()
  1480 static void testMoreFileSeek()
  1494 //
  1483 //
  1495 	{
  1484 	{
  1496 //	Create a zero length file
  1485 //	Create a zero length file
  1497 	RFile file;
  1486 	RFile file;
  1498 	TInt r=file.Replace(TheFs,_L("\\F32-TST\\TFILE\\seektest"),EFileRead|EFileWrite);
  1487 	TInt r=file.Replace(TheFs,_L("\\F32-TST\\TFILE\\seektest"),EFileRead|EFileWrite);
  1499 	test_KErrNone(r);
  1488 	test(r==KErrNone);
  1500 	r=file.SetSize(20);
  1489 	r=file.SetSize(20);
  1501 	test_KErrNone(r);
  1490 	test(r==KErrNone);
  1502 //	Seek beyond the length of the file
  1491 //	Seek beyond the length of the file
  1503 	TInt seekPos;
  1492 	TInt seekPos;
  1504 	seekPos = 80;								//	Pick a likely offset
  1493 	seekPos = 80;								//	Pick a likely offset
  1505     TInt err = file.Seek(ESeekEnd, seekPos);	//	and go there
  1494     TInt err = file.Seek(ESeekEnd, seekPos);	//	and go there
  1506     test_KErrNone(err);
  1495     test(err==KErrNone);
  1507 	test(seekPos==20);							//	Somewhat non-intuitive?
  1496 	test(seekPos==20);							//	Somewhat non-intuitive?
  1508 
  1497 
  1509 	r=file.Write(_L8("A Devil's Haircut"));
  1498 	r=file.Write(_L8("A Devil's Haircut"));
  1510 	test_KErrNone(r);
  1499 	test(r==KErrNone);
  1511 	TInt newFileSize;
  1500 	TInt newFileSize;
  1512 	r=file.Size(newFileSize);
  1501 	r=file.Size(newFileSize);
  1513 	test_KErrNone(r);
  1502 	test(r==KErrNone);
  1514 
  1503 
  1515 	seekPos = 0;
  1504 	seekPos = 0;
  1516     err = file.Seek(ESeekCurrent, seekPos);		//	Find out where we ended up?
  1505     err = file.Seek(ESeekCurrent, seekPos);		//	Find out where we ended up?
  1517 	test_KErrNone(err);
  1506 	test(err==KErrNone);
  1518 	test(seekPos==37);
  1507 	test(seekPos==37);
  1519 
  1508 
  1520 	file.SetSize(512);
  1509 	file.SetSize(512);
  1521 	seekPos=513;
  1510 	seekPos=513;
  1522 	err=file.Seek(ESeekStart, seekPos);
  1511 	err=file.Seek(ESeekStart, seekPos);
  1523 	test_KErrNone(err);
  1512 	test(err==KErrNone);
  1524 	test(seekPos==513);
  1513 	test(seekPos==513);
  1525 
  1514 
  1526 	err=file.Seek(ESeekEnd, seekPos);
  1515 	err=file.Seek(ESeekEnd, seekPos);
  1527 	test_KErrNone(err);
  1516 	test(err==KErrNone);
  1528 	test(seekPos==512);
  1517 	test(seekPos==512);
  1529 
  1518 
  1530 	seekPos=-530;
  1519 	seekPos=-530;
  1531 	err=file.Seek(ESeekEnd, seekPos);
  1520 	err=file.Seek(ESeekEnd, seekPos);
  1532 	test_KErrNone(err);
  1521 	test(err==KErrNone);
  1533 	test(seekPos==0);
  1522 	test(seekPos==0);
  1534 
  1523 
  1535 	seekPos=-10;
  1524 	seekPos=-10;
  1536 	err=file.Seek(ESeekEnd, seekPos);
  1525 	err=file.Seek(ESeekEnd, seekPos);
  1537 	test_KErrNone(err);
  1526 	test(err==KErrNone);
  1538 	test(seekPos==502);
  1527 	test(seekPos==502);
  1539 
  1528 
  1540 	seekPos=-10;
  1529 	seekPos=-10;
  1541 	err=file.Seek(ESeekStart,seekPos);
  1530 	err=file.Seek(ESeekStart,seekPos);
  1542 	test_Value(err, err == KErrArgument);
  1531 	test(err==KErrArgument);
  1543 	test(seekPos==-10);
  1532 	test(seekPos==-10);
  1544 
  1533 
  1545 	seekPos=0;
  1534 	seekPos=0;
  1546 	err=file.Seek(ESeekEnd,seekPos);
  1535 	err=file.Seek(ESeekEnd,seekPos);
  1547 	test_KErrNone(err);
  1536 	test(err==KErrNone);
  1548 	test(seekPos==512);
  1537 	test(seekPos==512);
  1549 
  1538 
  1550 	file.Close();
  1539 	file.Close();
  1551 	r=TheFs.Delete(_L("\\F32-TST\\TFILE\\seektest"));
  1540 	r=TheFs.Delete(_L("\\F32-TST\\TFILE\\seektest"));
  1552 	test_KErrNone(r);
  1541 	test(r==KErrNone);
  1553 	}
  1542 	}
  1554 
  1543 
  1555 static void testSetSize()
  1544 static void testSetSize()
  1556 //
  1545 //
  1557 // Test setsize
  1546 // Test setsize
  1560 
  1549 
  1561 	test.Next(_L("Test SetSize"));
  1550 	test.Next(_L("Test SetSize"));
  1562 	RFile f1;
  1551 	RFile f1;
  1563 	TInt i=0;
  1552 	TInt i=0;
  1564 	TInt r=f1.Replace(TheFs,_L("File.File"),EFileWrite);
  1553 	TInt r=f1.Replace(TheFs,_L("File.File"),EFileWrite);
  1565 	test_KErrNone(r);
  1554 	test(r==KErrNone);
  1566 	gBuf.SetLength(32);
  1555 	gBuf.SetLength(32);
  1567 	for(i=0;i<32;i++)
  1556 	for(i=0;i<32;i++)
  1568 		gBuf[i]=(TUint8)i;
  1557 		gBuf[i]=(TUint8)i;
  1569 	r=f1.Write(gBuf);
  1558 	r=f1.Write(gBuf);
  1570 	test_KErrNone(r);
  1559 	test(r==KErrNone);
  1571 	gBuf.SetLength(1334);
  1560 	gBuf.SetLength(1334);
  1572 	for(i=64;i<1334+64;i++)
  1561 	for(i=64;i<1334+64;i++)
  1573 		gBuf[i-64]=(TUint8)i;
  1562 		gBuf[i-64]=(TUint8)i;
  1574 	r=f1.Write(30,gBuf);
  1563 	r=f1.Write(30,gBuf);
  1575 	r=f1.Read(30,gBuf,1000);
  1564 	r=f1.Read(30,gBuf,1000);
  1576 	test_KErrNone(r);
  1565 	test(r==KErrNone);
  1577 	test(gBuf[0]==64);
  1566 	test(gBuf[0]==64);
  1578 	test(gBuf[1]==65);
  1567 	test(gBuf[1]==65);
  1579 	test(gBuf[2]==66);
  1568 	test(gBuf[2]==66);
  1580 	f1.Close();
  1569 	f1.Close();
  1581 
  1570 
  1582 	test.Next(_L("Open a large file"));
  1571 	test.Next(_L("Open a large file"));
  1583 	r=f1.Replace(TheFs,_L("File.File"),EFileWrite);
  1572 	r=f1.Replace(TheFs,_L("File.File"),EFileWrite);
  1584 	test_KErrNone(r);
  1573 	test(r==KErrNone);
  1585 	CheckDisk();
  1574 	CheckDisk();
  1586 	r=f1.SetSize(131072); // 128K
  1575 	r=f1.SetSize(131072); // 128K
  1587 	test_KErrNone(r);
  1576 	test(r==KErrNone);
  1588 	TBuf8<16> testData=_L8("testData");
  1577 	TBuf8<16> testData=_L8("testData");
  1589 	r=f1.Write(131060,testData);
  1578 	r=f1.Write(131060,testData);
  1590 	test_KErrNone(r);
  1579 	test(r==KErrNone);
  1591 	f1.Close();
  1580 	f1.Close();
  1592 	r=f1.Open(TheFs,_L("File.File"),EFileRead);
  1581 	r=f1.Open(TheFs,_L("File.File"),EFileRead);
  1593 	test_KErrNone(r);
  1582 	test(r==KErrNone);
  1594 	TInt size;
  1583 	TInt size;
  1595 	r=f1.Size(size);
  1584 	r=f1.Size(size);
  1596 	test_KErrNone(r);
  1585 	test(r==KErrNone);
  1597 	test(size==131072);
  1586 	test(size==131072);
  1598 	TBuf8<16> testData2;
  1587 	TBuf8<16> testData2;
  1599 	r=f1.Read(131060,testData2,8);
  1588 	r=f1.Read(131060,testData2,8);
  1600 	test_KErrNone(r);
  1589 	test(r==KErrNone);
  1601 	test(testData==testData2);
  1590 	test(testData==testData2);
  1602 	f1.Close();
  1591 	f1.Close();
  1603 	TheFs.Delete(_L("File.file"));
  1592 	TheFs.Delete(_L("File.file"));
  1604 	CheckDisk();
  1593 	CheckDisk();
  1605 	}
  1594 	}
  1606 
  1595 
  1607 static void testIsRomAddress()
  1596 static void testIsRomAddress()
  1608 	{
  1597 	{
  1609 	RFile f;
  1598 	RFile f;
  1610 	TInt r=f.Open(TheFs, PlatSec::ConfigSetting(PlatSec::EPlatSecEnforceSysBin)?_L("Z:\\Sys\\Bin\\eshell.exe"):_L("Z:\\System\\Bin\\eshell.exe"), EFileRead);
  1599 	TInt r=f.Open(TheFs, PlatSec::ConfigSetting(PlatSec::EPlatSecEnforceSysBin)?_L("Z:\\Sys\\Bin\\eshell.exe"):_L("Z:\\System\\Bin\\eshell.exe"), EFileRead);
  1611 	test_KErrNone(r);
  1600 	test(r==KErrNone);
  1612 	TInt anAddress=0;
  1601 	TInt anAddress=0;
  1613 	r=f.Seek(ESeekAddress, anAddress);
  1602 	r=f.Seek(ESeekAddress, anAddress);
  1614 	test_KErrNone(r);
  1603 	test(r==KErrNone);
  1615 #if !defined(__WINS__)
  1604 #if !defined(__WINS__)
  1616 	test(RFs::IsRomAddress((TAny *)anAddress)); // Always returns EFalse if WINS
  1605 	test(RFs::IsRomAddress((TAny *)anAddress)); // Always returns EFalse if WINS
  1617 #endif
  1606 #endif
  1618 	test(RFs::IsRomAddress(NULL)==FALSE);
  1607 	test(RFs::IsRomAddress(NULL)==FALSE);
  1619 	f.Close();
  1608 	f.Close();
  1630 
  1619 
  1631 	test.Next(_L("Miscellaneous tests"));
  1620 	test.Next(_L("Miscellaneous tests"));
  1632 	RFile f1;
  1621 	RFile f1;
  1633 	TInt temp;
  1622 	TInt temp;
  1634 	TInt r=f1.Replace(TheFs,_L("File.File"),EFileWrite);
  1623 	TInt r=f1.Replace(TheFs,_L("File.File"),EFileWrite);
  1635 	test_KErrNone(r);
  1624 	test(r==KErrNone);
  1636 	r=f1.Size(temp);
  1625 	r=f1.Size(temp);
  1637 	test_KErrNone(r);
  1626 	test(r==KErrNone);
  1638 	test(temp==0);
  1627 	test(temp==0);
  1639 	TUint data=0;
  1628 	TUint data=0;
  1640 	TPtrC8 buf((TText8*)&data,1);
  1629 	TPtrC8 buf((TText8*)&data,1);
  1641 	r=f1.Write(buf);
  1630 	r=f1.Write(buf);
  1642 //	r=f1.Write(_L("\0"));
  1631 //	r=f1.Write(_L("\0"));
  1643 	test_KErrNone(r);
  1632 	test(r==KErrNone);
  1644 	r=f1.Size(temp);
  1633 	r=f1.Size(temp);
  1645 	test_KErrNone(r);
  1634 	test(r==KErrNone);
  1646 	test(temp==1);
  1635 	test(temp==1);
  1647 	temp=0;
  1636 	temp=0;
  1648 	r=f1.Seek(ESeekStart,temp);
  1637 	r=f1.Seek(ESeekStart,temp);
  1649 	test_KErrNone(r);
  1638 	test(r==KErrNone);
  1650 	test(temp==0);
  1639 	test(temp==0);
  1651 	TBuf8<32> testBuf;
  1640 	TBuf8<32> testBuf;
  1652 	r=f1.Read(testBuf);
  1641 	r=f1.Read(testBuf);
  1653 	test_KErrNone(r);
  1642 	test(r==KErrNone);
  1654 	test(testBuf==buf);
  1643 	test(testBuf==buf);
  1655 	f1.Close();
  1644 	f1.Close();
  1656 
  1645 
  1657 	class RHackFile : public RFile
  1646 	class RHackFile : public RFile
  1658 	{
  1647 	{
  1661 			{ return RSubSessionBase::SendReceive(aFunction, aArgs); }
  1650 			{ return RSubSessionBase::SendReceive(aFunction, aArgs); }
  1662 	};
  1651 	};
  1663 
  1652 
  1664 	RHackFile f2;
  1653 	RHackFile f2;
  1665 	f2.Open(TheFs, _L("File.File"), EFileRead);
  1654 	f2.Open(TheFs, _L("File.File"), EFileRead);
  1666 	test_KErrNone(r);
  1655 	test(r == KErrNone);
  1667 	r = f2.SendReceive(/*47*/ EFsFileChangeMode, TIpcArgs(EFileRead | EFileWrite));	// <- must fail!
  1656 	r = f2.SendReceive(/*47*/ EFsFileChangeMode, TIpcArgs(EFileRead | EFileWrite));	// <- must fail!
  1668 	test_Value(r, r == KErrArgument);
  1657 	test(r == KErrArgument);
  1669 	r = f2.Write(_L8("Hacked!"));	// <- must fail!
  1658 	r = f2.Write(_L8("Hacked!"));	// <- must fail!
  1670 	test_Value(r, r == KErrAccessDenied);
  1659 	test(r == KErrAccessDenied);
  1671 	f2.Close();
  1660 	f2.Close();
  1672 
  1661 
  1673 	r=TheFs.Delete(_L("File.FIle"));
  1662 	r=TheFs.Delete(_L("File.FIle"));
  1674 	test_KErrNone(r);
  1663 	test(r==KErrNone);
  1675 	}
  1664 	}
  1676 
  1665 
  1677 static void testFileRename()
  1666 static void testFileRename()
  1678 //
  1667 //
  1679 // Test rename
  1668 // Test rename
  1689     TInt r;
  1678     TInt r;
  1690     RFile f1;
  1679     RFile f1;
  1691 
  1680 
  1692     //-- test renaming a file to a non-existing directory
  1681     //-- test renaming a file to a non-existing directory
  1693     r = TheFs.MkDir(_L("\\temp\\"));
  1682     r = TheFs.MkDir(_L("\\temp\\"));
  1694     test_Value(r, r == KErrNone || r==KErrAlreadyExists);
  1683     test(r==KErrNone || r==KErrAlreadyExists);
  1695 
  1684 
  1696     r = f1.Replace(TheFs, _L("\\temp\\file1"), 0);
  1685     r = f1.Replace(TheFs, _L("\\temp\\file1"), 0);
  1697     test_KErrNone(r);
  1686     test(r==KErrNone);
  1698 
  1687 
  1699     r = f1.Rename(_L("\\temp\\temp\\file1"));
  1688     r = f1.Rename(_L("\\temp\\temp\\file1"));
  1700     test_Value(r, r == KErrPathNotFound);
  1689     test(r == KErrPathNotFound);
  1701 
  1690 
  1702     f1.Close();
  1691     f1.Close();
  1703 
  1692 
  1704 
  1693 
  1705 	r=f1.Replace(TheFs,name2,EFileWrite);
  1694 	r=f1.Replace(TheFs,name2,EFileWrite);
  1706 	test_KErrNone(r);
  1695 	test(r==KErrNone);
  1707 	r=f1.Write(_L8("1234"));
  1696 	r=f1.Write(_L8("1234"));
  1708 	test_KErrNone(r);
  1697 	test(r==KErrNone);
  1709 	TInt len=CheckFileExists(name2,KErrNone);
  1698 	TInt len=CheckFileExists(name2,KErrNone);
  1710 	test(len==4);
  1699 	test(len==4);
  1711 	r=f1.Rename(name1);
  1700 	r=f1.Rename(name1);
  1712 	test_KErrNone(r);
  1701 	test(r==KErrNone);
  1713 
  1702 
  1714 	r=f1.Read(0,contents);
  1703 	r=f1.Read(0,contents);
  1715 	test_KErrNone(r);
  1704 	test(r==KErrNone);
  1716 	test(contents==_L8("1234"));
  1705 	test(contents==_L8("1234"));
  1717 	r=f1.Write(4,_L8("5678"));
  1706 	r=f1.Write(4,_L8("5678"));
  1718 	test_KErrNone(r);
  1707 	test(r==KErrNone);
  1719 
  1708 
  1720 	len=CheckFileExists(name1,KErrNone);
  1709 	len=CheckFileExists(name1,KErrNone);
  1721 	test(len==8);
  1710 	test(len==8);
  1722 	CheckFileExists(name2,KErrNotFound);
  1711 	CheckFileExists(name2,KErrNotFound);
  1723 	r=f1.Write(8,_L8("90"));
  1712 	r=f1.Write(8,_L8("90"));
  1724 	test_KErrNone(r);
  1713 	test(r==KErrNone);
  1725 	f1.Close();
  1714 	f1.Close();
  1726 	len=CheckFileExists(name1,KErrNone);
  1715 	len=CheckFileExists(name1,KErrNone);
  1727 	test(len==10);
  1716 	test(len==10);
  1728 
  1717 
  1729 	test.Next(_L("Test can change case using rename"));
  1718 	test.Next(_L("Test can change case using rename"));
  1730 	r=f1.Open(TheFs,name1,EFileRead|EFileWrite);
  1719 	r=f1.Open(TheFs,name1,EFileRead|EFileWrite);
  1731 	test_KErrNone(r);
  1720 	test(r==KErrNone);
  1732 	r=f1.Rename(name3);
  1721 	r=f1.Rename(name3);
  1733 	test_KErrNone(r);
  1722 	test(r==KErrNone);
  1734 	CheckFileExists(name1,KErrNone,EFalse);
  1723 	CheckFileExists(name1,KErrNone,EFalse);
  1735 	len=CheckFileExists(name3,KErrNone);
  1724 	len=CheckFileExists(name3,KErrNone);
  1736 	test(len==10);
  1725 	test(len==10);
  1737 	f1.Close();
  1726 	f1.Close();
  1738 	CheckFileExists(name1,KErrNone,EFalse);
  1727 	CheckFileExists(name1,KErrNone,EFalse);
  1739 	len=CheckFileExists(name3,KErrNone);
  1728 	len=CheckFileExists(name3,KErrNone);
  1740 	test(len==10);
  1729 	test(len==10);
  1741 
  1730 
  1742 	test.Next(_L("Test can rename to an identical filename"));
  1731 	test.Next(_L("Test can rename to an identical filename"));
  1743 	r=f1.Open(TheFs,name3,EFileRead|EFileWrite);
  1732 	r=f1.Open(TheFs,name3,EFileRead|EFileWrite);
  1744 	test_KErrNone(r);
  1733 	test(r==KErrNone);
  1745 	r=f1.Rename(name3);
  1734 	r=f1.Rename(name3);
  1746 	test_KErrNone(r);
  1735 	test(r==KErrNone);
  1747 	len=CheckFileExists(name3,KErrNone);
  1736 	len=CheckFileExists(name3,KErrNone);
  1748 	test(len==10);
  1737 	test(len==10);
  1749 	f1.Close();
  1738 	f1.Close();
  1750 	len=CheckFileExists(name3,KErrNone);
  1739 	len=CheckFileExists(name3,KErrNone);
  1751 	test(len==10);
  1740 	test(len==10);
  1752 
  1741 
  1753 	test.Next(_L("Test rename to a name containing a wildcard is rejected"));
  1742 	test.Next(_L("Test rename to a name containing a wildcard is rejected"));
  1754 	r=f1.Open(TheFs,name3,EFileRead|EFileWrite);
  1743 	r=f1.Open(TheFs,name3,EFileRead|EFileWrite);
  1755 	test_KErrNone(r);
  1744 	test(r==KErrNone);
  1756 	r=f1.Rename(_L("asdf*ASDF"));
  1745 	r=f1.Rename(_L("asdf*ASDF"));
  1757 	test_Value(r, r == KErrBadName);
  1746 	test(r==KErrBadName);
  1758 	r=f1.Rename(_L("asdf?AF"));
  1747 	r=f1.Rename(_L("asdf?AF"));
  1759 	test_Value(r, r == KErrBadName);
  1748 	test(r==KErrBadName);
  1760 	f1.Close();
  1749 	f1.Close();
  1761 
  1750 
  1762 	r=f1.Open(TheFs,name3,EFileRead);
  1751 	r=f1.Open(TheFs,name3,EFileRead);
  1763 	test_KErrNone(r);
  1752 	test(r==KErrNone);
  1764 	r=f1.Read(contents);
  1753 	r=f1.Read(contents);
  1765 	test_KErrNone(r);
  1754 	test(r==KErrNone);
  1766 	test(contents==_L8("1234567890"));
  1755 	test(contents==_L8("1234567890"));
  1767 	r=f1.Read(contents);
  1756 	r=f1.Read(contents);
  1768 	test_KErrNone(r);
  1757 	test(r==KErrNone);
  1769 	test(contents.Length()==0);
  1758 	test(contents.Length()==0);
  1770 	f1.Close();
  1759 	f1.Close();
  1771 
  1760 
  1772 	test.Next(_L("Check file date is retained"));
  1761 	test.Next(_L("Check file date is retained"));
  1773 	TDateTime dateTime(1995,(TMonth)10,19,23,0,0,0);
  1762 	TDateTime dateTime(1995,(TMonth)10,19,23,0,0,0);
  1774 	TTime oldTime(dateTime);
  1763 	TTime oldTime(dateTime);
  1775 	r=TheFs.SetEntry(name3,oldTime,0,0);
  1764 	r=TheFs.SetEntry(name3,oldTime,0,0);
  1776 	test_KErrNone(r);
  1765 	test(r==KErrNone);
  1777 	r=f1.Open(TheFs,name3,EFileRead|EFileWrite);
  1766 	r=f1.Open(TheFs,name3,EFileRead|EFileWrite);
  1778 	test_KErrNone(r);
  1767 	test(r==KErrNone);
  1779 	TTime check;
  1768 	TTime check;
  1780 	r=f1.Modified(check);
  1769 	r=f1.Modified(check);
  1781 	test_KErrNone(r);
  1770 	test(r==KErrNone);
  1782 	test(check==oldTime);
  1771 	test(check==oldTime);
  1783 
  1772 
  1784 	r=f1.Rename(_L("OldFile.Old"));
  1773 	r=f1.Rename(_L("OldFile.Old"));
  1785 	test_KErrNone(r);
  1774 	test(r==KErrNone);
  1786 
  1775 
  1787 	r=f1.Modified(check);
  1776 	r=f1.Modified(check);
  1788 	test_KErrNone(r);
  1777 	test(r==KErrNone);
  1789 	test(check==oldTime);
  1778 	test(check==oldTime);
  1790 	r=TheFs.Modified(_L("oldfile.old"),check);
  1779 	r=TheFs.Modified(_L("oldfile.old"),check);
  1791 	test_KErrNone(r);
  1780 	test(r==KErrNone);
  1792 	test(check==oldTime);
  1781 	test(check==oldTime);
  1793 	f1.Close();
  1782 	f1.Close();
  1794 	r=TheFs.Modified(_L("oldfile.old"),check);
  1783 	r=TheFs.Modified(_L("oldfile.old"),check);
  1795 	test_KErrNone(r);
  1784 	test(r==KErrNone);
  1796 	test(check==oldTime);
  1785 	test(check==oldTime);
  1797 	}
  1786 	}
  1798 
  1787 
  1799 static void TestFileUids()
  1788 static void TestFileUids()
  1800 //
  1789 //
  1808 	TUidType uidData1(TUid::Uid(2),TUid::Uid(2),TUid::Uid(2));
  1797 	TUidType uidData1(TUid::Uid(2),TUid::Uid(2),TUid::Uid(2));
  1809 	MakeFile(_L("Sketch(01)"),uidData1,_L8("A different sketch"));
  1798 	MakeFile(_L("Sketch(01)"),uidData1,_L8("A different sketch"));
  1810 
  1799 
  1811 	TEntry e;
  1800 	TEntry e;
  1812 	TInt r=TheFs.Entry(_L("Tmp04005.$$$"),e);
  1801 	TInt r=TheFs.Entry(_L("Tmp04005.$$$"),e);
  1813 	test_KErrNone(r);
  1802 	test(r==KErrNone);
  1814 	test(uidData==e.iType);
  1803 	test(uidData==e.iType);
  1815 	r=TheFs.Entry(_L("Sketch(01)"),e);
  1804 	r=TheFs.Entry(_L("Sketch(01)"),e);
  1816 	test_KErrNone(r);
  1805 	test(r==KErrNone);
  1817 	test(uidData1==e.iType);
  1806 	test(uidData1==e.iType);
  1818 
  1807 
  1819 	test.Next(_L("Test replace preserves UIDs"));
  1808 	test.Next(_L("Test replace preserves UIDs"));
  1820 	r=TheFs.Replace(_L("Tmp04005.$$$"),_L("Sketch(01)"));
  1809 	r=TheFs.Replace(_L("Tmp04005.$$$"),_L("Sketch(01)"));
  1821 	test_KErrNone(r);
  1810 	test(r==KErrNone);
  1822 
  1811 
  1823 	r=TheFs.Entry(_L("Tmp04005.$$$"),e);
  1812 	r=TheFs.Entry(_L("Tmp04005.$$$"),e);
  1824 	test_Value(r, r == KErrNotFound);
  1813 	test(r==KErrNotFound);
  1825 	r=TheFs.Entry(_L("Sketch(01)"),e);
  1814 	r=TheFs.Entry(_L("Sketch(01)"),e);
  1826 	test_KErrNone(r);
  1815 	test(r==KErrNone);
  1827 	test(uidData==e.iType);
  1816 	test(uidData==e.iType);
  1828 	}
  1817 	}
  1829 
  1818 
  1830 
  1819 
  1831 static void TestMaxLengthFilenames()
  1820 static void TestMaxLengthFilenames()
  1832 //
  1821 //
  1833 // Test max length filenames can be created/deleted
  1822 // Test max length filenames can be created/deleted
  1834 //
  1823 //
  1835 	{
  1824 	{
  1836 	if(Is_SimulatedSystemDrive(TheFs, gDriveNum))
  1825 
  1837 		{
  1826 #if defined(__WINS__)
  1838 		test.Printf(_L("Skipping TestMaxLengthFilenames() on PlatSim/Emulator drive %C:\n"), gSessionPath[0]);
  1827 	if (gSessionPath[0]=='C')
  1839 		return;
  1828 		return;
  1840 		}
  1829 #endif
  1841 
  1830 
  1842 	test.Next(_L("Test max length filenames"));
  1831 	test.Next(_L("Test max length filenames"));
  1843 	TFileName bigName;
  1832 	TFileName bigName;
  1844 	CreateLongName(bigName,gSeed,255);
  1833 	CreateLongName(bigName,gSeed,255);
  1845 	bigName[0]='\\';
  1834 	bigName[0]='\\';
  1846 	RFile f;
  1835 	RFile f;
  1847 	TInt r=f.Create(TheFs,bigName,EFileRead);
  1836 	TInt r=f.Create(TheFs,bigName,EFileRead);
  1848 	test_Value(r, r == KErrBadName);
  1837 	test(r==KErrBadName);
  1849 	bigName.SetLength(254);
  1838 	bigName.SetLength(254);
  1850 	r=f.Create(TheFs,bigName,EFileRead);
  1839 	r=f.Create(TheFs,bigName,EFileRead);
  1851 	test_KErrNone(r);
  1840 	test(r==KErrNone);
  1852 	f.Close();
  1841 	f.Close();
  1853 
  1842 
  1854 	TInt count;
  1843 	TInt count;
  1855 	TFileName countedBigName=bigName;
  1844 	TFileName countedBigName=bigName;
  1856     // This loop may not reach the '\' character, or we will get a bad path.
  1845     // This loop may not reach the '\' character, or we will get a bad path.
  1859 		countedBigName[2]=(TText)('A'+count);
  1848 		countedBigName[2]=(TText)('A'+count);
  1860 		r=f.Create(TheFs,countedBigName,EFileRead);
  1849 		r=f.Create(TheFs,countedBigName,EFileRead);
  1861 		if (r==KErrDirFull)
  1850 		if (r==KErrDirFull)
  1862 			{
  1851 			{
  1863 			r=TheFs.Delete(countedBigName);
  1852 			r=TheFs.Delete(countedBigName);
  1864 			test_Value(r, r == KErrNotFound);
  1853 			test(r==KErrNotFound);
  1865 			break;
  1854 			break;
  1866 			}
  1855 			}
  1867 		if (r!=KErrNone)
  1856 		if (r!=KErrNone)
  1868 			test.Printf(_L("File create failed:%d"),r);
  1857 			test.Printf(_L("File create failed:%d"),r);
  1869 		test_KErrNone(r);
  1858 		test(r==KErrNone);
  1870 		f.Close();
  1859 		f.Close();
  1871 		}
  1860 		}
  1872 	while(count--)
  1861 	while(count--)
  1873 		{
  1862 		{
  1874 		countedBigName[2]=(TText)('A'+count);
  1863 		countedBigName[2]=(TText)('A'+count);
  1875 		r=TheFs.Delete(countedBigName);
  1864 		r=TheFs.Delete(countedBigName);
  1876 		test_KErrNone(r);
  1865 		test(r==KErrNone);
  1877 		}
  1866 		}
  1878 
  1867 
  1879 	r=TheFs.Delete(bigName);
  1868 	r=TheFs.Delete(bigName);
  1880 	test_KErrNone(r);
  1869 	test(r==KErrNone);
  1881 
  1870 
  1882 	TFileName subDirFileName=_L("\\F32-TST\\TFILE");
  1871 	TFileName subDirFileName=_L("\\F32-TST\\TFILE");
  1883 	bigName.SetLength(241);
  1872 	bigName.SetLength(241);
  1884 	subDirFileName.Append(bigName);
  1873 	subDirFileName.Append(bigName);
  1885 	r=f.Create(TheFs,subDirFileName,EFileRead);
  1874 	r=f.Create(TheFs,subDirFileName,EFileRead);
  1886 	test_Value(r, r == KErrBadName);
  1875 	test(r==KErrBadName);
  1887 	subDirFileName.SetLength(254);
  1876 	subDirFileName.SetLength(254);
  1888 	r=f.Create(TheFs,subDirFileName,EFileRead);
  1877 	r=f.Create(TheFs,subDirFileName,EFileRead);
  1889 	test_KErrNone(r);
  1878 	test(r==KErrNone);
  1890 	f.Close();
  1879 	f.Close();
  1891 	r=TheFs.Delete(subDirFileName);
  1880 	r=TheFs.Delete(subDirFileName);
  1892 	test_KErrNone(r);
  1881 	test(r==KErrNone);
  1893 	}
  1882 	}
  1894 
  1883 
  1895 
  1884 
  1896 
  1885 
  1897 
  1886 
  1905 	MakeFile(_L("TESTER"));
  1894 	MakeFile(_L("TESTER"));
  1906 
  1895 
  1907 	// Open a file in EFileShareReadersOnly mode
  1896 	// Open a file in EFileShareReadersOnly mode
  1908 	RFile f1;
  1897 	RFile f1;
  1909 	TInt r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
  1898 	TInt r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
  1910 	test_KErrNone(r);
  1899 	test(r==KErrNone);
  1911 
  1900 
  1912 	// Opening a share in EFileShareReadersOnly mode should succeed
  1901 	// Opening a share in EFileShareReadersOnly mode should succeed
  1913 	RFile f2;
  1902 	RFile f2;
  1914 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
  1903 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
  1915 	test_KErrNone(r);
  1904 	test(r==KErrNone);
  1916 	f2.Close();
  1905 	f2.Close();
  1917 
  1906 
  1918 	// Opening a share in EFileShareReadersOrWriters mode with EFileRead access should succeed
  1907 	// Opening a share in EFileShareReadersOrWriters mode with EFileRead access should succeed
  1919 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  1908 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  1920 	test_KErrNone(r);
  1909 	test(r==KErrNone);
  1921 	f2.Close();
  1910 	f2.Close();
  1922 
  1911 
  1923 	// Opening a share in EFileShareReadersOrWriters mode with EFileWrite access should succeed
  1912 	// Opening a share in EFileShareReadersOrWriters mode with EFileWrite access should succeed
  1924 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite);
  1913 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite);
  1925 	test_Value(r, r == KErrInUse);
  1914 	test(r==KErrInUse);
  1926 
  1915 
  1927 	// Opening a share in EFileShareReadersOrWriters mode with EFileRead|EFileWrite access should succeed
  1916 	// Opening a share in EFileShareReadersOrWriters mode with EFileRead|EFileWrite access should succeed
  1928 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite);
  1917 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite);
  1929 	test_Value(r, r == KErrInUse);
  1918 	test(r==KErrInUse);
  1930 
  1919 
  1931 	// Opening a share in EShareAny mode should fail
  1920 	// Opening a share in EShareAny mode should fail
  1932 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
  1921 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
  1933 	test_Value(r, r == KErrInUse);
  1922 	test(r==KErrInUse);
  1934 
  1923 
  1935 	f1.Close();
  1924 	f1.Close();
  1936 
  1925 
  1937 	//////////////////////
  1926 	//////////////////////
  1938 
  1927 
  1939 	// Open a file in EFileShareReadersOrWriters mode for reading
  1928 	// Open a file in EFileShareReadersOrWriters mode for reading
  1940 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  1929 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  1941 	test_KErrNone(r);
  1930 	test(r==KErrNone);
  1942 
  1931 
  1943 	// Opening a share in EFileShareExclusive mode should fail
  1932 	// Opening a share in EFileShareExclusive mode should fail
  1944 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
  1933 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
  1945 	test_Value(r, r == KErrInUse);
  1934 	test(r==KErrInUse);
  1946 
  1935 
  1947 	// Opening a share in EFileShareReadersOnly mode should succeed
  1936 	// Opening a share in EFileShareReadersOnly mode should succeed
  1948 	// (the share doesn't care if the file is opened for reading or writing)
  1937 	// (the share doesn't care if the file is opened for reading or writing)
  1949 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
  1938 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
  1950 	test_KErrNone(r);
  1939 	test(r==KErrNone);
  1951 	f2.Close();
  1940 	f2.Close();
  1952 
  1941 
  1953 	// Opening a share in EFileShareReadersOnly mode with EFileRead accesss should succeed
  1942 	// Opening a share in EFileShareReadersOnly mode with EFileRead accesss should succeed
  1954 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  1943 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  1955 	test_KErrNone(r);
  1944 	test(r==KErrNone);
  1956 	f2.Close();
  1945 	f2.Close();
  1957 
  1946 
  1958 	// Opening a share in EFileShareReadersOnly mode with EFileWrite accesss should succeed
  1947 	// Opening a share in EFileShareReadersOnly mode with EFileWrite accesss should succeed
  1959 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite);
  1948 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite);
  1960 	test_KErrNone(r);
  1949 	test(r==KErrNone);
  1961 	f2.Close();
  1950 	f2.Close();
  1962 
  1951 
  1963 	// Opening a share in EFileShareReadersOnly mode with EFileRead|EFileWrite accesss should succeed
  1952 	// Opening a share in EFileShareReadersOnly mode with EFileRead|EFileWrite accesss should succeed
  1964 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite);
  1953 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite);
  1965 	test_KErrNone(r);
  1954 	test(r==KErrNone);
  1966 	f2.Close();
  1955 	f2.Close();
  1967 
  1956 
  1968 	// Opening a share in EFileShareAny mode should succeed
  1957 	// Opening a share in EFileShareAny mode should succeed
  1969 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
  1958 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
  1970 	test_KErrNone(r);
  1959 	test(r==KErrNone);
  1971 	f2.Close();
  1960 	f2.Close();
  1972 
  1961 
  1973 	f1.Close();
  1962 	f1.Close();
  1974 
  1963 
  1975 	//////////////////////
  1964 	//////////////////////
  1976 
  1965 
  1977 	// Open a file in EFileShareReadersOrWriters mode for writing
  1966 	// Open a file in EFileShareReadersOrWriters mode for writing
  1978 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite);
  1967 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite);
  1979 	test_KErrNone(r);
  1968 	test(r==KErrNone);
  1980 
  1969 
  1981 	// Opening a share in EFileShareExclusive mode should fail
  1970 	// Opening a share in EFileShareExclusive mode should fail
  1982 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
  1971 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
  1983 	test_Value(r, r == KErrInUse);
  1972 	test(r==KErrInUse);
  1984 
  1973 
  1985 	// Opening a share in EFileShareReadersOnly mode should fail
  1974 	// Opening a share in EFileShareReadersOnly mode should fail
  1986 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
  1975 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
  1987 	test_Value(r, r == KErrInUse);
  1976 	test(r==KErrInUse);
  1988 
  1977 
  1989 	// Opening a share in EFileShareReadersOrWriters mode with EFileRead access should succeed
  1978 	// Opening a share in EFileShareReadersOrWriters mode with EFileRead access should succeed
  1990 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  1979 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  1991 	test_KErrNone(r);
  1980 	test(r==KErrNone);
  1992 	f2.Close();
  1981 	f2.Close();
  1993 
  1982 
  1994 	// Opening a share in EFileShareReadersOrWriters mode with EFileWrite access should succeed
  1983 	// Opening a share in EFileShareReadersOrWriters mode with EFileWrite access should succeed
  1995 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite);
  1984 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite);
  1996 	test_KErrNone(r);
  1985 	test(r==KErrNone);
  1997 	f2.Close();
  1986 	f2.Close();
  1998 
  1987 
  1999 	// Opening a share in EFileShareReadersOrWriters mode with EFileRead|EFileWrite access should succeed
  1988 	// Opening a share in EFileShareReadersOrWriters mode with EFileRead|EFileWrite access should succeed
  2000 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite);
  1989 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite);
  2001 	test_KErrNone(r);
  1990 	test(r==KErrNone);
  2002 	f2.Close();
  1991 	f2.Close();
  2003 
  1992 
  2004 	// Opening a share in EFileShareAny mode should succeed
  1993 	// Opening a share in EFileShareAny mode should succeed
  2005 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
  1994 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
  2006 	test_KErrNone(r);
  1995 	test(r==KErrNone);
  2007 	f2.Close();
  1996 	f2.Close();
  2008 
  1997 
  2009 	f1.Close();
  1998 	f1.Close();
  2010 
  1999 
  2011 	//////////////////////////
  2000 	//////////////////////////
  2012 
  2001 
  2013 	// Open a file in EFileShareAny mode
  2002 	// Open a file in EFileShareAny mode
  2014 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
  2003 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
  2015 	test_KErrNone(r);
  2004 	test(r==KErrNone);
  2016 
  2005 
  2017 	// Opening a share in EFileShareExclusive mode should fail
  2006 	// Opening a share in EFileShareExclusive mode should fail
  2018 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
  2007 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
  2019 	test_Value(r, r == KErrInUse);
  2008 	test(r==KErrInUse);
  2020 
  2009 
  2021 	// Opening a share in EFileShareReadersOnly mode should fail
  2010 	// Opening a share in EFileShareReadersOnly mode should fail
  2022 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
  2011 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
  2023 	test_Value(r, r == KErrInUse);
  2012 	test(r==KErrInUse);
  2024 
  2013 
  2025 	// Opening a share in EFileShareReadersOrWriters mode with EFileRead access should succeed
  2014 	// Opening a share in EFileShareReadersOrWriters mode with EFileRead access should succeed
  2026 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  2015 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  2027 	test_KErrNone(r);
  2016 	test(r==KErrNone);
  2028 	f2.Close();
  2017 	f2.Close();
  2029 
  2018 
  2030 	// Opening a share in EFileShareReadersOrWriters mode with EFileWrite access should succeed
  2019 	// Opening a share in EFileShareReadersOrWriters mode with EFileWrite access should succeed
  2031 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite);
  2020 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite);
  2032 	test_KErrNone(r);
  2021 	test(r==KErrNone);
  2033 	f2.Close();
  2022 	f2.Close();
  2034 
  2023 
  2035 	// Opening a share in EFileShareReadersOrWriters mode with EFileRead|EFileWrite access should succeed
  2024 	// Opening a share in EFileShareReadersOrWriters mode with EFileRead|EFileWrite access should succeed
  2036 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite);
  2025 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite);
  2037 	test_KErrNone(r);
  2026 	test(r==KErrNone);
  2038 	f2.Close();
  2027 	f2.Close();
  2039 
  2028 
  2040 	// Opening a share in EFileShareAny mode with should succeed
  2029 	// Opening a share in EFileShareAny mode with should succeed
  2041 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
  2030 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
  2042 	test_KErrNone(r);
  2031 	test(r==KErrNone);
  2043 	f2.Close();
  2032 	f2.Close();
  2044 
  2033 
  2045 	f1.Close();
  2034 	f1.Close();
  2046 
  2035 
  2047 	//////////////////////
  2036 	//////////////////////
  2048 
  2037 
  2049 	// Open a file in EFileShareReadersOrWriters mode for reading
  2038 	// Open a file in EFileShareReadersOrWriters mode for reading
  2050 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  2039 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  2051 	test_KErrNone(r);
  2040 	test(r==KErrNone);
  2052 
  2041 
  2053 	// Opening a share in EFileShareReadersOnly mode should succeed
  2042 	// Opening a share in EFileShareReadersOnly mode should succeed
  2054 	//  - The share should now be promoted to EFileShareReadersOnly mode
  2043 	//  - The share should now be promoted to EFileShareReadersOnly mode
  2055 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
  2044 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
  2056 	test_KErrNone(r);
  2045 	test(r==KErrNone);
  2057 
  2046 
  2058 	TInt pass = 2;
  2047 	TInt pass = 2;
  2059 	while(pass--)
  2048 	while(pass--)
  2060 		{
  2049 		{
  2061 		RFile f3;
  2050 		RFile f3;
  2062 		// Opening a share in EFileShareReadersOnly mode with EFileRead accesss should succeed
  2051 		// Opening a share in EFileShareReadersOnly mode with EFileRead accesss should succeed
  2063 		r=f3.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  2052 		r=f3.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  2064 		test_KErrNone(r);
  2053 		test(r==KErrNone);
  2065 		f3.Close();
  2054 		f3.Close();
  2066 
  2055 
  2067 		// Opening a share in EFileShareReadersOnly mode with EFileWrite accesss should fail
  2056 		// Opening a share in EFileShareReadersOnly mode with EFileWrite accesss should fail
  2068 		r=f3.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite);
  2057 		r=f3.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite);
  2069 		if(pass == 1)
  2058 		if(pass == 1)
  2070 			{
  2059 			{
  2071 			// The share is promoted - should obey EFileShareReadersOnly rules
  2060 			// The share is promoted - should obey EFileShareReadersOnly rules
  2072 			test_Value(r, r == KErrInUse);
  2061 			test(r==KErrInUse);
  2073 			}
  2062 			}
  2074 		else
  2063 		else
  2075 			{
  2064 			{
  2076 			// The share is demoted - should obey EFileShareReadersOrWriters rules
  2065 			// The share is demoted - should obey EFileShareReadersOrWriters rules
  2077 			test_KErrNone(r);
  2066 			test(r==KErrNone);
  2078 			f3.Close();
  2067 			f3.Close();
  2079 			}
  2068 			}
  2080 
  2069 
  2081 		// Opening a share in EFileShareReadersOnly mode with EFileRead|EFileWrite accesss should fail
  2070 		// Opening a share in EFileShareReadersOnly mode with EFileRead|EFileWrite accesss should fail
  2082 		r=f3.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite);
  2071 		r=f3.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite);
  2083 		if(pass == 1)
  2072 		if(pass == 1)
  2084 			{
  2073 			{
  2085 			// The share is promoted - should obey EFileShareReadersOnly rules
  2074 			// The share is promoted - should obey EFileShareReadersOnly rules
  2086 			test_Value(r, r == KErrInUse);
  2075 			test(r==KErrInUse);
  2087 			}
  2076 			}
  2088 		else
  2077 		else
  2089 			{
  2078 			{
  2090 			// The share is demoted - should obey EFileShareReadersOrWriters rules
  2079 			// The share is demoted - should obey EFileShareReadersOrWriters rules
  2091 			test_KErrNone(r);
  2080 			test(r==KErrNone);
  2092 			f3.Close();
  2081 			f3.Close();
  2093 			}
  2082 			}
  2094 
  2083 
  2095 		// Opening a share in EFileShareAny mode should fails
  2084 		// Opening a share in EFileShareAny mode should fails
  2096 		r=f3.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
  2085 		r=f3.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
  2097 		if(pass == 1)
  2086 		if(pass == 1)
  2098 			{
  2087 			{
  2099 			// The share is promoted - should obey EFileShareReadersOnly rules
  2088 			// The share is promoted - should obey EFileShareReadersOnly rules
  2100 			test_Value(r, r == KErrInUse);
  2089 			test(r==KErrInUse);
  2101 			f2.Close();
  2090 			f2.Close();
  2102 			}
  2091 			}
  2103 		else
  2092 		else
  2104 			{
  2093 			{
  2105 			// The share is demoted - should obey EFileShareReadersOrWriters rules
  2094 			// The share is demoted - should obey EFileShareReadersOrWriters rules
  2106 			test_KErrNone(r);
  2095 			test(r==KErrNone);
  2107 			f3.Close();
  2096 			f3.Close();
  2108 			}
  2097 			}
  2109 		}
  2098 		}
  2110 
  2099 
  2111 	f1.Close();
  2100 	f1.Close();
  2204 
  2193 
  2205 // EXPORT_C TInt RFile::Write(const TDesC8& aDes,TInt aLength)
  2194 // EXPORT_C TInt RFile::Write(const TDesC8& aDes,TInt aLength)
  2206 	createTestFile(TheFile);
  2195 	createTestFile(TheFile);
  2207 
  2196 
  2208 	r=TheFile.Write(gBuf, -1);
  2197 	r=TheFile.Write(gBuf, -1);
  2209 	test_Value(r, r == KErrArgument);
  2198 	test(r==KErrArgument);
  2210 
  2199 
  2211 	removeTestFile(TheFile);
  2200 	removeTestFile(TheFile);
  2212 
  2201 
  2213 // EXPORT_C void RFile::Write(const TDesC8& aDes,TInt aLength, TRequestStatus& aStatus)
  2202 // EXPORT_C void RFile::Write(const TDesC8& aDes,TInt aLength, TRequestStatus& aStatus)
  2214 	createTestFile(TheFile);
  2203 	createTestFile(TheFile);
  2221 
  2210 
  2222 
  2211 
  2223 // EXPORT_C TInt RFile::Write(TInt aPos,const TDesC8& aDes,TInt aLength)
  2212 // EXPORT_C TInt RFile::Write(TInt aPos,const TDesC8& aDes,TInt aLength)
  2224 	createTestFile(TheFile);
  2213 	createTestFile(TheFile);
  2225 	r = TheFile.Write(0,gBuf,-1);
  2214 	r = TheFile.Write(0,gBuf,-1);
  2226 	test_Value(r, r == KErrArgument);
  2215 	test(r==KErrArgument);
  2227 	removeTestFile(TheFile);
  2216 	removeTestFile(TheFile);
  2228 
  2217 
  2229 
  2218 
  2230 // EXPORT_C void RFile::Write(TInt aPos,const TDesC8& aDes, TInt aLength, TRequestStatus& aStatus)
  2219 // EXPORT_C void RFile::Write(TInt aPos,const TDesC8& aDes, TInt aLength, TRequestStatus& aStatus)
  2231 	createTestFile(TheFile);
  2220 	createTestFile(TheFile);
  2339 
  2328 
  2340 	zeroSrcDesc();
  2329 	zeroSrcDesc();
  2341 
  2330 
  2342 	test.Next(_L("Execute sync call RFile::Write(const TDesC8& aDes) with zero length aDes"));
  2331 	test.Next(_L("Execute sync call RFile::Write(const TDesC8& aDes) with zero length aDes"));
  2343 	TInt r=TheFile.Write(gLongBuf);
  2332 	TInt r=TheFile.Write(gLongBuf);
  2344 	test_KErrNone(r);
  2333 	test(r==KErrNone);
  2345 
  2334 
  2346 	test.Printf(_L("Test case passed\n"));
  2335 	test.Printf(_L("Test case passed\n"));
  2347 
  2336 
  2348 	removeTestFile(TheFile);
  2337 	removeTestFile(TheFile);
  2349 
  2338 
  2406 	t.Close();
  2395 	t.Close();
  2407 	User::SetJustInTime(ETrue);
  2396 	User::SetJustInTime(ETrue);
  2408 #else
  2397 #else
  2409 
  2398 
  2410 	r=TheFile.Write(gLongBuf, 0x80000);
  2399 	r=TheFile.Write(gLongBuf, 0x80000);
  2411 	test_KErrNone(r);
  2400 	test(r==KErrNone);
  2412 #endif
  2401 #endif
  2413 
  2402 
  2414 	test.Printf(_L("Test case passed\n"));
  2403 	test.Printf(_L("Test case passed\n"));
  2415 
  2404 
  2416 	removeTestFile(TheFile);
  2405 	removeTestFile(TheFile);
  2458 
  2447 
  2459 	zeroSrcDesc();
  2448 	zeroSrcDesc();
  2460 
  2449 
  2461 	test.Next(_L("Execute sync call RFile::Write(TInt aPos, const TDesC8& aDes) with zero length aDes"));
  2450 	test.Next(_L("Execute sync call RFile::Write(TInt aPos, const TDesC8& aDes) with zero length aDes"));
  2462 	r=TheFile.Write(0, gLongBuf);
  2451 	r=TheFile.Write(0, gLongBuf);
  2463 	test_KErrNone(r);
  2452 	test(r==KErrNone);
  2464 
  2453 
  2465 	test.Printf(_L("Test case passed\n"));
  2454 	test.Printf(_L("Test case passed\n"));
  2466 
  2455 
  2467 	removeTestFile(TheFile);
  2456 	removeTestFile(TheFile);
  2468 
  2457 
  2509 
  2498 
  2510 	zeroSrcDesc();
  2499 	zeroSrcDesc();
  2511 
  2500 
  2512 	test.Next(_L("Execute sync call RFile::Write(TInt aPos, const TDesC8& aDes, TInt aLength) with zero length aDes"));
  2501 	test.Next(_L("Execute sync call RFile::Write(TInt aPos, const TDesC8& aDes, TInt aLength) with zero length aDes"));
  2513 	r=TheFile.Write(0, gLongBuf, 0x80000);
  2502 	r=TheFile.Write(0, gLongBuf, 0x80000);
  2514 	test_KErrNone(r);
  2503 	test(r==KErrNone);
  2515 
  2504 
  2516 	test.Printf(_L("Test case passed\n"));
  2505 	test.Printf(_L("Test case passed\n"));
  2517 
  2506 
  2518 	removeTestFile(TheFile);
  2507 	removeTestFile(TheFile);
  2519 
  2508 
  2573 	TRequestStatus status(KRequestPending);
  2562 	TRequestStatus status(KRequestPending);
  2574 	TBuf8<2> buf8;
  2563 	TBuf8<2> buf8;
  2575 
  2564 
  2576 // EXPORT_C TInt RFile::Read(TDes8& aDes,TInt aLength) const
  2565 // EXPORT_C TInt RFile::Read(TDes8& aDes,TInt aLength) const
  2577 	err = file.Read(buf8,5);
  2566 	err = file.Read(buf8,5);
  2578 	test_Value(err, err == KErrOverflow);
  2567 	test(err==KErrOverflow);
  2579 	err = KErrNone;
  2568 	err = KErrNone;
  2580 
  2569 
  2581 // EXPORT_C void RFile::Read(TDes8& aDes,TInt aLength,TRequestStatus& aStatus) const
  2570 // EXPORT_C void RFile::Read(TDes8& aDes,TInt aLength,TRequestStatus& aStatus) const
  2582 	file.Read(buf8,5,status);
  2571 	file.Read(buf8,5,status);
  2583 	test(status.Int()==KErrOverflow);
  2572 	test(status.Int()==KErrOverflow);
  2584 	status = KRequestPending;
  2573 	status = KRequestPending;
  2585 
  2574 
  2586 // EXPORT_C TInt RFile::Read(TInt aPos,TDes8& aDes,TInt aLength) const
  2575 // EXPORT_C TInt RFile::Read(TInt aPos,TDes8& aDes,TInt aLength) const
  2587 	err = file.Read(0,buf8,5);
  2576 	err = file.Read(0,buf8,5);
  2588 	test_Value(err, err == KErrOverflow);
  2577 	test(err==KErrOverflow);
  2589 
  2578 
  2590 // EXPORT_C void RFile::Read(TInt aPos,TDes8& aDes,TInt aLength,TRequestStatus& aStatus) const
  2579 // EXPORT_C void RFile::Read(TInt aPos,TDes8& aDes,TInt aLength,TRequestStatus& aStatus) const
  2591 	file.Read(0,buf8,5,status);
  2580 	file.Read(0,buf8,5,status);
  2592 	test(status.Int()==KErrOverflow);
  2581 	test(status.Int()==KErrOverflow);
  2593 
  2582 
  2609 	TUint fileMode=EFileRead;
  2598 	TUint fileMode=EFileRead;
  2610 	RFs fs;
  2599 	RFs fs;
  2611 	RFile file;
  2600 	RFile file;
  2612 
  2601 
  2613 	TInt r=fs.Connect();
  2602 	TInt r=fs.Connect();
  2614 	test_KErrNone(r);
  2603 	test(r==KErrNone);
  2615 	r=fs.SetSessionPath(gSessionPath);
  2604 	r=fs.SetSessionPath(gSessionPath);
  2616 	test_KErrNone(r);
  2605 	test(r==KErrNone);
  2617 	if (testMode & EDoCDeleteOnClose)
  2606 	if (testMode & EDoCDeleteOnClose)
  2618 		fileMode|=EDeleteOnClose;
  2607 		fileMode|=EDeleteOnClose;
  2619 	r=file.Temp(fs,_L(""),gLastTempFileName,fileMode);
  2608 	r=file.Temp(fs,_L(""),gLastTempFileName,fileMode);
  2620 	test_KErrNone(r);
  2609 	test(r==KErrNone);
  2621 	// Signal controlling thread and pause for panic where requested
  2610 	// Signal controlling thread and pause for panic where requested
  2622 	// by caller.
  2611 	// by caller.
  2623 	if (testMode & EDoCPanic)
  2612 	if (testMode & EDoCPanic)
  2624 		{
  2613 		{
  2625 		gSleepThread.Signal();
  2614 		gSleepThread.Signal();
  2661 //!
  2650 //!
  2662 //! @SYMTestExpectedResults
  2651 //! @SYMTestExpectedResults
  2663 //! 	1.	The temporary file is successfully created and deleted.
  2652 //! 	1.	The temporary file is successfully created and deleted.
  2664 //---------------------------------------------------------------------------------------------------------------------
  2653 //---------------------------------------------------------------------------------------------------------------------
  2665 	r=clientThread.Create(_L("DeleteOnCloseClientThread 1"),DeleteOnCloseClientThread,KDefaultStackSize,0x2000,0x2000,(TAny*)0);
  2654 	r=clientThread.Create(_L("DeleteOnCloseClientThread 1"),DeleteOnCloseClientThread,KDefaultStackSize,0x2000,0x2000,(TAny*)0);
  2666 	test_KErrNone(r);
  2655 	test(r==KErrNone);
  2667 	clientThread.Resume();
  2656 	clientThread.Resume();
  2668 	gSleepThread.Wait();
  2657 	gSleepThread.Wait();
  2669 	r=TheFs.Delete(gLastTempFileName);
  2658 	r=TheFs.Delete(gLastTempFileName);
  2670 	test_KErrNone(r);
  2659 	test(r==KErrNone);
  2671 	clientThread.Close();
  2660 	clientThread.Close();
  2672 
  2661 
  2673 //
  2662 //
  2674 //---------------------------------------------------------------------------------------------------------------------
  2663 //---------------------------------------------------------------------------------------------------------------------
  2675 //! @SYMTestCaseID	PBASE-t_file-0805
  2664 //! @SYMTestCaseID	PBASE-t_file-0805
  2688 //!		deleted upon close.   The subsequent attempted file deletion
  2677 //!		deleted upon close.   The subsequent attempted file deletion
  2689 //!		by the main test body should fail with KErrNotFound.
  2678 //!		by the main test body should fail with KErrNotFound.
  2690 //---------------------------------------------------------------------------------------------------------------------
  2679 //---------------------------------------------------------------------------------------------------------------------
  2691 	test.Next(_L("RFile::Temp EDeleteOnClose behaviour"));
  2680 	test.Next(_L("RFile::Temp EDeleteOnClose behaviour"));
  2692 	r=clientThread.Create(_L("DeleteOnCloseClientThread 2"),DeleteOnCloseClientThread,KDefaultStackSize,0x2000,0x2000,(TAny*)EDoCDeleteOnClose);
  2681 	r=clientThread.Create(_L("DeleteOnCloseClientThread 2"),DeleteOnCloseClientThread,KDefaultStackSize,0x2000,0x2000,(TAny*)EDoCDeleteOnClose);
  2693 	test_KErrNone(r);
  2682 	test(r==KErrNone);
  2694 	clientThread.Resume();
  2683 	clientThread.Resume();
  2695 	gSleepThread.Wait();
  2684 	gSleepThread.Wait();
  2696 	r=TheFs.Delete(gLastTempFileName);
  2685 	r=TheFs.Delete(gLastTempFileName);
  2697 	test_Value(r, r == KErrNotFound);
  2686 	test(r==KErrNotFound);
  2698 	clientThread.Close();
  2687 	clientThread.Close();
  2699 
  2688 
  2700 //
  2689 //
  2701 //---------------------------------------------------------------------------------------------------------------------
  2690 //---------------------------------------------------------------------------------------------------------------------
  2702 //! @SYMTestCaseID	PBASE-t_file-0806
  2691 //! @SYMTestCaseID	PBASE-t_file-0806
  2713 //! @SYMTestExpectedResults
  2702 //! @SYMTestExpectedResults
  2714 //! 	1.	The temporary file is successfully created and deleted.
  2703 //! 	1.	The temporary file is successfully created and deleted.
  2715 //---------------------------------------------------------------------------------------------------------------------
  2704 //---------------------------------------------------------------------------------------------------------------------
  2716 	test.Next(_L("RFile::Temp default panic behaviour"));
  2705 	test.Next(_L("RFile::Temp default panic behaviour"));
  2717 	r=clientThread.Create(_L("DeleteOnCloseClientThread 3"),DeleteOnCloseClientThread,KDefaultStackSize,0x2000,0x2000,(TAny*)EDoCPanic);
  2706 	r=clientThread.Create(_L("DeleteOnCloseClientThread 3"),DeleteOnCloseClientThread,KDefaultStackSize,0x2000,0x2000,(TAny*)EDoCPanic);
  2718 	test_KErrNone(r);
  2707 	test(r==KErrNone);
  2719 	clientThread.Resume();
  2708 	clientThread.Resume();
  2720 	gSleepThread.Wait();
  2709 	gSleepThread.Wait();
  2721 	User::SetJustInTime(EFalse);
  2710 	User::SetJustInTime(EFalse);
  2722 	clientThread.Panic(_L("Panic temp file thread #3"),KErrGeneral);
  2711 	clientThread.Panic(_L("Panic temp file thread #3"),KErrGeneral);
  2723 	User::SetJustInTime(ETrue);
  2712 	User::SetJustInTime(ETrue);
  2724 	CLOSE_AND_WAIT(clientThread);
  2713 	CLOSE_AND_WAIT(clientThread);
  2725 	FsBarrier();
  2714 	FsBarrier();
  2726 	r=TheFs.Delete(gLastTempFileName);
  2715 	r=TheFs.Delete(gLastTempFileName);
  2727 	test_KErrNone(r);
  2716 	test(r==KErrNone);
  2728 
  2717 
  2729 //
  2718 //
  2730 //---------------------------------------------------------------------------------------------------------------------
  2719 //---------------------------------------------------------------------------------------------------------------------
  2731 //! @SYMTestCaseID	PBASE-t_file-0807
  2720 //! @SYMTestCaseID	PBASE-t_file-0807
  2732 //! @SYMTestType	UT
  2721 //! @SYMTestType	UT
  2744 //!		deleted upon close.   The subsequent attempted file deletion
  2733 //!		deleted upon close.   The subsequent attempted file deletion
  2745 //!		by the main test body should fail with KErrNotFound.
  2734 //!		by the main test body should fail with KErrNotFound.
  2746 //---------------------------------------------------------------------------------------------------------------------
  2735 //---------------------------------------------------------------------------------------------------------------------
  2747 	test.Next(_L("RFile::Temp EDeleteOnClose panic behaviour"));
  2736 	test.Next(_L("RFile::Temp EDeleteOnClose panic behaviour"));
  2748 	r=clientThread.Create(_L("DeleteOnCloseClientThread 4"),DeleteOnCloseClientThread,KDefaultStackSize,0x2000,0x2000,(TAny*)(EDoCPanic|EDoCDeleteOnClose));
  2737 	r=clientThread.Create(_L("DeleteOnCloseClientThread 4"),DeleteOnCloseClientThread,KDefaultStackSize,0x2000,0x2000,(TAny*)(EDoCPanic|EDoCDeleteOnClose));
  2749 	test_KErrNone(r);
  2738 	test(r==KErrNone);
  2750 	clientThread.Resume();
  2739 	clientThread.Resume();
  2751 	gSleepThread.Wait();
  2740 	gSleepThread.Wait();
  2752 	User::SetJustInTime(EFalse);
  2741 	User::SetJustInTime(EFalse);
  2753 	clientThread.Panic(_L("Panic temp file thread #4"),KErrGeneral);
  2742 	clientThread.Panic(_L("Panic temp file thread #4"),KErrGeneral);
  2754 	User::SetJustInTime(ETrue);
  2743 	User::SetJustInTime(ETrue);
  2755 	CLOSE_AND_WAIT(clientThread);
  2744 	CLOSE_AND_WAIT(clientThread);
  2756 	FsBarrier();
  2745 	FsBarrier();
  2757 	r=TheFs.Delete(gLastTempFileName);
  2746 	r=TheFs.Delete(gLastTempFileName);
  2758 	test_Value(r, r == KErrNotFound);
  2747 	test(r==KErrNotFound);
  2759 
  2748 
  2760 //
  2749 //
  2761 //---------------------------------------------------------------------------------------------------------------------
  2750 //---------------------------------------------------------------------------------------------------------------------
  2762 //! @SYMTestCaseID	PBASE-t_file-0808
  2751 //! @SYMTestCaseID	PBASE-t_file-0808
  2763 //! @SYMTestType	UT
  2752 //! @SYMTestType	UT
  2773 //! 	1.	The file creation should succeed.
  2762 //! 	1.	The file creation should succeed.
  2774 //!	2.	The file deletion should fail with KErrNotFound.
  2763 //!	2.	The file deletion should fail with KErrNotFound.
  2775 //---------------------------------------------------------------------------------------------------------------------
  2764 //---------------------------------------------------------------------------------------------------------------------
  2776 	test.Next(_L("RFile::Create EDeleteOnClose behaviour"));
  2765 	test.Next(_L("RFile::Create EDeleteOnClose behaviour"));
  2777  	r=file.Create(TheFs,_L("DoC5"),EFileRead|EFileWrite|EDeleteOnClose);
  2766  	r=file.Create(TheFs,_L("DoC5"),EFileRead|EFileWrite|EDeleteOnClose);
  2778 	test_KErrNone(r);
  2767 	test(r==KErrNone);
  2779 	file.Close();
  2768 	file.Close();
  2780 	r=TheFs.Delete(filename);
  2769 	r=TheFs.Delete(filename);
  2781 	test_Value(r, r == KErrNotFound);
  2770 	test(r==KErrNotFound);
  2782 
  2771 
  2783 //
  2772 //
  2784 //---------------------------------------------------------------------------------------------------------------------
  2773 //---------------------------------------------------------------------------------------------------------------------
  2785 //! @SYMTestCaseID	PBASE-t_file-0809
  2774 //! @SYMTestCaseID	PBASE-t_file-0809
  2786 //! @SYMTestType	UT
  2775 //! @SYMTestType	UT
  2800 //!	2.	The file deletion should fail with KErrInUse.
  2789 //!	2.	The file deletion should fail with KErrInUse.
  2801 //!	3.	The file deletion should fail with KErrNotFound.
  2790 //!	3.	The file deletion should fail with KErrNotFound.
  2802 //---------------------------------------------------------------------------------------------------------------------
  2791 //---------------------------------------------------------------------------------------------------------------------
  2803 	test.Next(_L("DoC 6 - Multiple subsessions"));
  2792 	test.Next(_L("DoC 6 - Multiple subsessions"));
  2804  	r=file.Create(TheFs,filename,EFileShareAny|EFileRead|EFileWrite|EDeleteOnClose);
  2793  	r=file.Create(TheFs,filename,EFileShareAny|EFileRead|EFileWrite|EDeleteOnClose);
  2805 	test_KErrNone(r);
  2794 	test(r==KErrNone);
  2806  	r=file2.Open(TheFs,filename,EFileShareAny|EFileRead|EFileWrite);
  2795  	r=file2.Open(TheFs,filename,EFileShareAny|EFileRead|EFileWrite);
  2807 	test_KErrNone(r);
  2796 	test(r==KErrNone);
  2808 	file.Close();
  2797 	file.Close();
  2809 	test_KErrNone(r);
  2798 	test(r==KErrNone);
  2810 	r=TheFs.Delete(filename);
  2799 	r=TheFs.Delete(filename);
  2811 	test_Value(r, r == KErrInUse);
  2800 	test(r==KErrInUse);
  2812 	file2.Close();
  2801 	file2.Close();
  2813 	r=TheFs.Delete(filename);
  2802 	r=TheFs.Delete(filename);
  2814 	test_Value(r, r == KErrNotFound);
  2803 	test(r==KErrNotFound);
  2815 
  2804 
  2816 //
  2805 //
  2817 //---------------------------------------------------------------------------------------------------------------------
  2806 //---------------------------------------------------------------------------------------------------------------------
  2818 //! @SYMTestCaseID	PBASE-t_file-0810
  2807 //! @SYMTestCaseID	PBASE-t_file-0810
  2819 //! @SYMTestType	UT
  2808 //! @SYMTestType	UT
  2827 //! @SYMTestExpectedResults
  2816 //! @SYMTestExpectedResults
  2828 //!	1.	The second create should fail with KErrAlreadyExists.
  2817 //!	1.	The second create should fail with KErrAlreadyExists.
  2829 //---------------------------------------------------------------------------------------------------------------------
  2818 //---------------------------------------------------------------------------------------------------------------------
  2830 	test.Next(_L("RFile::Create existing file behaviour"));
  2819 	test.Next(_L("RFile::Create existing file behaviour"));
  2831  	r=file.Create(TheFs,filename,EFileRead|EFileWrite);
  2820  	r=file.Create(TheFs,filename,EFileRead|EFileWrite);
  2832 	test_KErrNone(r);
  2821 	test(r==KErrNone);
  2833 	file.Close();
  2822 	file.Close();
  2834  	r=file.Create(TheFs,filename,EFileRead|EFileWrite|EDeleteOnClose);
  2823  	r=file.Create(TheFs,filename,EFileRead|EFileWrite|EDeleteOnClose);
  2835 	test_Value(r, r == KErrAlreadyExists);
  2824 	test(r==KErrAlreadyExists);
  2836 
  2825 
  2837 //
  2826 //
  2838 //---------------------------------------------------------------------------------------------------------------------
  2827 //---------------------------------------------------------------------------------------------------------------------
  2839 //! @SYMTestCaseID	PBASE-t_file-0811
  2828 //! @SYMTestCaseID	PBASE-t_file-0811
  2840 //! @SYMTestType	UT
  2829 //! @SYMTestType	UT
  2847 //! @SYMTestExpectedResults
  2836 //! @SYMTestExpectedResults
  2848 //!	1.	The open should fail with KErrArgument.
  2837 //!	1.	The open should fail with KErrArgument.
  2849 //---------------------------------------------------------------------------------------------------------------------
  2838 //---------------------------------------------------------------------------------------------------------------------
  2850 	test.Next(_L("RFile::Open EDeleteOnClose flag validation"));
  2839 	test.Next(_L("RFile::Open EDeleteOnClose flag validation"));
  2851 	r=file.Open(TheFs,filename,EFileRead|EFileWrite|EDeleteOnClose);
  2840 	r=file.Open(TheFs,filename,EFileRead|EFileWrite|EDeleteOnClose);
  2852 	test_Value(r, r == KErrArgument);
  2841 	test(r==KErrArgument);
  2853 	r=TheFs.Delete(filename);
  2842 	r=TheFs.Delete(filename);
  2854 	test_KErrNone(r);
  2843 	test(r==KErrNone);
  2855 
  2844 
  2856 	gSleepThread.Close();
  2845 	gSleepThread.Close();
  2857 	test.End();
  2846 	test.End();
  2858 	}
  2847 	}
  2859 
  2848 
  2878     TEntry  entry;
  2867     TEntry  entry;
  2879     TheFs.Delete(KFile);
  2868     TheFs.Delete(KFile);
  2880 
  2869 
  2881     //-- 1. create test file
  2870     //-- 1. create test file
  2882     nRes = CreateEmptyFile(TheFs, KFile, 33);
  2871     nRes = CreateEmptyFile(TheFs, KFile, 33);
  2883     test_KErrNone(nRes);
  2872     test(nRes == KErrNone);
  2884 
  2873 
  2885     //-- 2. open it for write
  2874     //-- 2. open it for write
  2886     RFile file;
  2875     RFile file;
  2887     nRes = file.Open(TheFs, KFile, EFileWrite);
  2876     nRes = file.Open(TheFs, KFile, EFileWrite);
  2888     test_KErrNone(nRes);
  2877     test(nRes == KErrNone);
  2889 
  2878 
  2890     //-- 3. write a couple of bytes there. This must cause 'Archive' attribute set
  2879     //-- 3. write a couple of bytes there. This must cause 'Archive' attribute set
  2891     nRes = file.Write(0, _L8("a"));
  2880     nRes = file.Write(0, _L8("a"));
  2892     test_KErrNone(nRes);
  2881     test(nRes == KErrNone);
  2893     nRes = file.Write(10, _L8("b"));
  2882     nRes = file.Write(10, _L8("b"));
  2894     test_KErrNone(nRes);
  2883     test(nRes == KErrNone);
  2895 
  2884 
  2896     nRes = TheFs.Entry(KFile, entry);
  2885     nRes = TheFs.Entry(KFile, entry);
  2897     test_KErrNone(nRes);
  2886     test(nRes == KErrNone);
  2898 
  2887 
  2899     test(entry.IsArchive());  //-- 'A' attribute must be set.
  2888     test(entry.IsArchive());  //-- 'A' attribute must be set.
  2900 
  2889 
  2901     //-- the file cache (if present) is dirty now. Dirty data timer starts to tick.
  2890     //-- the file cache (if present) is dirty now. Dirty data timer starts to tick.
  2902     //-- 4. set new file attributes (w/o 'A') and creation time
  2891     //-- 4. set new file attributes (w/o 'A') and creation time
  2903     const TUint newAtt = KEntryAttSystem ;
  2892     const TUint newAtt = KEntryAttSystem ;
  2904     nRes = file.SetAtt(newAtt, ~newAtt & KEntryAttMaskSupported);
  2893     nRes = file.SetAtt(newAtt, ~newAtt & KEntryAttMaskSupported);
  2905     test_KErrNone(nRes);
  2894     test(nRes == KErrNone);
  2906 
  2895 
  2907     TTime newTime;
  2896     TTime newTime;
  2908     nRes = newTime.Set(_L("19970310:101809.000000"));
  2897     nRes = newTime.Set(_L("19970310:101809.000000"));
  2909     test_KErrNone(nRes);
  2898     test(nRes == KErrNone);
  2910     nRes = file.SetModified(newTime);
  2899     nRes = file.SetModified(newTime);
  2911     test_KErrNone(nRes);
  2900     test(nRes == KErrNone);
  2912 
  2901 
  2913     //-- 5. wait 5 seconds. file server shall flush dirty data during this period.
  2902     //-- 5. wait 5 seconds. file server shall flush dirty data during this period.
  2914     User::After(5*K1Sec);
  2903     User::After(5*K1Sec);
  2915 
  2904 
  2916     //-- 6. check that attributes haven't chanded because of flush
  2905     //-- 6. check that attributes haven't chanded because of flush
  2917     nRes = file.Flush(); //-- this will flush attributes to the media
  2906     nRes = file.Flush(); //-- this will flush attributes to the media
  2918     test_KErrNone(nRes);
  2907     test(nRes == KErrNone);
  2919 
  2908 
  2920     nRes = TheFs.Entry(KFile, entry);
  2909     nRes = TheFs.Entry(KFile, entry);
  2921     test_KErrNone(nRes);
  2910     test(nRes == KErrNone);
  2922 
  2911 
  2923     test(entry.iAtt == newAtt);
  2912     test(entry.iAtt == newAtt);
  2924     test(entry.iModified.DateTime().Year() == 1997);
  2913     test(entry.iModified.DateTime().Year() == 1997);
  2925     test(entry.iModified.DateTime().Month() == 3);
  2914     test(entry.iModified.DateTime().Month() == 3);
  2926     test(entry.iModified.DateTime().Day() == 10);
  2915     test(entry.iModified.DateTime().Day() == 10);
  2927 
  2916 
  2928     //-- 7. write some data and ensure that 'A' attribute is set now and 'modified' time updated
  2917     //-- 7. write some data and ensure that 'A' attribute is set now and 'modified' time updated
  2929     nRes = file.Write(12, _L8("c"));
  2918     nRes = file.Write(12, _L8("c"));
  2930     test_KErrNone(nRes);
  2919     test(nRes == KErrNone);
  2931 
  2920 
  2932     file.Close(); //-- this will flush attributes to the media
  2921     file.Close(); //-- this will flush attributes to the media
  2933 
  2922 
  2934     nRes = TheFs.Entry(KFile, entry);
  2923     nRes = TheFs.Entry(KFile, entry);
  2935     test_KErrNone(nRes);
  2924     test(nRes == KErrNone);
  2936     test(entry.iAtt == (newAtt | KEntryAttArchive));
  2925     test(entry.iAtt == (newAtt | KEntryAttArchive));
  2937     test(entry.iModified.DateTime().Year() != 1997);
  2926     test(entry.iModified.DateTime().Year() != 1997);
  2938 
  2927 
  2939 
  2928 
  2940 
  2929 
  2946 */
  2935 */
  2947 void TestMaxFileSize()
  2936 void TestMaxFileSize()
  2948 {
  2937 {
  2949     test.Next(_L("test maximal file size on FAT32\n"));
  2938     test.Next(_L("test maximal file size on FAT32\n"));
  2950 
  2939 
       
  2940 #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
       
  2941 
  2951     if(!Is_Fat32(TheFs, gDriveNum))
  2942     if(!Is_Fat32(TheFs, gDriveNum))
  2952     {
  2943     {
  2953         test.Printf(_L("This test requires FAT32! skipping.\n"));
  2944         test.Printf(_L("This test requires FAT32! skipping.\n"));
  2954         return;
  2945         return;
  2955     }
  2946     }
  2957     TInt nRes;
  2948     TInt nRes;
  2958 
  2949 
  2959     //-- check disk space, it shall be > 4G
  2950     //-- check disk space, it shall be > 4G
  2960     TVolumeInfo volInfo;
  2951     TVolumeInfo volInfo;
  2961     nRes = TheFs.Volume(volInfo, gDriveNum);
  2952     nRes = TheFs.Volume(volInfo, gDriveNum);
  2962     test_KErrNone(nRes);
  2953     test(nRes == KErrNone);
  2963 
  2954 
  2964     const TUint32 KMaxFAT32FileSize = 0xFFFFFFFF; // 4GB-1
  2955     const TUint32 KMaxFAT32FileSize = 0xFFFFFFFF; // 4GB-1
  2965 
  2956 
  2966     if(volInfo.iFree <= KMaxFAT32FileSize)
  2957     if(volInfo.iFree <= KMaxFAT32FileSize)
  2967     {
  2958     {
  2975 
  2966 
  2976     //-- 1. create 4GB-1 file
  2967     //-- 1. create 4GB-1 file
  2977     //-- this file has enabled write caching by default
  2968     //-- this file has enabled write caching by default
  2978     test.Printf(_L("creating maximal length file, size = 0x%x\n"),KMaxFAT32FileSize);
  2969     test.Printf(_L("creating maximal length file, size = 0x%x\n"),KMaxFAT32FileSize);
  2979     nRes = file64.Replace(TheFs, KFileName, EFileWrite);
  2970     nRes = file64.Replace(TheFs, KFileName, EFileWrite);
  2980     test_KErrNone(nRes);
  2971     test(nRes == KErrNone);
  2981 
  2972 
  2982     const TInt64 fileSize = KMaxFAT32FileSize;
  2973     const TInt64 fileSize = KMaxFAT32FileSize;
  2983 
  2974 
  2984     nRes = file64.SetSize(fileSize);
  2975     nRes = file64.SetSize(fileSize);
  2985     test_KErrNone(nRes);
  2976     test(nRes == KErrNone);
  2986 
  2977 
  2987     test.Printf(_L("seeking to the file end...\n"));
  2978     test.Printf(_L("seeking to the file end...\n"));
  2988     TInt64 filePos = 0;
  2979     TInt64 filePos = 0;
  2989     nRes = file64.Seek(ESeekEnd, filePos);
  2980     nRes = file64.Seek(ESeekEnd, filePos);
  2990     test_KErrNone(nRes);
  2981     test(nRes == KErrNone);
  2991 
  2982 
  2992 
  2983 
  2993     test.Printf(_L("test writing to the last bytes of the file (rel pos addressing) \n"));
  2984     test.Printf(_L("test writing to the last bytes of the file (rel pos addressing) \n"));
  2994 
  2985 
  2995     //-- 1. writing using relative position
  2986     //-- 1. writing using relative position
  2996     filePos = -1;
  2987     filePos = -1;
  2997     nRes = file64.Seek(ESeekEnd, filePos);
  2988     nRes = file64.Seek(ESeekEnd, filePos);
  2998     test_KErrNone(nRes);
  2989     test(nRes == KErrNone);
  2999     test(filePos == fileSize-1);
  2990     test(filePos == fileSize-1);
  3000 
  2991 
  3001     nRes = file64.Write(_L8("z")); //-- write 1 byte a pos 0xFFFFFFFE, this is the last allowed position of the FAT32 file
  2992     nRes = file64.Write(_L8("z")); //-- write 1 byte a pos 0xFFFFFFFE, this is the last allowed position of the FAT32 file
  3002     test_KErrNone(nRes);
  2993     test(nRes == KErrNone);
  3003 
  2994 
  3004     nRes = file64.Write(_L8("x")); //-- write 1 byte a pos 0xFFFFFFFF, beyond the max. allowed file size, this shall fail
  2995     nRes = file64.Write(_L8("x")); //-- write 1 byte a pos 0xFFFFFFFF, beyond the max. allowed file size, this shall fail
  3005     test_Value(nRes, nRes == KErrNotSupported);
  2996     test(nRes == KErrNotSupported);
  3006 
  2997 
  3007     nRes = file64.Flush();
  2998     nRes = file64.Flush();
  3008     test_KErrNone(nRes);
  2999     test(nRes == KErrNone);
  3009 
  3000 
  3010     //-- 1.1 check the result by reading data using rel. pos
  3001     //-- 1.1 check the result by reading data using rel. pos
  3011     filePos = -1;
  3002     filePos = -1;
  3012     nRes = file64.Seek(ESeekEnd, filePos);
  3003     nRes = file64.Seek(ESeekEnd, filePos);
  3013     test_KErrNone(nRes);
  3004     test(nRes == KErrNone);
  3014     test(filePos == fileSize-1);
  3005     test(filePos == fileSize-1);
  3015 
  3006 
  3016     test.Printf(_L("reading 1 byte at pos: 0x%x\n"), filePos);
  3007     test.Printf(_L("reading 1 byte at pos: 0x%x\n"), filePos);
  3017     nRes = file64.Read(buf, 1); //-- read 1 byte a pos 0xFFFFFFFE, this is the last allowed position of the FAT32 file
  3008     nRes = file64.Read(buf, 1); //-- read 1 byte a pos 0xFFFFFFFE, this is the last allowed position of the FAT32 file
  3018     test_KErrNone(nRes);
  3009     test(nRes == KErrNone);
  3019     test(buf.Length() == 1 && buf[0]=='z');
  3010     test(buf.Length() == 1 && buf[0]=='z');
  3020 
  3011 
  3021     nRes = file64.Read(buf, 1); //-- read 1 byte a pos 0xFFFFFFFF, beyond the max. allowed file size, this shall fail
  3012     nRes = file64.Read(buf, 1); //-- read 1 byte a pos 0xFFFFFFFF, beyond the max. allowed file size, this shall fail
  3022     test_KErrNone(nRes);
  3013     test(nRes == KErrNone);
  3023     test(buf.Length() == 0);
  3014     test(buf.Length() == 0);
  3024 
  3015 
  3025     file64.Close();
  3016     file64.Close();
  3026 
  3017 
  3027     test.Printf(_L("test writing to the last bytes of the file (absolute pos addressing) \n"));
  3018     test.Printf(_L("test writing to the last bytes of the file (absolute pos addressing) \n"));
  3028     //-- 2. writing using absolute position
  3019     //-- 2. writing using absolute position
  3029     nRes = file64.Open(TheFs, KFileName, EFileWrite);
  3020     nRes = file64.Open(TheFs, KFileName, EFileWrite);
  3030     test_KErrNone(nRes);
  3021     test(nRes == KErrNone);
  3031 
  3022 
  3032     filePos = fileSize-1;
  3023     filePos = fileSize-1;
  3033 
  3024 
  3034     nRes = file64.Write(filePos-2, _L8("0"), 1); //-- write 1 byte a pos 0xFFFFFFFC
  3025     nRes = file64.Write(filePos-2, _L8("0"), 1); //-- write 1 byte a pos 0xFFFFFFFC
  3035     test_KErrNone(nRes);
  3026     test(nRes == KErrNone);
  3036 
  3027 
  3037     nRes = file64.Write(filePos, _L8("a"), 1);   //-- write 1 byte a pos 0xFFFFFFFE, this is the last allowed position of the FAT32 file
  3028     nRes = file64.Write(filePos, _L8("a"), 1);   //-- write 1 byte a pos 0xFFFFFFFE, this is the last allowed position of the FAT32 file
  3038     test_KErrNone(nRes);
  3029     test(nRes == KErrNone);
  3039 
  3030 
  3040     nRes = file64.Write(filePos+1, _L8("b"), 1); //-- write 1 byte a pos 0xFFFFFFFF, beyond the max. allowed file size, this shall fail
  3031     nRes = file64.Write(filePos+1, _L8("b"), 1); //-- write 1 byte a pos 0xFFFFFFFF, beyond the max. allowed file size, this shall fail
  3041     test_Value(nRes, nRes == KErrNotSupported);
  3032     test(nRes == KErrNotSupported);
  3042 
  3033 
  3043     nRes = file64.Flush();
  3034     nRes = file64.Flush();
  3044     test_KErrNone(nRes);
  3035     test(nRes == KErrNone);
  3045 
  3036 
  3046     //-- 1.1 check the result by reading data absolute rel. position
  3037     //-- 1.1 check the result by reading data absolute rel. position
  3047 
  3038 
  3048     nRes = file64.Read(filePos-2, buf, 1); //-- read 1 byte a pos 0xFFFFFFFD
  3039     nRes = file64.Read(filePos-2, buf, 1); //-- read 1 byte a pos 0xFFFFFFFD
  3049     test_KErrNone(nRes);
  3040     test(nRes == KErrNone);
  3050     test(buf.Length() == 1 && buf[0]=='0');
  3041     test(buf.Length() == 1 && buf[0]=='0');
  3051 
  3042 
  3052     nRes = file64.Read(filePos, buf, 1);   //-- read 1 byte a pos 0xFFFFFFFE, this is the last allowed position of the FAT32 file
  3043     nRes = file64.Read(filePos, buf, 1);   //-- read 1 byte a pos 0xFFFFFFFE, this is the last allowed position of the FAT32 file
  3053     test_KErrNone(nRes);
  3044     test(nRes == KErrNone);
  3054     test(buf.Length() == 1 && buf[0]=='a');
  3045     test(buf.Length() == 1 && buf[0]=='a');
  3055 
  3046 
  3056     nRes = file64.Read(filePos+1, buf, 1);  //-- read 1 byte a pos 0xFFFFFFFF, beyond the max. allowed file size
  3047     nRes = file64.Read(filePos+1, buf, 1);  //-- read 1 byte a pos 0xFFFFFFFF, beyond the max. allowed file size
  3057     test_KErrNone(nRes);
  3048     test(nRes == KErrNone);
  3058     test(buf.Length() == 0);
  3049     test(buf.Length() == 0);
  3059 
  3050 
  3060     nRes = file64.Read(filePos+2, buf, 1); //buf.Len must be 0
  3051     nRes = file64.Read(filePos+2, buf, 1); //buf.Len must be 0
  3061     test_KErrNone(nRes);
  3052     test(nRes == KErrNone);
  3062     test(buf.Length() == 0);
  3053     test(buf.Length() == 0);
  3063 
  3054 
  3064     file64.Close();
  3055     file64.Close();
  3065 
  3056 
  3066     test.Printf(_L("deleting the huge file.\n"));
  3057     test.Printf(_L("deleting the huge file.\n"));
  3067     nRes = TheFs.Delete(KFileName);
  3058     nRes = TheFs.Delete(KFileName);
  3068     test_KErrNone(nRes);
  3059     test(nRes == KErrNone);
       
  3060 
       
  3061 #else
  3069 
  3062 
  3070     test.Printf(_L("RFile64 is not supported! Skipping.\n"));
  3063     test.Printf(_L("RFile64 is not supported! Skipping.\n"));
  3071 
  3064 
       
  3065 #endif //SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
  3072 
  3066 
  3073 }
  3067 }
  3074 
  3068 
  3075 
  3069 
  3076 //--------------------------------------------------------------
  3070 //--------------------------------------------------------------
  3080 
  3074 
  3081     //-- set up console output
  3075     //-- set up console output
  3082     F32_Test_Utils::SetConsole(test.Console());
  3076     F32_Test_Utils::SetConsole(test.Console());
  3083 
  3077 
  3084     TInt nRes=TheFs.CharToDrive(gDriveToTest, gDriveNum);
  3078     TInt nRes=TheFs.CharToDrive(gDriveToTest, gDriveNum);
  3085     test_KErrNone(nRes);
  3079     test(nRes==KErrNone);
  3086     
  3080     
  3087     PrintDrvInfo(TheFs, gDriveNum);
  3081     PrintDrvInfo(TheFs, gDriveNum);
  3088 
  3082 
  3089     //-- FAT Supports short file names
  3083     //-- FAT Supports short file names
  3090     if(Is_Fat(TheFs, gDriveNum))
  3084     if(Is_Fat(TheFs, gDriveNum))
  3091         gShortFileNamesSupported = ETrue;
  3085         gShortFileNamesSupported = ETrue;
  3092     
  3086     
  3093     if(Is_Win32(TheFs, gDriveNum)) 
  3087     if(Is_Win32(TheFs, gDriveNum)) 
  3094     	{//-- find out if this is NTFS and if it supports short names (this feature can be switched OFF)
  3088     {//-- find out if this is NTFS and if it supports short names (this feature can be switched OFF)
  3095         
  3089         
  3096         _LIT(KLongFN, "\\this is a long file name");
  3090         _LIT(KLongFN, "\\this is a long file name");
  3097         nRes = CreateEmptyFile(TheFs, KLongFN, 10);   
  3091         nRes = CreateEmptyFile(TheFs, KLongFN, 10);   
  3098         test_KErrNone(nRes);
  3092         test(nRes==KErrNone);
  3099 
  3093 
  3100 	    TBuf<12> shortName;
  3094 	    TBuf<12> shortName;
  3101 	    nRes = TheFs.GetShortName(KLongFN, shortName);
  3095 	    nRes = TheFs.GetShortName(KLongFN, shortName);
  3102 	    gShortFileNamesSupported = (nRes == KErrNone);
  3096 	    gShortFileNamesSupported = (nRes == KErrNone);
  3103         
  3097         
  3104         nRes = TheFs.Delete(KLongFN);
  3098         nRes = TheFs.Delete(KLongFN);
  3105         test_KErrNone(nRes);
  3099         test(nRes==KErrNone);
  3106 
  3100 
  3107         DeleteTestDirectory();
  3101         DeleteTestDirectory();
  3108     	}
  3102     }
  3109     else
  3103     else
  3110     	{
  3104     {
  3111         nRes = FormatDrive(TheFs, gDriveNum, ETrue);
  3105         nRes = FormatDrive(TheFs, gDriveNum, ETrue);
  3112         test_KErrNone(nRes);
  3106         test(nRes==KErrNone);
  3113     	}
  3107     }
  3114 
  3108 
  3115 	CreateTestDirectory(_L("\\F32-TST\\TFILE\\"));
  3109 	CreateTestDirectory(_L("\\F32-TST\\TFILE\\"));
  3116 
  3110 
  3117 	testFileRename();
  3111 	testFileRename();
  3118 	testSetSize();
  3112 	testSetSize();