kerneltest/f32test/server/t_file.cpp
changeset 109 b3a1d9898418
parent 33 0173bcd7697c
child 200 73ea206103e6
equal deleted inserted replaced
102:ef2a444a7410 109:b3a1d9898418
    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(r==KErrNone);
    53 	test_KErrNone(r);
    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(r==KErrNone);
    56 	test_KErrNone(r);
    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(r==KErrNone);
    65 	test_KErrNone(r);
    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(r==KErrNone);
    70 	test_KErrNone(r);
    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(r==KErrInUse);
    73 	test_Value(r, 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(r==KErrInUse);
    75 	test_Value(r, 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(r==KErrInUse);
    77 	test_Value(r, 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(r==KErrNone);
    80 	test_KErrNone(r);
    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(r==KErrArgument);
    85 	test_Value(r, 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(r==KErrNone);
    87 	test_KErrNone(r);
    88 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
    88 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
    89 	test(r==KErrInUse);
    89 	test_Value(r, 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(r==KErrInUse);
    91 	test_Value(r, 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(r==KErrArgument);
    93 	test_Value(r, 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(r==KErrNone);
    95 	test_KErrNone(r);
    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(r==KErrNone);
   101 	test_KErrNone(r);
   102 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
   102 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
   103 	test(r==KErrInUse);
   103 	test_Value(r, 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(r==KErrInUse);
   105 	test_Value(r, 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(r==KErrNone);
   107 	test_KErrNone(r);
   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(r==KErrNone); // Opened exclusive
   124 	test_KErrNone(r); // Opened exclusive
   125 	r=f1.ChangeMode(EFileShareReadersOnly);
   125 	r=f1.ChangeMode(EFileShareReadersOnly);
   126 	test(r==KErrNone); // Change to readers only
   126 	test_KErrNone(r); // 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(r==KErrNone); // Open as reader
   128 	test_KErrNone(r); // Open as reader
   129 	r=f1.ChangeMode(EFileShareExclusive);
   129 	r=f1.ChangeMode(EFileShareExclusive);
   130 	test(r==KErrAccessDenied); // Change back to exclusive fails
   130 	test_Value(r, r == KErrAccessDenied); // Change back to exclusive fails
   131 	r=f2.ChangeMode(EFileShareExclusive);
   131 	r=f2.ChangeMode(EFileShareExclusive);
   132 	test(r==KErrAccessDenied); // Change to exclusive fails
   132 	test_Value(r, 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(r==KErrNone); // Change to exclusive succeeds.
   135 	test_KErrNone(r); // 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(r==KErrNone); // Opened readers only
   139 	test_KErrNone(r); // Opened readers only
   140 	r=f1.ChangeMode(EFileShareExclusive);
   140 	r=f1.ChangeMode(EFileShareExclusive);
   141 	test(r==KErrNone); // Change to exclusive
   141 	test_KErrNone(r); // 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(r==KErrInUse); // Open as reader fails
   143 	test_Value(r, r == KErrInUse); // Open as reader fails
   144 	r=f1.ChangeMode(EFileShareReadersOnly);
   144 	r=f1.ChangeMode(EFileShareReadersOnly);
   145 	test(r==KErrNone); // Change to readers only
   145 	test_KErrNone(r); // 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(r==KErrNone); // Open as reader
   147 	test_KErrNone(r); // Open as reader
   148 	r=f1.ChangeMode(EFileShareExclusive);
   148 	r=f1.ChangeMode(EFileShareExclusive);
   149 	test(r==KErrAccessDenied); // Change back to exclusive fails
   149 	test_Value(r, r == KErrAccessDenied); // Change back to exclusive fails
   150 	r=f2.ChangeMode(EFileShareExclusive);
   150 	r=f2.ChangeMode(EFileShareExclusive);
   151 	test(r==KErrAccessDenied); // Change to exclusive fails
   151 	test_Value(r, 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(r==KErrNone); // Change to exclusive succeeds.
   154 	test_KErrNone(r); // 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(r==KErrNone); // Opened exclusive for writing
   158 	test_KErrNone(r); // Opened exclusive for writing
   159 	r=f1.ChangeMode(EFileShareReadersOnly);
   159 	r=f1.ChangeMode(EFileShareReadersOnly);
   160 	test(r==KErrAccessDenied); // Change to readers fails
   160 	test_Value(r, r == KErrAccessDenied); // Change to readers fails
   161 	r=f1.ChangeMode(EFileShareExclusive);
   161 	r=f1.ChangeMode(EFileShareExclusive);
   162 	test(r==KErrNone); // No change ok
   162 	test_KErrNone(r); // 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(r==KErrInUse); // Open as reader fails
   164 	test_Value(r, 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(r==KErrNone); // Opened share any
   168 	test_KErrNone(r); // Opened share any
   169 	r=f1.ChangeMode(EFileShareExclusive);
   169 	r=f1.ChangeMode(EFileShareExclusive);
   170 	test(r==KErrAccessDenied); // Change to exclusive fails
   170 	test_Value(r, r == KErrAccessDenied); // Change to exclusive fails
   171 	r=f1.ChangeMode(EFileShareReadersOnly);
   171 	r=f1.ChangeMode(EFileShareReadersOnly);
   172 	test(r==KErrAccessDenied); // Change to readers only fails
   172 	test_Value(r, 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(r==KErrNone); // Opened exclusive
   176 	test_KErrNone(r); // Opened exclusive
   177 	r=f1.ChangeMode(EFileShareAny);
   177 	r=f1.ChangeMode(EFileShareAny);
   178 	test(r==KErrArgument); // Change to share any fails KErrArgument
   178 	test_Value(r, r == KErrArgument); // Change to share any fails KErrArgument
   179 	r=f1.ChangeMode((TFileMode)42);
   179 	r=f1.ChangeMode((TFileMode)42);
   180 	test(r==KErrArgument); // Change to random value fails
   180 	test_Value(r, 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()
   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 	TInt r=f.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText);
   193 	TInt r=f.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText);
   194 	test(r==KErrNone);
   194 	test_KErrNone(r);
   195 	TFileName fn = _L("Z:\\TEST\\T_FILE.CPP");
   195 	TFileName fn = _L("Z:\\TEST\\T_FILE.CPP");
   196 	fn[0] = gExeFileName[0];
   196 	fn[0] = gExeFileName[0];
   197 	r=ZFile.Open(TheFs,fn,EFileStreamText);
   197 	r=ZFile.Open(TheFs,fn,EFileStreamText);
   198 	test(r==KErrNone);
   198 	test_KErrNone(r);
   199 
   199 
   200 	test.Next(_L("Read file"));
   200 	test.Next(_L("Read file"));
   201 	TBuf8<0x100> a,b;
   201 	TBuf8<0x100> a,b;
   202 	FOREVER
   202 	FOREVER
   203 		{
   203 		{
   204 		r=f.Read(b);
   204 		r=f.Read(b);
   205 		test(r==KErrNone);
   205 		test_KErrNone(r);
   206 		r=ZFile.Read(a);
   206 		r=ZFile.Read(a);
   207 		test(r==KErrNone);
   207 		test_KErrNone(r);
   208 		test(a==b);
   208 		test(a==b);
   209 		if (b.Length()<b.MaxLength())
   209 		if (b.Length()<b.MaxLength())
   210 			break;
   210 			break;
   211 		}
   211 		}
   212 	b.SetLength(10);
   212 	b.SetLength(10);
   213 	r=f.Read(b);
   213 	r=f.Read(b);
   214 	test(r==KErrNone);
   214 	test_KErrNone(r);
   215 	test(b.Length()==0);
   215 	test(b.Length()==0);
   216 	f.Close();
   216 	f.Close();
   217 	ZFile.Close();
   217 	ZFile.Close();
   218 
   218 
   219 	test.Next(_L("Read way beyond the end of the file"));
   219 	test.Next(_L("Read way beyond the end of the file"));
   220 	r=f.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText);
   220 	r=f.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText);
   221 	test(r==KErrNone);
   221 	test_KErrNone(r);
   222 	r=f.Read(3000000,gBuf);
   222 	r=f.Read(3000000,gBuf);
   223 	test(r==KErrNone);
   223 	test_KErrNone(r);
   224 	f.Close();
   224 	f.Close();
   225 
   225 
   226 	test.Next(_L("Write way beyond the end of the file"));
   226 	test.Next(_L("Write way beyond the end of the file"));
   227 	r=f.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileWrite);
   227 	r=f.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileWrite);
   228 	test(r==KErrNone);
   228 	test_KErrNone(r);
   229 	gBuf.SetLength(10);
   229 	gBuf.SetLength(10);
   230 	r=f.Write(3000000,gBuf);
   230 	r=f.Write(3000000,gBuf);
   231 	test(r==KErrNone);
   231 	test_KErrNone(r);
   232 	f.Close();
   232 	f.Close();
   233 	test.End();
   233 	test.End();
   234 	}
   234 	}
   235 
   235 
   236 static void testMultipleReadFile()
   236 static void testMultipleReadFile()
   240 	{
   240 	{
   241 
   241 
   242 	test.Start(_L("Test multiple read file"));
   242 	test.Start(_L("Test multiple read file"));
   243 	RFile f1;
   243 	RFile f1;
   244 	TInt r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
   244 	TInt r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
   245 	test(r==KErrNone);
   245 	test_KErrNone(r);
   246 	RFile f2;
   246 	RFile f2;
   247 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
   247 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
   248 	test(r==KErrNone);
   248 	test_KErrNone(r);
   249 
   249 
   250 	test.Next(_L("Read file"));
   250 	test.Next(_L("Read file"));
   251 	FOREVER
   251 	FOREVER
   252 		{
   252 		{
   253 		TBuf8<0x100> b1;
   253 		TBuf8<0x100> b1;
   254 		r=f1.Read(b1);
   254 		r=f1.Read(b1);
   255 		test(r==KErrNone);
   255 		test_KErrNone(r);
   256 		TBuf8<0x100> b2;
   256 		TBuf8<0x100> b2;
   257 		r=f2.Read(b2);
   257 		r=f2.Read(b2);
   258 		test(r==KErrNone);
   258 		test_KErrNone(r);
   259 		test(b1==b2);
   259 		test(b1==b2);
   260 		if (b1.Length()<b1.MaxLength())
   260 		if (b1.Length()<b1.MaxLength())
   261 			break;
   261 			break;
   262 		}
   262 		}
   263 
   263 
   278 	TFileName fn = _L("File.File");
   278 	TFileName fn = _L("File.File");
   279 	TBuf8<16> testData=_L8("testData");
   279 	TBuf8<16> testData=_L8("testData");
   280 
   280 
   281 	// write test 1
   281 	// write test 1
   282 	TInt r=file.Replace(TheFs,fn,EFileStreamText);
   282 	TInt r=file.Replace(TheFs,fn,EFileStreamText);
   283 	test(r==KErrNone);
   283 	test_KErrNone(r);
   284 
   284 
   285 	test.Next(_L("Write file"));
   285 	test.Next(_L("Write file"));
   286 
   286 
   287 	r=file.Write(testData);
   287 	r=file.Write(testData);
   288 	test(r==KErrNone);
   288 	test_KErrNone(r);
   289 
   289 
   290 	file.Close();
   290 	file.Close();
   291 
   291 
   292 	// test write modes
   292 	// test write modes
   293 	// test writing with EFileRead
   293 	// test writing with EFileRead
   294 	r=file.Open(TheFs,fn,EFileStreamText|EFileRead);
   294 	r=file.Open(TheFs,fn,EFileStreamText|EFileRead);
   295 	test(r==KErrNone);
   295 	test_KErrNone(r);
   296 
   296 
   297 	test.Next(_L("Write file"));
   297 	test.Next(_L("Write file"));
   298 	r=file.Write(testData);
   298 	r=file.Write(testData);
   299 	test(r==KErrAccessDenied);
   299 	test_Value(r, r == KErrAccessDenied);
   300 	file.Close();
   300 	file.Close();
   301 
   301 
   302 	// test writing with EFileWrite
   302 	// test writing with EFileWrite
   303 	r=file.Open(TheFs,fn,EFileStreamText|EFileWrite);
   303 	r=file.Open(TheFs,fn,EFileStreamText|EFileWrite);
   304 	test(r==KErrNone);
   304 	test_KErrNone(r);
   305 
   305 
   306 	test.Next(_L("Write file"));
   306 	test.Next(_L("Write file"));
   307 	r=file.Write(testData);
   307 	r=file.Write(testData);
   308 	test(r==KErrNone);
   308 	test_KErrNone(r);
   309 	file.Close();
   309 	file.Close();
   310 
   310 
   311 	// test writing with share mode EFileShareExclusive
   311 	// test writing with share mode EFileShareExclusive
   312 	r=file.Open(TheFs,fn,EFileStreamText|EFileWrite|EFileShareExclusive);
   312 	r=file.Open(TheFs,fn,EFileStreamText|EFileWrite|EFileShareExclusive);
   313 	test(r==KErrNone);
   313 	test_KErrNone(r);
   314 
   314 
   315 	test.Next(_L("Write file"));
   315 	test.Next(_L("Write file"));
   316 	r=file.Write(testData);
   316 	r=file.Write(testData);
   317 	test(r==KErrNone);
   317 	test_KErrNone(r);
   318 	file.Close();
   318 	file.Close();
   319 
   319 
   320 	// test writing with share mode EFileShareReadersOnly (fails with KErrArgument)
   320 	// test writing with share mode EFileShareReadersOnly (fails with KErrArgument)
   321 	r=file.Open(TheFs,fn,EFileStreamText|EFileWrite|EFileShareReadersOnly);
   321 	r=file.Open(TheFs,fn,EFileStreamText|EFileWrite|EFileShareReadersOnly);
   322 	test(r==KErrArgument);
   322 	test_Value(r, r == KErrArgument);
   323 
   323 
   324 	// test writing with share mode EFileShareReadersOrWriters
   324 	// test writing with share mode EFileShareReadersOrWriters
   325 	r=file.Open(TheFs,fn,EFileStreamText|EFileWrite|EFileShareReadersOrWriters);
   325 	r=file.Open(TheFs,fn,EFileStreamText|EFileWrite|EFileShareReadersOrWriters);
   326 	test(r==KErrNone);
   326 	test_KErrNone(r);
   327 
   327 
   328 	test.Next(_L("Write file"));
   328 	test.Next(_L("Write file"));
   329 	r=file.Write(testData);
   329 	r=file.Write(testData);
   330 	test(r==KErrNone);
   330 	test_KErrNone(r);
   331 	file.Close();
   331 	file.Close();
   332 
   332 
   333 	// test writing with share mode EFileShareAny
   333 	// test writing with share mode EFileShareAny
   334 	r=file.Open(TheFs,fn,EFileStreamText|EFileWrite|EFileShareAny);
   334 	r=file.Open(TheFs,fn,EFileStreamText|EFileWrite|EFileShareAny);
   335 	test(r==KErrNone);
   335 	test_KErrNone(r);
   336 
   336 
   337 	test.Next(_L("Write file"));
   337 	test.Next(_L("Write file"));
   338 	r=file.Write(testData);
   338 	r=file.Write(testData);
   339 	test(r==KErrNone);
   339 	test_KErrNone(r);
   340 	file.Close();
   340 	file.Close();
   341 
   341 
   342 	// tidy up
   342 	// tidy up
   343 	r=TheFs.Delete(fn);
   343 	r=TheFs.Delete(fn);
   344 	test(r==KErrNone);
   344 	test_KErrNone(r);
   345 
   345 
   346 	test.End();
   346 	test.End();
   347 	}
   347 	}
   348 
   348 
   349 static void CopyFileToTestDirectory()
   349 static void CopyFileToTestDirectory()
   355 	TFileName fn = _L("Z:\\TEST\\T_FILE.CPP");
   355 	TFileName fn = _L("Z:\\TEST\\T_FILE.CPP");
   356 	fn[0] = gExeFileName[0];
   356 	fn[0] = gExeFileName[0];
   357 	TParse f;
   357 	TParse f;
   358 	TInt r;
   358 	TInt r;
   359 	r=TheFs.Parse(fn,f);
   359 	r=TheFs.Parse(fn,f);
   360 	test(r==KErrNone);
   360 	test_KErrNone(r);
   361 	TParse fCopy;
   361 	TParse fCopy;
   362 	r=TheFs.Parse(f.NameAndExt(),fCopy);
   362 	r=TheFs.Parse(f.NameAndExt(),fCopy);
   363 	test(r==KErrNone);
   363 	test_KErrNone(r);
   364 
   364 
   365 	RFile f1;
   365 	RFile f1;
   366 	r=f1.Open(TheFs,f.FullName(),EFileStreamText|EFileShareReadersOnly);
   366 	r=f1.Open(TheFs,f.FullName(),EFileStreamText|EFileShareReadersOnly);
   367 	test(r==KErrNone);
   367 	test_KErrNone(r);
   368 	RFile f2;
   368 	RFile f2;
   369 	r=f2.Replace(TheFs,fCopy.FullName(),EFileWrite);
   369 	r=f2.Replace(TheFs,fCopy.FullName(),EFileWrite);
   370 	test(r==KErrNone);
   370 	test_KErrNone(r);
   371 	TBuf8<512> copyBuf;
   371 	TBuf8<512> copyBuf;
   372 	TInt rem;
   372 	TInt rem;
   373 	r=f1.Size(rem);
   373 	r=f1.Size(rem);
   374 	test(r==KErrNone);
   374 	test_KErrNone(r);
   375 	TInt pos=0;
   375 	TInt pos=0;
   376 	while (rem)
   376 	while (rem)
   377 		{
   377 		{
   378 		TInt s=Min(rem,copyBuf.MaxSize());
   378 		TInt s=Min(rem,copyBuf.MaxSize());
   379 		r=f1.Read(pos,copyBuf,s);
   379 		r=f1.Read(pos,copyBuf,s);
   380 		test(r==KErrNone);
   380 		test_KErrNone(r);
   381 		test(copyBuf.Length()==s);
   381 		test(copyBuf.Length()==s);
   382 		r=f2.Write(pos,copyBuf,s);
   382 		r=f2.Write(pos,copyBuf,s);
   383 		test(r==KErrNone);
   383 		test_KErrNone(r);
   384 		pos+=s;
   384 		pos+=s;
   385 		rem-=s;
   385 		rem-=s;
   386 		}
   386 		}
   387 	f1.Close();
   387 	f1.Close();
   388 	f2.Close();
   388 	f2.Close();
   402 	record[3].Set(_L("Fourth record"));
   402 	record[3].Set(_L("Fourth record"));
   403 	record[4].Set(_L("Fifth record"));
   403 	record[4].Set(_L("Fifth record"));
   404 
   404 
   405 	RFile f;
   405 	RFile f;
   406 	TInt r=f.Replace(TheFs,_L("TEXTFILE.TXT"),0);
   406 	TInt r=f.Replace(TheFs,_L("TEXTFILE.TXT"),0);
   407 	test(r==KErrNone);
   407 	test_KErrNone(r);
   408 	TFileText textFile;
   408 	TFileText textFile;
   409 	textFile.Set(f);
   409 	textFile.Set(f);
   410 	TInt i=0;
   410 	TInt i=0;
   411 	for (i=0;i<5;i++)
   411 	for (i=0;i<5;i++)
   412 		{
   412 		{
   413 		r=textFile.Write(record[i]);
   413 		r=textFile.Write(record[i]);
   414 		test(r==KErrNone);
   414 		test_KErrNone(r);
   415 		}
   415 		}
   416 	r=textFile.Seek(ESeekStart);
   416 	r=textFile.Seek(ESeekStart);
   417 	test(r==KErrNone);
   417 	test_KErrNone(r);
   418 	TBuf<16> recBuf;
   418 	TBuf<16> recBuf;
   419 	for(i=0;i<5;i++)
   419 	for(i=0;i<5;i++)
   420 		{
   420 		{
   421 		r=textFile.Read(recBuf);
   421 		r=textFile.Read(recBuf);
   422 		test(r==KErrNone);
   422 		test_KErrNone(r);
   423 		test(recBuf==record[i]);
   423 		test(recBuf==record[i]);
   424 		}
   424 		}
   425 	r=textFile.Read(recBuf);
   425 	r=textFile.Read(recBuf);
   426 	test(r==KErrEof);
   426 	test_Value(r, r == KErrEof);
   427 	test(recBuf.Length()==0);
   427 	test(recBuf.Length()==0);
   428 	f.Close();
   428 	f.Close();
   429 
   429 
   430 	test.Next(_L("Test dosfile terminator"));
   430 	test.Next(_L("Test dosfile terminator"));
   431 	TPtrC8 trecord[7];
   431 	TPtrC8 trecord[7];
   443 	trecord[3].Set((TUint8*)tTextrecord[3].Ptr(),tTextrecord[3].Length()*sizeof(TText));
   443 	trecord[3].Set((TUint8*)tTextrecord[3].Ptr(),tTextrecord[3].Length()*sizeof(TText));
   444 	trecord[4].Set((TUint8*)tTextrecord[4].Ptr(),tTextrecord[4].Length()*sizeof(TText));
   444 	trecord[4].Set((TUint8*)tTextrecord[4].Ptr(),tTextrecord[4].Length()*sizeof(TText));
   445 	trecord[5].Set((TUint8*)tTextrecord[5].Ptr(),tTextrecord[5].Length()*sizeof(TText));
   445 	trecord[5].Set((TUint8*)tTextrecord[5].Ptr(),tTextrecord[5].Length()*sizeof(TText));
   446 	trecord[6].Set((TUint8*)tTextrecord[6].Ptr(),tTextrecord[6].Length()*sizeof(TText));
   446 	trecord[6].Set((TUint8*)tTextrecord[6].Ptr(),tTextrecord[6].Length()*sizeof(TText));
   447 	r=f.Replace(TheFs,_L("TEXTFILE.TXT"),0);
   447 	r=f.Replace(TheFs,_L("TEXTFILE.TXT"),0);
   448 	test(r==KErrNone);
   448 	test_KErrNone(r);
   449 	for(i=0;i<7;i++)
   449 	for(i=0;i<7;i++)
   450 		{
   450 		{
   451 		TBuf8<256> buf;
   451 		TBuf8<256> buf;
   452 		buf.Copy(trecord[i]);
   452 		buf.Copy(trecord[i]);
   453 		r=f.Write(buf);
   453 		r=f.Write(buf);
   454 		test(r==KErrNone);
   454 		test_KErrNone(r);
   455 		}
   455 		}
   456 	textFile.Set(f);
   456 	textFile.Set(f);
   457 	textFile.Seek(ESeekStart);
   457 	textFile.Seek(ESeekStart);
   458 	for(i=0;i<5;i++)
   458 	for(i=0;i<5;i++)
   459 		{
   459 		{
   460 		r=textFile.Read(recBuf);
   460 		r=textFile.Read(recBuf);
   461 		test(r==KErrNone);
   461 		test_KErrNone(r);
   462 		test(recBuf==record[i]);
   462 		test(recBuf==record[i]);
   463 		}
   463 		}
   464 	r=textFile.Read(recBuf);
   464 	r=textFile.Read(recBuf);
   465 	test(r==KErrNone);
   465 	test_KErrNone(r);
   466 	test(recBuf==_L("Sixth record"));
   466 	test(recBuf==_L("Sixth record"));
   467 	r=textFile.Read(recBuf);
   467 	r=textFile.Read(recBuf);
   468 	test(r==KErrNone);
   468 	test_KErrNone(r);
   469 	test(recBuf==_L("\rSeventh record"));
   469 	test(recBuf==_L("\rSeventh record"));
   470 	r=textFile.Read(recBuf);
   470 	r=textFile.Read(recBuf);
   471 	test(r==KErrEof);
   471 	test_Value(r, r == KErrEof);
   472 	test(recBuf.Length()==0);
   472 	test(recBuf.Length()==0);
   473 	f.Close();
   473 	f.Close();
   474 
   474 
   475 	test.Next(_L("Test read with bufferSize == dataSize"));
   475 	test.Next(_L("Test read with bufferSize == dataSize"));
   476 	r=f.Replace(TheFs,_L("TEXTFILE.TXT"),0);
   476 	r=f.Replace(TheFs,_L("TEXTFILE.TXT"),0);
   477 	test(r==KErrNone);
   477 	test_KErrNone(r);
   478 	record[0].Set(_L("1234567890123456"));
   478 	record[0].Set(_L("1234567890123456"));
   479 //	trecord[0].Set(_L8("1234567890123456\r\n"));
   479 //	trecord[0].Set(_L8("1234567890123456\r\n"));
   480 //	trecord[1].Set(_L8("1234567890123456\n"));
   480 //	trecord[1].Set(_L8("1234567890123456\n"));
   481 
   481 
   482 	TPtrC tmpTextrecord;
   482 	TPtrC tmpTextrecord;
   487 	trecord[1].Set((TUint8*)tmpTextrecord.Ptr(),tmpTextrecord.Length()*sizeof(TText));
   487 	trecord[1].Set((TUint8*)tmpTextrecord.Ptr(),tmpTextrecord.Length()*sizeof(TText));
   488 
   488 
   489 	for (i=0;i<2;i++)
   489 	for (i=0;i<2;i++)
   490 		{
   490 		{
   491 		r=f.Write(trecord[i]);
   491 		r=f.Write(trecord[i]);
   492 		test(r==KErrNone);
   492 		test_KErrNone(r);
   493 		}
   493 		}
   494 	textFile.Set(f);
   494 	textFile.Set(f);
   495 	textFile.Seek(ESeekStart);
   495 	textFile.Seek(ESeekStart);
   496 	for(i=0;i<2;i++)
   496 	for(i=0;i<2;i++)
   497 		{
   497 		{
   498 		r=textFile.Read(recBuf);
   498 		r=textFile.Read(recBuf);
   499 		test(r==KErrNone);
   499 		test_KErrNone(r);
   500 		test(recBuf==record[0]);
   500 		test(recBuf==record[0]);
   501 		}
   501 		}
   502 	r=textFile.Read(recBuf);
   502 	r=textFile.Read(recBuf);
   503 	test(r==KErrEof);
   503 	test_Value(r, r == KErrEof);
   504 	test(recBuf.Length()==0);
   504 	test(recBuf.Length()==0);
   505 	f.Close();
   505 	f.Close();
   506 
   506 
   507 	test.Next(_L("Read into a buffer < recordSize"));
   507 	test.Next(_L("Read into a buffer < recordSize"));
   508 	TBuf<8> smallBuf;
   508 	TBuf<8> smallBuf;
   509 	r=f.Open(TheFs,_L("TEXTFILE.txt"),0);
   509 	r=f.Open(TheFs,_L("TEXTFILE.txt"),0);
   510 	test(r==KErrNone);
   510 	test_KErrNone(r);
   511 	textFile.Set(f);
   511 	textFile.Set(f);
   512 	for(i=0;i<2;i++)
   512 	for(i=0;i<2;i++)
   513 		{
   513 		{
   514 		r=textFile.Read(smallBuf);
   514 		r=textFile.Read(smallBuf);
   515 		test(r==KErrTooBig);
   515 		test_Value(r, r == KErrTooBig);
   516 		test(smallBuf==_L("12345678"));
   516 		test(smallBuf==_L("12345678"));
   517 		}
   517 		}
   518 	f.Close();
   518 	f.Close();
   519 
   519 
   520 	test.Next(_L("Nasty cases: 1) \\r \\n split over buffer boundary"));
   520 	test.Next(_L("Nasty cases: 1) \\r \\n split over buffer boundary"));
   521 	r=f.Replace(TheFs,_L("TEXTFILE.txt"),0);
   521 	r=f.Replace(TheFs,_L("TEXTFILE.txt"),0);
   522 	test(r==KErrNone);
   522 	test_KErrNone(r);
   523 	HBufC* largeRecord=HBufC::NewL(600);
   523 	HBufC* largeRecord=HBufC::NewL(600);
   524 	largeRecord->Des().SetLength(250);
   524 	largeRecord->Des().SetLength(250);
   525 	largeRecord->Des().Fill('A');
   525 	largeRecord->Des().Fill('A');
   526 	largeRecord->Des()[249]='\n';
   526 	largeRecord->Des()[249]='\n';
   527 	TPtrC8 bufPtr;
   527 	TPtrC8 bufPtr;
   528 	bufPtr.Set((TUint8*)largeRecord->Ptr(),largeRecord->Size()); // Size() returns length in bytes
   528 	bufPtr.Set((TUint8*)largeRecord->Ptr(),largeRecord->Size()); // Size() returns length in bytes
   529 	r=f.Write(bufPtr);
   529 	r=f.Write(bufPtr);
   530 	test(r==KErrNone);
   530 	test_KErrNone(r);
   531 	TBuf<16> boundaryBuf=_L("12345\r\n");
   531 	TBuf<16> boundaryBuf=_L("12345\r\n");
   532 	bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size());
   532 	bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size());
   533 	r=f.Write(bufPtr);
   533 	r=f.Write(bufPtr);
   534 	test(r==KErrNone);
   534 	test_KErrNone(r);
   535 	r=f.Write(trecord[0]);
   535 	r=f.Write(trecord[0]);
   536 	test(r==KErrNone);
   536 	test_KErrNone(r);
   537 
   537 
   538 	textFile.Set(f);
   538 	textFile.Set(f);
   539 	textFile.Seek(ESeekStart);
   539 	textFile.Seek(ESeekStart);
   540 	r=textFile.Read(recBuf);
   540 	r=textFile.Read(recBuf);
   541 	test(r==KErrTooBig);
   541 	test_Value(r, r == KErrTooBig);
   542 	test(recBuf==_L("AAAAAAAAAAAAAAAA"));
   542 	test(recBuf==_L("AAAAAAAAAAAAAAAA"));
   543 	r=textFile.Read(recBuf);
   543 	r=textFile.Read(recBuf);
   544 	test(r==KErrNone);
   544 	test_KErrNone(r);
   545 	test(recBuf==_L("12345"));
   545 	test(recBuf==_L("12345"));
   546 	r=textFile.Read(recBuf);
   546 	r=textFile.Read(recBuf);
   547 	test(r==KErrNone);
   547 	test_KErrNone(r);
   548 	test(recBuf==record[0]);
   548 	test(recBuf==record[0]);
   549 	f.Close();
   549 	f.Close();
   550 
   550 
   551 	test.Next(_L("Nasty cases: 2) \\r on buffer boundary"));
   551 	test.Next(_L("Nasty cases: 2) \\r on buffer boundary"));
   552 	r=f.Replace(TheFs,_L("TEXTFILE.txt"),0);
   552 	r=f.Replace(TheFs,_L("TEXTFILE.txt"),0);
   553 	test(r==KErrNone);
   553 	test_KErrNone(r);
   554 	largeRecord->Des().SetLength(250);
   554 	largeRecord->Des().SetLength(250);
   555 	largeRecord->Des().Fill('A');
   555 	largeRecord->Des().Fill('A');
   556 	largeRecord->Des()[249]='\n';
   556 	largeRecord->Des()[249]='\n';
   557 	bufPtr.Set((TUint8*)largeRecord->Ptr(),largeRecord->Size());
   557 	bufPtr.Set((TUint8*)largeRecord->Ptr(),largeRecord->Size());
   558 	r=f.Write(bufPtr);
   558 	r=f.Write(bufPtr);
   559 	test(r==KErrNone);
   559 	test_KErrNone(r);
   560 	boundaryBuf=_L("12345\rxyz\n");
   560 	boundaryBuf=_L("12345\rxyz\n");
   561 	bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size());
   561 	bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size());
   562 	r=f.Write(bufPtr);
   562 	r=f.Write(bufPtr);
   563 	test(r==KErrNone);
   563 	test_KErrNone(r);
   564 	r=f.Write(trecord[0]);
   564 	r=f.Write(trecord[0]);
   565 	test(r==KErrNone);
   565 	test_KErrNone(r);
   566 
   566 
   567 	textFile.Set(f);
   567 	textFile.Set(f);
   568 	textFile.Seek(ESeekStart);
   568 	textFile.Seek(ESeekStart);
   569 	r=textFile.Read(recBuf);
   569 	r=textFile.Read(recBuf);
   570 	test(r==KErrTooBig);
   570 	test_Value(r, r == KErrTooBig);
   571 	test(recBuf==_L("AAAAAAAAAAAAAAAA"));
   571 	test(recBuf==_L("AAAAAAAAAAAAAAAA"));
   572 	r=textFile.Read(recBuf);
   572 	r=textFile.Read(recBuf);
   573 	test(r==KErrNone);
   573 	test_KErrNone(r);
   574 	test(recBuf==_L("12345\rxyz"));
   574 	test(recBuf==_L("12345\rxyz"));
   575 	r=textFile.Read(recBuf);
   575 	r=textFile.Read(recBuf);
   576 	test(r==KErrNone);
   576 	test_KErrNone(r);
   577 	test(recBuf==record[0]);
   577 	test(recBuf==record[0]);
   578 	f.Close();
   578 	f.Close();
   579 
   579 
   580 	test.Next(_L("Nasty cases: 3) record size > buffer size"));
   580 	test.Next(_L("Nasty cases: 3) record size > buffer size"));
   581 	r=f.Replace(TheFs,_L("TEXTFILE.txt"),0);
   581 	r=f.Replace(TheFs,_L("TEXTFILE.txt"),0);
   582 	test(r==KErrNone);
   582 	test_KErrNone(r);
   583 	largeRecord->Des().SetLength(600);
   583 	largeRecord->Des().SetLength(600);
   584 	largeRecord->Des().Fill('Z');
   584 	largeRecord->Des().Fill('Z');
   585 	largeRecord->Des()[511]='\r';
   585 	largeRecord->Des()[511]='\r';
   586 	largeRecord->Des()[599]='\n';
   586 	largeRecord->Des()[599]='\n';
   587 	bufPtr.Set((TUint8*)largeRecord->Ptr(),largeRecord->Size());
   587 	bufPtr.Set((TUint8*)largeRecord->Ptr(),largeRecord->Size());
   588 	r=f.Write(bufPtr);
   588 	r=f.Write(bufPtr);
   589 	test(r==KErrNone);
   589 	test_KErrNone(r);
   590 	boundaryBuf=_L("12345\rxyz\n");
   590 	boundaryBuf=_L("12345\rxyz\n");
   591 	bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size());
   591 	bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size());
   592 	r=f.Write(bufPtr);
   592 	r=f.Write(bufPtr);
   593 	test(r==KErrNone);
   593 	test_KErrNone(r);
   594 	r=f.Write(trecord[0]);
   594 	r=f.Write(trecord[0]);
   595 	test(r==KErrNone);
   595 	test_KErrNone(r);
   596 
   596 
   597 	textFile.Set(f);
   597 	textFile.Set(f);
   598 	textFile.Seek(ESeekStart);
   598 	textFile.Seek(ESeekStart);
   599 	r=textFile.Read(recBuf);
   599 	r=textFile.Read(recBuf);
   600 	test(r==KErrTooBig);
   600 	test_Value(r, r == KErrTooBig);
   601 	test(recBuf==_L("ZZZZZZZZZZZZZZZZ"));
   601 	test(recBuf==_L("ZZZZZZZZZZZZZZZZ"));
   602 	r=textFile.Read(recBuf);
   602 	r=textFile.Read(recBuf);
   603 	test(r==KErrNone);
   603 	test_KErrNone(r);
   604 	test(recBuf==_L("12345\rxyz"));
   604 	test(recBuf==_L("12345\rxyz"));
   605 	r=textFile.Read(recBuf);
   605 	r=textFile.Read(recBuf);
   606 	test(r==KErrNone);
   606 	test_KErrNone(r);
   607 	test(recBuf==record[0]);
   607 	test(recBuf==record[0]);
   608 
   608 
   609 	TBuf<601> bigBuf;
   609 	TBuf<601> bigBuf;
   610 	TPtrC largePtr((TText*)largeRecord->Ptr(),(largeRecord->Length()-1));
   610 	TPtrC largePtr((TText*)largeRecord->Ptr(),(largeRecord->Length()-1));
   611 	textFile.Seek(ESeekStart);
   611 	textFile.Seek(ESeekStart);
   612 	r=textFile.Read(bigBuf);
   612 	r=textFile.Read(bigBuf);
   613 	test(r==KErrNone);
   613 	test_KErrNone(r);
   614 	test(bigBuf==largePtr);
   614 	test(bigBuf==largePtr);
   615 	r=textFile.Read(recBuf);
   615 	r=textFile.Read(recBuf);
   616 	test(r==KErrNone);
   616 	test_KErrNone(r);
   617 	test(recBuf==_L("12345\rxyz"));
   617 	test(recBuf==_L("12345\rxyz"));
   618 	r=textFile.Read(recBuf);
   618 	r=textFile.Read(recBuf);
   619 	test(r==KErrNone);
   619 	test_KErrNone(r);
   620 	test(recBuf==record[0]);
   620 	test(recBuf==record[0]);
   621 	f.Close();
   621 	f.Close();
   622 
   622 
   623 	User::Free(largeRecord);
   623 	User::Free(largeRecord);
   624 	}
   624 	}
   630 	{
   630 	{
   631 
   631 
   632 	test.Next(_L("Test FileText last record has no terminator"));
   632 	test.Next(_L("Test FileText last record has no terminator"));
   633 	RFile f;
   633 	RFile f;
   634 	TInt r=f.Replace(TheFs,_L("TextFile"),0);
   634 	TInt r=f.Replace(TheFs,_L("TextFile"),0);
   635 	test(r==KErrNone);
   635 	test_KErrNone(r);
   636 	TPtrC8 bufPtr;
   636 	TPtrC8 bufPtr;
   637 	TBuf<16>boundaryBuf=_L("Record1\n");
   637 	TBuf<16>boundaryBuf=_L("Record1\n");
   638 	bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size());
   638 	bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size());
   639 	r=f.Write(bufPtr);
   639 	r=f.Write(bufPtr);
   640 	test(r==KErrNone);
   640 	test_KErrNone(r);
   641 	boundaryBuf=_L("Record2\n");
   641 	boundaryBuf=_L("Record2\n");
   642 	bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size());
   642 	bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size());
   643 	r=f.Write(bufPtr);
   643 	r=f.Write(bufPtr);
   644 	test(r==KErrNone);
   644 	test_KErrNone(r);
   645 	boundaryBuf=_L("Record3\n");
   645 	boundaryBuf=_L("Record3\n");
   646 	bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size());
   646 	bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size());
   647 	r=f.Write(bufPtr);
   647 	r=f.Write(bufPtr);
   648 	test(r==KErrNone);
   648 	test_KErrNone(r);
   649 
   649 
   650 	TFileText fText;
   650 	TFileText fText;
   651 	fText.Set(f);
   651 	fText.Set(f);
   652 	r=fText.Seek(ESeekStart);
   652 	r=fText.Seek(ESeekStart);
   653 	test(r==KErrNone);
   653 	test_KErrNone(r);
   654 	TBuf<32> recBuf;
   654 	TBuf<32> recBuf;
   655 	r=fText.Read(recBuf);
   655 	r=fText.Read(recBuf);
   656 	test(r==KErrNone);
   656 	test_KErrNone(r);
   657 	test(recBuf.MatchF(_L("record1"))!=KErrNotFound);
   657 	test(recBuf.MatchF(_L("record1"))!=KErrNotFound);
   658 	r=fText.Read(recBuf);
   658 	r=fText.Read(recBuf);
   659 	test(r==KErrNone);
   659 	test_KErrNone(r);
   660 	test(recBuf.MatchF(_L("record2"))!=KErrNotFound);
   660 	test(recBuf.MatchF(_L("record2"))!=KErrNotFound);
   661 	r=fText.Read(recBuf);
   661 	r=fText.Read(recBuf);
   662 	test(r==KErrNone);
   662 	test_KErrNone(r);
   663 	test(recBuf.MatchF(_L("record3"))!=KErrNotFound);
   663 	test(recBuf.MatchF(_L("record3"))!=KErrNotFound);
   664 	r=fText.Read(recBuf);
   664 	r=fText.Read(recBuf);
   665 	test(r==KErrEof);
   665 	test_Value(r, r == KErrEof);
   666 	test(recBuf.Length()==0);
   666 	test(recBuf.Length()==0);
   667 	f.Close();
   667 	f.Close();
   668 
   668 
   669 	TBuf<0x100> bigBuf(0x100);
   669 	TBuf<0x100> bigBuf(0x100);
   670 	bigBuf.Fill('A');
   670 	bigBuf.Fill('A');
   671 	r=f.Replace(TheFs,_L("TextFile"),0);
   671 	r=f.Replace(TheFs,_L("TextFile"),0);
   672 	test(r==KErrNone);
   672 	test_KErrNone(r);
   673 
   673 
   674     bufPtr.Set((TUint8*)bigBuf.Ptr(),bigBuf.Size());
   674     bufPtr.Set((TUint8*)bigBuf.Ptr(),bigBuf.Size());
   675 	r=f.Write(bufPtr);
   675 	r=f.Write(bufPtr);
   676 	test(r==KErrNone);
   676 	test_KErrNone(r);
   677 
   677 
   678 	fText.Set(f);
   678 	fText.Set(f);
   679 	r=fText.Seek(ESeekStart);
   679 	r=fText.Seek(ESeekStart);
   680 	test(r==KErrNone);
   680 	test_KErrNone(r);
   681 	bigBuf.SetLength(0);
   681 	bigBuf.SetLength(0);
   682 	r=fText.Read(bigBuf);
   682 	r=fText.Read(bigBuf);
   683 	test.Printf(_L("fText.Read returns %d\n"),r);
   683 	test.Printf(_L("fText.Read returns %d\n"),r);
   684 	test(r==KErrNone);
   684 	test_KErrNone(r);
   685 	test.Printf(_L("BigBuf.Length()==%d\n"),bigBuf.Length());
   685 	test.Printf(_L("BigBuf.Length()==%d\n"),bigBuf.Length());
   686 	test(bigBuf.Length()==0x100);
   686 	test(bigBuf.Length()==0x100);
   687 	r=fText.Read(bigBuf);
   687 	r=fText.Read(bigBuf);
   688 	test(r==KErrEof);
   688 	test_Value(r, r == KErrEof);
   689 	test(bigBuf.Length()==0);
   689 	test(bigBuf.Length()==0);
   690 	f.Close();
   690 	f.Close();
   691 	}
   691 	}
   692 
   692 
   693 static void testFileNames()
   693 static void testFileNames()
   698 
   698 
   699 	test.Next(_L("Test temp filenames specify drive"));
   699 	test.Next(_L("Test temp filenames specify drive"));
   700 	TFileName tempFileName;
   700 	TFileName tempFileName;
   701 	RFile f;
   701 	RFile f;
   702 	TInt r=f.Temp(TheFs,_L(""),tempFileName,EFileRead);
   702 	TInt r=f.Temp(TheFs,_L(""),tempFileName,EFileRead);
   703 	test(r==KErrNone);
   703 	test_KErrNone(r);
   704 	TParse p;
   704 	TParse p;
   705 	p.Set(tempFileName,NULL,NULL);
   705 	p.Set(tempFileName,NULL,NULL);
   706 	test(p.DrivePresent());
   706 	test(p.DrivePresent());
   707 	test(p.PathPresent());
   707 	test(p.PathPresent());
   708 	test(p.NamePresent());
   708 	test(p.NamePresent());
   709 	test(p.ExtPresent());
   709 	test(p.ExtPresent());
   710 	f.Close();
   710 	f.Close();
   711 
   711 
   712 	r=f.Replace(TheFs,_L("WELCOMETO"),EFileWrite);
   712 	r=f.Replace(TheFs,_L("WELCOMETO"),EFileWrite);
   713 	test(r==KErrNone);
   713 	test_KErrNone(r);
   714 	f.Close();
   714 	f.Close();
   715 	r=f.Replace(TheFs,_L("WELCOMETO.WRD"),EFileWrite);
   715 	r=f.Replace(TheFs,_L("WELCOMETO.WRD"),EFileWrite);
   716 	test(r==KErrNone);
   716 	test_KErrNone(r);
   717 	f.Close();
   717 	f.Close();
   718 	}
   718 	}
   719 
   719 
   720 // Nasty hack - mask attributes returned by RFile::Att() with this.
   720 // Nasty hack - mask attributes returned by RFile::Att() with this.
   721 // File server used to do this but that stopped the XIP attribute on the ROM file system
   721 // File server used to do this but that stopped the XIP attribute on the ROM file system
   730 	{
   730 	{
   731 
   731 
   732 	test.Next(_L("Archive att is set after creation"));
   732 	test.Next(_L("Archive att is set after creation"));
   733 	RFile f;
   733 	RFile f;
   734 	TInt r=TheFs.Delete(_L("FILEATT.ARC"));
   734 	TInt r=TheFs.Delete(_L("FILEATT.ARC"));
   735 	test(r==KErrNone || r==KErrNotFound);
   735 	test_Value(r, r == KErrNone || r==KErrNotFound);
   736 	r=f.Create(TheFs,_L("FILEATT.ARC"),EFileRead);
   736 	r=f.Create(TheFs,_L("FILEATT.ARC"),EFileRead);
   737 	test(r==KErrNone);
   737 	test_KErrNone(r);
   738 	TUint atts;
   738 	TUint atts;
   739 	r=f.Att(atts);
   739 	r=f.Att(atts);
   740 	test(r==KErrNone);
   740 	test_KErrNone(r);
   741 	test((atts&ATT_MASK)==KEntryAttArchive);
   741 	test((atts&ATT_MASK)==KEntryAttArchive);
   742 	TEntry fileAtt;
   742 	TEntry fileAtt;
   743 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   743 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   744 	test(r==KErrNone);
   744 	test_KErrNone(r);
   745 	test(fileAtt.iAtt==KEntryAttArchive);
   745 	test(fileAtt.iAtt==KEntryAttArchive);
   746 	f.Close();
   746 	f.Close();
   747 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   747 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   748 	test(r==KErrNone);
   748 	test_KErrNone(r);
   749 	test(fileAtt.iAtt==KEntryAttArchive);
   749 	test(fileAtt.iAtt==KEntryAttArchive);
   750 
   750 
   751 	test.Next(_L("Archive att is set after a write"));
   751 	test.Next(_L("Archive att is set after a write"));
   752 	TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttArchive);
   752 	TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttArchive);
   753 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   753 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   754 	test(r==KErrNone);
   754 	test_KErrNone(r);
   755 	test(fileAtt.iAtt==0);
   755 	test(fileAtt.iAtt==0);
   756 	r=f.Open(TheFs,_L("FILEATT.ARC"),EFileWrite);
   756 	r=f.Open(TheFs,_L("FILEATT.ARC"),EFileWrite);
   757 	test(r==KErrNone);
   757 	test_KErrNone(r);
   758 	r=f.Write(_L8("Hello World"));
   758 	r=f.Write(_L8("Hello World"));
   759 	test(r==KErrNone);
   759 	test_KErrNone(r);
   760 	r=f.Att(atts);
   760 	r=f.Att(atts);
   761 	test(r==KErrNone);
   761 	test_KErrNone(r);
   762 	test((atts&ATT_MASK)==KEntryAttArchive);
   762 	test((atts&ATT_MASK)==KEntryAttArchive);
   763 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   763 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   764 	test(r==KErrNone);
   764 	test_KErrNone(r);
   765 	test(fileAtt.iAtt==KEntryAttArchive);
   765 	test(fileAtt.iAtt==KEntryAttArchive);
   766 	f.Close();
   766 	f.Close();
   767 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   767 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   768 	test(r==KErrNone);
   768 	test_KErrNone(r);
   769 	test(fileAtt.iAtt==KEntryAttArchive);
   769 	test(fileAtt.iAtt==KEntryAttArchive);
   770 
   770 
   771 	test.Next(_L("Archive att is set after setsize"));
   771 	test.Next(_L("Archive att is set after setsize"));
   772 	TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttArchive);
   772 	TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttArchive);
   773 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   773 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   774 	test(r==KErrNone);
   774 	test_KErrNone(r);
   775 	test(fileAtt.iAtt==0);
   775 	test(fileAtt.iAtt==0);
   776 	r=f.Open(TheFs,_L("FILEATT.ARC"),EFileWrite);
   776 	r=f.Open(TheFs,_L("FILEATT.ARC"),EFileWrite);
   777 	test(r==KErrNone);
   777 	test_KErrNone(r);
   778 	r=f.SetSize(447);
   778 	r=f.SetSize(447);
   779 	test(r==KErrNone);
   779 	test_KErrNone(r);
   780 	TInt size;
   780 	TInt size;
   781 	r=f.Size(size);
   781 	r=f.Size(size);
   782 	test(r==KErrNone);
   782 	test_KErrNone(r);
   783 	test(size==447);
   783 	test(size==447);
   784 	r=f.Att(atts);
   784 	r=f.Att(atts);
   785 	test(r==KErrNone);
   785 	test_KErrNone(r);
   786 	test((atts&ATT_MASK)==KEntryAttArchive);
   786 	test((atts&ATT_MASK)==KEntryAttArchive);
   787 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   787 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   788 	test(r==KErrNone);
   788 	test_KErrNone(r);
   789 	test(fileAtt.iAtt==KEntryAttArchive);
   789 	test(fileAtt.iAtt==KEntryAttArchive);
   790 	f.Close();
   790 	f.Close();
   791 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   791 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   792 	test(r==KErrNone);
   792 	test_KErrNone(r);
   793 	test(fileAtt.iAtt==KEntryAttArchive);
   793 	test(fileAtt.iAtt==KEntryAttArchive);
   794 
   794 
   795 	test.Next(_L("Archive att is not set after open"));
   795 	test.Next(_L("Archive att is not set after open"));
   796 	r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttArchive);
   796 	r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttArchive);
   797 	test(r==KErrNone);
   797 	test_KErrNone(r);
   798 	r=f.Open(TheFs,_L("FILEATT.ARC"),EFileWrite);
   798 	r=f.Open(TheFs,_L("FILEATT.ARC"),EFileWrite);
   799 	test(r==KErrNone);
   799 	test_KErrNone(r);
   800 	r=f.Att(atts);
   800 	r=f.Att(atts);
   801 	test(r==KErrNone);
   801 	test_KErrNone(r);
   802 	test((atts&ATT_MASK)==0);
   802 	test((atts&ATT_MASK)==0);
   803 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   803 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   804 	test(r==KErrNone);
   804 	test_KErrNone(r);
   805 	test(fileAtt.iAtt==0);
   805 	test(fileAtt.iAtt==0);
   806 	f.Close();
   806 	f.Close();
   807 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   807 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   808 	test(r==KErrNone);
   808 	test_KErrNone(r);
   809 	test(fileAtt.iAtt==0);
   809 	test(fileAtt.iAtt==0);
   810 
   810 
   811 	test.Next(_L("Archive att is not set after a read"));
   811 	test.Next(_L("Archive att is not set after a read"));
   812 	TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttArchive);
   812 	TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttArchive);
   813 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   813 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   814 	test(r==KErrNone);
   814 	test_KErrNone(r);
   815 	test(fileAtt.iAtt==0);
   815 	test(fileAtt.iAtt==0);
   816 	r=f.Open(TheFs,_L("FILEATT.ARC"),EFileWrite);
   816 	r=f.Open(TheFs,_L("FILEATT.ARC"),EFileWrite);
   817 	test(r==KErrNone);
   817 	test_KErrNone(r);
   818 	TBuf8<16> readBuf;
   818 	TBuf8<16> readBuf;
   819 	r=f.Read(readBuf);
   819 	r=f.Read(readBuf);
   820 	test(r==KErrNone);
   820 	test_KErrNone(r);
   821 	r=f.Att(atts);
   821 	r=f.Att(atts);
   822 	test(r==KErrNone);
   822 	test_KErrNone(r);
   823 	test((atts&ATT_MASK)==0);
   823 	test((atts&ATT_MASK)==0);
   824 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   824 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   825 	test(r==KErrNone);
   825 	test_KErrNone(r);
   826 	test(fileAtt.iAtt==0);
   826 	test(fileAtt.iAtt==0);
   827 	f.Close();
   827 	f.Close();
   828 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   828 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   829 	test(r==KErrNone);
   829 	test_KErrNone(r);
   830 	test(fileAtt.iAtt==0);
   830 	test(fileAtt.iAtt==0);
   831 
   831 
   832 	test.Next(_L("Archive att is set after replace"));
   832 	test.Next(_L("Archive att is set after replace"));
   833 	r=f.Replace(TheFs,_L("FILEATT.ARC"),EFileWrite);
   833 	r=f.Replace(TheFs,_L("FILEATT.ARC"),EFileWrite);
   834 	test(r==KErrNone);
   834 	test_KErrNone(r);
   835 	r=f.Att(atts);
   835 	r=f.Att(atts);
   836 	test(r==KErrNone);
   836 	test_KErrNone(r);
   837 	test((atts&ATT_MASK)==KEntryAttArchive);
   837 	test((atts&ATT_MASK)==KEntryAttArchive);
   838 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   838 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   839 	test(r==KErrNone);
   839 	test_KErrNone(r);
   840 	test(fileAtt.iAtt==KEntryAttArchive);
   840 	test(fileAtt.iAtt==KEntryAttArchive);
   841 	f.Close();
   841 	f.Close();
   842 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   842 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   843 	test(r==KErrNone);
   843 	test_KErrNone(r);
   844 	test(fileAtt.iAtt==KEntryAttArchive);
   844 	test(fileAtt.iAtt==KEntryAttArchive);
   845 
   845 
   846 	test.Next(_L("Read only bit can be unset"));
   846 	test.Next(_L("Read only bit can be unset"));
   847 	r=TheFs.SetAtt(_L("FILEATT.ARC"),KEntryAttReadOnly|KEntryAttHidden,0);
   847 	r=TheFs.SetAtt(_L("FILEATT.ARC"),KEntryAttReadOnly|KEntryAttHidden,0);
   848 	test(r==KErrNone);
   848 	test_KErrNone(r);
   849 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   849 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   850 	test(r==KErrNone);
   850 	test_KErrNone(r);
   851 	test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttHidden|KEntryAttArchive));
   851 	test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttHidden|KEntryAttArchive));
   852 
   852 
   853 	r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttHidden);
   853 	r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttHidden);
   854 	test(r==KErrNone);
   854 	test_KErrNone(r);
   855 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   855 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   856 	test(r==KErrNone);
   856 	test_KErrNone(r);
   857 	test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttArchive));
   857 	test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttArchive));
   858 
   858 
   859 	r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttReadOnly);
   859 	r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttReadOnly);
   860 	test(r==KErrNone);
   860 	test_KErrNone(r);
   861 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   861 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   862 	test(r==KErrNone);
   862 	test_KErrNone(r);
   863 	test(fileAtt.iAtt==(KEntryAttArchive));
   863 	test(fileAtt.iAtt==(KEntryAttArchive));
   864 
   864 
   865 	r=TheFs.SetAtt(_L("FILEATT.ARC"),KEntryAttReadOnly|KEntryAttHidden,0);
   865 	r=TheFs.SetAtt(_L("FILEATT.ARC"),KEntryAttReadOnly|KEntryAttHidden,0);
   866 	test(r==KErrNone);
   866 	test_KErrNone(r);
   867 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   867 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   868 	test(r==KErrNone);
   868 	test_KErrNone(r);
   869 	test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttHidden|KEntryAttArchive));
   869 	test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttHidden|KEntryAttArchive));
   870 
   870 
   871 	r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttReadOnly);
   871 	r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttReadOnly);
   872 	test(r==KErrNone);
   872 	test_KErrNone(r);
   873 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   873 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   874 	test(r==KErrNone);
   874 	test_KErrNone(r);
   875 	test(fileAtt.iAtt==(KEntryAttHidden|KEntryAttArchive));
   875 	test(fileAtt.iAtt==(KEntryAttHidden|KEntryAttArchive));
   876 
   876 
   877 	r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttHidden);
   877 	r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttHidden);
   878 	test(r==KErrNone);
   878 	test_KErrNone(r);
   879 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   879 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   880 	test(r==KErrNone);
   880 	test_KErrNone(r);
   881 	test(fileAtt.iAtt==(KEntryAttArchive));
   881 	test(fileAtt.iAtt==(KEntryAttArchive));
   882 
   882 
   883 	TTime time(0);
   883 	TTime time(0);
   884 	r=TheFs.SetEntry(_L("FILEATT.ARC"),time,KEntryAttReadOnly|KEntryAttHidden,0);
   884 	r=TheFs.SetEntry(_L("FILEATT.ARC"),time,KEntryAttReadOnly|KEntryAttHidden,0);
   885 	test(r==KErrNone);
   885 	test_KErrNone(r);
   886 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   886 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   887 	test(r==KErrNone);
   887 	test_KErrNone(r);
   888 	test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttHidden|KEntryAttArchive));
   888 	test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttHidden|KEntryAttArchive));
   889 
   889 
   890 	r=TheFs.SetEntry(_L("FILEATT.ARC"),time,0,KEntryAttHidden);
   890 	r=TheFs.SetEntry(_L("FILEATT.ARC"),time,0,KEntryAttHidden);
   891 	test(r==KErrNone);
   891 	test_KErrNone(r);
   892 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   892 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   893 	test(r==KErrNone);
   893 	test_KErrNone(r);
   894 	test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttArchive));
   894 	test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttArchive));
   895 
   895 
   896 	r=TheFs.SetEntry(_L("FILEATT.ARC"),time,0,KEntryAttReadOnly);
   896 	r=TheFs.SetEntry(_L("FILEATT.ARC"),time,0,KEntryAttReadOnly);
   897 	test(r==KErrNone);
   897 	test_KErrNone(r);
   898 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   898 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   899 	test(r==KErrNone);
   899 	test_KErrNone(r);
   900 	test(fileAtt.iAtt==(KEntryAttArchive));
   900 	test(fileAtt.iAtt==(KEntryAttArchive));
   901 
   901 
   902 	r=TheFs.SetEntry(_L("FILEATT.ARC"),time,KEntryAttReadOnly|KEntryAttHidden,0);
   902 	r=TheFs.SetEntry(_L("FILEATT.ARC"),time,KEntryAttReadOnly|KEntryAttHidden,0);
   903 	test(r==KErrNone);
   903 	test_KErrNone(r);
   904 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   904 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   905 	test(r==KErrNone);
   905 	test_KErrNone(r);
   906 	test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttHidden|KEntryAttArchive));
   906 	test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttHidden|KEntryAttArchive));
   907 
   907 
   908 	r=TheFs.SetEntry(_L("FILEATT.ARC"),time,0,KEntryAttReadOnly);
   908 	r=TheFs.SetEntry(_L("FILEATT.ARC"),time,0,KEntryAttReadOnly);
   909 	test(r==KErrNone);
   909 	test_KErrNone(r);
   910 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   910 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   911 	test(r==KErrNone);
   911 	test_KErrNone(r);
   912 	test(fileAtt.iAtt==(KEntryAttHidden|KEntryAttArchive));
   912 	test(fileAtt.iAtt==(KEntryAttHidden|KEntryAttArchive));
   913 
   913 
   914 	r=TheFs.SetEntry(_L("FILEATT.ARC"),time,0,KEntryAttHidden);
   914 	r=TheFs.SetEntry(_L("FILEATT.ARC"),time,0,KEntryAttHidden);
   915 	test(r==KErrNone);
   915 	test_KErrNone(r);
   916 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   916 	r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt);
   917 	test(r==KErrNone);
   917 	test_KErrNone(r);
   918 	test(fileAtt.iAtt==(KEntryAttArchive));
   918 	test(fileAtt.iAtt==(KEntryAttArchive));
   919 
   919 
   920 	test.Next(_L("Cashing the 'read-only' attribute"));
   920 	test.Next(_L("Cashing the 'read-only' attribute"));
   921 	const TDesC& fname = _L("TEST.RO");
   921 	const TDesC& fname = _L("TEST.RO");
   922 
   922 
   923 	// Test RO attribute after creating a file
   923 	// Test RO attribute after creating a file
   924 	r=f.Create(TheFs,fname,EFileWrite);
   924 	r=f.Create(TheFs,fname,EFileWrite);
   925 	test(r==KErrNone);
   925 	test_KErrNone(r);
   926 	r=f.SetAtt(KEntryAttReadOnly,0);
   926 	r=f.SetAtt(KEntryAttReadOnly,0);
   927 	test(r==KErrNone);
   927 	test_KErrNone(r);
   928 	r=f.Write(_L8("Hello World"));
   928 	r=f.Write(_L8("Hello World"));
   929 	test(r==KErrNone);					// <-- here!
   929 	test_KErrNone(r);					// <-- here!
   930 	f.Close();
   930 	f.Close();
   931 
   931 
   932 	// Test we can't open for write or delete a RO file
   932 	// Test we can't open for write or delete a RO file
   933 	r=f.Open(TheFs,fname,EFileWrite);
   933 	r=f.Open(TheFs,fname,EFileWrite);
   934 	test(r==KErrAccessDenied);
   934 	test_Value(r, r == KErrAccessDenied);
   935 	r=TheFs.Delete(fname);
   935 	r=TheFs.Delete(fname);
   936 	test(r==KErrAccessDenied);
   936 	test_Value(r, r == KErrAccessDenied);
   937 
   937 
   938 	// Tidy up and re-create test file
   938 	// Tidy up and re-create test file
   939 	r=TheFs.SetAtt(fname,0,KEntryAttReadOnly);
   939 	r=TheFs.SetAtt(fname,0,KEntryAttReadOnly);
   940 	test(r==KErrNone);
   940 	test_KErrNone(r);
   941 	r=TheFs.Delete(fname);
   941 	r=TheFs.Delete(fname);
   942 	test(r==KErrNone);
   942 	test_KErrNone(r);
   943 	r=f.Create(TheFs,fname,EFileWrite);
   943 	r=f.Create(TheFs,fname,EFileWrite);
   944 	test(r==KErrNone);
   944 	test_KErrNone(r);
   945 	f.Close();
   945 	f.Close();
   946 
   946 
   947 	// Test RO attribute after opening a file
   947 	// Test RO attribute after opening a file
   948 	r=f.Open(TheFs,fname,EFileWrite);
   948 	r=f.Open(TheFs,fname,EFileWrite);
   949 	test(r==KErrNone);
   949 	test_KErrNone(r);
   950 	r=f.SetAtt(KEntryAttReadOnly,0);
   950 	r=f.SetAtt(KEntryAttReadOnly,0);
   951 	test(r==KErrNone);
   951 	test_KErrNone(r);
   952 	r=f.Write(_L8("Hello World"));
   952 	r=f.Write(_L8("Hello World"));
   953 	test(r==KErrNone);
   953 	test_KErrNone(r);
   954 	f.Close();
   954 	f.Close();
   955 
   955 
   956 	// Tidy up
   956 	// Tidy up
   957 	r=TheFs.SetAtt(fname,0,KEntryAttReadOnly);
   957 	r=TheFs.SetAtt(fname,0,KEntryAttReadOnly);
   958 	test(r==KErrNone);
   958 	test_KErrNone(r);
   959 	r=TheFs.Delete(fname);
   959 	r=TheFs.Delete(fname);
   960 	test(r==KErrNone);
   960 	test_KErrNone(r);
   961 	}
   961 	}
   962 
   962 
   963 static void testShortNameAccessorFunctions()
   963 static void testShortNameAccessorFunctions()
   964 //
   964 //
   965 // Test RFs::GetShortName(...)
   965 // Test RFs::GetShortName(...)
   974         }
   974         }
   975 
   975 
   976 
   976 
   977 	TBuf<64> sessionPath;
   977 	TBuf<64> sessionPath;
   978 	TInt r=TheFs.SessionPath(sessionPath);
   978 	TInt r=TheFs.SessionPath(sessionPath);
   979 	test(r==KErrNone);
   979 	test_KErrNone(r);
   980 	RFile f;
   980 	RFile f;
   981 	r=TheFs.MkDirAll(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\RANDOM.ENDBIT"));
   981 	r=TheFs.MkDirAll(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\RANDOM.ENDBIT"));
   982 	test(r==KErrNone || r==KErrAlreadyExists);
   982 	test_Value(r, r == KErrNone || r==KErrAlreadyExists);
   983 	r=f.Replace(TheFs,_L("LONGFILENAME.LONGEXT"),EFileWrite);
   983 	r=f.Replace(TheFs,_L("LONGFILENAME.LONGEXT"),EFileWrite);
   984 	test(r==KErrNone);
   984 	test_KErrNone(r);
   985 	f.Close();
   985 	f.Close();
   986 	r=f.Replace(TheFs,_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\LONGFILENAME.LONGEXT"),EFileWrite);
   986 	r=f.Replace(TheFs,_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\LONGFILENAME.LONGEXT"),EFileWrite);
   987 	test(r==KErrNone);
   987 	test_KErrNone(r);
   988 	f.Close();
   988 	f.Close();
   989 	r=f.Replace(TheFs,_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\BAD CHAR"),EFileWrite);
   989 	r=f.Replace(TheFs,_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\BAD CHAR"),EFileWrite);
   990 	test(r==KErrNone);
   990 	test_KErrNone(r);
   991 	f.Close();
   991 	f.Close();
   992 	r=f.Replace(TheFs,_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\GoodCHAR.TXT"),EFileWrite);
   992 	r=f.Replace(TheFs,_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\GoodCHAR.TXT"),EFileWrite);
   993 	test(r==KErrNone);
   993 	test_KErrNone(r);
   994 	f.Close();
   994 	f.Close();
   995 	TBuf<12> shortName1;
   995 	TBuf<12> shortName1;
   996 	TBuf<12> shortName2;
   996 	TBuf<12> shortName2;
   997 	TBuf<12> shortName3;
   997 	TBuf<12> shortName3;
   998 	TBuf<12> shortName4;
   998 	TBuf<12> shortName4;
   999 	TBuf<12> shortName5;
   999 	TBuf<12> shortName5;
  1000 	r=TheFs.GetShortName(_L("LONGFILENAME.LONGEXT"),shortName1);
  1000 	r=TheFs.GetShortName(_L("LONGFILENAME.LONGEXT"),shortName1);
  1001 	test(r==KErrNone);
  1001 	test_KErrNone(r);
  1002 	r=TheFs.GetShortName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\LONGFILENAME.LONGEXT"),shortName2);
  1002 	r=TheFs.GetShortName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\LONGFILENAME.LONGEXT"),shortName2);
  1003 	test(r==KErrNone);
  1003 	test_KErrNone(r);
  1004 	r=TheFs.GetShortName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\BAD CHAR"),shortName3);
  1004 	r=TheFs.GetShortName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\BAD CHAR"),shortName3);
  1005 	test(r==KErrNone);
  1005 	test_KErrNone(r);
  1006 	r=TheFs.GetShortName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\GOODCHAR.TXT"),shortName4);
  1006 	r=TheFs.GetShortName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\GOODCHAR.TXT"),shortName4);
  1007 	test(r==KErrNone);
  1007 	test_KErrNone(r);
  1008 	r=TheFs.GetShortName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY"),shortName5);
  1008 	r=TheFs.GetShortName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY"),shortName5);
  1009 	test(r==KErrNone);
  1009 	test_KErrNone(r);
  1010 
  1010 
  1011 	if(Is_Win32(TheFs, gDriveNum))
  1011 	if(Is_Win32(TheFs, gDriveNum))
  1012 		{
  1012 		{
  1013 		test(shortName1==_L("LONGFI~1.LON"));
  1013 		test(shortName1==_L("LONGFI~1.LON"));
  1014 		test(shortName2==_L("LONGFI~1.LON"));
  1014 		test(shortName2==_L("LONGFI~1.LON"));
  1033 	TFileName longName5;
  1033 	TFileName longName5;
  1034 
  1034 
  1035 	if (Is_Win32(TheFs, gDriveNum))
  1035 	if (Is_Win32(TheFs, gDriveNum))
  1036 		{
  1036 		{
  1037 		r=TheFs.GetLongName(_L("LONGFI~1.LON"),longName1);
  1037 		r=TheFs.GetLongName(_L("LONGFI~1.LON"),longName1);
  1038 		test(r==KErrNone);
  1038 		test_KErrNone(r);
  1039 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\LONGFI~1.LON"),longName2);
  1039 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\LONGFI~1.LON"),longName2);
  1040 		test(r==KErrNone);
  1040 		test_KErrNone(r);
  1041 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\BADCHA~1"),longName3);
  1041 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\BADCHA~1"),longName3);
  1042 		test(r==KErrNone);
  1042 		test_KErrNone(r);
  1043 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\GOODCHAR.TXT"),longName4);
  1043 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\GOODCHAR.TXT"),longName4);
  1044 		test(r==KErrNone);
  1044 		test_KErrNone(r);
  1045 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE~1"),longName5);
  1045 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE~1"),longName5);
  1046 		test(r==KErrNone);
  1046 		test_KErrNone(r);
  1047 		}
  1047 		}
  1048 	else if (!IsTestingLFFS())
  1048 	else if (!IsTestingLFFS())
  1049 		{
  1049 		{
  1050 		r=TheFs.GetLongName(_L("LONGFI~1.LON"),longName1);
  1050 		r=TheFs.GetLongName(_L("LONGFI~1.LON"),longName1);
  1051 		test(r==KErrNone);
  1051 		test_KErrNone(r);
  1052 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\LONGFI~1.LON"),longName2);
  1052 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\LONGFI~1.LON"),longName2);
  1053 		test(r==KErrNone);
  1053 		test_KErrNone(r);
  1054 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\BAD_CHAR"),longName3);
  1054 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\BAD_CHAR"),longName3);
  1055 		test(r==KErrNone);
  1055 		test_KErrNone(r);
  1056 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\GOODCHAR.TXT"),longName4);
  1056 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\GOODCHAR.TXT"),longName4);
  1057 		test(r==KErrNone);
  1057 		test_KErrNone(r);
  1058 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE~1"),longName5);
  1058 		r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE~1"),longName5);
  1059 		test(r==KErrNone);
  1059 		test_KErrNone(r);
  1060 		}
  1060 		}
  1061     else
  1061     else
  1062     	{
  1062     	{
  1063 		// LFFS longname tests
  1063 		// LFFS longname tests
  1064         r=TheFs.GetLongName(shortName1,longName1);
  1064         r=TheFs.GetLongName(shortName1,longName1);
  1065         test(r==KErrNone);
  1065         test_KErrNone(r);
  1066         r=TheFs.SetSessionPath(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\"));
  1066         r=TheFs.SetSessionPath(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\"));
  1067         test(r==KErrNone);
  1067         test_KErrNone(r);
  1068         r=TheFs.GetLongName(shortName2,longName2);
  1068         r=TheFs.GetLongName(shortName2,longName2);
  1069         test(r==KErrNone);
  1069         test_KErrNone(r);
  1070         r=TheFs.GetLongName(shortName3,longName3);
  1070         r=TheFs.GetLongName(shortName3,longName3);
  1071         test(r==KErrNone);
  1071         test_KErrNone(r);
  1072         r=TheFs.GetLongName(shortName4,longName4);
  1072         r=TheFs.GetLongName(shortName4,longName4);
  1073         test(r==KErrNone);
  1073         test_KErrNone(r);
  1074         r=TheFs.SetSessionPath(_L("\\F32-TST\\TFILE\\TOPLEVEL\\"));
  1074         r=TheFs.SetSessionPath(_L("\\F32-TST\\TFILE\\TOPLEVEL\\"));
  1075         test(r==KErrNone);
  1075         test_KErrNone(r);
  1076         r=TheFs.GetLongName(shortName5,longName5);
  1076         r=TheFs.GetLongName(shortName5,longName5);
  1077         test(r==KErrNone);
  1077         test_KErrNone(r);
  1078         r=TheFs.SetSessionPath(sessionPath);
  1078         r=TheFs.SetSessionPath(sessionPath);
  1079         test(r==KErrNone);
  1079         test_KErrNone(r);
  1080     	}
  1080     	}
  1081 
  1081 
  1082 	test(longName1==_L("LONGFILENAME.LONGEXT"));
  1082 	test(longName1==_L("LONGFILENAME.LONGEXT"));
  1083 	test(longName2==_L("LONGFILENAME.LONGEXT"));
  1083 	test(longName2==_L("LONGFILENAME.LONGEXT"));
  1084 	test(longName3==_L("BAD CHAR"));
  1084 	test(longName3==_L("BAD CHAR"));
  1085 	test(longName4.FindF(_L("GOODCHAR.TXT"))>=0);
  1085 	test(longName4.FindF(_L("GOODCHAR.TXT"))>=0);
  1086 	test(longName5==_L("MIDDLE-DIRECTORY"));
  1086 	test(longName5==_L("MIDDLE-DIRECTORY"));
  1087 
  1087 
  1088 	r=TheFs.GetShortName(_L("XXX.YYY"),shortName1);
  1088 	r=TheFs.GetShortName(_L("XXX.YYY"),shortName1);
  1089 	test(r==KErrNotFound);
  1089 	test_Value(r, r == KErrNotFound);
  1090 	r=TheFs.GetShortName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-YROTCERID\\LASTDIR\\BAD-CHAR"),shortName1);
  1090 	r=TheFs.GetShortName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-YROTCERID\\LASTDIR\\BAD-CHAR"),shortName1);
  1091 	test(r==KErrPathNotFound);
  1091 	test_Value(r, r == KErrPathNotFound);
  1092 	r=TheFs.GetLongName(_L("XXX.YYY"),longName1);
  1092 	r=TheFs.GetLongName(_L("XXX.YYY"),longName1);
  1093 	test(r==KErrNotFound);
  1093 	test_Value(r, r == KErrNotFound);
  1094 	r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-YROTCERID\\LASTDIR\\BAD-CHAR"),longName1);
  1094 	r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-YROTCERID\\LASTDIR\\BAD-CHAR"),longName1);
  1095 	test(r==KErrPathNotFound);
  1095 	test_Value(r, r == KErrPathNotFound);
  1096 
  1096 
  1097 	r=TheFs.Delete(_L("LONGFILENAME.LONGEXT"));
  1097 	r=TheFs.Delete(_L("LONGFILENAME.LONGEXT"));
  1098 	test(r==KErrNone);
  1098 	test_KErrNone(r);
  1099 
  1099 
  1100 	TEntry romEntry;
  1100 	TEntry romEntry;
  1101 	r=TheFs.Entry(_L("Z:\\System"),romEntry);
  1101 	r=TheFs.Entry(_L("Z:\\System"),romEntry);
  1102 	if (r==KErrNotReady)
  1102 	if (r==KErrNotReady)
  1103 		{
  1103 		{
  1104 		test.Printf(_L("ERROR: No rom filesystem present"));
  1104 		test.Printf(_L("ERROR: No rom filesystem present"));
  1105 		//test.Getch();
  1105 		//test.Getch();
  1106 		//return;
  1106 		//return;
  1107 		}
  1107 		}
  1108 	test(r==KErrNone);
  1108 	test_KErrNone(r);
  1109 	TBuf<64> romFileName=_L("Z:\\");
  1109 	TBuf<64> romFileName=_L("Z:\\");
  1110 	romFileName.Append(romEntry.iName);
  1110 	romFileName.Append(romEntry.iName);
  1111 	r=TheFs.GetShortName(romFileName,shortName1);
  1111 	r=TheFs.GetShortName(romFileName,shortName1);
  1112 	test(r==KErrNotSupported);
  1112 	test_Value(r, r == KErrNotSupported);
  1113 	r=TheFs.GetLongName(_L("Z:\\system"),longName1);
  1113 	r=TheFs.GetLongName(_L("Z:\\system"),longName1);
  1114 	test(r==KErrNotSupported);
  1114 	test_Value(r, r == KErrNotSupported);
  1115 	}
  1115 	}
  1116 
  1116 
  1117 static void RmDir(const TDesC& aDirName)
  1117 static void RmDir(const TDesC& aDirName)
  1118 //
  1118 //
  1119 // Remove a directory
  1119 // Remove a directory
  1120 //
  1120 //
  1121 	{
  1121 	{
  1122 	CFileMan* fMan=CFileMan::NewL(TheFs);
  1122 	CFileMan* fMan=CFileMan::NewL(TheFs);
  1123 	test(fMan!=NULL);
  1123 	test(fMan!=NULL);
  1124 	TInt r=TheFs.SessionPath(gSessionPath);
  1124 	TInt r=TheFs.SessionPath(gSessionPath);
  1125 	test(r==KErrNone);
  1125 	test_KErrNone(r);
  1126 	r=TheFs.CheckDisk(gSessionPath);
  1126 	r=TheFs.CheckDisk(gSessionPath);
  1127 	if (r!=KErrNone && r!=KErrNotSupported)
  1127 	if (r!=KErrNone && r!=KErrNotSupported)
  1128 		ReportCheckDiskFailure(r);
  1128 		ReportCheckDiskFailure(r);
  1129 
  1129 
  1130 	TFileName removeDirName = gSessionPath;
  1130 	TFileName removeDirName = gSessionPath;
  1131 	removeDirName.Append(aDirName);
  1131 	removeDirName.Append(aDirName);
  1132 
  1132 
  1133 	fMan->Attribs(removeDirName, 0, KEntryAttReadOnly, 0, CFileMan::ERecurse);
  1133 	fMan->Attribs(removeDirName, 0, KEntryAttReadOnly, 0, CFileMan::ERecurse);
  1134 	r=fMan->RmDir(removeDirName);
  1134 	r=fMan->RmDir(removeDirName);
  1135 	test(r==KErrNone || r==KErrNotFound || r==KErrPathNotFound);
  1135 	test_Value(r, r == KErrNone || r==KErrNotFound || r==KErrPathNotFound);
  1136 
  1136 
  1137 	delete fMan;
  1137 	delete fMan;
  1138 	}
  1138 	}
  1139 //---------------------------------------------
  1139 //---------------------------------------------
  1140 //! @SYMTestCaseID			PBASE-T_TFILE-0659
  1140 //! @SYMTestCaseID			PBASE-T_TFILE-0659
  1171 	MakeFile(KOrigFileName,_L8("FILE PATH : \\F32-TST\\TFILE\\INC112803\\Private2\\101f875a\\"));
  1171 	MakeFile(KOrigFileName,_L8("FILE PATH : \\F32-TST\\TFILE\\INC112803\\Private2\\101f875a\\"));
  1172 
  1172 
  1173 	// Check the generated shortname of the original file
  1173 	// Check the generated shortname of the original file
  1174 	TBuf<12> shortName;
  1174 	TBuf<12> shortName;
  1175 	err = TheFs.GetShortName(KOrigFileName, shortName);
  1175 	err = TheFs.GetShortName(KOrigFileName, shortName);
  1176 	test(err==KErrNone);
  1176 	test_KErrNone(err);
  1177 
  1177 
  1178 	// Validate the generated shorname against the original filename.
  1178 	// Validate the generated shorname against the original filename.
  1179 	if (Is_Win32(TheFs, gDriveNum))
  1179 	if (Is_Win32(TheFs, gDriveNum))
  1180 		{
  1180 		{
  1181 		test(shortName==_L("2222~1.JAR"));
  1181 		test(shortName==_L("2222~1.JAR"));
  1189 	// Validate that the file "2222~1.JAR" can not be created as this is the shortname for "2222.JARX".
  1189 	// Validate that the file "2222~1.JAR" can not be created as this is the shortname for "2222.JARX".
  1190 	MakeFile(KOrigFileShortName,_L8("FILE PATH : \\F32-TST\\TFILE\\INC112803\\Private2\\101f875a\\"));
  1190 	MakeFile(KOrigFileShortName,_L8("FILE PATH : \\F32-TST\\TFILE\\INC112803\\Private2\\101f875a\\"));
  1191 	CheckFileExists(KOrigFileShortName, KErrNone, EFalse);
  1191 	CheckFileExists(KOrigFileShortName, KErrNone, EFalse);
  1192 
  1192 
  1193 	err = TheFs.Rename(KOrigFileName,KDestinationFileName);
  1193 	err = TheFs.Rename(KOrigFileName,KDestinationFileName);
  1194 	test(err==KErrNone);
  1194 	test_KErrNone(err);
  1195 
  1195 
  1196 	// Clean up before leaving
  1196 	// Clean up before leaving
  1197 	RmDir(_L("INC112803\\"));
  1197 	RmDir(_L("INC112803\\"));
  1198 	}
  1198 	}
  1199 
  1199 
  1204 	{
  1204 	{
  1205 
  1205 
  1206 	test.Next(_L("Test IsFileOpen"));
  1206 	test.Next(_L("Test IsFileOpen"));
  1207 	TBool answer;
  1207 	TBool answer;
  1208 	TInt r=TheFs.IsFileOpen(_L("OPEN.FILE"),answer);
  1208 	TInt r=TheFs.IsFileOpen(_L("OPEN.FILE"),answer);
  1209 	test(r==KErrNotFound || (r==KErrNone && answer==EFalse));
  1209 	test_Value(r, r == KErrNotFound || (r==KErrNone && answer==EFalse));
  1210 	RFile f;
  1210 	RFile f;
  1211 	r=f.Replace(TheFs,_L("OPEN.FILE"),EFileWrite);
  1211 	r=f.Replace(TheFs,_L("OPEN.FILE"),EFileWrite);
  1212 	test(r==KErrNone);
  1212 	test_KErrNone(r);
  1213 	r=TheFs.IsFileOpen(_L("OPEN.FILE"),answer);
  1213 	r=TheFs.IsFileOpen(_L("OPEN.FILE"),answer);
  1214 	test(r==KErrNone);
  1214 	test_KErrNone(r);
  1215 	test(answer!=EFalse);
  1215 	test(answer!=EFalse);
  1216 	f.Close();
  1216 	f.Close();
  1217 	r=TheFs.IsFileOpen(_L("OPEN.FILE"),answer);
  1217 	r=TheFs.IsFileOpen(_L("OPEN.FILE"),answer);
  1218 	test(r==KErrNone);
  1218 	test_KErrNone(r);
  1219 	test(answer==EFalse);
  1219 	test(answer==EFalse);
  1220 	r=TheFs.Delete(_L("OPEN.FILE"));
  1220 	r=TheFs.Delete(_L("OPEN.FILE"));
  1221 	test(r==KErrNone);
  1221 	test_KErrNone(r);
  1222 
  1222 
  1223 	RFile f2;
  1223 	RFile f2;
  1224 	r=f2.Replace(TheFs,_L("AnotherOpen.File"),EFileWrite);
  1224 	r=f2.Replace(TheFs,_L("AnotherOpen.File"),EFileWrite);
  1225 	test(r==KErrNone);
  1225 	test_KErrNone(r);
  1226 	r=TheFs.IsFileOpen(_L("AnotherOpen.File"),answer);
  1226 	r=TheFs.IsFileOpen(_L("AnotherOpen.File"),answer);
  1227 	test(r==KErrNone);
  1227 	test_KErrNone(r);
  1228 	test(answer!=EFalse);
  1228 	test(answer!=EFalse);
  1229 	r=f.Replace(TheFs,_L("OPEN.FILE"),EFileWrite);
  1229 	r=f.Replace(TheFs,_L("OPEN.FILE"),EFileWrite);
  1230 	test(r==KErrNone);
  1230 	test_KErrNone(r);
  1231 	r=TheFs.IsFileOpen(_L("OPEN.FILE"),answer);
  1231 	r=TheFs.IsFileOpen(_L("OPEN.FILE"),answer);
  1232 	test(r==KErrNone);
  1232 	test_KErrNone(r);
  1233 	test(answer!=EFalse);
  1233 	test(answer!=EFalse);
  1234 	f2.Close();
  1234 	f2.Close();
  1235 	r=TheFs.IsFileOpen(_L("OPEN.FILE"),answer);
  1235 	r=TheFs.IsFileOpen(_L("OPEN.FILE"),answer);
  1236 	test(r==KErrNone);
  1236 	test_KErrNone(r);
  1237 	test(answer!=EFalse);
  1237 	test(answer!=EFalse);
  1238 	f.Close();
  1238 	f.Close();
  1239 	r=TheFs.IsFileOpen(_L("OPEN.FILE"),answer);
  1239 	r=TheFs.IsFileOpen(_L("OPEN.FILE"),answer);
  1240 	test(r==KErrNone);
  1240 	test_KErrNone(r);
  1241 	test(answer==EFalse);
  1241 	test(answer==EFalse);
  1242 	r=TheFs.Delete(_L("AnotherOpen.File"));
  1242 	r=TheFs.Delete(_L("AnotherOpen.File"));
  1243 	test(r==KErrNone);
  1243 	test_KErrNone(r);
  1244 	r=TheFs.Delete(_L("OPEN.FILE"));
  1244 	r=TheFs.Delete(_L("OPEN.FILE"));
  1245 	test(r==KErrNone);
  1245 	test_KErrNone(r);
  1246 	}
  1246 	}
  1247 
  1247 
  1248 static void testDeleteOpenFiles()
  1248 static void testDeleteOpenFiles()
  1249 //
  1249 //
  1250 // Test opened files cannot be deleted
  1250 // Test opened files cannot be deleted
  1253 
  1253 
  1254 	test.Next(_L("Test opened files cannot be deleted"));
  1254 	test.Next(_L("Test opened files cannot be deleted"));
  1255 	RFile f;
  1255 	RFile f;
  1256 	f.Close();
  1256 	f.Close();
  1257 	TInt r=f.Replace(TheFs,_L("Open.File"),EFileWrite);
  1257 	TInt r=f.Replace(TheFs,_L("Open.File"),EFileWrite);
  1258 	test(r==KErrNone);
  1258 	test_KErrNone(r);
  1259 	r=TheFs.Delete(_L("OPEN.FILE"));
  1259 	r=TheFs.Delete(_L("OPEN.FILE"));
  1260 	test(r==KErrInUse);
  1260 	test_Value(r, r == KErrInUse);
  1261 	f.Close();
  1261 	f.Close();
  1262 	f.Close();
  1262 	f.Close();
  1263 	f.Close();
  1263 	f.Close();
  1264 	r=TheFs.Delete(_L("Open.FILe"));
  1264 	r=TheFs.Delete(_L("Open.FILe"));
  1265 	test(r==KErrNone);
  1265 	test_KErrNone(r);
  1266 
  1266 
  1267 	TFileName fileName;
  1267 	TFileName fileName;
  1268 	r=f.Temp(TheFs,_L(""),fileName,EFileWrite);
  1268 	r=f.Temp(TheFs,_L(""),fileName,EFileWrite);
  1269 	test(r==KErrNone);
  1269 	test_KErrNone(r);
  1270 	r=TheFs.Delete(fileName);
  1270 	r=TheFs.Delete(fileName);
  1271 	test(r==KErrInUse);
  1271 	test_Value(r, r == KErrInUse);
  1272 	f.Close();
  1272 	f.Close();
  1273 	r=TheFs.Delete(fileName);
  1273 	r=TheFs.Delete(fileName);
  1274 	test(r==KErrNone);
  1274 	test_KErrNone(r);
  1275 
  1275 
  1276 	MakeFile(_L("\\Documents\\TEstfile.txt"));
  1276 	MakeFile(_L("\\Documents\\TEstfile.txt"));
  1277 	r=f.Open(TheFs,_L("\\Documents\\TEstfile.txt"),EFileWrite);
  1277 	r=f.Open(TheFs,_L("\\Documents\\TEstfile.txt"),EFileWrite);
  1278 	test(r==KErrNone);
  1278 	test_KErrNone(r);
  1279 	r=TheFs.Delete(_L("\\Documents\\TEstfile.txt"));
  1279 	r=TheFs.Delete(_L("\\Documents\\TEstfile.txt"));
  1280 	test(r==KErrInUse);
  1280 	test_Value(r, r == KErrInUse);
  1281 	r=TheFs.Delete(_L("\\documents\\TEstfile.txt"));
  1281 	r=TheFs.Delete(_L("\\documents\\TEstfile.txt"));
  1282 	test(r==KErrInUse);
  1282 	test_Value(r, r == KErrInUse);
  1283 	r=TheFs.Delete(_L("\\Documents.\\TEstfile.txt"));
  1283 	r=TheFs.Delete(_L("\\Documents.\\TEstfile.txt"));
  1284 	test(r==KErrBadName);
  1284 	test_Value(r, r == KErrBadName);
  1285 	r=TheFs.Delete(_L("\\documents.\\TEstfile.txt"));
  1285 	r=TheFs.Delete(_L("\\documents.\\TEstfile.txt"));
  1286 	test(r==KErrBadName);
  1286 	test_Value(r, r == KErrBadName);
  1287 	r=TheFs.Delete(_L("\\Documents\\Testfile.txt"));
  1287 	r=TheFs.Delete(_L("\\Documents\\Testfile.txt"));
  1288 	test(r==KErrInUse);
  1288 	test_Value(r, r == KErrInUse);
  1289 	r=TheFs.Delete(_L("\\documents\\testfile.txt"));
  1289 	r=TheFs.Delete(_L("\\documents\\testfile.txt"));
  1290 	test(r==KErrInUse);
  1290 	test_Value(r, r == KErrInUse);
  1291 	r=TheFs.Delete(_L("\\Documents.\\TEstfile.TXT"));
  1291 	r=TheFs.Delete(_L("\\Documents.\\TEstfile.TXT"));
  1292 	test(r==KErrBadName);
  1292 	test_Value(r, r == KErrBadName);
  1293 	r=TheFs.Delete(_L("\\docUMENTS.\\TESTFILE.TXT"));
  1293 	r=TheFs.Delete(_L("\\docUMENTS.\\TESTFILE.TXT"));
  1294 	test(r==KErrBadName);
  1294 	test_Value(r, r == KErrBadName);
  1295 	f.Close();
  1295 	f.Close();
  1296 	r=TheFs.Delete(_L("\\Documents\\TEstfile.TXT"));
  1296 	r=TheFs.Delete(_L("\\Documents\\TEstfile.TXT"));
  1297 	test(r==KErrNone);
  1297 	test_KErrNone(r);
  1298 
  1298 
  1299 	MakeFile(_L("\\Documents\\Documents\\TEstfile.txt"));
  1299 	MakeFile(_L("\\Documents\\Documents\\TEstfile.txt"));
  1300 	r=f.Open(TheFs,_L("\\Documents\\Documents\\TEstfile.txt"),EFileWrite);
  1300 	r=f.Open(TheFs,_L("\\Documents\\Documents\\TEstfile.txt"),EFileWrite);
  1301 	test(r==KErrNone);
  1301 	test_KErrNone(r);
  1302 	r=TheFs.Delete(_L("\\Documents\\documents.\\TEstfile.txt"));
  1302 	r=TheFs.Delete(_L("\\Documents\\documents.\\TEstfile.txt"));
  1303 	test(r==KErrBadName);
  1303 	test_Value(r, r == KErrBadName);
  1304 	r=TheFs.Delete(_L("\\documents\\Documents.\\TEstfile.txt"));
  1304 	r=TheFs.Delete(_L("\\documents\\Documents.\\TEstfile.txt"));
  1305 	test(r==KErrBadName);
  1305 	test_Value(r, r == KErrBadName);
  1306 	r=TheFs.Delete(_L("\\Documents.\\documents\\TEstfile.txt"));
  1306 	r=TheFs.Delete(_L("\\Documents.\\documents\\TEstfile.txt"));
  1307 	test(r==KErrBadName);
  1307 	test_Value(r, r == KErrBadName);
  1308 	r=TheFs.Delete(_L("\\documents.\\Documents\\TEstfile.txt"));
  1308 	r=TheFs.Delete(_L("\\documents.\\Documents\\TEstfile.txt"));
  1309 	test(r==KErrBadName);
  1309 	test_Value(r, r == KErrBadName);
  1310 	r=TheFs.Delete(_L("\\Documents\\Documents\\Testfile.txt"));
  1310 	r=TheFs.Delete(_L("\\Documents\\Documents\\Testfile.txt"));
  1311 	test(r==KErrInUse);
  1311 	test_Value(r, r == KErrInUse);
  1312 	r=TheFs.Delete(_L("\\documents\\documents\\testfile.txt"));
  1312 	r=TheFs.Delete(_L("\\documents\\documents\\testfile.txt"));
  1313 	test(r==KErrInUse);
  1313 	test_Value(r, r == KErrInUse);
  1314 	r=TheFs.Delete(_L("\\Documents.\\Documents.\\TEstfile.TXT"));
  1314 	r=TheFs.Delete(_L("\\Documents.\\Documents.\\TEstfile.TXT"));
  1315 	test(r==KErrBadName);
  1315 	test_Value(r, r == KErrBadName);
  1316 	r=TheFs.Delete(_L("\\docUMENTS.\\docUMENTS.\\TESTFILE.TXT"));
  1316 	r=TheFs.Delete(_L("\\docUMENTS.\\docUMENTS.\\TESTFILE.TXT"));
  1317 	test(r==KErrBadName);
  1317 	test_Value(r, r == KErrBadName);
  1318 
  1318 
  1319 
  1319 
  1320 	r=TheFs.RmDir(_L("\\Documents\\"));
  1320 	r=TheFs.RmDir(_L("\\Documents\\"));
  1321 	test(r==KErrInUse);
  1321 	test_Value(r, r == KErrInUse);
  1322 	r=TheFs.RmDir(_L("\\documents\\"));
  1322 	r=TheFs.RmDir(_L("\\documents\\"));
  1323 	test(r==KErrInUse);
  1323 	test_Value(r, r == KErrInUse);
  1324 	r=TheFs.RmDir(_L("\\Documents.\\"));
  1324 	r=TheFs.RmDir(_L("\\Documents.\\"));
  1325 	test(r==KErrBadName);
  1325 	test_Value(r, r == KErrBadName);
  1326 	r=TheFs.RmDir(_L("\\documents.\\"));
  1326 	r=TheFs.RmDir(_L("\\documents.\\"));
  1327 	test(r==KErrBadName);
  1327 	test_Value(r, r == KErrBadName);
  1328 	r=TheFs.RmDir(_L("\\Documents\\documents\\"));
  1328 	r=TheFs.RmDir(_L("\\Documents\\documents\\"));
  1329 	test(r==KErrInUse);
  1329 	test_Value(r, r == KErrInUse);
  1330 	r=TheFs.RmDir(_L("\\documents\\documents.\\"));
  1330 	r=TheFs.RmDir(_L("\\documents\\documents.\\"));
  1331 	test(r==KErrBadName);
  1331 	test_Value(r, r == KErrBadName);
  1332 	r=TheFs.RmDir(_L("\\Documents.\\Documents\\"));
  1332 	r=TheFs.RmDir(_L("\\Documents.\\Documents\\"));
  1333 	test(r==KErrBadName);
  1333 	test_Value(r, r == KErrBadName);
  1334 	r=TheFs.RmDir(_L("\\documents.\\Documents.\\"));
  1334 	r=TheFs.RmDir(_L("\\documents.\\Documents.\\"));
  1335 	test(r==KErrBadName);
  1335 	test_Value(r, r == KErrBadName);
  1336 	r=TheFs.RmDir(_L("\\Documents\\TestFile.TXT"));
  1336 	r=TheFs.RmDir(_L("\\Documents\\TestFile.TXT"));
  1337 	test(r==KErrInUse);
  1337 	test_Value(r, r == KErrInUse);
  1338 	r=TheFs.RmDir(_L("\\documents\\TestFile"));
  1338 	r=TheFs.RmDir(_L("\\documents\\TestFile"));
  1339 	test(r==KErrInUse);
  1339 	test_Value(r, r == KErrInUse);
  1340 	r=TheFs.RmDir(_L("\\Documents.\\Testfile."));
  1340 	r=TheFs.RmDir(_L("\\Documents.\\Testfile."));
  1341 	test(r==KErrBadName);
  1341 	test_Value(r, r == KErrBadName);
  1342 	r=TheFs.RmDir(_L("\\documents.\\t"));
  1342 	r=TheFs.RmDir(_L("\\documents.\\t"));
  1343 	test(r==KErrBadName);
  1343 	test_Value(r, r == KErrBadName);
  1344 	f.Close();
  1344 	f.Close();
  1345 	r=TheFs.Delete(_L("\\Documents\\documents\\TEstfile.TXT"));
  1345 	r=TheFs.Delete(_L("\\Documents\\documents\\TEstfile.TXT"));
  1346 	test(r==KErrNone);
  1346 	test_KErrNone(r);
  1347 	r=TheFs.RmDir(_L("\\Documents\\documents.\\"));
  1347 	r=TheFs.RmDir(_L("\\Documents\\documents.\\"));
  1348 	test(r==KErrBadName);
  1348 	test_Value(r, r == KErrBadName);
  1349 	r=TheFs.RmDir(_L("\\Documents.\\"));
  1349 	r=TheFs.RmDir(_L("\\Documents.\\"));
  1350 	test(r==KErrBadName);
  1350 	test_Value(r, r == KErrBadName);
  1351 	}
  1351 	}
  1352 
  1352 
  1353 static void testFileSeek()
  1353 static void testFileSeek()
  1354 //
  1354 //
  1355 // Test seeking
  1355 // Test seeking
  1356 //
  1356 //
  1357 	{
  1357 	{
  1358 	test.Next(_L("Test file seek"));
  1358 	test.Next(_L("Test file seek"));
  1359 	RFile f;
  1359 	RFile f;
  1360 	TInt r=f.Open(TheFs,_L("T_File.cpp"),EFileWrite);
  1360 	TInt r=f.Open(TheFs,_L("T_File.cpp"),EFileWrite);
  1361 	test(r==KErrNone);
  1361 	test_KErrNone(r);
  1362 
  1362 
  1363 	TBuf8<20> text1;TInt pos1=0;
  1363 	TBuf8<20> text1;TInt pos1=0;
  1364 	TBuf8<20> text2;TInt pos2=510;
  1364 	TBuf8<20> text2;TInt pos2=510;
  1365 	TBuf8<20> text3;TInt pos3=900;
  1365 	TBuf8<20> text3;TInt pos3=900;
  1366 	TBuf8<20> text4;TInt pos4=2010;
  1366 	TBuf8<20> text4;TInt pos4=2010;
  1367 	TBuf8<20> text5;TInt pos5=4999;
  1367 	TBuf8<20> text5;TInt pos5=4999;
  1368 
  1368 
  1369 	r=f.Read(pos1,text1);
  1369 	r=f.Read(pos1,text1);
  1370 	test(r==KErrNone);
  1370 	test_KErrNone(r);
  1371 	r=f.Read(pos2,text2);
  1371 	r=f.Read(pos2,text2);
  1372 	test(r==KErrNone);
  1372 	test_KErrNone(r);
  1373 	r=f.Read(pos3,text3);
  1373 	r=f.Read(pos3,text3);
  1374 	test(r==KErrNone);
  1374 	test_KErrNone(r);
  1375 	r=f.Read(pos4,text4);
  1375 	r=f.Read(pos4,text4);
  1376 	test(r==KErrNone);
  1376 	test_KErrNone(r);
  1377 	r=f.Read(pos5,text5);
  1377 	r=f.Read(pos5,text5);
  1378 	test(r==KErrNone);
  1378 	test_KErrNone(r);
  1379 
  1379 
  1380 	TBuf8<20> testBuf;
  1380 	TBuf8<20> testBuf;
  1381 
  1381 
  1382 	r=f.Read(pos3,testBuf);
  1382 	r=f.Read(pos3,testBuf);
  1383 	test(r==KErrNone);
  1383 	test_KErrNone(r);
  1384 	test(testBuf==text3);
  1384 	test(testBuf==text3);
  1385 
  1385 
  1386 	r=f.Read(pos1,testBuf);
  1386 	r=f.Read(pos1,testBuf);
  1387 	test(r==KErrNone);
  1387 	test_KErrNone(r);
  1388 	test(testBuf==text1);
  1388 	test(testBuf==text1);
  1389 
  1389 
  1390 	r=f.Read(pos4,testBuf);
  1390 	r=f.Read(pos4,testBuf);
  1391 	test(r==KErrNone);
  1391 	test_KErrNone(r);
  1392 	test(testBuf==text4);
  1392 	test(testBuf==text4);
  1393 
  1393 
  1394 	r=f.Read(pos2,testBuf);
  1394 	r=f.Read(pos2,testBuf);
  1395 	test(r==KErrNone);
  1395 	test_KErrNone(r);
  1396 	test(testBuf==text2);
  1396 	test(testBuf==text2);
  1397 
  1397 
  1398 	r=f.Read(pos5,testBuf);
  1398 	r=f.Read(pos5,testBuf);
  1399 	test(r==KErrNone);
  1399 	test_KErrNone(r);
  1400 	test(testBuf==text5);
  1400 	test(testBuf==text5);
  1401 
  1401 
  1402 	r=f.Read(pos2,testBuf);
  1402 	r=f.Read(pos2,testBuf);
  1403 	test(r==KErrNone);
  1403 	test_KErrNone(r);
  1404 	test(testBuf==text2);
  1404 	test(testBuf==text2);
  1405 	r=f.SetSize(1023);
  1405 	r=f.SetSize(1023);
  1406 	test(r==KErrNone);
  1406 	test_KErrNone(r);
  1407 	r=f.Read(pos2,testBuf);
  1407 	r=f.Read(pos2,testBuf);
  1408 	test(r==KErrNone);
  1408 	test_KErrNone(r);
  1409 	test(testBuf==text2);
  1409 	test(testBuf==text2);
  1410 	r=f.SetSize(1024);
  1410 	r=f.SetSize(1024);
  1411 	test(r==KErrNone);
  1411 	test_KErrNone(r);
  1412 	r=f.Read(pos1,testBuf);
  1412 	r=f.Read(pos1,testBuf);
  1413 	test(r==KErrNone);
  1413 	test_KErrNone(r);
  1414 	test(testBuf==text1);
  1414 	test(testBuf==text1);
  1415 	r=f.Read(pos2,testBuf);
  1415 	r=f.Read(pos2,testBuf);
  1416 	test(r==KErrNone);
  1416 	test_KErrNone(r);
  1417 	test(testBuf==text2);
  1417 	test(testBuf==text2);
  1418 
  1418 
  1419 	r=f.Read(pos1,testBuf);
  1419 	r=f.Read(pos1,testBuf);
  1420 	test(r==KErrNone);
  1420 	test_KErrNone(r);
  1421 	test(testBuf==text1);
  1421 	test(testBuf==text1);
  1422 	r=f.SetSize(511);
  1422 	r=f.SetSize(511);
  1423 	test(r==KErrNone);
  1423 	test_KErrNone(r);
  1424 	r=f.Read(pos1,testBuf);
  1424 	r=f.Read(pos1,testBuf);
  1425 	test(r==KErrNone);
  1425 	test_KErrNone(r);
  1426 	test(testBuf==text1);
  1426 	test(testBuf==text1);
  1427 	r=f.SetSize(512);
  1427 	r=f.SetSize(512);
  1428 	test(r==KErrNone);
  1428 	test_KErrNone(r);
  1429 	r=f.Read(pos1,testBuf);
  1429 	r=f.Read(pos1,testBuf);
  1430 	test(r==KErrNone);
  1430 	test_KErrNone(r);
  1431 	test(testBuf==text1);
  1431 	test(testBuf==text1);
  1432 	f.Close();
  1432 	f.Close();
  1433 	}
  1433 	}
  1434 
  1434 
  1435 static void testMoreFileSeek()
  1435 static void testMoreFileSeek()
  1438 //
  1438 //
  1439 	{
  1439 	{
  1440 //	Create a zero length file
  1440 //	Create a zero length file
  1441 	RFile file;
  1441 	RFile file;
  1442 	TInt r=file.Replace(TheFs,_L("\\F32-TST\\TFILE\\seektest"),EFileRead|EFileWrite);
  1442 	TInt r=file.Replace(TheFs,_L("\\F32-TST\\TFILE\\seektest"),EFileRead|EFileWrite);
  1443 	test(r==KErrNone);
  1443 	test_KErrNone(r);
  1444 	r=file.SetSize(20);
  1444 	r=file.SetSize(20);
  1445 	test(r==KErrNone);
  1445 	test_KErrNone(r);
  1446 //	Seek beyond the length of the file
  1446 //	Seek beyond the length of the file
  1447 	TInt seekPos;
  1447 	TInt seekPos;
  1448 	seekPos = 80;								//	Pick a likely offset
  1448 	seekPos = 80;								//	Pick a likely offset
  1449     TInt err = file.Seek(ESeekEnd, seekPos);	//	and go there
  1449     TInt err = file.Seek(ESeekEnd, seekPos);	//	and go there
  1450     test(err==KErrNone);
  1450     test_KErrNone(err);
  1451 	test(seekPos==20);							//	Somewhat non-intuitive?
  1451 	test(seekPos==20);							//	Somewhat non-intuitive?
  1452 
  1452 
  1453 	r=file.Write(_L8("A Devil's Haircut"));
  1453 	r=file.Write(_L8("A Devil's Haircut"));
  1454 	test(r==KErrNone);
  1454 	test_KErrNone(r);
  1455 	TInt newFileSize;
  1455 	TInt newFileSize;
  1456 	r=file.Size(newFileSize);
  1456 	r=file.Size(newFileSize);
  1457 	test(r==KErrNone);
  1457 	test_KErrNone(r);
  1458 
  1458 
  1459 	seekPos = 0;
  1459 	seekPos = 0;
  1460     err = file.Seek(ESeekCurrent, seekPos);		//	Find out where we ended up?
  1460     err = file.Seek(ESeekCurrent, seekPos);		//	Find out where we ended up?
  1461 	test(err==KErrNone);
  1461 	test_KErrNone(err);
  1462 	test(seekPos==37);
  1462 	test(seekPos==37);
  1463 
  1463 
  1464 	file.SetSize(512);
  1464 	file.SetSize(512);
  1465 	seekPos=513;
  1465 	seekPos=513;
  1466 	err=file.Seek(ESeekStart, seekPos);
  1466 	err=file.Seek(ESeekStart, seekPos);
  1467 	test(err==KErrNone);
  1467 	test_KErrNone(err);
  1468 	test(seekPos==513);
  1468 	test(seekPos==513);
  1469 
  1469 
  1470 	err=file.Seek(ESeekEnd, seekPos);
  1470 	err=file.Seek(ESeekEnd, seekPos);
  1471 	test(err==KErrNone);
  1471 	test_KErrNone(err);
  1472 	test(seekPos==512);
  1472 	test(seekPos==512);
  1473 
  1473 
  1474 	seekPos=-530;
  1474 	seekPos=-530;
  1475 	err=file.Seek(ESeekEnd, seekPos);
  1475 	err=file.Seek(ESeekEnd, seekPos);
  1476 	test(err==KErrNone);
  1476 	test_KErrNone(err);
  1477 	test(seekPos==0);
  1477 	test(seekPos==0);
  1478 
  1478 
  1479 	seekPos=-10;
  1479 	seekPos=-10;
  1480 	err=file.Seek(ESeekEnd, seekPos);
  1480 	err=file.Seek(ESeekEnd, seekPos);
  1481 	test(err==KErrNone);
  1481 	test_KErrNone(err);
  1482 	test(seekPos==502);
  1482 	test(seekPos==502);
  1483 
  1483 
  1484 	seekPos=-10;
  1484 	seekPos=-10;
  1485 	err=file.Seek(ESeekStart,seekPos);
  1485 	err=file.Seek(ESeekStart,seekPos);
  1486 	test(err==KErrArgument);
  1486 	test_Value(err, err == KErrArgument);
  1487 	test(seekPos==-10);
  1487 	test(seekPos==-10);
  1488 
  1488 
  1489 	seekPos=0;
  1489 	seekPos=0;
  1490 	err=file.Seek(ESeekEnd,seekPos);
  1490 	err=file.Seek(ESeekEnd,seekPos);
  1491 	test(err==KErrNone);
  1491 	test_KErrNone(err);
  1492 	test(seekPos==512);
  1492 	test(seekPos==512);
  1493 
  1493 
  1494 	file.Close();
  1494 	file.Close();
  1495 	r=TheFs.Delete(_L("\\F32-TST\\TFILE\\seektest"));
  1495 	r=TheFs.Delete(_L("\\F32-TST\\TFILE\\seektest"));
  1496 	test(r==KErrNone);
  1496 	test_KErrNone(r);
  1497 	}
  1497 	}
  1498 
  1498 
  1499 static void testSetSize()
  1499 static void testSetSize()
  1500 //
  1500 //
  1501 // Test setsize
  1501 // Test setsize
  1504 
  1504 
  1505 	test.Next(_L("Test SetSize"));
  1505 	test.Next(_L("Test SetSize"));
  1506 	RFile f1;
  1506 	RFile f1;
  1507 	TInt i=0;
  1507 	TInt i=0;
  1508 	TInt r=f1.Replace(TheFs,_L("File.File"),EFileWrite);
  1508 	TInt r=f1.Replace(TheFs,_L("File.File"),EFileWrite);
  1509 	test(r==KErrNone);
  1509 	test_KErrNone(r);
  1510 	gBuf.SetLength(32);
  1510 	gBuf.SetLength(32);
  1511 	for(i=0;i<32;i++)
  1511 	for(i=0;i<32;i++)
  1512 		gBuf[i]=(TUint8)i;
  1512 		gBuf[i]=(TUint8)i;
  1513 	r=f1.Write(gBuf);
  1513 	r=f1.Write(gBuf);
  1514 	test(r==KErrNone);
  1514 	test_KErrNone(r);
  1515 	gBuf.SetLength(1334);
  1515 	gBuf.SetLength(1334);
  1516 	for(i=64;i<1334+64;i++)
  1516 	for(i=64;i<1334+64;i++)
  1517 		gBuf[i-64]=(TUint8)i;
  1517 		gBuf[i-64]=(TUint8)i;
  1518 	r=f1.Write(30,gBuf);
  1518 	r=f1.Write(30,gBuf);
  1519 	r=f1.Read(30,gBuf,1000);
  1519 	r=f1.Read(30,gBuf,1000);
  1520 	test(r==KErrNone);
  1520 	test_KErrNone(r);
  1521 	test(gBuf[0]==64);
  1521 	test(gBuf[0]==64);
  1522 	test(gBuf[1]==65);
  1522 	test(gBuf[1]==65);
  1523 	test(gBuf[2]==66);
  1523 	test(gBuf[2]==66);
  1524 	f1.Close();
  1524 	f1.Close();
  1525 
  1525 
  1526 	test.Next(_L("Open a large file"));
  1526 	test.Next(_L("Open a large file"));
  1527 	r=f1.Replace(TheFs,_L("File.File"),EFileWrite);
  1527 	r=f1.Replace(TheFs,_L("File.File"),EFileWrite);
  1528 	test(r==KErrNone);
  1528 	test_KErrNone(r);
  1529 	CheckDisk();
  1529 	CheckDisk();
  1530 	r=f1.SetSize(131072); // 128K
  1530 	r=f1.SetSize(131072); // 128K
  1531 	test(r==KErrNone);
  1531 	test_KErrNone(r);
  1532 	TBuf8<16> testData=_L8("testData");
  1532 	TBuf8<16> testData=_L8("testData");
  1533 	r=f1.Write(131060,testData);
  1533 	r=f1.Write(131060,testData);
  1534 	test(r==KErrNone);
  1534 	test_KErrNone(r);
  1535 	f1.Close();
  1535 	f1.Close();
  1536 	r=f1.Open(TheFs,_L("File.File"),EFileRead);
  1536 	r=f1.Open(TheFs,_L("File.File"),EFileRead);
  1537 	test(r==KErrNone);
  1537 	test_KErrNone(r);
  1538 	TInt size;
  1538 	TInt size;
  1539 	r=f1.Size(size);
  1539 	r=f1.Size(size);
  1540 	test(r==KErrNone);
  1540 	test_KErrNone(r);
  1541 	test(size==131072);
  1541 	test(size==131072);
  1542 	TBuf8<16> testData2;
  1542 	TBuf8<16> testData2;
  1543 	r=f1.Read(131060,testData2,8);
  1543 	r=f1.Read(131060,testData2,8);
  1544 	test(r==KErrNone);
  1544 	test_KErrNone(r);
  1545 	test(testData==testData2);
  1545 	test(testData==testData2);
  1546 	f1.Close();
  1546 	f1.Close();
  1547 	TheFs.Delete(_L("File.file"));
  1547 	TheFs.Delete(_L("File.file"));
  1548 	CheckDisk();
  1548 	CheckDisk();
  1549 	}
  1549 	}
  1550 
  1550 
  1551 static void testIsRomAddress()
  1551 static void testIsRomAddress()
  1552 	{
  1552 	{
  1553 	RFile f;
  1553 	RFile f;
  1554 	TInt r=f.Open(TheFs, PlatSec::ConfigSetting(PlatSec::EPlatSecEnforceSysBin)?_L("Z:\\Sys\\Bin\\eshell.exe"):_L("Z:\\System\\Bin\\eshell.exe"), EFileRead);
  1554 	TInt r=f.Open(TheFs, PlatSec::ConfigSetting(PlatSec::EPlatSecEnforceSysBin)?_L("Z:\\Sys\\Bin\\eshell.exe"):_L("Z:\\System\\Bin\\eshell.exe"), EFileRead);
  1555 	test(r==KErrNone);
  1555 	test_KErrNone(r);
  1556 	TInt anAddress=0;
  1556 	TInt anAddress=0;
  1557 	r=f.Seek(ESeekAddress, anAddress);
  1557 	r=f.Seek(ESeekAddress, anAddress);
  1558 	test(r==KErrNone);
  1558 	test_KErrNone(r);
  1559 #if !defined(__WINS__)
  1559 #if !defined(__WINS__)
  1560 	test(RFs::IsRomAddress((TAny *)anAddress)); // Always returns EFalse if WINS
  1560 	test(RFs::IsRomAddress((TAny *)anAddress)); // Always returns EFalse if WINS
  1561 #endif
  1561 #endif
  1562 	test(RFs::IsRomAddress(NULL)==FALSE);
  1562 	test(RFs::IsRomAddress(NULL)==FALSE);
  1563 	f.Close();
  1563 	f.Close();
  1574 
  1574 
  1575 	test.Next(_L("Miscellaneous tests"));
  1575 	test.Next(_L("Miscellaneous tests"));
  1576 	RFile f1;
  1576 	RFile f1;
  1577 	TInt temp;
  1577 	TInt temp;
  1578 	TInt r=f1.Replace(TheFs,_L("File.File"),EFileWrite);
  1578 	TInt r=f1.Replace(TheFs,_L("File.File"),EFileWrite);
  1579 	test(r==KErrNone);
  1579 	test_KErrNone(r);
  1580 	r=f1.Size(temp);
  1580 	r=f1.Size(temp);
  1581 	test(r==KErrNone);
  1581 	test_KErrNone(r);
  1582 	test(temp==0);
  1582 	test(temp==0);
  1583 	TUint data=0;
  1583 	TUint data=0;
  1584 	TPtrC8 buf((TText8*)&data,1);
  1584 	TPtrC8 buf((TText8*)&data,1);
  1585 	r=f1.Write(buf);
  1585 	r=f1.Write(buf);
  1586 //	r=f1.Write(_L("\0"));
  1586 //	r=f1.Write(_L("\0"));
  1587 	test(r==KErrNone);
  1587 	test_KErrNone(r);
  1588 	r=f1.Size(temp);
  1588 	r=f1.Size(temp);
  1589 	test(r==KErrNone);
  1589 	test_KErrNone(r);
  1590 	test(temp==1);
  1590 	test(temp==1);
  1591 	temp=0;
  1591 	temp=0;
  1592 	r=f1.Seek(ESeekStart,temp);
  1592 	r=f1.Seek(ESeekStart,temp);
  1593 	test(r==KErrNone);
  1593 	test_KErrNone(r);
  1594 	test(temp==0);
  1594 	test(temp==0);
  1595 	TBuf8<32> testBuf;
  1595 	TBuf8<32> testBuf;
  1596 	r=f1.Read(testBuf);
  1596 	r=f1.Read(testBuf);
  1597 	test(r==KErrNone);
  1597 	test_KErrNone(r);
  1598 	test(testBuf==buf);
  1598 	test(testBuf==buf);
  1599 	f1.Close();
  1599 	f1.Close();
  1600 
  1600 
  1601 	class RHackFile : public RFile
  1601 	class RHackFile : public RFile
  1602 	{
  1602 	{
  1605 			{ return RSubSessionBase::SendReceive(aFunction, aArgs); }
  1605 			{ return RSubSessionBase::SendReceive(aFunction, aArgs); }
  1606 	};
  1606 	};
  1607 
  1607 
  1608 	RHackFile f2;
  1608 	RHackFile f2;
  1609 	f2.Open(TheFs, _L("File.File"), EFileRead);
  1609 	f2.Open(TheFs, _L("File.File"), EFileRead);
  1610 	test(r == KErrNone);
  1610 	test_KErrNone(r);
  1611 	r = f2.SendReceive(/*47*/ EFsFileChangeMode, TIpcArgs(EFileRead | EFileWrite));	// <- must fail!
  1611 	r = f2.SendReceive(/*47*/ EFsFileChangeMode, TIpcArgs(EFileRead | EFileWrite));	// <- must fail!
  1612 	test(r == KErrArgument);
  1612 	test_Value(r, r == KErrArgument);
  1613 	r = f2.Write(_L8("Hacked!"));	// <- must fail!
  1613 	r = f2.Write(_L8("Hacked!"));	// <- must fail!
  1614 	test(r == KErrAccessDenied);
  1614 	test_Value(r, r == KErrAccessDenied);
  1615 	f2.Close();
  1615 	f2.Close();
  1616 
  1616 
  1617 	r=TheFs.Delete(_L("File.FIle"));
  1617 	r=TheFs.Delete(_L("File.FIle"));
  1618 	test(r==KErrNone);
  1618 	test_KErrNone(r);
  1619 	}
  1619 	}
  1620 
  1620 
  1621 static void testFileRename()
  1621 static void testFileRename()
  1622 //
  1622 //
  1623 // Test rename
  1623 // Test rename
  1633     TInt r;
  1633     TInt r;
  1634     RFile f1;
  1634     RFile f1;
  1635 
  1635 
  1636     //-- test renaming a file to a non-existing directory
  1636     //-- test renaming a file to a non-existing directory
  1637     r = TheFs.MkDir(_L("\\temp\\"));
  1637     r = TheFs.MkDir(_L("\\temp\\"));
  1638     test(r==KErrNone || r==KErrAlreadyExists);
  1638     test_Value(r, r == KErrNone || r==KErrAlreadyExists);
  1639 
  1639 
  1640     r = f1.Replace(TheFs, _L("\\temp\\file1"), 0);
  1640     r = f1.Replace(TheFs, _L("\\temp\\file1"), 0);
  1641     test(r==KErrNone);
  1641     test_KErrNone(r);
  1642 
  1642 
  1643     r = f1.Rename(_L("\\temp\\temp\\file1"));
  1643     r = f1.Rename(_L("\\temp\\temp\\file1"));
  1644     test(r == KErrPathNotFound);
  1644     test_Value(r, r == KErrPathNotFound);
  1645 
  1645 
  1646     f1.Close();
  1646     f1.Close();
  1647 
  1647 
  1648 
  1648 
  1649 	r=f1.Replace(TheFs,name2,EFileWrite);
  1649 	r=f1.Replace(TheFs,name2,EFileWrite);
  1650 	test(r==KErrNone);
  1650 	test_KErrNone(r);
  1651 	r=f1.Write(_L8("1234"));
  1651 	r=f1.Write(_L8("1234"));
  1652 	test(r==KErrNone);
  1652 	test_KErrNone(r);
  1653 	TInt len=CheckFileExists(name2,KErrNone);
  1653 	TInt len=CheckFileExists(name2,KErrNone);
  1654 	test(len==4);
  1654 	test(len==4);
  1655 	r=f1.Rename(name1);
  1655 	r=f1.Rename(name1);
  1656 	test(r==KErrNone);
  1656 	test_KErrNone(r);
  1657 
  1657 
  1658 	r=f1.Read(0,contents);
  1658 	r=f1.Read(0,contents);
  1659 	test(r==KErrNone);
  1659 	test_KErrNone(r);
  1660 	test(contents==_L8("1234"));
  1660 	test(contents==_L8("1234"));
  1661 	r=f1.Write(4,_L8("5678"));
  1661 	r=f1.Write(4,_L8("5678"));
  1662 	test(r==KErrNone);
  1662 	test_KErrNone(r);
  1663 
  1663 
  1664 	len=CheckFileExists(name1,KErrNone);
  1664 	len=CheckFileExists(name1,KErrNone);
  1665 	test(len==8);
  1665 	test(len==8);
  1666 	CheckFileExists(name2,KErrNotFound);
  1666 	CheckFileExists(name2,KErrNotFound);
  1667 	r=f1.Write(8,_L8("90"));
  1667 	r=f1.Write(8,_L8("90"));
  1668 	test(r==KErrNone);
  1668 	test_KErrNone(r);
  1669 	f1.Close();
  1669 	f1.Close();
  1670 	len=CheckFileExists(name1,KErrNone);
  1670 	len=CheckFileExists(name1,KErrNone);
  1671 	test(len==10);
  1671 	test(len==10);
  1672 
  1672 
  1673 	test.Next(_L("Test can change case using rename"));
  1673 	test.Next(_L("Test can change case using rename"));
  1674 	r=f1.Open(TheFs,name1,EFileRead|EFileWrite);
  1674 	r=f1.Open(TheFs,name1,EFileRead|EFileWrite);
  1675 	test(r==KErrNone);
  1675 	test_KErrNone(r);
  1676 	r=f1.Rename(name3);
  1676 	r=f1.Rename(name3);
  1677 	test(r==KErrNone);
  1677 	test_KErrNone(r);
  1678 	CheckFileExists(name1,KErrNone,EFalse);
  1678 	CheckFileExists(name1,KErrNone,EFalse);
  1679 	len=CheckFileExists(name3,KErrNone);
  1679 	len=CheckFileExists(name3,KErrNone);
  1680 	test(len==10);
  1680 	test(len==10);
  1681 	f1.Close();
  1681 	f1.Close();
  1682 	CheckFileExists(name1,KErrNone,EFalse);
  1682 	CheckFileExists(name1,KErrNone,EFalse);
  1683 	len=CheckFileExists(name3,KErrNone);
  1683 	len=CheckFileExists(name3,KErrNone);
  1684 	test(len==10);
  1684 	test(len==10);
  1685 
  1685 
  1686 	test.Next(_L("Test can rename to an identical filename"));
  1686 	test.Next(_L("Test can rename to an identical filename"));
  1687 	r=f1.Open(TheFs,name3,EFileRead|EFileWrite);
  1687 	r=f1.Open(TheFs,name3,EFileRead|EFileWrite);
  1688 	test(r==KErrNone);
  1688 	test_KErrNone(r);
  1689 	r=f1.Rename(name3);
  1689 	r=f1.Rename(name3);
  1690 	test(r==KErrNone);
  1690 	test_KErrNone(r);
  1691 	len=CheckFileExists(name3,KErrNone);
  1691 	len=CheckFileExists(name3,KErrNone);
  1692 	test(len==10);
  1692 	test(len==10);
  1693 	f1.Close();
  1693 	f1.Close();
  1694 	len=CheckFileExists(name3,KErrNone);
  1694 	len=CheckFileExists(name3,KErrNone);
  1695 	test(len==10);
  1695 	test(len==10);
  1696 
  1696 
  1697 	test.Next(_L("Test rename to a name containing a wildcard is rejected"));
  1697 	test.Next(_L("Test rename to a name containing a wildcard is rejected"));
  1698 	r=f1.Open(TheFs,name3,EFileRead|EFileWrite);
  1698 	r=f1.Open(TheFs,name3,EFileRead|EFileWrite);
  1699 	test(r==KErrNone);
  1699 	test_KErrNone(r);
  1700 	r=f1.Rename(_L("asdf*ASDF"));
  1700 	r=f1.Rename(_L("asdf*ASDF"));
  1701 	test(r==KErrBadName);
  1701 	test_Value(r, r == KErrBadName);
  1702 	r=f1.Rename(_L("asdf?AF"));
  1702 	r=f1.Rename(_L("asdf?AF"));
  1703 	test(r==KErrBadName);
  1703 	test_Value(r, r == KErrBadName);
  1704 	f1.Close();
  1704 	f1.Close();
  1705 
  1705 
  1706 	r=f1.Open(TheFs,name3,EFileRead);
  1706 	r=f1.Open(TheFs,name3,EFileRead);
  1707 	test(r==KErrNone);
  1707 	test_KErrNone(r);
  1708 	r=f1.Read(contents);
  1708 	r=f1.Read(contents);
  1709 	test(r==KErrNone);
  1709 	test_KErrNone(r);
  1710 	test(contents==_L8("1234567890"));
  1710 	test(contents==_L8("1234567890"));
  1711 	r=f1.Read(contents);
  1711 	r=f1.Read(contents);
  1712 	test(r==KErrNone);
  1712 	test_KErrNone(r);
  1713 	test(contents.Length()==0);
  1713 	test(contents.Length()==0);
  1714 	f1.Close();
  1714 	f1.Close();
  1715 
  1715 
  1716 	test.Next(_L("Check file date is retained"));
  1716 	test.Next(_L("Check file date is retained"));
  1717 	TDateTime dateTime(1995,(TMonth)10,19,23,0,0,0);
  1717 	TDateTime dateTime(1995,(TMonth)10,19,23,0,0,0);
  1718 	TTime oldTime(dateTime);
  1718 	TTime oldTime(dateTime);
  1719 	r=TheFs.SetEntry(name3,oldTime,0,0);
  1719 	r=TheFs.SetEntry(name3,oldTime,0,0);
  1720 	test(r==KErrNone);
  1720 	test_KErrNone(r);
  1721 	r=f1.Open(TheFs,name3,EFileRead|EFileWrite);
  1721 	r=f1.Open(TheFs,name3,EFileRead|EFileWrite);
  1722 	test(r==KErrNone);
  1722 	test_KErrNone(r);
  1723 	TTime check;
  1723 	TTime check;
  1724 	r=f1.Modified(check);
  1724 	r=f1.Modified(check);
  1725 	test(r==KErrNone);
  1725 	test_KErrNone(r);
  1726 	test(check==oldTime);
  1726 	test(check==oldTime);
  1727 
  1727 
  1728 	r=f1.Rename(_L("OldFile.Old"));
  1728 	r=f1.Rename(_L("OldFile.Old"));
  1729 	test(r==KErrNone);
  1729 	test_KErrNone(r);
  1730 
  1730 
  1731 	r=f1.Modified(check);
  1731 	r=f1.Modified(check);
  1732 	test(r==KErrNone);
  1732 	test_KErrNone(r);
  1733 	test(check==oldTime);
  1733 	test(check==oldTime);
  1734 	r=TheFs.Modified(_L("oldfile.old"),check);
  1734 	r=TheFs.Modified(_L("oldfile.old"),check);
  1735 	test(r==KErrNone);
  1735 	test_KErrNone(r);
  1736 	test(check==oldTime);
  1736 	test(check==oldTime);
  1737 	f1.Close();
  1737 	f1.Close();
  1738 	r=TheFs.Modified(_L("oldfile.old"),check);
  1738 	r=TheFs.Modified(_L("oldfile.old"),check);
  1739 	test(r==KErrNone);
  1739 	test_KErrNone(r);
  1740 	test(check==oldTime);
  1740 	test(check==oldTime);
  1741 	}
  1741 	}
  1742 
  1742 
  1743 static void TestFileUids()
  1743 static void TestFileUids()
  1744 //
  1744 //
  1752 	TUidType uidData1(TUid::Uid(2),TUid::Uid(2),TUid::Uid(2));
  1752 	TUidType uidData1(TUid::Uid(2),TUid::Uid(2),TUid::Uid(2));
  1753 	MakeFile(_L("Sketch(01)"),uidData1,_L8("A different sketch"));
  1753 	MakeFile(_L("Sketch(01)"),uidData1,_L8("A different sketch"));
  1754 
  1754 
  1755 	TEntry e;
  1755 	TEntry e;
  1756 	TInt r=TheFs.Entry(_L("Tmp04005.$$$"),e);
  1756 	TInt r=TheFs.Entry(_L("Tmp04005.$$$"),e);
  1757 	test(r==KErrNone);
  1757 	test_KErrNone(r);
  1758 	test(uidData==e.iType);
  1758 	test(uidData==e.iType);
  1759 	r=TheFs.Entry(_L("Sketch(01)"),e);
  1759 	r=TheFs.Entry(_L("Sketch(01)"),e);
  1760 	test(r==KErrNone);
  1760 	test_KErrNone(r);
  1761 	test(uidData1==e.iType);
  1761 	test(uidData1==e.iType);
  1762 
  1762 
  1763 	test.Next(_L("Test replace preserves UIDs"));
  1763 	test.Next(_L("Test replace preserves UIDs"));
  1764 	r=TheFs.Replace(_L("Tmp04005.$$$"),_L("Sketch(01)"));
  1764 	r=TheFs.Replace(_L("Tmp04005.$$$"),_L("Sketch(01)"));
  1765 	test(r==KErrNone);
  1765 	test_KErrNone(r);
  1766 
  1766 
  1767 	r=TheFs.Entry(_L("Tmp04005.$$$"),e);
  1767 	r=TheFs.Entry(_L("Tmp04005.$$$"),e);
  1768 	test(r==KErrNotFound);
  1768 	test_Value(r, r == KErrNotFound);
  1769 	r=TheFs.Entry(_L("Sketch(01)"),e);
  1769 	r=TheFs.Entry(_L("Sketch(01)"),e);
  1770 	test(r==KErrNone);
  1770 	test_KErrNone(r);
  1771 	test(uidData==e.iType);
  1771 	test(uidData==e.iType);
  1772 	}
  1772 	}
  1773 
  1773 
  1774 
  1774 
  1775 static void TestMaxLengthFilenames()
  1775 static void TestMaxLengthFilenames()
  1787 	TFileName bigName;
  1787 	TFileName bigName;
  1788 	CreateLongName(bigName,gSeed,255);
  1788 	CreateLongName(bigName,gSeed,255);
  1789 	bigName[0]='\\';
  1789 	bigName[0]='\\';
  1790 	RFile f;
  1790 	RFile f;
  1791 	TInt r=f.Create(TheFs,bigName,EFileRead);
  1791 	TInt r=f.Create(TheFs,bigName,EFileRead);
  1792 	test(r==KErrBadName);
  1792 	test_Value(r, r == KErrBadName);
  1793 	bigName.SetLength(254);
  1793 	bigName.SetLength(254);
  1794 	r=f.Create(TheFs,bigName,EFileRead);
  1794 	r=f.Create(TheFs,bigName,EFileRead);
  1795 	test(r==KErrNone);
  1795 	test_KErrNone(r);
  1796 	f.Close();
  1796 	f.Close();
  1797 
  1797 
  1798 	TInt count;
  1798 	TInt count;
  1799 	TFileName countedBigName=bigName;
  1799 	TFileName countedBigName=bigName;
  1800     // This loop may not reach the '\' character, or we will get a bad path.
  1800     // This loop may not reach the '\' character, or we will get a bad path.
  1803 		countedBigName[2]=(TText)('A'+count);
  1803 		countedBigName[2]=(TText)('A'+count);
  1804 		r=f.Create(TheFs,countedBigName,EFileRead);
  1804 		r=f.Create(TheFs,countedBigName,EFileRead);
  1805 		if (r==KErrDirFull)
  1805 		if (r==KErrDirFull)
  1806 			{
  1806 			{
  1807 			r=TheFs.Delete(countedBigName);
  1807 			r=TheFs.Delete(countedBigName);
  1808 			test(r==KErrNotFound);
  1808 			test_Value(r, r == KErrNotFound);
  1809 			break;
  1809 			break;
  1810 			}
  1810 			}
  1811 		if (r!=KErrNone)
  1811 		if (r!=KErrNone)
  1812 			test.Printf(_L("File create failed:%d"),r);
  1812 			test.Printf(_L("File create failed:%d"),r);
  1813 		test(r==KErrNone);
  1813 		test_KErrNone(r);
  1814 		f.Close();
  1814 		f.Close();
  1815 		}
  1815 		}
  1816 	while(count--)
  1816 	while(count--)
  1817 		{
  1817 		{
  1818 		countedBigName[2]=(TText)('A'+count);
  1818 		countedBigName[2]=(TText)('A'+count);
  1819 		r=TheFs.Delete(countedBigName);
  1819 		r=TheFs.Delete(countedBigName);
  1820 		test(r==KErrNone);
  1820 		test_KErrNone(r);
  1821 		}
  1821 		}
  1822 
  1822 
  1823 	r=TheFs.Delete(bigName);
  1823 	r=TheFs.Delete(bigName);
  1824 	test(r==KErrNone);
  1824 	test_KErrNone(r);
  1825 
  1825 
  1826 	TFileName subDirFileName=_L("\\F32-TST\\TFILE");
  1826 	TFileName subDirFileName=_L("\\F32-TST\\TFILE");
  1827 	bigName.SetLength(241);
  1827 	bigName.SetLength(241);
  1828 	subDirFileName.Append(bigName);
  1828 	subDirFileName.Append(bigName);
  1829 	r=f.Create(TheFs,subDirFileName,EFileRead);
  1829 	r=f.Create(TheFs,subDirFileName,EFileRead);
  1830 	test(r==KErrBadName);
  1830 	test_Value(r, r == KErrBadName);
  1831 	subDirFileName.SetLength(254);
  1831 	subDirFileName.SetLength(254);
  1832 	r=f.Create(TheFs,subDirFileName,EFileRead);
  1832 	r=f.Create(TheFs,subDirFileName,EFileRead);
  1833 	test(r==KErrNone);
  1833 	test_KErrNone(r);
  1834 	f.Close();
  1834 	f.Close();
  1835 	r=TheFs.Delete(subDirFileName);
  1835 	r=TheFs.Delete(subDirFileName);
  1836 	test(r==KErrNone);
  1836 	test_KErrNone(r);
  1837 	}
  1837 	}
  1838 
  1838 
  1839 
  1839 
  1840 
  1840 
  1841 
  1841 
  1849 	MakeFile(_L("TESTER"));
  1849 	MakeFile(_L("TESTER"));
  1850 
  1850 
  1851 	// Open a file in EFileShareReadersOnly mode
  1851 	// Open a file in EFileShareReadersOnly mode
  1852 	RFile f1;
  1852 	RFile f1;
  1853 	TInt r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
  1853 	TInt r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
  1854 	test(r==KErrNone);
  1854 	test_KErrNone(r);
  1855 
  1855 
  1856 	// Opening a share in EFileShareReadersOnly mode should succeed
  1856 	// Opening a share in EFileShareReadersOnly mode should succeed
  1857 	RFile f2;
  1857 	RFile f2;
  1858 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
  1858 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
  1859 	test(r==KErrNone);
  1859 	test_KErrNone(r);
  1860 	f2.Close();
  1860 	f2.Close();
  1861 
  1861 
  1862 	// Opening a share in EFileShareReadersOrWriters mode with EFileRead access should succeed
  1862 	// Opening a share in EFileShareReadersOrWriters mode with EFileRead access should succeed
  1863 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  1863 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  1864 	test(r==KErrNone);
  1864 	test_KErrNone(r);
  1865 	f2.Close();
  1865 	f2.Close();
  1866 
  1866 
  1867 	// Opening a share in EFileShareReadersOrWriters mode with EFileWrite access should succeed
  1867 	// Opening a share in EFileShareReadersOrWriters mode with EFileWrite access should succeed
  1868 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite);
  1868 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite);
  1869 	test(r==KErrInUse);
  1869 	test_Value(r, r == KErrInUse);
  1870 
  1870 
  1871 	// Opening a share in EFileShareReadersOrWriters mode with EFileRead|EFileWrite access should succeed
  1871 	// Opening a share in EFileShareReadersOrWriters mode with EFileRead|EFileWrite access should succeed
  1872 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite);
  1872 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite);
  1873 	test(r==KErrInUse);
  1873 	test_Value(r, r == KErrInUse);
  1874 
  1874 
  1875 	// Opening a share in EShareAny mode should fail
  1875 	// Opening a share in EShareAny mode should fail
  1876 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
  1876 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
  1877 	test(r==KErrInUse);
  1877 	test_Value(r, r == KErrInUse);
  1878 
  1878 
  1879 	f1.Close();
  1879 	f1.Close();
  1880 
  1880 
  1881 	//////////////////////
  1881 	//////////////////////
  1882 
  1882 
  1883 	// Open a file in EFileShareReadersOrWriters mode for reading
  1883 	// Open a file in EFileShareReadersOrWriters mode for reading
  1884 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  1884 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  1885 	test(r==KErrNone);
  1885 	test_KErrNone(r);
  1886 
  1886 
  1887 	// Opening a share in EFileShareExclusive mode should fail
  1887 	// Opening a share in EFileShareExclusive mode should fail
  1888 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
  1888 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
  1889 	test(r==KErrInUse);
  1889 	test_Value(r, r == KErrInUse);
  1890 
  1890 
  1891 	// Opening a share in EFileShareReadersOnly mode should succeed
  1891 	// Opening a share in EFileShareReadersOnly mode should succeed
  1892 	// (the share doesn't care if the file is opened for reading or writing)
  1892 	// (the share doesn't care if the file is opened for reading or writing)
  1893 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
  1893 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
  1894 	test(r==KErrNone);
  1894 	test_KErrNone(r);
  1895 	f2.Close();
  1895 	f2.Close();
  1896 
  1896 
  1897 	// Opening a share in EFileShareReadersOnly mode with EFileRead accesss should succeed
  1897 	// Opening a share in EFileShareReadersOnly mode with EFileRead accesss should succeed
  1898 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  1898 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  1899 	test(r==KErrNone);
  1899 	test_KErrNone(r);
  1900 	f2.Close();
  1900 	f2.Close();
  1901 
  1901 
  1902 	// Opening a share in EFileShareReadersOnly mode with EFileWrite accesss should succeed
  1902 	// Opening a share in EFileShareReadersOnly mode with EFileWrite accesss should succeed
  1903 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite);
  1903 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite);
  1904 	test(r==KErrNone);
  1904 	test_KErrNone(r);
  1905 	f2.Close();
  1905 	f2.Close();
  1906 
  1906 
  1907 	// Opening a share in EFileShareReadersOnly mode with EFileRead|EFileWrite accesss should succeed
  1907 	// Opening a share in EFileShareReadersOnly mode with EFileRead|EFileWrite accesss should succeed
  1908 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite);
  1908 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite);
  1909 	test(r==KErrNone);
  1909 	test_KErrNone(r);
  1910 	f2.Close();
  1910 	f2.Close();
  1911 
  1911 
  1912 	// Opening a share in EFileShareAny mode should succeed
  1912 	// Opening a share in EFileShareAny mode should succeed
  1913 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
  1913 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
  1914 	test(r==KErrNone);
  1914 	test_KErrNone(r);
  1915 	f2.Close();
  1915 	f2.Close();
  1916 
  1916 
  1917 	f1.Close();
  1917 	f1.Close();
  1918 
  1918 
  1919 	//////////////////////
  1919 	//////////////////////
  1920 
  1920 
  1921 	// Open a file in EFileShareReadersOrWriters mode for writing
  1921 	// Open a file in EFileShareReadersOrWriters mode for writing
  1922 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite);
  1922 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite);
  1923 	test(r==KErrNone);
  1923 	test_KErrNone(r);
  1924 
  1924 
  1925 	// Opening a share in EFileShareExclusive mode should fail
  1925 	// Opening a share in EFileShareExclusive mode should fail
  1926 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
  1926 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
  1927 	test(r==KErrInUse);
  1927 	test_Value(r, r == KErrInUse);
  1928 
  1928 
  1929 	// Opening a share in EFileShareReadersOnly mode should fail
  1929 	// Opening a share in EFileShareReadersOnly mode should fail
  1930 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
  1930 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
  1931 	test(r==KErrInUse);
  1931 	test_Value(r, r == KErrInUse);
  1932 
  1932 
  1933 	// Opening a share in EFileShareReadersOrWriters mode with EFileRead access should succeed
  1933 	// Opening a share in EFileShareReadersOrWriters mode with EFileRead access should succeed
  1934 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  1934 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  1935 	test(r==KErrNone);
  1935 	test_KErrNone(r);
  1936 	f2.Close();
  1936 	f2.Close();
  1937 
  1937 
  1938 	// Opening a share in EFileShareReadersOrWriters mode with EFileWrite access should succeed
  1938 	// Opening a share in EFileShareReadersOrWriters mode with EFileWrite access should succeed
  1939 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite);
  1939 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite);
  1940 	test(r==KErrNone);
  1940 	test_KErrNone(r);
  1941 	f2.Close();
  1941 	f2.Close();
  1942 
  1942 
  1943 	// Opening a share in EFileShareReadersOrWriters mode with EFileRead|EFileWrite access should succeed
  1943 	// Opening a share in EFileShareReadersOrWriters mode with EFileRead|EFileWrite access should succeed
  1944 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite);
  1944 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite);
  1945 	test(r==KErrNone);
  1945 	test_KErrNone(r);
  1946 	f2.Close();
  1946 	f2.Close();
  1947 
  1947 
  1948 	// Opening a share in EFileShareAny mode should succeed
  1948 	// Opening a share in EFileShareAny mode should succeed
  1949 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
  1949 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
  1950 	test(r==KErrNone);
  1950 	test_KErrNone(r);
  1951 	f2.Close();
  1951 	f2.Close();
  1952 
  1952 
  1953 	f1.Close();
  1953 	f1.Close();
  1954 
  1954 
  1955 	//////////////////////////
  1955 	//////////////////////////
  1956 
  1956 
  1957 	// Open a file in EFileShareAny mode
  1957 	// Open a file in EFileShareAny mode
  1958 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
  1958 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
  1959 	test(r==KErrNone);
  1959 	test_KErrNone(r);
  1960 
  1960 
  1961 	// Opening a share in EFileShareExclusive mode should fail
  1961 	// Opening a share in EFileShareExclusive mode should fail
  1962 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
  1962 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive);
  1963 	test(r==KErrInUse);
  1963 	test_Value(r, r == KErrInUse);
  1964 
  1964 
  1965 	// Opening a share in EFileShareReadersOnly mode should fail
  1965 	// Opening a share in EFileShareReadersOnly mode should fail
  1966 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
  1966 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
  1967 	test(r==KErrInUse);
  1967 	test_Value(r, r == KErrInUse);
  1968 
  1968 
  1969 	// Opening a share in EFileShareReadersOrWriters mode with EFileRead access should succeed
  1969 	// Opening a share in EFileShareReadersOrWriters mode with EFileRead access should succeed
  1970 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  1970 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  1971 	test(r==KErrNone);
  1971 	test_KErrNone(r);
  1972 	f2.Close();
  1972 	f2.Close();
  1973 
  1973 
  1974 	// Opening a share in EFileShareReadersOrWriters mode with EFileWrite access should succeed
  1974 	// Opening a share in EFileShareReadersOrWriters mode with EFileWrite access should succeed
  1975 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite);
  1975 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite);
  1976 	test(r==KErrNone);
  1976 	test_KErrNone(r);
  1977 	f2.Close();
  1977 	f2.Close();
  1978 
  1978 
  1979 	// Opening a share in EFileShareReadersOrWriters mode with EFileRead|EFileWrite access should succeed
  1979 	// Opening a share in EFileShareReadersOrWriters mode with EFileRead|EFileWrite access should succeed
  1980 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite);
  1980 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite);
  1981 	test(r==KErrNone);
  1981 	test_KErrNone(r);
  1982 	f2.Close();
  1982 	f2.Close();
  1983 
  1983 
  1984 	// Opening a share in EFileShareAny mode with should succeed
  1984 	// Opening a share in EFileShareAny mode with should succeed
  1985 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
  1985 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
  1986 	test(r==KErrNone);
  1986 	test_KErrNone(r);
  1987 	f2.Close();
  1987 	f2.Close();
  1988 
  1988 
  1989 	f1.Close();
  1989 	f1.Close();
  1990 
  1990 
  1991 	//////////////////////
  1991 	//////////////////////
  1992 
  1992 
  1993 	// Open a file in EFileShareReadersOrWriters mode for reading
  1993 	// Open a file in EFileShareReadersOrWriters mode for reading
  1994 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  1994 	r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  1995 	test(r==KErrNone);
  1995 	test_KErrNone(r);
  1996 
  1996 
  1997 	// Opening a share in EFileShareReadersOnly mode should succeed
  1997 	// Opening a share in EFileShareReadersOnly mode should succeed
  1998 	//  - The share should now be promoted to EFileShareReadersOnly mode
  1998 	//  - The share should now be promoted to EFileShareReadersOnly mode
  1999 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
  1999 	r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly);
  2000 	test(r==KErrNone);
  2000 	test_KErrNone(r);
  2001 
  2001 
  2002 	TInt pass = 2;
  2002 	TInt pass = 2;
  2003 	while(pass--)
  2003 	while(pass--)
  2004 		{
  2004 		{
  2005 		RFile f3;
  2005 		RFile f3;
  2006 		// Opening a share in EFileShareReadersOnly mode with EFileRead accesss should succeed
  2006 		// Opening a share in EFileShareReadersOnly mode with EFileRead accesss should succeed
  2007 		r=f3.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  2007 		r=f3.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead);
  2008 		test(r==KErrNone);
  2008 		test_KErrNone(r);
  2009 		f3.Close();
  2009 		f3.Close();
  2010 
  2010 
  2011 		// Opening a share in EFileShareReadersOnly mode with EFileWrite accesss should fail
  2011 		// Opening a share in EFileShareReadersOnly mode with EFileWrite accesss should fail
  2012 		r=f3.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite);
  2012 		r=f3.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite);
  2013 		if(pass == 1)
  2013 		if(pass == 1)
  2014 			{
  2014 			{
  2015 			// The share is promoted - should obey EFileShareReadersOnly rules
  2015 			// The share is promoted - should obey EFileShareReadersOnly rules
  2016 			test(r==KErrInUse);
  2016 			test_Value(r, r == KErrInUse);
  2017 			}
  2017 			}
  2018 		else
  2018 		else
  2019 			{
  2019 			{
  2020 			// The share is demoted - should obey EFileShareReadersOrWriters rules
  2020 			// The share is demoted - should obey EFileShareReadersOrWriters rules
  2021 			test(r==KErrNone);
  2021 			test_KErrNone(r);
  2022 			f3.Close();
  2022 			f3.Close();
  2023 			}
  2023 			}
  2024 
  2024 
  2025 		// Opening a share in EFileShareReadersOnly mode with EFileRead|EFileWrite accesss should fail
  2025 		// Opening a share in EFileShareReadersOnly mode with EFileRead|EFileWrite accesss should fail
  2026 		r=f3.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite);
  2026 		r=f3.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite);
  2027 		if(pass == 1)
  2027 		if(pass == 1)
  2028 			{
  2028 			{
  2029 			// The share is promoted - should obey EFileShareReadersOnly rules
  2029 			// The share is promoted - should obey EFileShareReadersOnly rules
  2030 			test(r==KErrInUse);
  2030 			test_Value(r, r == KErrInUse);
  2031 			}
  2031 			}
  2032 		else
  2032 		else
  2033 			{
  2033 			{
  2034 			// The share is demoted - should obey EFileShareReadersOrWriters rules
  2034 			// The share is demoted - should obey EFileShareReadersOrWriters rules
  2035 			test(r==KErrNone);
  2035 			test_KErrNone(r);
  2036 			f3.Close();
  2036 			f3.Close();
  2037 			}
  2037 			}
  2038 
  2038 
  2039 		// Opening a share in EFileShareAny mode should fails
  2039 		// Opening a share in EFileShareAny mode should fails
  2040 		r=f3.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
  2040 		r=f3.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny);
  2041 		if(pass == 1)
  2041 		if(pass == 1)
  2042 			{
  2042 			{
  2043 			// The share is promoted - should obey EFileShareReadersOnly rules
  2043 			// The share is promoted - should obey EFileShareReadersOnly rules
  2044 			test(r==KErrInUse);
  2044 			test_Value(r, r == KErrInUse);
  2045 			f2.Close();
  2045 			f2.Close();
  2046 			}
  2046 			}
  2047 		else
  2047 		else
  2048 			{
  2048 			{
  2049 			// The share is demoted - should obey EFileShareReadersOrWriters rules
  2049 			// The share is demoted - should obey EFileShareReadersOrWriters rules
  2050 			test(r==KErrNone);
  2050 			test_KErrNone(r);
  2051 			f3.Close();
  2051 			f3.Close();
  2052 			}
  2052 			}
  2053 		}
  2053 		}
  2054 
  2054 
  2055 	f1.Close();
  2055 	f1.Close();
  2148 
  2148 
  2149 // EXPORT_C TInt RFile::Write(const TDesC8& aDes,TInt aLength)
  2149 // EXPORT_C TInt RFile::Write(const TDesC8& aDes,TInt aLength)
  2150 	createTestFile(TheFile);
  2150 	createTestFile(TheFile);
  2151 
  2151 
  2152 	r=TheFile.Write(gBuf, -1);
  2152 	r=TheFile.Write(gBuf, -1);
  2153 	test(r==KErrArgument);
  2153 	test_Value(r, r == KErrArgument);
  2154 
  2154 
  2155 	removeTestFile(TheFile);
  2155 	removeTestFile(TheFile);
  2156 
  2156 
  2157 // EXPORT_C void RFile::Write(const TDesC8& aDes,TInt aLength, TRequestStatus& aStatus)
  2157 // EXPORT_C void RFile::Write(const TDesC8& aDes,TInt aLength, TRequestStatus& aStatus)
  2158 	createTestFile(TheFile);
  2158 	createTestFile(TheFile);
  2165 
  2165 
  2166 
  2166 
  2167 // EXPORT_C TInt RFile::Write(TInt aPos,const TDesC8& aDes,TInt aLength)
  2167 // EXPORT_C TInt RFile::Write(TInt aPos,const TDesC8& aDes,TInt aLength)
  2168 	createTestFile(TheFile);
  2168 	createTestFile(TheFile);
  2169 	r = TheFile.Write(0,gBuf,-1);
  2169 	r = TheFile.Write(0,gBuf,-1);
  2170 	test(r==KErrArgument);
  2170 	test_Value(r, r == KErrArgument);
  2171 	removeTestFile(TheFile);
  2171 	removeTestFile(TheFile);
  2172 
  2172 
  2173 
  2173 
  2174 // EXPORT_C void RFile::Write(TInt aPos,const TDesC8& aDes, TInt aLength, TRequestStatus& aStatus)
  2174 // EXPORT_C void RFile::Write(TInt aPos,const TDesC8& aDes, TInt aLength, TRequestStatus& aStatus)
  2175 	createTestFile(TheFile);
  2175 	createTestFile(TheFile);
  2283 
  2283 
  2284 	zeroSrcDesc();
  2284 	zeroSrcDesc();
  2285 
  2285 
  2286 	test.Next(_L("Execute sync call RFile::Write(const TDesC8& aDes) with zero length aDes"));
  2286 	test.Next(_L("Execute sync call RFile::Write(const TDesC8& aDes) with zero length aDes"));
  2287 	TInt r=TheFile.Write(gLongBuf);
  2287 	TInt r=TheFile.Write(gLongBuf);
  2288 	test(r==KErrNone);
  2288 	test_KErrNone(r);
  2289 
  2289 
  2290 	test.Printf(_L("Test case passed\n"));
  2290 	test.Printf(_L("Test case passed\n"));
  2291 
  2291 
  2292 	removeTestFile(TheFile);
  2292 	removeTestFile(TheFile);
  2293 
  2293 
  2350 	t.Close();
  2350 	t.Close();
  2351 	User::SetJustInTime(ETrue);
  2351 	User::SetJustInTime(ETrue);
  2352 #else
  2352 #else
  2353 
  2353 
  2354 	r=TheFile.Write(gLongBuf, 0x80000);
  2354 	r=TheFile.Write(gLongBuf, 0x80000);
  2355 	test(r==KErrNone);
  2355 	test_KErrNone(r);
  2356 #endif
  2356 #endif
  2357 
  2357 
  2358 	test.Printf(_L("Test case passed\n"));
  2358 	test.Printf(_L("Test case passed\n"));
  2359 
  2359 
  2360 	removeTestFile(TheFile);
  2360 	removeTestFile(TheFile);
  2402 
  2402 
  2403 	zeroSrcDesc();
  2403 	zeroSrcDesc();
  2404 
  2404 
  2405 	test.Next(_L("Execute sync call RFile::Write(TInt aPos, const TDesC8& aDes) with zero length aDes"));
  2405 	test.Next(_L("Execute sync call RFile::Write(TInt aPos, const TDesC8& aDes) with zero length aDes"));
  2406 	r=TheFile.Write(0, gLongBuf);
  2406 	r=TheFile.Write(0, gLongBuf);
  2407 	test(r==KErrNone);
  2407 	test_KErrNone(r);
  2408 
  2408 
  2409 	test.Printf(_L("Test case passed\n"));
  2409 	test.Printf(_L("Test case passed\n"));
  2410 
  2410 
  2411 	removeTestFile(TheFile);
  2411 	removeTestFile(TheFile);
  2412 
  2412 
  2453 
  2453 
  2454 	zeroSrcDesc();
  2454 	zeroSrcDesc();
  2455 
  2455 
  2456 	test.Next(_L("Execute sync call RFile::Write(TInt aPos, const TDesC8& aDes, TInt aLength) with zero length aDes"));
  2456 	test.Next(_L("Execute sync call RFile::Write(TInt aPos, const TDesC8& aDes, TInt aLength) with zero length aDes"));
  2457 	r=TheFile.Write(0, gLongBuf, 0x80000);
  2457 	r=TheFile.Write(0, gLongBuf, 0x80000);
  2458 	test(r==KErrNone);
  2458 	test_KErrNone(r);
  2459 
  2459 
  2460 	test.Printf(_L("Test case passed\n"));
  2460 	test.Printf(_L("Test case passed\n"));
  2461 
  2461 
  2462 	removeTestFile(TheFile);
  2462 	removeTestFile(TheFile);
  2463 
  2463 
  2517 	TRequestStatus status(KRequestPending);
  2517 	TRequestStatus status(KRequestPending);
  2518 	TBuf8<2> buf8;
  2518 	TBuf8<2> buf8;
  2519 
  2519 
  2520 // EXPORT_C TInt RFile::Read(TDes8& aDes,TInt aLength) const
  2520 // EXPORT_C TInt RFile::Read(TDes8& aDes,TInt aLength) const
  2521 	err = file.Read(buf8,5);
  2521 	err = file.Read(buf8,5);
  2522 	test(err==KErrOverflow);
  2522 	test_Value(err, err == KErrOverflow);
  2523 	err = KErrNone;
  2523 	err = KErrNone;
  2524 
  2524 
  2525 // EXPORT_C void RFile::Read(TDes8& aDes,TInt aLength,TRequestStatus& aStatus) const
  2525 // EXPORT_C void RFile::Read(TDes8& aDes,TInt aLength,TRequestStatus& aStatus) const
  2526 	file.Read(buf8,5,status);
  2526 	file.Read(buf8,5,status);
  2527 	test(status.Int()==KErrOverflow);
  2527 	test(status.Int()==KErrOverflow);
  2528 	status = KRequestPending;
  2528 	status = KRequestPending;
  2529 
  2529 
  2530 // EXPORT_C TInt RFile::Read(TInt aPos,TDes8& aDes,TInt aLength) const
  2530 // EXPORT_C TInt RFile::Read(TInt aPos,TDes8& aDes,TInt aLength) const
  2531 	err = file.Read(0,buf8,5);
  2531 	err = file.Read(0,buf8,5);
  2532 	test(err==KErrOverflow);
  2532 	test_Value(err, err == KErrOverflow);
  2533 
  2533 
  2534 // EXPORT_C void RFile::Read(TInt aPos,TDes8& aDes,TInt aLength,TRequestStatus& aStatus) const
  2534 // EXPORT_C void RFile::Read(TInt aPos,TDes8& aDes,TInt aLength,TRequestStatus& aStatus) const
  2535 	file.Read(0,buf8,5,status);
  2535 	file.Read(0,buf8,5,status);
  2536 	test(status.Int()==KErrOverflow);
  2536 	test(status.Int()==KErrOverflow);
  2537 
  2537 
  2553 	TUint fileMode=EFileRead;
  2553 	TUint fileMode=EFileRead;
  2554 	RFs fs;
  2554 	RFs fs;
  2555 	RFile file;
  2555 	RFile file;
  2556 
  2556 
  2557 	TInt r=fs.Connect();
  2557 	TInt r=fs.Connect();
  2558 	test(r==KErrNone);
  2558 	test_KErrNone(r);
  2559 	r=fs.SetSessionPath(gSessionPath);
  2559 	r=fs.SetSessionPath(gSessionPath);
  2560 	test(r==KErrNone);
  2560 	test_KErrNone(r);
  2561 	if (testMode & EDoCDeleteOnClose)
  2561 	if (testMode & EDoCDeleteOnClose)
  2562 		fileMode|=EDeleteOnClose;
  2562 		fileMode|=EDeleteOnClose;
  2563 	r=file.Temp(fs,_L(""),gLastTempFileName,fileMode);
  2563 	r=file.Temp(fs,_L(""),gLastTempFileName,fileMode);
  2564 	test(r==KErrNone);
  2564 	test_KErrNone(r);
  2565 	// Signal controlling thread and pause for panic where requested
  2565 	// Signal controlling thread and pause for panic where requested
  2566 	// by caller.
  2566 	// by caller.
  2567 	if (testMode & EDoCPanic)
  2567 	if (testMode & EDoCPanic)
  2568 		{
  2568 		{
  2569 		gSleepThread.Signal();
  2569 		gSleepThread.Signal();
  2605 //!
  2605 //!
  2606 //! @SYMTestExpectedResults
  2606 //! @SYMTestExpectedResults
  2607 //! 	1.	The temporary file is successfully created and deleted.
  2607 //! 	1.	The temporary file is successfully created and deleted.
  2608 //---------------------------------------------------------------------------------------------------------------------
  2608 //---------------------------------------------------------------------------------------------------------------------
  2609 	r=clientThread.Create(_L("DeleteOnCloseClientThread 1"),DeleteOnCloseClientThread,KDefaultStackSize,0x2000,0x2000,(TAny*)0);
  2609 	r=clientThread.Create(_L("DeleteOnCloseClientThread 1"),DeleteOnCloseClientThread,KDefaultStackSize,0x2000,0x2000,(TAny*)0);
  2610 	test(r==KErrNone);
  2610 	test_KErrNone(r);
  2611 	clientThread.Resume();
  2611 	clientThread.Resume();
  2612 	gSleepThread.Wait();
  2612 	gSleepThread.Wait();
  2613 	r=TheFs.Delete(gLastTempFileName);
  2613 	r=TheFs.Delete(gLastTempFileName);
  2614 	test(r==KErrNone);
  2614 	test_KErrNone(r);
  2615 	clientThread.Close();
  2615 	clientThread.Close();
  2616 
  2616 
  2617 //
  2617 //
  2618 //---------------------------------------------------------------------------------------------------------------------
  2618 //---------------------------------------------------------------------------------------------------------------------
  2619 //! @SYMTestCaseID	PBASE-t_file-0805
  2619 //! @SYMTestCaseID	PBASE-t_file-0805
  2632 //!		deleted upon close.   The subsequent attempted file deletion
  2632 //!		deleted upon close.   The subsequent attempted file deletion
  2633 //!		by the main test body should fail with KErrNotFound.
  2633 //!		by the main test body should fail with KErrNotFound.
  2634 //---------------------------------------------------------------------------------------------------------------------
  2634 //---------------------------------------------------------------------------------------------------------------------
  2635 	test.Next(_L("RFile::Temp EDeleteOnClose behaviour"));
  2635 	test.Next(_L("RFile::Temp EDeleteOnClose behaviour"));
  2636 	r=clientThread.Create(_L("DeleteOnCloseClientThread 2"),DeleteOnCloseClientThread,KDefaultStackSize,0x2000,0x2000,(TAny*)EDoCDeleteOnClose);
  2636 	r=clientThread.Create(_L("DeleteOnCloseClientThread 2"),DeleteOnCloseClientThread,KDefaultStackSize,0x2000,0x2000,(TAny*)EDoCDeleteOnClose);
  2637 	test(r==KErrNone);
  2637 	test_KErrNone(r);
  2638 	clientThread.Resume();
  2638 	clientThread.Resume();
  2639 	gSleepThread.Wait();
  2639 	gSleepThread.Wait();
  2640 	r=TheFs.Delete(gLastTempFileName);
  2640 	r=TheFs.Delete(gLastTempFileName);
  2641 	test(r==KErrNotFound);
  2641 	test_Value(r, r == KErrNotFound);
  2642 	clientThread.Close();
  2642 	clientThread.Close();
  2643 
  2643 
  2644 //
  2644 //
  2645 //---------------------------------------------------------------------------------------------------------------------
  2645 //---------------------------------------------------------------------------------------------------------------------
  2646 //! @SYMTestCaseID	PBASE-t_file-0806
  2646 //! @SYMTestCaseID	PBASE-t_file-0806
  2657 //! @SYMTestExpectedResults
  2657 //! @SYMTestExpectedResults
  2658 //! 	1.	The temporary file is successfully created and deleted.
  2658 //! 	1.	The temporary file is successfully created and deleted.
  2659 //---------------------------------------------------------------------------------------------------------------------
  2659 //---------------------------------------------------------------------------------------------------------------------
  2660 	test.Next(_L("RFile::Temp default panic behaviour"));
  2660 	test.Next(_L("RFile::Temp default panic behaviour"));
  2661 	r=clientThread.Create(_L("DeleteOnCloseClientThread 3"),DeleteOnCloseClientThread,KDefaultStackSize,0x2000,0x2000,(TAny*)EDoCPanic);
  2661 	r=clientThread.Create(_L("DeleteOnCloseClientThread 3"),DeleteOnCloseClientThread,KDefaultStackSize,0x2000,0x2000,(TAny*)EDoCPanic);
  2662 	test(r==KErrNone);
  2662 	test_KErrNone(r);
  2663 	clientThread.Resume();
  2663 	clientThread.Resume();
  2664 	gSleepThread.Wait();
  2664 	gSleepThread.Wait();
  2665 	User::SetJustInTime(EFalse);
  2665 	User::SetJustInTime(EFalse);
  2666 	clientThread.Panic(_L("Panic temp file thread #3"),KErrGeneral);
  2666 	clientThread.Panic(_L("Panic temp file thread #3"),KErrGeneral);
  2667 	User::SetJustInTime(ETrue);
  2667 	User::SetJustInTime(ETrue);
  2668 	CLOSE_AND_WAIT(clientThread);
  2668 	CLOSE_AND_WAIT(clientThread);
  2669 	FsBarrier();
  2669 	FsBarrier();
  2670 	r=TheFs.Delete(gLastTempFileName);
  2670 	r=TheFs.Delete(gLastTempFileName);
  2671 	test(r==KErrNone);
  2671 	test_KErrNone(r);
  2672 
  2672 
  2673 //
  2673 //
  2674 //---------------------------------------------------------------------------------------------------------------------
  2674 //---------------------------------------------------------------------------------------------------------------------
  2675 //! @SYMTestCaseID	PBASE-t_file-0807
  2675 //! @SYMTestCaseID	PBASE-t_file-0807
  2676 //! @SYMTestType	UT
  2676 //! @SYMTestType	UT
  2688 //!		deleted upon close.   The subsequent attempted file deletion
  2688 //!		deleted upon close.   The subsequent attempted file deletion
  2689 //!		by the main test body should fail with KErrNotFound.
  2689 //!		by the main test body should fail with KErrNotFound.
  2690 //---------------------------------------------------------------------------------------------------------------------
  2690 //---------------------------------------------------------------------------------------------------------------------
  2691 	test.Next(_L("RFile::Temp EDeleteOnClose panic behaviour"));
  2691 	test.Next(_L("RFile::Temp EDeleteOnClose panic behaviour"));
  2692 	r=clientThread.Create(_L("DeleteOnCloseClientThread 4"),DeleteOnCloseClientThread,KDefaultStackSize,0x2000,0x2000,(TAny*)(EDoCPanic|EDoCDeleteOnClose));
  2692 	r=clientThread.Create(_L("DeleteOnCloseClientThread 4"),DeleteOnCloseClientThread,KDefaultStackSize,0x2000,0x2000,(TAny*)(EDoCPanic|EDoCDeleteOnClose));
  2693 	test(r==KErrNone);
  2693 	test_KErrNone(r);
  2694 	clientThread.Resume();
  2694 	clientThread.Resume();
  2695 	gSleepThread.Wait();
  2695 	gSleepThread.Wait();
  2696 	User::SetJustInTime(EFalse);
  2696 	User::SetJustInTime(EFalse);
  2697 	clientThread.Panic(_L("Panic temp file thread #4"),KErrGeneral);
  2697 	clientThread.Panic(_L("Panic temp file thread #4"),KErrGeneral);
  2698 	User::SetJustInTime(ETrue);
  2698 	User::SetJustInTime(ETrue);
  2699 	CLOSE_AND_WAIT(clientThread);
  2699 	CLOSE_AND_WAIT(clientThread);
  2700 	FsBarrier();
  2700 	FsBarrier();
  2701 	r=TheFs.Delete(gLastTempFileName);
  2701 	r=TheFs.Delete(gLastTempFileName);
  2702 	test(r==KErrNotFound);
  2702 	test_Value(r, r == KErrNotFound);
  2703 
  2703 
  2704 //
  2704 //
  2705 //---------------------------------------------------------------------------------------------------------------------
  2705 //---------------------------------------------------------------------------------------------------------------------
  2706 //! @SYMTestCaseID	PBASE-t_file-0808
  2706 //! @SYMTestCaseID	PBASE-t_file-0808
  2707 //! @SYMTestType	UT
  2707 //! @SYMTestType	UT
  2717 //! 	1.	The file creation should succeed.
  2717 //! 	1.	The file creation should succeed.
  2718 //!	2.	The file deletion should fail with KErrNotFound.
  2718 //!	2.	The file deletion should fail with KErrNotFound.
  2719 //---------------------------------------------------------------------------------------------------------------------
  2719 //---------------------------------------------------------------------------------------------------------------------
  2720 	test.Next(_L("RFile::Create EDeleteOnClose behaviour"));
  2720 	test.Next(_L("RFile::Create EDeleteOnClose behaviour"));
  2721  	r=file.Create(TheFs,_L("DoC5"),EFileRead|EFileWrite|EDeleteOnClose);
  2721  	r=file.Create(TheFs,_L("DoC5"),EFileRead|EFileWrite|EDeleteOnClose);
  2722 	test(r==KErrNone);
  2722 	test_KErrNone(r);
  2723 	file.Close();
  2723 	file.Close();
  2724 	r=TheFs.Delete(filename);
  2724 	r=TheFs.Delete(filename);
  2725 	test(r==KErrNotFound);
  2725 	test_Value(r, r == KErrNotFound);
  2726 
  2726 
  2727 //
  2727 //
  2728 //---------------------------------------------------------------------------------------------------------------------
  2728 //---------------------------------------------------------------------------------------------------------------------
  2729 //! @SYMTestCaseID	PBASE-t_file-0809
  2729 //! @SYMTestCaseID	PBASE-t_file-0809
  2730 //! @SYMTestType	UT
  2730 //! @SYMTestType	UT
  2744 //!	2.	The file deletion should fail with KErrInUse.
  2744 //!	2.	The file deletion should fail with KErrInUse.
  2745 //!	3.	The file deletion should fail with KErrNotFound.
  2745 //!	3.	The file deletion should fail with KErrNotFound.
  2746 //---------------------------------------------------------------------------------------------------------------------
  2746 //---------------------------------------------------------------------------------------------------------------------
  2747 	test.Next(_L("DoC 6 - Multiple subsessions"));
  2747 	test.Next(_L("DoC 6 - Multiple subsessions"));
  2748  	r=file.Create(TheFs,filename,EFileShareAny|EFileRead|EFileWrite|EDeleteOnClose);
  2748  	r=file.Create(TheFs,filename,EFileShareAny|EFileRead|EFileWrite|EDeleteOnClose);
  2749 	test(r==KErrNone);
  2749 	test_KErrNone(r);
  2750  	r=file2.Open(TheFs,filename,EFileShareAny|EFileRead|EFileWrite);
  2750  	r=file2.Open(TheFs,filename,EFileShareAny|EFileRead|EFileWrite);
  2751 	test(r==KErrNone);
  2751 	test_KErrNone(r);
  2752 	file.Close();
  2752 	file.Close();
  2753 	test(r==KErrNone);
  2753 	test_KErrNone(r);
  2754 	r=TheFs.Delete(filename);
  2754 	r=TheFs.Delete(filename);
  2755 	test(r==KErrInUse);
  2755 	test_Value(r, r == KErrInUse);
  2756 	file2.Close();
  2756 	file2.Close();
  2757 	r=TheFs.Delete(filename);
  2757 	r=TheFs.Delete(filename);
  2758 	test(r==KErrNotFound);
  2758 	test_Value(r, r == KErrNotFound);
  2759 
  2759 
  2760 //
  2760 //
  2761 //---------------------------------------------------------------------------------------------------------------------
  2761 //---------------------------------------------------------------------------------------------------------------------
  2762 //! @SYMTestCaseID	PBASE-t_file-0810
  2762 //! @SYMTestCaseID	PBASE-t_file-0810
  2763 //! @SYMTestType	UT
  2763 //! @SYMTestType	UT
  2771 //! @SYMTestExpectedResults
  2771 //! @SYMTestExpectedResults
  2772 //!	1.	The second create should fail with KErrAlreadyExists.
  2772 //!	1.	The second create should fail with KErrAlreadyExists.
  2773 //---------------------------------------------------------------------------------------------------------------------
  2773 //---------------------------------------------------------------------------------------------------------------------
  2774 	test.Next(_L("RFile::Create existing file behaviour"));
  2774 	test.Next(_L("RFile::Create existing file behaviour"));
  2775  	r=file.Create(TheFs,filename,EFileRead|EFileWrite);
  2775  	r=file.Create(TheFs,filename,EFileRead|EFileWrite);
  2776 	test(r==KErrNone);
  2776 	test_KErrNone(r);
  2777 	file.Close();
  2777 	file.Close();
  2778  	r=file.Create(TheFs,filename,EFileRead|EFileWrite|EDeleteOnClose);
  2778  	r=file.Create(TheFs,filename,EFileRead|EFileWrite|EDeleteOnClose);
  2779 	test(r==KErrAlreadyExists);
  2779 	test_Value(r, r == KErrAlreadyExists);
  2780 
  2780 
  2781 //
  2781 //
  2782 //---------------------------------------------------------------------------------------------------------------------
  2782 //---------------------------------------------------------------------------------------------------------------------
  2783 //! @SYMTestCaseID	PBASE-t_file-0811
  2783 //! @SYMTestCaseID	PBASE-t_file-0811
  2784 //! @SYMTestType	UT
  2784 //! @SYMTestType	UT
  2791 //! @SYMTestExpectedResults
  2791 //! @SYMTestExpectedResults
  2792 //!	1.	The open should fail with KErrArgument.
  2792 //!	1.	The open should fail with KErrArgument.
  2793 //---------------------------------------------------------------------------------------------------------------------
  2793 //---------------------------------------------------------------------------------------------------------------------
  2794 	test.Next(_L("RFile::Open EDeleteOnClose flag validation"));
  2794 	test.Next(_L("RFile::Open EDeleteOnClose flag validation"));
  2795 	r=file.Open(TheFs,filename,EFileRead|EFileWrite|EDeleteOnClose);
  2795 	r=file.Open(TheFs,filename,EFileRead|EFileWrite|EDeleteOnClose);
  2796 	test(r==KErrArgument);
  2796 	test_Value(r, r == KErrArgument);
  2797 	r=TheFs.Delete(filename);
  2797 	r=TheFs.Delete(filename);
  2798 	test(r==KErrNone);
  2798 	test_KErrNone(r);
  2799 
  2799 
  2800 	gSleepThread.Close();
  2800 	gSleepThread.Close();
  2801 	test.End();
  2801 	test.End();
  2802 	}
  2802 	}
  2803 
  2803 
  2822     TEntry  entry;
  2822     TEntry  entry;
  2823     TheFs.Delete(KFile);
  2823     TheFs.Delete(KFile);
  2824 
  2824 
  2825     //-- 1. create test file
  2825     //-- 1. create test file
  2826     nRes = CreateEmptyFile(TheFs, KFile, 33);
  2826     nRes = CreateEmptyFile(TheFs, KFile, 33);
  2827     test(nRes == KErrNone);
  2827     test_KErrNone(nRes);
  2828 
  2828 
  2829     //-- 2. open it for write
  2829     //-- 2. open it for write
  2830     RFile file;
  2830     RFile file;
  2831     nRes = file.Open(TheFs, KFile, EFileWrite);
  2831     nRes = file.Open(TheFs, KFile, EFileWrite);
  2832     test(nRes == KErrNone);
  2832     test_KErrNone(nRes);
  2833 
  2833 
  2834     //-- 3. write a couple of bytes there. This must cause 'Archive' attribute set
  2834     //-- 3. write a couple of bytes there. This must cause 'Archive' attribute set
  2835     nRes = file.Write(0, _L8("a"));
  2835     nRes = file.Write(0, _L8("a"));
  2836     test(nRes == KErrNone);
  2836     test_KErrNone(nRes);
  2837     nRes = file.Write(10, _L8("b"));
  2837     nRes = file.Write(10, _L8("b"));
  2838     test(nRes == KErrNone);
  2838     test_KErrNone(nRes);
  2839 
  2839 
  2840     nRes = TheFs.Entry(KFile, entry);
  2840     nRes = TheFs.Entry(KFile, entry);
  2841     test(nRes == KErrNone);
  2841     test_KErrNone(nRes);
  2842 
  2842 
  2843     test(entry.IsArchive());  //-- 'A' attribute must be set.
  2843     test(entry.IsArchive());  //-- 'A' attribute must be set.
  2844 
  2844 
  2845     //-- the file cache (if present) is dirty now. Dirty data timer starts to tick.
  2845     //-- the file cache (if present) is dirty now. Dirty data timer starts to tick.
  2846     //-- 4. set new file attributes (w/o 'A') and creation time
  2846     //-- 4. set new file attributes (w/o 'A') and creation time
  2847     const TUint newAtt = KEntryAttSystem ;
  2847     const TUint newAtt = KEntryAttSystem ;
  2848     nRes = file.SetAtt(newAtt, ~newAtt & KEntryAttMaskSupported);
  2848     nRes = file.SetAtt(newAtt, ~newAtt & KEntryAttMaskSupported);
  2849     test(nRes == KErrNone);
  2849     test_KErrNone(nRes);
  2850 
  2850 
  2851     TTime newTime;
  2851     TTime newTime;
  2852     nRes = newTime.Set(_L("19970310:101809.000000"));
  2852     nRes = newTime.Set(_L("19970310:101809.000000"));
  2853     test(nRes == KErrNone);
  2853     test_KErrNone(nRes);
  2854     nRes = file.SetModified(newTime);
  2854     nRes = file.SetModified(newTime);
  2855     test(nRes == KErrNone);
  2855     test_KErrNone(nRes);
  2856 
  2856 
  2857     //-- 5. wait 5 seconds. file server shall flush dirty data during this period.
  2857     //-- 5. wait 5 seconds. file server shall flush dirty data during this period.
  2858     User::After(5*K1Sec);
  2858     User::After(5*K1Sec);
  2859 
  2859 
  2860     //-- 6. check that attributes haven't chanded because of flush
  2860     //-- 6. check that attributes haven't chanded because of flush
  2861     nRes = file.Flush(); //-- this will flush attributes to the media
  2861     nRes = file.Flush(); //-- this will flush attributes to the media
  2862     test(nRes == KErrNone);
  2862     test_KErrNone(nRes);
  2863 
  2863 
  2864     nRes = TheFs.Entry(KFile, entry);
  2864     nRes = TheFs.Entry(KFile, entry);
  2865     test(nRes == KErrNone);
  2865     test_KErrNone(nRes);
  2866 
  2866 
  2867     test(entry.iAtt == newAtt);
  2867     test(entry.iAtt == newAtt);
  2868     test(entry.iModified.DateTime().Year() == 1997);
  2868     test(entry.iModified.DateTime().Year() == 1997);
  2869     test(entry.iModified.DateTime().Month() == 3);
  2869     test(entry.iModified.DateTime().Month() == 3);
  2870     test(entry.iModified.DateTime().Day() == 10);
  2870     test(entry.iModified.DateTime().Day() == 10);
  2871 
  2871 
  2872     //-- 7. write some data and ensure that 'A' attribute is set now and 'modified' time updated
  2872     //-- 7. write some data and ensure that 'A' attribute is set now and 'modified' time updated
  2873     nRes = file.Write(12, _L8("c"));
  2873     nRes = file.Write(12, _L8("c"));
  2874     test(nRes == KErrNone);
  2874     test_KErrNone(nRes);
  2875 
  2875 
  2876     file.Close(); //-- this will flush attributes to the media
  2876     file.Close(); //-- this will flush attributes to the media
  2877 
  2877 
  2878     nRes = TheFs.Entry(KFile, entry);
  2878     nRes = TheFs.Entry(KFile, entry);
  2879     test(nRes == KErrNone);
  2879     test_KErrNone(nRes);
  2880     test(entry.iAtt == (newAtt | KEntryAttArchive));
  2880     test(entry.iAtt == (newAtt | KEntryAttArchive));
  2881     test(entry.iModified.DateTime().Year() != 1997);
  2881     test(entry.iModified.DateTime().Year() != 1997);
  2882 
  2882 
  2883 
  2883 
  2884 
  2884 
  2903     TInt nRes;
  2903     TInt nRes;
  2904 
  2904 
  2905     //-- check disk space, it shall be > 4G
  2905     //-- check disk space, it shall be > 4G
  2906     TVolumeInfo volInfo;
  2906     TVolumeInfo volInfo;
  2907     nRes = TheFs.Volume(volInfo, gDriveNum);
  2907     nRes = TheFs.Volume(volInfo, gDriveNum);
  2908     test(nRes == KErrNone);
  2908     test_KErrNone(nRes);
  2909 
  2909 
  2910     const TUint32 KMaxFAT32FileSize = 0xFFFFFFFF; // 4GB-1
  2910     const TUint32 KMaxFAT32FileSize = 0xFFFFFFFF; // 4GB-1
  2911 
  2911 
  2912     if(volInfo.iFree <= KMaxFAT32FileSize)
  2912     if(volInfo.iFree <= KMaxFAT32FileSize)
  2913     {
  2913     {
  2921 
  2921 
  2922     //-- 1. create 4GB-1 file
  2922     //-- 1. create 4GB-1 file
  2923     //-- this file has enabled write caching by default
  2923     //-- this file has enabled write caching by default
  2924     test.Printf(_L("creating maximal length file, size = 0x%x\n"),KMaxFAT32FileSize);
  2924     test.Printf(_L("creating maximal length file, size = 0x%x\n"),KMaxFAT32FileSize);
  2925     nRes = file64.Replace(TheFs, KFileName, EFileWrite);
  2925     nRes = file64.Replace(TheFs, KFileName, EFileWrite);
  2926     test(nRes == KErrNone);
  2926     test_KErrNone(nRes);
  2927 
  2927 
  2928     const TInt64 fileSize = KMaxFAT32FileSize;
  2928     const TInt64 fileSize = KMaxFAT32FileSize;
  2929 
  2929 
  2930     nRes = file64.SetSize(fileSize);
  2930     nRes = file64.SetSize(fileSize);
  2931     test(nRes == KErrNone);
  2931     test_KErrNone(nRes);
  2932 
  2932 
  2933     test.Printf(_L("seeking to the file end...\n"));
  2933     test.Printf(_L("seeking to the file end...\n"));
  2934     TInt64 filePos = 0;
  2934     TInt64 filePos = 0;
  2935     nRes = file64.Seek(ESeekEnd, filePos);
  2935     nRes = file64.Seek(ESeekEnd, filePos);
  2936     test(nRes == KErrNone);
  2936     test_KErrNone(nRes);
  2937 
  2937 
  2938 
  2938 
  2939     test.Printf(_L("test writing to the last bytes of the file (rel pos addressing) \n"));
  2939     test.Printf(_L("test writing to the last bytes of the file (rel pos addressing) \n"));
  2940 
  2940 
  2941     //-- 1. writing using relative position
  2941     //-- 1. writing using relative position
  2942     filePos = -1;
  2942     filePos = -1;
  2943     nRes = file64.Seek(ESeekEnd, filePos);
  2943     nRes = file64.Seek(ESeekEnd, filePos);
  2944     test(nRes == KErrNone);
  2944     test_KErrNone(nRes);
  2945     test(filePos == fileSize-1);
  2945     test(filePos == fileSize-1);
  2946 
  2946 
  2947     nRes = file64.Write(_L8("z")); //-- write 1 byte a pos 0xFFFFFFFE, this is the last allowed position of the FAT32 file
  2947     nRes = file64.Write(_L8("z")); //-- write 1 byte a pos 0xFFFFFFFE, this is the last allowed position of the FAT32 file
  2948     test(nRes == KErrNone);
  2948     test_KErrNone(nRes);
  2949 
  2949 
  2950     nRes = file64.Write(_L8("x")); //-- write 1 byte a pos 0xFFFFFFFF, beyond the max. allowed file size, this shall fail
  2950     nRes = file64.Write(_L8("x")); //-- write 1 byte a pos 0xFFFFFFFF, beyond the max. allowed file size, this shall fail
  2951     test(nRes == KErrNotSupported);
  2951     test_Value(nRes, nRes == KErrNotSupported);
  2952 
  2952 
  2953     nRes = file64.Flush();
  2953     nRes = file64.Flush();
  2954     test(nRes == KErrNone);
  2954     test_KErrNone(nRes);
  2955 
  2955 
  2956     //-- 1.1 check the result by reading data using rel. pos
  2956     //-- 1.1 check the result by reading data using rel. pos
  2957     filePos = -1;
  2957     filePos = -1;
  2958     nRes = file64.Seek(ESeekEnd, filePos);
  2958     nRes = file64.Seek(ESeekEnd, filePos);
  2959     test(nRes == KErrNone);
  2959     test_KErrNone(nRes);
  2960     test(filePos == fileSize-1);
  2960     test(filePos == fileSize-1);
  2961 
  2961 
  2962     test.Printf(_L("reading 1 byte at pos: 0x%x\n"), filePos);
  2962     test.Printf(_L("reading 1 byte at pos: 0x%x\n"), filePos);
  2963     nRes = file64.Read(buf, 1); //-- read 1 byte a pos 0xFFFFFFFE, this is the last allowed position of the FAT32 file
  2963     nRes = file64.Read(buf, 1); //-- read 1 byte a pos 0xFFFFFFFE, this is the last allowed position of the FAT32 file
  2964     test(nRes == KErrNone);
  2964     test_KErrNone(nRes);
  2965     test(buf.Length() == 1 && buf[0]=='z');
  2965     test(buf.Length() == 1 && buf[0]=='z');
  2966 
  2966 
  2967     nRes = file64.Read(buf, 1); //-- read 1 byte a pos 0xFFFFFFFF, beyond the max. allowed file size, this shall fail
  2967     nRes = file64.Read(buf, 1); //-- read 1 byte a pos 0xFFFFFFFF, beyond the max. allowed file size, this shall fail
  2968     test(nRes == KErrNone);
  2968     test_KErrNone(nRes);
  2969     test(buf.Length() == 0);
  2969     test(buf.Length() == 0);
  2970 
  2970 
  2971     file64.Close();
  2971     file64.Close();
  2972 
  2972 
  2973     test.Printf(_L("test writing to the last bytes of the file (absolute pos addressing) \n"));
  2973     test.Printf(_L("test writing to the last bytes of the file (absolute pos addressing) \n"));
  2974     //-- 2. writing using absolute position
  2974     //-- 2. writing using absolute position
  2975     nRes = file64.Open(TheFs, KFileName, EFileWrite);
  2975     nRes = file64.Open(TheFs, KFileName, EFileWrite);
  2976     test(nRes == KErrNone);
  2976     test_KErrNone(nRes);
  2977 
  2977 
  2978     filePos = fileSize-1;
  2978     filePos = fileSize-1;
  2979 
  2979 
  2980     nRes = file64.Write(filePos-2, _L8("0"), 1); //-- write 1 byte a pos 0xFFFFFFFC
  2980     nRes = file64.Write(filePos-2, _L8("0"), 1); //-- write 1 byte a pos 0xFFFFFFFC
  2981     test(nRes == KErrNone);
  2981     test_KErrNone(nRes);
  2982 
  2982 
  2983     nRes = file64.Write(filePos, _L8("a"), 1);   //-- write 1 byte a pos 0xFFFFFFFE, this is the last allowed position of the FAT32 file
  2983     nRes = file64.Write(filePos, _L8("a"), 1);   //-- write 1 byte a pos 0xFFFFFFFE, this is the last allowed position of the FAT32 file
  2984     test(nRes == KErrNone);
  2984     test_KErrNone(nRes);
  2985 
  2985 
  2986     nRes = file64.Write(filePos+1, _L8("b"), 1); //-- write 1 byte a pos 0xFFFFFFFF, beyond the max. allowed file size, this shall fail
  2986     nRes = file64.Write(filePos+1, _L8("b"), 1); //-- write 1 byte a pos 0xFFFFFFFF, beyond the max. allowed file size, this shall fail
  2987     test(nRes == KErrNotSupported);
  2987     test_Value(nRes, nRes == KErrNotSupported);
  2988 
  2988 
  2989     nRes = file64.Flush();
  2989     nRes = file64.Flush();
  2990     test(nRes == KErrNone);
  2990     test_KErrNone(nRes);
  2991 
  2991 
  2992     //-- 1.1 check the result by reading data absolute rel. position
  2992     //-- 1.1 check the result by reading data absolute rel. position
  2993 
  2993 
  2994     nRes = file64.Read(filePos-2, buf, 1); //-- read 1 byte a pos 0xFFFFFFFD
  2994     nRes = file64.Read(filePos-2, buf, 1); //-- read 1 byte a pos 0xFFFFFFFD
  2995     test(nRes == KErrNone);
  2995     test_KErrNone(nRes);
  2996     test(buf.Length() == 1 && buf[0]=='0');
  2996     test(buf.Length() == 1 && buf[0]=='0');
  2997 
  2997 
  2998     nRes = file64.Read(filePos, buf, 1);   //-- read 1 byte a pos 0xFFFFFFFE, this is the last allowed position of the FAT32 file
  2998     nRes = file64.Read(filePos, buf, 1);   //-- read 1 byte a pos 0xFFFFFFFE, this is the last allowed position of the FAT32 file
  2999     test(nRes == KErrNone);
  2999     test_KErrNone(nRes);
  3000     test(buf.Length() == 1 && buf[0]=='a');
  3000     test(buf.Length() == 1 && buf[0]=='a');
  3001 
  3001 
  3002     nRes = file64.Read(filePos+1, buf, 1);  //-- read 1 byte a pos 0xFFFFFFFF, beyond the max. allowed file size
  3002     nRes = file64.Read(filePos+1, buf, 1);  //-- read 1 byte a pos 0xFFFFFFFF, beyond the max. allowed file size
  3003     test(nRes == KErrNone);
  3003     test_KErrNone(nRes);
  3004     test(buf.Length() == 0);
  3004     test(buf.Length() == 0);
  3005 
  3005 
  3006     nRes = file64.Read(filePos+2, buf, 1); //buf.Len must be 0
  3006     nRes = file64.Read(filePos+2, buf, 1); //buf.Len must be 0
  3007     test(nRes == KErrNone);
  3007     test_KErrNone(nRes);
  3008     test(buf.Length() == 0);
  3008     test(buf.Length() == 0);
  3009 
  3009 
  3010     file64.Close();
  3010     file64.Close();
  3011 
  3011 
  3012     test.Printf(_L("deleting the huge file.\n"));
  3012     test.Printf(_L("deleting the huge file.\n"));
  3013     nRes = TheFs.Delete(KFileName);
  3013     nRes = TheFs.Delete(KFileName);
  3014     test(nRes == KErrNone);
  3014     test_KErrNone(nRes);
  3015 
  3015 
  3016 #else
  3016 #else
  3017 
  3017 
  3018     test.Printf(_L("RFile64 is not supported! Skipping.\n"));
  3018     test.Printf(_L("RFile64 is not supported! Skipping.\n"));
  3019 
  3019 
  3029 
  3029 
  3030     //-- set up console output
  3030     //-- set up console output
  3031     F32_Test_Utils::SetConsole(test.Console());
  3031     F32_Test_Utils::SetConsole(test.Console());
  3032 
  3032 
  3033     TInt nRes=TheFs.CharToDrive(gDriveToTest, gDriveNum);
  3033     TInt nRes=TheFs.CharToDrive(gDriveToTest, gDriveNum);
  3034     test(nRes==KErrNone);
  3034     test_KErrNone(nRes);
  3035     
  3035     
  3036     PrintDrvInfo(TheFs, gDriveNum);
  3036     PrintDrvInfo(TheFs, gDriveNum);
  3037 
  3037 
  3038     //-- FAT Supports short file names
  3038     //-- FAT Supports short file names
  3039     if(Is_Fat(TheFs, gDriveNum))
  3039     if(Is_Fat(TheFs, gDriveNum))
  3042     if(Is_Win32(TheFs, gDriveNum)) 
  3042     if(Is_Win32(TheFs, gDriveNum)) 
  3043     {//-- find out if this is NTFS and if it supports short names (this feature can be switched OFF)
  3043     {//-- find out if this is NTFS and if it supports short names (this feature can be switched OFF)
  3044         
  3044         
  3045         _LIT(KLongFN, "\\this is a long file name");
  3045         _LIT(KLongFN, "\\this is a long file name");
  3046         nRes = CreateEmptyFile(TheFs, KLongFN, 10);   
  3046         nRes = CreateEmptyFile(TheFs, KLongFN, 10);   
  3047         test(nRes==KErrNone);
  3047         test_KErrNone(nRes);
  3048 
  3048 
  3049 	    TBuf<12> shortName;
  3049 	    TBuf<12> shortName;
  3050 	    nRes = TheFs.GetShortName(KLongFN, shortName);
  3050 	    nRes = TheFs.GetShortName(KLongFN, shortName);
  3051 	    gShortFileNamesSupported = (nRes == KErrNone);
  3051 	    gShortFileNamesSupported = (nRes == KErrNone);
  3052         
  3052         
  3053         nRes = TheFs.Delete(KLongFN);
  3053         nRes = TheFs.Delete(KLongFN);
  3054         test(nRes==KErrNone);
  3054         test_KErrNone(nRes);
  3055 
  3055 
  3056         DeleteTestDirectory();
  3056         DeleteTestDirectory();
  3057     }
  3057     }
  3058     else
  3058     else
  3059     {
  3059     {
  3060         nRes = FormatDrive(TheFs, gDriveNum, ETrue);
  3060         nRes = FormatDrive(TheFs, gDriveNum, ETrue);
  3061         test(nRes==KErrNone);
  3061         test_KErrNone(nRes);
  3062     }
  3062     }
  3063 
  3063 
  3064 	CreateTestDirectory(_L("\\F32-TST\\TFILE\\"));
  3064 	CreateTestDirectory(_L("\\F32-TST\\TFILE\\"));
  3065 
  3065 
  3066 	testFileRename();
  3066 	testFileRename();