48 KErrAccessDenied to the write operation but EFat returns |
48 KErrAccessDenied to the write operation but EFat returns |
49 KErrNone... |
49 KErrNone... |
50 |
50 |
51 RFile f1; |
51 RFile f1; |
52 TInt r=f1.Open(TheFs,_L("TESTER"),EFileRead|EFileShareAny); |
52 TInt r=f1.Open(TheFs,_L("TESTER"),EFileRead|EFileShareAny); |
53 test_KErrNone(r); |
53 test(r==KErrNone); |
54 RFile f2; |
54 RFile f2; |
55 r=f2.Open(TheFs,_L("TESTER"),EFileWrite|EFileShareAny); |
55 r=f2.Open(TheFs,_L("TESTER"),EFileWrite|EFileShareAny); |
56 test_KErrNone(r); |
56 test(r==KErrNone); |
57 |
57 |
58 r=f2.Write(_L("0")); |
58 r=f2.Write(_L("0")); |
59 test.Printf(_L("returned %d"),r); |
59 test.Printf(_L("returned %d"),r); |
60 |
60 |
61 f1.Close(); |
61 f1.Close(); |
62 f2.Close(); |
62 f2.Close(); |
63 |
63 |
64 r=TheFs.Delete(_L("TESTER")); |
64 r=TheFs.Delete(_L("TESTER")); |
65 test_KErrNone(r); |
65 test(r==KErrNone); |
66 */ |
66 */ |
67 |
67 |
68 RFile f1; |
68 RFile f1; |
69 TInt r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive); |
69 TInt r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive); |
70 test_KErrNone(r); |
70 test(r==KErrNone); |
71 RFile f2; |
71 RFile f2; |
72 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive); |
72 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive); |
73 test_Value(r, r == KErrInUse); |
73 test(r==KErrInUse); |
74 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
74 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
75 test_Value(r, r == KErrInUse); |
75 test(r==KErrInUse); |
76 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny); |
76 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny); |
77 test_Value(r, r == KErrInUse); |
77 test(r==KErrInUse); |
78 f1.Close(); |
78 f1.Close(); |
79 r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileWrite|EFileShareExclusive); |
79 r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileWrite|EFileShareExclusive); |
80 test_KErrNone(r); |
80 test(r==KErrNone); |
81 f1.Close(); |
81 f1.Close(); |
82 |
82 |
83 test.Next(_L("Test readers only sharing")); |
83 test.Next(_L("Test readers only sharing")); |
84 r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileWrite|EFileShareReadersOnly); |
84 r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileWrite|EFileShareReadersOnly); |
85 test_Value(r, r == KErrArgument); |
85 test(r==KErrArgument); |
86 r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
86 r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
87 test_KErrNone(r); |
87 test(r==KErrNone); |
88 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive); |
88 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive); |
89 test_Value(r, r == KErrInUse); |
89 test(r==KErrInUse); |
90 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny); |
90 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny); |
91 test_Value(r, r == KErrInUse); |
91 test(r==KErrInUse); |
92 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileWrite|EFileShareReadersOnly); |
92 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileWrite|EFileShareReadersOnly); |
93 test_Value(r, r == KErrArgument); |
93 test(r==KErrArgument); |
94 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
94 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
95 test_KErrNone(r); |
95 test(r==KErrNone); |
96 f1.Close(); |
96 f1.Close(); |
97 f2.Close(); |
97 f2.Close(); |
98 |
98 |
99 test.Next(_L("Test any sharing")); |
99 test.Next(_L("Test any sharing")); |
100 r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileWrite|EFileShareAny); |
100 r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileWrite|EFileShareAny); |
101 test_KErrNone(r); |
101 test(r==KErrNone); |
102 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive); |
102 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive); |
103 test_Value(r, r == KErrInUse); |
103 test(r==KErrInUse); |
104 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
104 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
105 test_Value(r, r == KErrInUse); |
105 test(r==KErrInUse); |
106 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny); |
106 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny); |
107 test_KErrNone(r); |
107 test(r==KErrNone); |
108 f1.Close(); |
108 f1.Close(); |
109 f2.Close(); |
109 f2.Close(); |
110 |
110 |
111 test.End(); |
111 test.End(); |
112 } |
112 } |
119 |
119 |
120 test.Start(_L("Test change mode")); |
120 test.Start(_L("Test change mode")); |
121 RFile f1; |
121 RFile f1; |
122 RFile f2; |
122 RFile f2; |
123 TInt r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive); |
123 TInt r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive); |
124 test_KErrNone(r); // Opened exclusive |
124 test(r==KErrNone); // Opened exclusive |
125 r=f1.ChangeMode(EFileShareReadersOnly); |
125 r=f1.ChangeMode(EFileShareReadersOnly); |
126 test_KErrNone(r); // Change to readers only |
126 test(r==KErrNone); // Change to readers only |
127 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
127 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
128 test_KErrNone(r); // Open as reader |
128 test(r==KErrNone); // Open as reader |
129 r=f1.ChangeMode(EFileShareExclusive); |
129 r=f1.ChangeMode(EFileShareExclusive); |
130 test_Value(r, r == KErrAccessDenied); // Change back to exclusive fails |
130 test(r==KErrAccessDenied); // Change back to exclusive fails |
131 r=f2.ChangeMode(EFileShareExclusive); |
131 r=f2.ChangeMode(EFileShareExclusive); |
132 test_Value(r, r == KErrAccessDenied); // Change to exclusive fails |
132 test(r==KErrAccessDenied); // Change to exclusive fails |
133 f1.Close(); // Close other reader |
133 f1.Close(); // Close other reader |
134 r=f2.ChangeMode(EFileShareExclusive); |
134 r=f2.ChangeMode(EFileShareExclusive); |
135 test_KErrNone(r); // Change to exclusive succeeds. |
135 test(r==KErrNone); // Change to exclusive succeeds. |
136 f2.Close(); |
136 f2.Close(); |
137 |
137 |
138 r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
138 r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
139 test_KErrNone(r); // Opened readers only |
139 test(r==KErrNone); // Opened readers only |
140 r=f1.ChangeMode(EFileShareExclusive); |
140 r=f1.ChangeMode(EFileShareExclusive); |
141 test_KErrNone(r); // Change to exclusive |
141 test(r==KErrNone); // Change to exclusive |
142 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
142 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
143 test_Value(r, r == KErrInUse); // Open as reader fails |
143 test(r==KErrInUse); // Open as reader fails |
144 r=f1.ChangeMode(EFileShareReadersOnly); |
144 r=f1.ChangeMode(EFileShareReadersOnly); |
145 test_KErrNone(r); // Change to readers only |
145 test(r==KErrNone); // Change to readers only |
146 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
146 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
147 test_KErrNone(r); // Open as reader |
147 test(r==KErrNone); // Open as reader |
148 r=f1.ChangeMode(EFileShareExclusive); |
148 r=f1.ChangeMode(EFileShareExclusive); |
149 test_Value(r, r == KErrAccessDenied); // Change back to exclusive fails |
149 test(r==KErrAccessDenied); // Change back to exclusive fails |
150 r=f2.ChangeMode(EFileShareExclusive); |
150 r=f2.ChangeMode(EFileShareExclusive); |
151 test_Value(r, r == KErrAccessDenied); // Change to exclusive fails |
151 test(r==KErrAccessDenied); // Change to exclusive fails |
152 f1.Close(); // Close other reader |
152 f1.Close(); // Close other reader |
153 r=f2.ChangeMode(EFileShareExclusive); |
153 r=f2.ChangeMode(EFileShareExclusive); |
154 test_KErrNone(r); // Change to exclusive succeeds. |
154 test(r==KErrNone); // Change to exclusive succeeds. |
155 f2.Close(); |
155 f2.Close(); |
156 |
156 |
157 r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileWrite|EFileShareExclusive); |
157 r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileWrite|EFileShareExclusive); |
158 test_KErrNone(r); // Opened exclusive for writing |
158 test(r==KErrNone); // Opened exclusive for writing |
159 r=f1.ChangeMode(EFileShareReadersOnly); |
159 r=f1.ChangeMode(EFileShareReadersOnly); |
160 test_Value(r, r == KErrAccessDenied); // Change to readers fails |
160 test(r==KErrAccessDenied); // Change to readers fails |
161 r=f1.ChangeMode(EFileShareExclusive); |
161 r=f1.ChangeMode(EFileShareExclusive); |
162 test_KErrNone(r); // No change ok |
162 test(r==KErrNone); // No change ok |
163 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
163 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
164 test_Value(r, r == KErrInUse); // Open as reader fails |
164 test(r==KErrInUse); // Open as reader fails |
165 f1.Close(); |
165 f1.Close(); |
166 |
166 |
167 r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny); |
167 r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny); |
168 test_KErrNone(r); // Opened share any |
168 test(r==KErrNone); // Opened share any |
169 r=f1.ChangeMode(EFileShareExclusive); |
169 r=f1.ChangeMode(EFileShareExclusive); |
170 test_Value(r, r == KErrAccessDenied); // Change to exclusive fails |
170 test(r==KErrAccessDenied); // Change to exclusive fails |
171 r=f1.ChangeMode(EFileShareReadersOnly); |
171 r=f1.ChangeMode(EFileShareReadersOnly); |
172 test_Value(r, r == KErrAccessDenied); // Change to readers only fails |
172 test(r==KErrAccessDenied); // Change to readers only fails |
173 f1.Close(); |
173 f1.Close(); |
174 |
174 |
175 r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive); |
175 r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive); |
176 test_KErrNone(r); // Opened exclusive |
176 test(r==KErrNone); // Opened exclusive |
177 r=f1.ChangeMode(EFileShareAny); |
177 r=f1.ChangeMode(EFileShareAny); |
178 test_Value(r, r == KErrArgument); // Change to share any fails KErrArgument |
178 test(r==KErrArgument); // Change to share any fails KErrArgument |
179 r=f1.ChangeMode((TFileMode)42); |
179 r=f1.ChangeMode((TFileMode)42); |
180 test_Value(r, r == KErrArgument); // Change to random value fails |
180 test(r==KErrArgument); // Change to random value fails |
181 f1.Close(); |
181 f1.Close(); |
182 test.End(); |
182 test.End(); |
183 } |
183 } |
184 |
184 |
185 static void testReadFile() |
185 static void testReadFile() |
300 TFileName fn = _L("File.File"); |
285 TFileName fn = _L("File.File"); |
301 TBuf8<16> testData=_L8("testData"); |
286 TBuf8<16> testData=_L8("testData"); |
302 |
287 |
303 // write test 1 |
288 // write test 1 |
304 TInt r=file.Replace(TheFs,fn,EFileStreamText); |
289 TInt r=file.Replace(TheFs,fn,EFileStreamText); |
305 test_KErrNone(r); |
290 test(r==KErrNone); |
306 |
291 |
307 test.Next(_L("Write file")); |
292 test.Next(_L("Write file")); |
308 |
293 |
309 r=file.Write(testData); |
294 r=file.Write(testData); |
310 test_KErrNone(r); |
295 test(r==KErrNone); |
311 |
296 |
312 file.Close(); |
297 file.Close(); |
313 |
298 |
314 // test write modes |
299 // test write modes |
315 // test writing with EFileRead |
300 // test writing with EFileRead |
316 r=file.Open(TheFs,fn,EFileStreamText|EFileRead); |
301 r=file.Open(TheFs,fn,EFileStreamText|EFileRead); |
317 test_KErrNone(r); |
302 test(r==KErrNone); |
318 |
303 |
319 test.Next(_L("Write file")); |
304 test.Next(_L("Write file")); |
320 r=file.Write(testData); |
305 r=file.Write(testData); |
321 test_Value(r, r == KErrAccessDenied); |
306 test(r==KErrAccessDenied); |
322 file.Close(); |
307 file.Close(); |
323 |
308 |
324 // test writing with EFileWrite |
309 // test writing with EFileWrite |
325 r=file.Open(TheFs,fn,EFileStreamText|EFileWrite); |
310 r=file.Open(TheFs,fn,EFileStreamText|EFileWrite); |
326 test_KErrNone(r); |
311 test(r==KErrNone); |
327 |
312 |
328 test.Next(_L("Write file")); |
313 test.Next(_L("Write file")); |
329 r=file.Write(testData); |
314 r=file.Write(testData); |
330 test_KErrNone(r); |
315 test(r==KErrNone); |
331 file.Close(); |
316 file.Close(); |
332 |
317 |
333 // test writing with share mode EFileShareExclusive |
318 // test writing with share mode EFileShareExclusive |
334 r=file.Open(TheFs,fn,EFileStreamText|EFileWrite|EFileShareExclusive); |
319 r=file.Open(TheFs,fn,EFileStreamText|EFileWrite|EFileShareExclusive); |
335 test_KErrNone(r); |
320 test(r==KErrNone); |
336 |
321 |
337 test.Next(_L("Write file")); |
322 test.Next(_L("Write file")); |
338 r=file.Write(testData); |
323 r=file.Write(testData); |
339 test_KErrNone(r); |
324 test(r==KErrNone); |
340 file.Close(); |
325 file.Close(); |
341 |
326 |
342 // test writing with share mode EFileShareReadersOnly (fails with KErrArgument) |
327 // test writing with share mode EFileShareReadersOnly (fails with KErrArgument) |
343 r=file.Open(TheFs,fn,EFileStreamText|EFileWrite|EFileShareReadersOnly); |
328 r=file.Open(TheFs,fn,EFileStreamText|EFileWrite|EFileShareReadersOnly); |
344 test_Value(r, r == KErrArgument); |
329 test(r==KErrArgument); |
345 |
330 |
346 // test writing with share mode EFileShareReadersOrWriters |
331 // test writing with share mode EFileShareReadersOrWriters |
347 r=file.Open(TheFs,fn,EFileStreamText|EFileWrite|EFileShareReadersOrWriters); |
332 r=file.Open(TheFs,fn,EFileStreamText|EFileWrite|EFileShareReadersOrWriters); |
348 test_KErrNone(r); |
333 test(r==KErrNone); |
349 |
334 |
350 test.Next(_L("Write file")); |
335 test.Next(_L("Write file")); |
351 r=file.Write(testData); |
336 r=file.Write(testData); |
352 test_KErrNone(r); |
337 test(r==KErrNone); |
353 file.Close(); |
338 file.Close(); |
354 |
339 |
355 // test writing with share mode EFileShareAny |
340 // test writing with share mode EFileShareAny |
356 r=file.Open(TheFs,fn,EFileStreamText|EFileWrite|EFileShareAny); |
341 r=file.Open(TheFs,fn,EFileStreamText|EFileWrite|EFileShareAny); |
357 test_KErrNone(r); |
342 test(r==KErrNone); |
358 |
343 |
359 test.Next(_L("Write file")); |
344 test.Next(_L("Write file")); |
360 r=file.Write(testData); |
345 r=file.Write(testData); |
361 test_KErrNone(r); |
346 test(r==KErrNone); |
362 file.Close(); |
347 file.Close(); |
363 |
348 |
364 // tidy up |
349 // tidy up |
365 r=TheFs.Delete(fn); |
350 r=TheFs.Delete(fn); |
366 test_KErrNone(r); |
351 test(r==KErrNone); |
367 |
352 |
368 test.End(); |
353 test.End(); |
369 } |
354 } |
370 |
355 |
371 static void CopyFileToTestDirectory() |
356 static void CopyFileToTestDirectory() |
509 trecord[1].Set((TUint8*)tmpTextrecord.Ptr(),tmpTextrecord.Length()*sizeof(TText)); |
494 trecord[1].Set((TUint8*)tmpTextrecord.Ptr(),tmpTextrecord.Length()*sizeof(TText)); |
510 |
495 |
511 for (i=0;i<2;i++) |
496 for (i=0;i<2;i++) |
512 { |
497 { |
513 r=f.Write(trecord[i]); |
498 r=f.Write(trecord[i]); |
514 test_KErrNone(r); |
499 test(r==KErrNone); |
515 } |
500 } |
516 textFile.Set(f); |
501 textFile.Set(f); |
517 textFile.Seek(ESeekStart); |
502 textFile.Seek(ESeekStart); |
518 for(i=0;i<2;i++) |
503 for(i=0;i<2;i++) |
519 { |
504 { |
520 r=textFile.Read(recBuf); |
505 r=textFile.Read(recBuf); |
521 test_KErrNone(r); |
506 test(r==KErrNone); |
522 test(recBuf==record[0]); |
507 test(recBuf==record[0]); |
523 } |
508 } |
524 r=textFile.Read(recBuf); |
509 r=textFile.Read(recBuf); |
525 test_Value(r, r == KErrEof); |
510 test(r==KErrEof); |
526 test(recBuf.Length()==0); |
511 test(recBuf.Length()==0); |
527 f.Close(); |
512 f.Close(); |
528 |
513 |
529 test.Next(_L("Read into a buffer < recordSize")); |
514 test.Next(_L("Read into a buffer < recordSize")); |
530 TBuf<8> smallBuf; |
515 TBuf<8> smallBuf; |
531 r=f.Open(TheFs,_L("TEXTFILE.txt"),0); |
516 r=f.Open(TheFs,_L("TEXTFILE.txt"),0); |
532 test_KErrNone(r); |
517 test(r==KErrNone); |
533 textFile.Set(f); |
518 textFile.Set(f); |
534 for(i=0;i<2;i++) |
519 for(i=0;i<2;i++) |
535 { |
520 { |
536 r=textFile.Read(smallBuf); |
521 r=textFile.Read(smallBuf); |
537 test_Value(r, r == KErrTooBig); |
522 test(r==KErrTooBig); |
538 test(smallBuf==_L("12345678")); |
523 test(smallBuf==_L("12345678")); |
539 } |
524 } |
540 f.Close(); |
525 f.Close(); |
541 |
526 |
542 test.Next(_L("Nasty cases: 1) \\r \\n split over buffer boundary")); |
527 test.Next(_L("Nasty cases: 1) \\r \\n split over buffer boundary")); |
543 r=f.Replace(TheFs,_L("TEXTFILE.txt"),0); |
528 r=f.Replace(TheFs,_L("TEXTFILE.txt"),0); |
544 test_KErrNone(r); |
529 test(r==KErrNone); |
545 HBufC* largeRecord=HBufC::NewL(600); |
530 HBufC* largeRecord=HBufC::NewL(600); |
546 largeRecord->Des().SetLength(250); |
531 largeRecord->Des().SetLength(250); |
547 largeRecord->Des().Fill('A'); |
532 largeRecord->Des().Fill('A'); |
548 largeRecord->Des()[249]='\n'; |
533 largeRecord->Des()[249]='\n'; |
549 TPtrC8 bufPtr; |
534 TPtrC8 bufPtr; |
550 bufPtr.Set((TUint8*)largeRecord->Ptr(),largeRecord->Size()); // Size() returns length in bytes |
535 bufPtr.Set((TUint8*)largeRecord->Ptr(),largeRecord->Size()); // Size() returns length in bytes |
551 r=f.Write(bufPtr); |
536 r=f.Write(bufPtr); |
552 test_KErrNone(r); |
537 test(r==KErrNone); |
553 TBuf<16> boundaryBuf=_L("12345\r\n"); |
538 TBuf<16> boundaryBuf=_L("12345\r\n"); |
554 bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size()); |
539 bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size()); |
555 r=f.Write(bufPtr); |
540 r=f.Write(bufPtr); |
556 test_KErrNone(r); |
541 test(r==KErrNone); |
557 r=f.Write(trecord[0]); |
542 r=f.Write(trecord[0]); |
558 test_KErrNone(r); |
543 test(r==KErrNone); |
559 |
544 |
560 textFile.Set(f); |
545 textFile.Set(f); |
561 textFile.Seek(ESeekStart); |
546 textFile.Seek(ESeekStart); |
562 r=textFile.Read(recBuf); |
547 r=textFile.Read(recBuf); |
563 test_Value(r, r == KErrTooBig); |
548 test(r==KErrTooBig); |
564 test(recBuf==_L("AAAAAAAAAAAAAAAA")); |
549 test(recBuf==_L("AAAAAAAAAAAAAAAA")); |
565 r=textFile.Read(recBuf); |
550 r=textFile.Read(recBuf); |
566 test_KErrNone(r); |
551 test(r==KErrNone); |
567 test(recBuf==_L("12345")); |
552 test(recBuf==_L("12345")); |
568 r=textFile.Read(recBuf); |
553 r=textFile.Read(recBuf); |
569 test_KErrNone(r); |
554 test(r==KErrNone); |
570 test(recBuf==record[0]); |
555 test(recBuf==record[0]); |
571 f.Close(); |
556 f.Close(); |
572 |
557 |
573 test.Next(_L("Nasty cases: 2) \\r on buffer boundary")); |
558 test.Next(_L("Nasty cases: 2) \\r on buffer boundary")); |
574 r=f.Replace(TheFs,_L("TEXTFILE.txt"),0); |
559 r=f.Replace(TheFs,_L("TEXTFILE.txt"),0); |
575 test_KErrNone(r); |
560 test(r==KErrNone); |
576 largeRecord->Des().SetLength(250); |
561 largeRecord->Des().SetLength(250); |
577 largeRecord->Des().Fill('A'); |
562 largeRecord->Des().Fill('A'); |
578 largeRecord->Des()[249]='\n'; |
563 largeRecord->Des()[249]='\n'; |
579 bufPtr.Set((TUint8*)largeRecord->Ptr(),largeRecord->Size()); |
564 bufPtr.Set((TUint8*)largeRecord->Ptr(),largeRecord->Size()); |
580 r=f.Write(bufPtr); |
565 r=f.Write(bufPtr); |
581 test_KErrNone(r); |
566 test(r==KErrNone); |
582 boundaryBuf=_L("12345\rxyz\n"); |
567 boundaryBuf=_L("12345\rxyz\n"); |
583 bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size()); |
568 bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size()); |
584 r=f.Write(bufPtr); |
569 r=f.Write(bufPtr); |
585 test_KErrNone(r); |
570 test(r==KErrNone); |
586 r=f.Write(trecord[0]); |
571 r=f.Write(trecord[0]); |
587 test_KErrNone(r); |
572 test(r==KErrNone); |
588 |
573 |
589 textFile.Set(f); |
574 textFile.Set(f); |
590 textFile.Seek(ESeekStart); |
575 textFile.Seek(ESeekStart); |
591 r=textFile.Read(recBuf); |
576 r=textFile.Read(recBuf); |
592 test_Value(r, r == KErrTooBig); |
577 test(r==KErrTooBig); |
593 test(recBuf==_L("AAAAAAAAAAAAAAAA")); |
578 test(recBuf==_L("AAAAAAAAAAAAAAAA")); |
594 r=textFile.Read(recBuf); |
579 r=textFile.Read(recBuf); |
595 test_KErrNone(r); |
580 test(r==KErrNone); |
596 test(recBuf==_L("12345\rxyz")); |
581 test(recBuf==_L("12345\rxyz")); |
597 r=textFile.Read(recBuf); |
582 r=textFile.Read(recBuf); |
598 test_KErrNone(r); |
583 test(r==KErrNone); |
599 test(recBuf==record[0]); |
584 test(recBuf==record[0]); |
600 f.Close(); |
585 f.Close(); |
601 |
586 |
602 test.Next(_L("Nasty cases: 3) record size > buffer size")); |
587 test.Next(_L("Nasty cases: 3) record size > buffer size")); |
603 r=f.Replace(TheFs,_L("TEXTFILE.txt"),0); |
588 r=f.Replace(TheFs,_L("TEXTFILE.txt"),0); |
604 test_KErrNone(r); |
589 test(r==KErrNone); |
605 largeRecord->Des().SetLength(600); |
590 largeRecord->Des().SetLength(600); |
606 largeRecord->Des().Fill('Z'); |
591 largeRecord->Des().Fill('Z'); |
607 largeRecord->Des()[511]='\r'; |
592 largeRecord->Des()[511]='\r'; |
608 largeRecord->Des()[599]='\n'; |
593 largeRecord->Des()[599]='\n'; |
609 bufPtr.Set((TUint8*)largeRecord->Ptr(),largeRecord->Size()); |
594 bufPtr.Set((TUint8*)largeRecord->Ptr(),largeRecord->Size()); |
610 r=f.Write(bufPtr); |
595 r=f.Write(bufPtr); |
611 test_KErrNone(r); |
596 test(r==KErrNone); |
612 boundaryBuf=_L("12345\rxyz\n"); |
597 boundaryBuf=_L("12345\rxyz\n"); |
613 bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size()); |
598 bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size()); |
614 r=f.Write(bufPtr); |
599 r=f.Write(bufPtr); |
615 test_KErrNone(r); |
600 test(r==KErrNone); |
616 r=f.Write(trecord[0]); |
601 r=f.Write(trecord[0]); |
617 test_KErrNone(r); |
602 test(r==KErrNone); |
618 |
603 |
619 textFile.Set(f); |
604 textFile.Set(f); |
620 textFile.Seek(ESeekStart); |
605 textFile.Seek(ESeekStart); |
621 r=textFile.Read(recBuf); |
606 r=textFile.Read(recBuf); |
622 test_Value(r, r == KErrTooBig); |
607 test(r==KErrTooBig); |
623 test(recBuf==_L("ZZZZZZZZZZZZZZZZ")); |
608 test(recBuf==_L("ZZZZZZZZZZZZZZZZ")); |
624 r=textFile.Read(recBuf); |
609 r=textFile.Read(recBuf); |
625 test_KErrNone(r); |
610 test(r==KErrNone); |
626 test(recBuf==_L("12345\rxyz")); |
611 test(recBuf==_L("12345\rxyz")); |
627 r=textFile.Read(recBuf); |
612 r=textFile.Read(recBuf); |
628 test_KErrNone(r); |
613 test(r==KErrNone); |
629 test(recBuf==record[0]); |
614 test(recBuf==record[0]); |
630 |
615 |
631 TBuf<601> bigBuf; |
616 TBuf<601> bigBuf; |
632 TPtrC largePtr((TText*)largeRecord->Ptr(),(largeRecord->Length()-1)); |
617 TPtrC largePtr((TText*)largeRecord->Ptr(),(largeRecord->Length()-1)); |
633 textFile.Seek(ESeekStart); |
618 textFile.Seek(ESeekStart); |
634 r=textFile.Read(bigBuf); |
619 r=textFile.Read(bigBuf); |
635 test_KErrNone(r); |
620 test(r==KErrNone); |
636 test(bigBuf==largePtr); |
621 test(bigBuf==largePtr); |
637 r=textFile.Read(recBuf); |
622 r=textFile.Read(recBuf); |
638 test_KErrNone(r); |
623 test(r==KErrNone); |
639 test(recBuf==_L("12345\rxyz")); |
624 test(recBuf==_L("12345\rxyz")); |
640 r=textFile.Read(recBuf); |
625 r=textFile.Read(recBuf); |
641 test_KErrNone(r); |
626 test(r==KErrNone); |
642 test(recBuf==record[0]); |
627 test(recBuf==record[0]); |
643 f.Close(); |
628 f.Close(); |
644 |
629 |
645 User::Free(largeRecord); |
630 User::Free(largeRecord); |
646 } |
631 } |
652 { |
637 { |
653 |
638 |
654 test.Next(_L("Test FileText last record has no terminator")); |
639 test.Next(_L("Test FileText last record has no terminator")); |
655 RFile f; |
640 RFile f; |
656 TInt r=f.Replace(TheFs,_L("TextFile"),0); |
641 TInt r=f.Replace(TheFs,_L("TextFile"),0); |
657 test_KErrNone(r); |
642 test(r==KErrNone); |
658 TPtrC8 bufPtr; |
643 TPtrC8 bufPtr; |
659 TBuf<16>boundaryBuf=_L("Record1\n"); |
644 TBuf<16>boundaryBuf=_L("Record1\n"); |
660 bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size()); |
645 bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size()); |
661 r=f.Write(bufPtr); |
646 r=f.Write(bufPtr); |
662 test_KErrNone(r); |
647 test(r==KErrNone); |
663 boundaryBuf=_L("Record2\n"); |
648 boundaryBuf=_L("Record2\n"); |
664 bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size()); |
649 bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size()); |
665 r=f.Write(bufPtr); |
650 r=f.Write(bufPtr); |
666 test_KErrNone(r); |
651 test(r==KErrNone); |
667 boundaryBuf=_L("Record3\n"); |
652 boundaryBuf=_L("Record3\n"); |
668 bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size()); |
653 bufPtr.Set((TUint8*)boundaryBuf.Ptr(),boundaryBuf.Size()); |
669 r=f.Write(bufPtr); |
654 r=f.Write(bufPtr); |
670 test_KErrNone(r); |
655 test(r==KErrNone); |
671 |
656 |
672 TFileText fText; |
657 TFileText fText; |
673 fText.Set(f); |
658 fText.Set(f); |
674 r=fText.Seek(ESeekStart); |
659 r=fText.Seek(ESeekStart); |
675 test_KErrNone(r); |
660 test(r==KErrNone); |
676 TBuf<32> recBuf; |
661 TBuf<32> recBuf; |
677 r=fText.Read(recBuf); |
662 r=fText.Read(recBuf); |
678 test_KErrNone(r); |
663 test(r==KErrNone); |
679 test(recBuf.MatchF(_L("record1"))!=KErrNotFound); |
664 test(recBuf.MatchF(_L("record1"))!=KErrNotFound); |
680 r=fText.Read(recBuf); |
665 r=fText.Read(recBuf); |
681 test_KErrNone(r); |
666 test(r==KErrNone); |
682 test(recBuf.MatchF(_L("record2"))!=KErrNotFound); |
667 test(recBuf.MatchF(_L("record2"))!=KErrNotFound); |
683 r=fText.Read(recBuf); |
668 r=fText.Read(recBuf); |
684 test_KErrNone(r); |
669 test(r==KErrNone); |
685 test(recBuf.MatchF(_L("record3"))!=KErrNotFound); |
670 test(recBuf.MatchF(_L("record3"))!=KErrNotFound); |
686 r=fText.Read(recBuf); |
671 r=fText.Read(recBuf); |
687 test_Value(r, r == KErrEof); |
672 test(r==KErrEof); |
688 test(recBuf.Length()==0); |
673 test(recBuf.Length()==0); |
689 f.Close(); |
674 f.Close(); |
690 |
675 |
691 TBuf<0x100> bigBuf(0x100); |
676 TBuf<0x100> bigBuf(0x100); |
692 bigBuf.Fill('A'); |
677 bigBuf.Fill('A'); |
693 r=f.Replace(TheFs,_L("TextFile"),0); |
678 r=f.Replace(TheFs,_L("TextFile"),0); |
694 test_KErrNone(r); |
679 test(r==KErrNone); |
695 |
680 |
696 bufPtr.Set((TUint8*)bigBuf.Ptr(),bigBuf.Size()); |
681 bufPtr.Set((TUint8*)bigBuf.Ptr(),bigBuf.Size()); |
697 r=f.Write(bufPtr); |
682 r=f.Write(bufPtr); |
698 test_KErrNone(r); |
683 test(r==KErrNone); |
699 |
684 |
700 fText.Set(f); |
685 fText.Set(f); |
701 r=fText.Seek(ESeekStart); |
686 r=fText.Seek(ESeekStart); |
702 test_KErrNone(r); |
687 test(r==KErrNone); |
703 bigBuf.SetLength(0); |
688 bigBuf.SetLength(0); |
704 r=fText.Read(bigBuf); |
689 r=fText.Read(bigBuf); |
705 test.Printf(_L("fText.Read returns %d\n"),r); |
690 test.Printf(_L("fText.Read returns %d\n"),r); |
706 test_KErrNone(r); |
691 test(r==KErrNone); |
707 test.Printf(_L("BigBuf.Length()==%d\n"),bigBuf.Length()); |
692 test.Printf(_L("BigBuf.Length()==%d\n"),bigBuf.Length()); |
708 test(bigBuf.Length()==0x100); |
693 test(bigBuf.Length()==0x100); |
709 r=fText.Read(bigBuf); |
694 r=fText.Read(bigBuf); |
710 test_Value(r, r == KErrEof); |
695 test(r==KErrEof); |
711 test(bigBuf.Length()==0); |
696 test(bigBuf.Length()==0); |
712 f.Close(); |
697 f.Close(); |
713 } |
698 } |
714 |
699 |
715 static void testFileNames() |
700 static void testFileNames() |
752 { |
737 { |
753 |
738 |
754 test.Next(_L("Archive att is set after creation")); |
739 test.Next(_L("Archive att is set after creation")); |
755 RFile f; |
740 RFile f; |
756 TInt r=TheFs.Delete(_L("FILEATT.ARC")); |
741 TInt r=TheFs.Delete(_L("FILEATT.ARC")); |
757 test_Value(r, r == KErrNone || r==KErrNotFound); |
742 test(r==KErrNone || r==KErrNotFound); |
758 r=f.Create(TheFs,_L("FILEATT.ARC"),EFileRead); |
743 r=f.Create(TheFs,_L("FILEATT.ARC"),EFileRead); |
759 test_KErrNone(r); |
744 test(r==KErrNone); |
760 TUint atts; |
745 TUint atts; |
761 r=f.Att(atts); |
746 r=f.Att(atts); |
762 test_KErrNone(r); |
747 test(r==KErrNone); |
763 test((atts&ATT_MASK)==KEntryAttArchive); |
748 test((atts&ATT_MASK)==KEntryAttArchive); |
764 TEntry fileAtt; |
749 TEntry fileAtt; |
765 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
750 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
766 test_KErrNone(r); |
751 test(r==KErrNone); |
767 test(fileAtt.iAtt==KEntryAttArchive); |
752 test(fileAtt.iAtt==KEntryAttArchive); |
768 f.Close(); |
753 f.Close(); |
769 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
754 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
770 test_KErrNone(r); |
755 test(r==KErrNone); |
771 test(fileAtt.iAtt==KEntryAttArchive); |
756 test(fileAtt.iAtt==KEntryAttArchive); |
772 |
757 |
773 test.Next(_L("Archive att is set after a write")); |
758 test.Next(_L("Archive att is set after a write")); |
774 TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttArchive); |
759 TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttArchive); |
775 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
760 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
776 test_KErrNone(r); |
761 test(r==KErrNone); |
777 test(fileAtt.iAtt==0); |
762 test(fileAtt.iAtt==0); |
778 r=f.Open(TheFs,_L("FILEATT.ARC"),EFileWrite); |
763 r=f.Open(TheFs,_L("FILEATT.ARC"),EFileWrite); |
779 test_KErrNone(r); |
764 test(r==KErrNone); |
780 r=f.Write(_L8("Hello World")); |
765 r=f.Write(_L8("Hello World")); |
781 test_KErrNone(r); |
766 test(r==KErrNone); |
782 r=f.Att(atts); |
767 r=f.Att(atts); |
783 test_KErrNone(r); |
768 test(r==KErrNone); |
784 test((atts&ATT_MASK)==KEntryAttArchive); |
769 test((atts&ATT_MASK)==KEntryAttArchive); |
785 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
770 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
786 test_KErrNone(r); |
771 test(r==KErrNone); |
787 test(fileAtt.iAtt==KEntryAttArchive); |
772 test(fileAtt.iAtt==KEntryAttArchive); |
788 f.Close(); |
773 f.Close(); |
789 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
774 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
790 test_KErrNone(r); |
775 test(r==KErrNone); |
791 test(fileAtt.iAtt==KEntryAttArchive); |
776 test(fileAtt.iAtt==KEntryAttArchive); |
792 |
777 |
793 test.Next(_L("Archive att is set after setsize")); |
778 test.Next(_L("Archive att is set after setsize")); |
794 TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttArchive); |
779 TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttArchive); |
795 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
780 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
796 test_KErrNone(r); |
781 test(r==KErrNone); |
797 test(fileAtt.iAtt==0); |
782 test(fileAtt.iAtt==0); |
798 r=f.Open(TheFs,_L("FILEATT.ARC"),EFileWrite); |
783 r=f.Open(TheFs,_L("FILEATT.ARC"),EFileWrite); |
799 test_KErrNone(r); |
784 test(r==KErrNone); |
800 r=f.SetSize(447); |
785 r=f.SetSize(447); |
801 test_KErrNone(r); |
786 test(r==KErrNone); |
802 TInt size; |
787 TInt size; |
803 r=f.Size(size); |
788 r=f.Size(size); |
804 test_KErrNone(r); |
789 test(r==KErrNone); |
805 test(size==447); |
790 test(size==447); |
806 r=f.Att(atts); |
791 r=f.Att(atts); |
807 test_KErrNone(r); |
792 test(r==KErrNone); |
808 test((atts&ATT_MASK)==KEntryAttArchive); |
793 test((atts&ATT_MASK)==KEntryAttArchive); |
809 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
794 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
810 test_KErrNone(r); |
795 test(r==KErrNone); |
811 test(fileAtt.iAtt==KEntryAttArchive); |
796 test(fileAtt.iAtt==KEntryAttArchive); |
812 f.Close(); |
797 f.Close(); |
813 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
798 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
814 test_KErrNone(r); |
799 test(r==KErrNone); |
815 test(fileAtt.iAtt==KEntryAttArchive); |
800 test(fileAtt.iAtt==KEntryAttArchive); |
816 |
801 |
817 test.Next(_L("Archive att is not set after open")); |
802 test.Next(_L("Archive att is not set after open")); |
818 r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttArchive); |
803 r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttArchive); |
819 test_KErrNone(r); |
804 test(r==KErrNone); |
820 r=f.Open(TheFs,_L("FILEATT.ARC"),EFileWrite); |
805 r=f.Open(TheFs,_L("FILEATT.ARC"),EFileWrite); |
821 test_KErrNone(r); |
806 test(r==KErrNone); |
822 r=f.Att(atts); |
807 r=f.Att(atts); |
823 test_KErrNone(r); |
808 test(r==KErrNone); |
824 test((atts&ATT_MASK)==0); |
809 test((atts&ATT_MASK)==0); |
825 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
810 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
826 test_KErrNone(r); |
811 test(r==KErrNone); |
827 test(fileAtt.iAtt==0); |
812 test(fileAtt.iAtt==0); |
828 f.Close(); |
813 f.Close(); |
829 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
814 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
830 test_KErrNone(r); |
815 test(r==KErrNone); |
831 test(fileAtt.iAtt==0); |
816 test(fileAtt.iAtt==0); |
832 |
817 |
833 test.Next(_L("Archive att is not set after a read")); |
818 test.Next(_L("Archive att is not set after a read")); |
834 TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttArchive); |
819 TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttArchive); |
835 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
820 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
836 test_KErrNone(r); |
821 test(r==KErrNone); |
837 test(fileAtt.iAtt==0); |
822 test(fileAtt.iAtt==0); |
838 r=f.Open(TheFs,_L("FILEATT.ARC"),EFileWrite); |
823 r=f.Open(TheFs,_L("FILEATT.ARC"),EFileWrite); |
839 test_KErrNone(r); |
824 test(r==KErrNone); |
840 TBuf8<16> readBuf; |
825 TBuf8<16> readBuf; |
841 r=f.Read(readBuf); |
826 r=f.Read(readBuf); |
842 test_KErrNone(r); |
827 test(r==KErrNone); |
843 r=f.Att(atts); |
828 r=f.Att(atts); |
844 test_KErrNone(r); |
829 test(r==KErrNone); |
845 test((atts&ATT_MASK)==0); |
830 test((atts&ATT_MASK)==0); |
846 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
831 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
847 test_KErrNone(r); |
832 test(r==KErrNone); |
848 test(fileAtt.iAtt==0); |
833 test(fileAtt.iAtt==0); |
849 f.Close(); |
834 f.Close(); |
850 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
835 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
851 test_KErrNone(r); |
836 test(r==KErrNone); |
852 test(fileAtt.iAtt==0); |
837 test(fileAtt.iAtt==0); |
853 |
838 |
854 test.Next(_L("Archive att is set after replace")); |
839 test.Next(_L("Archive att is set after replace")); |
855 r=f.Replace(TheFs,_L("FILEATT.ARC"),EFileWrite); |
840 r=f.Replace(TheFs,_L("FILEATT.ARC"),EFileWrite); |
856 test_KErrNone(r); |
841 test(r==KErrNone); |
857 r=f.Att(atts); |
842 r=f.Att(atts); |
858 test_KErrNone(r); |
843 test(r==KErrNone); |
859 test((atts&ATT_MASK)==KEntryAttArchive); |
844 test((atts&ATT_MASK)==KEntryAttArchive); |
860 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
845 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
861 test_KErrNone(r); |
846 test(r==KErrNone); |
862 test(fileAtt.iAtt==KEntryAttArchive); |
847 test(fileAtt.iAtt==KEntryAttArchive); |
863 f.Close(); |
848 f.Close(); |
864 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
849 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
865 test_KErrNone(r); |
850 test(r==KErrNone); |
866 test(fileAtt.iAtt==KEntryAttArchive); |
851 test(fileAtt.iAtt==KEntryAttArchive); |
867 |
852 |
868 test.Next(_L("Read only bit can be unset")); |
853 test.Next(_L("Read only bit can be unset")); |
869 r=TheFs.SetAtt(_L("FILEATT.ARC"),KEntryAttReadOnly|KEntryAttHidden,0); |
854 r=TheFs.SetAtt(_L("FILEATT.ARC"),KEntryAttReadOnly|KEntryAttHidden,0); |
870 test_KErrNone(r); |
855 test(r==KErrNone); |
871 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
856 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
872 test_KErrNone(r); |
857 test(r==KErrNone); |
873 test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttHidden|KEntryAttArchive)); |
858 test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttHidden|KEntryAttArchive)); |
874 |
859 |
875 r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttHidden); |
860 r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttHidden); |
876 test_KErrNone(r); |
861 test(r==KErrNone); |
877 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
862 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
878 test_KErrNone(r); |
863 test(r==KErrNone); |
879 test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttArchive)); |
864 test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttArchive)); |
880 |
865 |
881 r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttReadOnly); |
866 r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttReadOnly); |
882 test_KErrNone(r); |
867 test(r==KErrNone); |
883 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
868 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
884 test_KErrNone(r); |
869 test(r==KErrNone); |
885 test(fileAtt.iAtt==(KEntryAttArchive)); |
870 test(fileAtt.iAtt==(KEntryAttArchive)); |
886 |
871 |
887 r=TheFs.SetAtt(_L("FILEATT.ARC"),KEntryAttReadOnly|KEntryAttHidden,0); |
872 r=TheFs.SetAtt(_L("FILEATT.ARC"),KEntryAttReadOnly|KEntryAttHidden,0); |
888 test_KErrNone(r); |
873 test(r==KErrNone); |
889 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
874 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
890 test_KErrNone(r); |
875 test(r==KErrNone); |
891 test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttHidden|KEntryAttArchive)); |
876 test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttHidden|KEntryAttArchive)); |
892 |
877 |
893 r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttReadOnly); |
878 r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttReadOnly); |
894 test_KErrNone(r); |
879 test(r==KErrNone); |
895 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
880 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
896 test_KErrNone(r); |
881 test(r==KErrNone); |
897 test(fileAtt.iAtt==(KEntryAttHidden|KEntryAttArchive)); |
882 test(fileAtt.iAtt==(KEntryAttHidden|KEntryAttArchive)); |
898 |
883 |
899 r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttHidden); |
884 r=TheFs.SetAtt(_L("FILEATT.ARC"),0,KEntryAttHidden); |
900 test_KErrNone(r); |
885 test(r==KErrNone); |
901 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
886 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
902 test_KErrNone(r); |
887 test(r==KErrNone); |
903 test(fileAtt.iAtt==(KEntryAttArchive)); |
888 test(fileAtt.iAtt==(KEntryAttArchive)); |
904 |
889 |
905 TTime time(0); |
890 TTime time(0); |
906 r=TheFs.SetEntry(_L("FILEATT.ARC"),time,KEntryAttReadOnly|KEntryAttHidden,0); |
891 r=TheFs.SetEntry(_L("FILEATT.ARC"),time,KEntryAttReadOnly|KEntryAttHidden,0); |
907 test_KErrNone(r); |
892 test(r==KErrNone); |
908 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
893 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
909 test_KErrNone(r); |
894 test(r==KErrNone); |
910 test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttHidden|KEntryAttArchive)); |
895 test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttHidden|KEntryAttArchive)); |
911 |
896 |
912 r=TheFs.SetEntry(_L("FILEATT.ARC"),time,0,KEntryAttHidden); |
897 r=TheFs.SetEntry(_L("FILEATT.ARC"),time,0,KEntryAttHidden); |
913 test_KErrNone(r); |
898 test(r==KErrNone); |
914 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
899 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
915 test_KErrNone(r); |
900 test(r==KErrNone); |
916 test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttArchive)); |
901 test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttArchive)); |
917 |
902 |
918 r=TheFs.SetEntry(_L("FILEATT.ARC"),time,0,KEntryAttReadOnly); |
903 r=TheFs.SetEntry(_L("FILEATT.ARC"),time,0,KEntryAttReadOnly); |
919 test_KErrNone(r); |
904 test(r==KErrNone); |
920 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
905 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
921 test_KErrNone(r); |
906 test(r==KErrNone); |
922 test(fileAtt.iAtt==(KEntryAttArchive)); |
907 test(fileAtt.iAtt==(KEntryAttArchive)); |
923 |
908 |
924 r=TheFs.SetEntry(_L("FILEATT.ARC"),time,KEntryAttReadOnly|KEntryAttHidden,0); |
909 r=TheFs.SetEntry(_L("FILEATT.ARC"),time,KEntryAttReadOnly|KEntryAttHidden,0); |
925 test_KErrNone(r); |
910 test(r==KErrNone); |
926 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
911 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
927 test_KErrNone(r); |
912 test(r==KErrNone); |
928 test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttHidden|KEntryAttArchive)); |
913 test(fileAtt.iAtt==(KEntryAttReadOnly|KEntryAttHidden|KEntryAttArchive)); |
929 |
914 |
930 r=TheFs.SetEntry(_L("FILEATT.ARC"),time,0,KEntryAttReadOnly); |
915 r=TheFs.SetEntry(_L("FILEATT.ARC"),time,0,KEntryAttReadOnly); |
931 test_KErrNone(r); |
916 test(r==KErrNone); |
932 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
917 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
933 test_KErrNone(r); |
918 test(r==KErrNone); |
934 test(fileAtt.iAtt==(KEntryAttHidden|KEntryAttArchive)); |
919 test(fileAtt.iAtt==(KEntryAttHidden|KEntryAttArchive)); |
935 |
920 |
936 r=TheFs.SetEntry(_L("FILEATT.ARC"),time,0,KEntryAttHidden); |
921 r=TheFs.SetEntry(_L("FILEATT.ARC"),time,0,KEntryAttHidden); |
937 test_KErrNone(r); |
922 test(r==KErrNone); |
938 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
923 r=TheFs.Entry(_L("FILEATT.ARC"),fileAtt); |
939 test_KErrNone(r); |
924 test(r==KErrNone); |
940 test(fileAtt.iAtt==(KEntryAttArchive)); |
925 test(fileAtt.iAtt==(KEntryAttArchive)); |
941 |
926 |
942 test.Next(_L("Cashing the 'read-only' attribute")); |
927 test.Next(_L("Cashing the 'read-only' attribute")); |
943 const TDesC& fname = _L("TEST.RO"); |
928 const TDesC& fname = _L("TEST.RO"); |
944 |
929 |
945 // Test RO attribute after creating a file |
930 // Test RO attribute after creating a file |
946 r=f.Create(TheFs,fname,EFileWrite); |
931 r=f.Create(TheFs,fname,EFileWrite); |
947 test_KErrNone(r); |
932 test(r==KErrNone); |
948 r=f.SetAtt(KEntryAttReadOnly,0); |
933 r=f.SetAtt(KEntryAttReadOnly,0); |
949 test_KErrNone(r); |
934 test(r==KErrNone); |
950 r=f.Write(_L8("Hello World")); |
935 r=f.Write(_L8("Hello World")); |
951 test_KErrNone(r); // <-- here! |
936 test(r==KErrNone); // <-- here! |
952 f.Close(); |
937 f.Close(); |
953 |
938 |
954 // Test we can't open for write or delete a RO file |
939 // Test we can't open for write or delete a RO file |
955 r=f.Open(TheFs,fname,EFileWrite); |
940 r=f.Open(TheFs,fname,EFileWrite); |
956 test_Value(r, r == KErrAccessDenied); |
941 test(r==KErrAccessDenied); |
957 r=TheFs.Delete(fname); |
942 r=TheFs.Delete(fname); |
958 test_Value(r, r == KErrAccessDenied); |
943 test(r==KErrAccessDenied); |
959 |
944 |
960 // Tidy up and re-create test file |
945 // Tidy up and re-create test file |
961 r=TheFs.SetAtt(fname,0,KEntryAttReadOnly); |
946 r=TheFs.SetAtt(fname,0,KEntryAttReadOnly); |
962 test_KErrNone(r); |
947 test(r==KErrNone); |
963 r=TheFs.Delete(fname); |
948 r=TheFs.Delete(fname); |
964 test_KErrNone(r); |
949 test(r==KErrNone); |
965 r=f.Create(TheFs,fname,EFileWrite); |
950 r=f.Create(TheFs,fname,EFileWrite); |
966 test_KErrNone(r); |
951 test(r==KErrNone); |
967 f.Close(); |
952 f.Close(); |
968 |
953 |
969 // Test RO attribute after opening a file |
954 // Test RO attribute after opening a file |
970 r=f.Open(TheFs,fname,EFileWrite); |
955 r=f.Open(TheFs,fname,EFileWrite); |
971 test_KErrNone(r); |
956 test(r==KErrNone); |
972 r=f.SetAtt(KEntryAttReadOnly,0); |
957 r=f.SetAtt(KEntryAttReadOnly,0); |
973 test_KErrNone(r); |
958 test(r==KErrNone); |
974 r=f.Write(_L8("Hello World")); |
959 r=f.Write(_L8("Hello World")); |
975 test_KErrNone(r); |
960 test(r==KErrNone); |
976 f.Close(); |
961 f.Close(); |
977 |
962 |
978 |
963 |
979 test.Next(_L("Internal attribute can't be read")); |
964 test.Next(_L("Internal attribute can't be read")); |
980 |
965 |
1093 TFileName longName5; |
1078 TFileName longName5; |
1094 |
1079 |
1095 if (Is_Win32(TheFs, gDriveNum)) |
1080 if (Is_Win32(TheFs, gDriveNum)) |
1096 { |
1081 { |
1097 r=TheFs.GetLongName(_L("LONGFI~1.LON"),longName1); |
1082 r=TheFs.GetLongName(_L("LONGFI~1.LON"),longName1); |
1098 test_KErrNone(r); |
1083 test(r==KErrNone); |
1099 r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\LONGFI~1.LON"),longName2); |
1084 r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\LONGFI~1.LON"),longName2); |
1100 test_KErrNone(r); |
1085 test(r==KErrNone); |
1101 r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\BADCHA~1"),longName3); |
1086 r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\BADCHA~1"),longName3); |
1102 test_KErrNone(r); |
1087 test(r==KErrNone); |
1103 r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\GOODCHAR.TXT"),longName4); |
1088 r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\GOODCHAR.TXT"),longName4); |
1104 test_KErrNone(r); |
1089 test(r==KErrNone); |
1105 r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE~1"),longName5); |
1090 r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE~1"),longName5); |
1106 test_KErrNone(r); |
1091 test(r==KErrNone); |
1107 } |
1092 } |
1108 else if (!IsTestingLFFS()) |
1093 else if (!IsTestingLFFS()) |
1109 { |
1094 { |
1110 r=TheFs.GetLongName(_L("LONGFI~1.LON"),longName1); |
1095 r=TheFs.GetLongName(_L("LONGFI~1.LON"),longName1); |
1111 test_KErrNone(r); |
1096 test(r==KErrNone); |
1112 r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\LONGFI~1.LON"),longName2); |
1097 r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\LONGFI~1.LON"),longName2); |
1113 test_KErrNone(r); |
1098 test(r==KErrNone); |
1114 r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\BAD_CHAR"),longName3); |
1099 r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\BAD_CHAR"),longName3); |
1115 test_KErrNone(r); |
1100 test(r==KErrNone); |
1116 r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\GOODCHAR.TXT"),longName4); |
1101 r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\GOODCHAR.TXT"),longName4); |
1117 test_KErrNone(r); |
1102 test(r==KErrNone); |
1118 r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE~1"),longName5); |
1103 r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE~1"),longName5); |
1119 test_KErrNone(r); |
1104 test(r==KErrNone); |
1120 } |
1105 } |
1121 else |
1106 else |
1122 { |
1107 { |
1123 // LFFS longname tests |
1108 // LFFS longname tests |
1124 r=TheFs.GetLongName(shortName1,longName1); |
1109 r=TheFs.GetLongName(shortName1,longName1); |
1125 test_KErrNone(r); |
1110 test(r==KErrNone); |
1126 r=TheFs.SetSessionPath(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\")); |
1111 r=TheFs.SetSessionPath(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-DIRECTORY\\LASTDIR\\")); |
1127 test_KErrNone(r); |
1112 test(r==KErrNone); |
1128 r=TheFs.GetLongName(shortName2,longName2); |
1113 r=TheFs.GetLongName(shortName2,longName2); |
1129 test_KErrNone(r); |
1114 test(r==KErrNone); |
1130 r=TheFs.GetLongName(shortName3,longName3); |
1115 r=TheFs.GetLongName(shortName3,longName3); |
1131 test_KErrNone(r); |
1116 test(r==KErrNone); |
1132 r=TheFs.GetLongName(shortName4,longName4); |
1117 r=TheFs.GetLongName(shortName4,longName4); |
1133 test_KErrNone(r); |
1118 test(r==KErrNone); |
1134 r=TheFs.SetSessionPath(_L("\\F32-TST\\TFILE\\TOPLEVEL\\")); |
1119 r=TheFs.SetSessionPath(_L("\\F32-TST\\TFILE\\TOPLEVEL\\")); |
1135 test_KErrNone(r); |
1120 test(r==KErrNone); |
1136 r=TheFs.GetLongName(shortName5,longName5); |
1121 r=TheFs.GetLongName(shortName5,longName5); |
1137 test_KErrNone(r); |
1122 test(r==KErrNone); |
1138 r=TheFs.SetSessionPath(sessionPath); |
1123 r=TheFs.SetSessionPath(sessionPath); |
1139 test_KErrNone(r); |
1124 test(r==KErrNone); |
1140 } |
1125 } |
1141 |
1126 |
1142 test(longName1==_L("LONGFILENAME.LONGEXT")); |
1127 test(longName1==_L("LONGFILENAME.LONGEXT")); |
1143 test(longName2==_L("LONGFILENAME.LONGEXT")); |
1128 test(longName2==_L("LONGFILENAME.LONGEXT")); |
1144 test(longName3==_L("BAD CHAR")); |
1129 test(longName3==_L("BAD CHAR")); |
1145 test(longName4.FindF(_L("GOODCHAR.TXT"))>=0); |
1130 test(longName4.FindF(_L("GOODCHAR.TXT"))>=0); |
1146 test(longName5==_L("MIDDLE-DIRECTORY")); |
1131 test(longName5==_L("MIDDLE-DIRECTORY")); |
1147 |
1132 |
1148 r=TheFs.GetShortName(_L("XXX.YYY"),shortName1); |
1133 r=TheFs.GetShortName(_L("XXX.YYY"),shortName1); |
1149 test_Value(r, r == KErrNotFound); |
1134 test(r==KErrNotFound); |
1150 r=TheFs.GetShortName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-YROTCERID\\LASTDIR\\BAD-CHAR"),shortName1); |
1135 r=TheFs.GetShortName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-YROTCERID\\LASTDIR\\BAD-CHAR"),shortName1); |
1151 test_Value(r, r == KErrPathNotFound); |
1136 test(r==KErrPathNotFound); |
1152 r=TheFs.GetLongName(_L("XXX.YYY"),longName1); |
1137 r=TheFs.GetLongName(_L("XXX.YYY"),longName1); |
1153 test_Value(r, r == KErrNotFound); |
1138 test(r==KErrNotFound); |
1154 r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-YROTCERID\\LASTDIR\\BAD-CHAR"),longName1); |
1139 r=TheFs.GetLongName(_L("\\F32-TST\\TFILE\\TOPLEVEL\\MIDDLE-YROTCERID\\LASTDIR\\BAD-CHAR"),longName1); |
1155 test_Value(r, r == KErrPathNotFound); |
1140 test(r==KErrPathNotFound); |
1156 |
1141 |
1157 r=TheFs.Delete(_L("LONGFILENAME.LONGEXT")); |
1142 r=TheFs.Delete(_L("LONGFILENAME.LONGEXT")); |
1158 test_KErrNone(r); |
1143 test(r==KErrNone); |
1159 |
1144 |
1160 TEntry romEntry; |
1145 TEntry romEntry; |
1161 r=TheFs.Entry(_L("Z:\\System"),romEntry); |
1146 r=TheFs.Entry(_L("Z:\\System"),romEntry); |
1162 if (r==KErrNotReady) |
1147 if (r==KErrNotReady) |
1163 { |
1148 { |
1164 test.Printf(_L("ERROR: No rom filesystem present")); |
1149 test.Printf(_L("ERROR: No rom filesystem present")); |
1165 //test.Getch(); |
1150 //test.Getch(); |
1166 //return; |
1151 //return; |
1167 } |
1152 } |
1168 test_KErrNone(r); |
1153 test(r==KErrNone); |
1169 TBuf<64> romFileName=_L("Z:\\"); |
1154 TBuf<64> romFileName=_L("Z:\\"); |
1170 romFileName.Append(romEntry.iName); |
1155 romFileName.Append(romEntry.iName); |
1171 r=TheFs.GetShortName(romFileName,shortName1); |
1156 r=TheFs.GetShortName(romFileName,shortName1); |
1172 test_Value(r, r == KErrNotSupported); |
1157 test(r==KErrNotSupported); |
1173 r=TheFs.GetLongName(_L("Z:\\system"),longName1); |
1158 r=TheFs.GetLongName(_L("Z:\\system"),longName1); |
1174 test_Value(r, r == KErrNotSupported); |
1159 test(r==KErrNotSupported); |
1175 } |
1160 } |
1176 |
1161 |
1177 static void RmDir(const TDesC& aDirName) |
1162 static void RmDir(const TDesC& aDirName) |
1178 // |
1163 // |
1179 // Remove a directory |
1164 // Remove a directory |
1180 // |
1165 // |
1181 { |
1166 { |
1182 CFileMan* fMan=CFileMan::NewL(TheFs); |
1167 CFileMan* fMan=CFileMan::NewL(TheFs); |
1183 test(fMan!=NULL); |
1168 test(fMan!=NULL); |
1184 TInt r=TheFs.SessionPath(gSessionPath); |
1169 TInt r=TheFs.SessionPath(gSessionPath); |
1185 test_KErrNone(r); |
1170 test(r==KErrNone); |
1186 r=TheFs.CheckDisk(gSessionPath); |
1171 r=TheFs.CheckDisk(gSessionPath); |
1187 if (r!=KErrNone && r!=KErrNotSupported) |
1172 if (r!=KErrNone && r!=KErrNotSupported) |
1188 ReportCheckDiskFailure(r); |
1173 ReportCheckDiskFailure(r); |
1189 |
1174 |
1190 TFileName removeDirName = gSessionPath; |
1175 TFileName removeDirName = gSessionPath; |
1191 removeDirName.Append(aDirName); |
1176 removeDirName.Append(aDirName); |
1192 |
1177 |
1193 fMan->Attribs(removeDirName, 0, KEntryAttReadOnly, 0, CFileMan::ERecurse); |
1178 fMan->Attribs(removeDirName, 0, KEntryAttReadOnly, 0, CFileMan::ERecurse); |
1194 r=fMan->RmDir(removeDirName); |
1179 r=fMan->RmDir(removeDirName); |
1195 test_Value(r, r == KErrNone || r==KErrNotFound || r==KErrPathNotFound); |
1180 test(r==KErrNone || r==KErrNotFound || r==KErrPathNotFound); |
1196 |
1181 |
1197 delete fMan; |
1182 delete fMan; |
1198 } |
1183 } |
1199 //--------------------------------------------- |
1184 //--------------------------------------------- |
1200 //! @SYMTestCaseID PBASE-T_TFILE-0659 |
1185 //! @SYMTestCaseID PBASE-T_TFILE-0659 |
1309 |
1298 |
1310 test.Next(_L("Test opened files cannot be deleted")); |
1299 test.Next(_L("Test opened files cannot be deleted")); |
1311 RFile f; |
1300 RFile f; |
1312 f.Close(); |
1301 f.Close(); |
1313 TInt r=f.Replace(TheFs,_L("Open.File"),EFileWrite); |
1302 TInt r=f.Replace(TheFs,_L("Open.File"),EFileWrite); |
1314 test_KErrNone(r); |
1303 test(r==KErrNone); |
1315 r=TheFs.Delete(_L("OPEN.FILE")); |
1304 r=TheFs.Delete(_L("OPEN.FILE")); |
1316 test_Value(r, r == KErrInUse); |
1305 test(r==KErrInUse); |
1317 f.Close(); |
1306 f.Close(); |
1318 f.Close(); |
1307 f.Close(); |
1319 f.Close(); |
1308 f.Close(); |
1320 r=TheFs.Delete(_L("Open.FILe")); |
1309 r=TheFs.Delete(_L("Open.FILe")); |
1321 test_KErrNone(r); |
1310 test(r==KErrNone); |
1322 |
1311 |
1323 TFileName fileName; |
1312 TFileName fileName; |
1324 r=f.Temp(TheFs,_L(""),fileName,EFileWrite); |
1313 r=f.Temp(TheFs,_L(""),fileName,EFileWrite); |
1325 test_KErrNone(r); |
1314 test(r==KErrNone); |
1326 r=TheFs.Delete(fileName); |
1315 r=TheFs.Delete(fileName); |
1327 test_Value(r, r == KErrInUse); |
1316 test(r==KErrInUse); |
1328 f.Close(); |
1317 f.Close(); |
1329 r=TheFs.Delete(fileName); |
1318 r=TheFs.Delete(fileName); |
1330 test_KErrNone(r); |
1319 test(r==KErrNone); |
1331 |
1320 |
1332 MakeFile(_L("\\Documents\\TEstfile.txt")); |
1321 MakeFile(_L("\\Documents\\TEstfile.txt")); |
1333 r=f.Open(TheFs,_L("\\Documents\\TEstfile.txt"),EFileWrite); |
1322 r=f.Open(TheFs,_L("\\Documents\\TEstfile.txt"),EFileWrite); |
1334 test_KErrNone(r); |
1323 test(r==KErrNone); |
1335 r=TheFs.Delete(_L("\\Documents\\TEstfile.txt")); |
1324 r=TheFs.Delete(_L("\\Documents\\TEstfile.txt")); |
1336 test_Value(r, r == KErrInUse); |
1325 test(r==KErrInUse); |
1337 r=TheFs.Delete(_L("\\documents\\TEstfile.txt")); |
1326 r=TheFs.Delete(_L("\\documents\\TEstfile.txt")); |
1338 test_Value(r, r == KErrInUse); |
1327 test(r==KErrInUse); |
1339 r=TheFs.Delete(_L("\\Documents.\\TEstfile.txt")); |
1328 r=TheFs.Delete(_L("\\Documents.\\TEstfile.txt")); |
1340 test_Value(r, r == KErrBadName); |
1329 test(r==KErrBadName); |
1341 r=TheFs.Delete(_L("\\documents.\\TEstfile.txt")); |
1330 r=TheFs.Delete(_L("\\documents.\\TEstfile.txt")); |
1342 test_Value(r, r == KErrBadName); |
1331 test(r==KErrBadName); |
1343 r=TheFs.Delete(_L("\\Documents\\Testfile.txt")); |
1332 r=TheFs.Delete(_L("\\Documents\\Testfile.txt")); |
1344 test_Value(r, r == KErrInUse); |
1333 test(r==KErrInUse); |
1345 r=TheFs.Delete(_L("\\documents\\testfile.txt")); |
1334 r=TheFs.Delete(_L("\\documents\\testfile.txt")); |
1346 test_Value(r, r == KErrInUse); |
1335 test(r==KErrInUse); |
1347 r=TheFs.Delete(_L("\\Documents.\\TEstfile.TXT")); |
1336 r=TheFs.Delete(_L("\\Documents.\\TEstfile.TXT")); |
1348 test_Value(r, r == KErrBadName); |
1337 test(r==KErrBadName); |
1349 r=TheFs.Delete(_L("\\docUMENTS.\\TESTFILE.TXT")); |
1338 r=TheFs.Delete(_L("\\docUMENTS.\\TESTFILE.TXT")); |
1350 test_Value(r, r == KErrBadName); |
1339 test(r==KErrBadName); |
1351 f.Close(); |
1340 f.Close(); |
1352 r=TheFs.Delete(_L("\\Documents\\TEstfile.TXT")); |
1341 r=TheFs.Delete(_L("\\Documents\\TEstfile.TXT")); |
1353 test_KErrNone(r); |
1342 test(r==KErrNone); |
1354 |
1343 |
1355 MakeFile(_L("\\Documents\\Documents\\TEstfile.txt")); |
1344 MakeFile(_L("\\Documents\\Documents\\TEstfile.txt")); |
1356 r=f.Open(TheFs,_L("\\Documents\\Documents\\TEstfile.txt"),EFileWrite); |
1345 r=f.Open(TheFs,_L("\\Documents\\Documents\\TEstfile.txt"),EFileWrite); |
1357 test_KErrNone(r); |
1346 test(r==KErrNone); |
1358 r=TheFs.Delete(_L("\\Documents\\documents.\\TEstfile.txt")); |
1347 r=TheFs.Delete(_L("\\Documents\\documents.\\TEstfile.txt")); |
1359 test_Value(r, r == KErrBadName); |
1348 test(r==KErrBadName); |
1360 r=TheFs.Delete(_L("\\documents\\Documents.\\TEstfile.txt")); |
1349 r=TheFs.Delete(_L("\\documents\\Documents.\\TEstfile.txt")); |
1361 test_Value(r, r == KErrBadName); |
1350 test(r==KErrBadName); |
1362 r=TheFs.Delete(_L("\\Documents.\\documents\\TEstfile.txt")); |
1351 r=TheFs.Delete(_L("\\Documents.\\documents\\TEstfile.txt")); |
1363 test_Value(r, r == KErrBadName); |
1352 test(r==KErrBadName); |
1364 r=TheFs.Delete(_L("\\documents.\\Documents\\TEstfile.txt")); |
1353 r=TheFs.Delete(_L("\\documents.\\Documents\\TEstfile.txt")); |
1365 test_Value(r, r == KErrBadName); |
1354 test(r==KErrBadName); |
1366 r=TheFs.Delete(_L("\\Documents\\Documents\\Testfile.txt")); |
1355 r=TheFs.Delete(_L("\\Documents\\Documents\\Testfile.txt")); |
1367 test_Value(r, r == KErrInUse); |
1356 test(r==KErrInUse); |
1368 r=TheFs.Delete(_L("\\documents\\documents\\testfile.txt")); |
1357 r=TheFs.Delete(_L("\\documents\\documents\\testfile.txt")); |
1369 test_Value(r, r == KErrInUse); |
1358 test(r==KErrInUse); |
1370 r=TheFs.Delete(_L("\\Documents.\\Documents.\\TEstfile.TXT")); |
1359 r=TheFs.Delete(_L("\\Documents.\\Documents.\\TEstfile.TXT")); |
1371 test_Value(r, r == KErrBadName); |
1360 test(r==KErrBadName); |
1372 r=TheFs.Delete(_L("\\docUMENTS.\\docUMENTS.\\TESTFILE.TXT")); |
1361 r=TheFs.Delete(_L("\\docUMENTS.\\docUMENTS.\\TESTFILE.TXT")); |
1373 test_Value(r, r == KErrBadName); |
1362 test(r==KErrBadName); |
1374 |
1363 |
1375 |
1364 |
1376 r=TheFs.RmDir(_L("\\Documents\\")); |
1365 r=TheFs.RmDir(_L("\\Documents\\")); |
1377 test_Value(r, r == KErrInUse); |
1366 test(r==KErrInUse); |
1378 r=TheFs.RmDir(_L("\\documents\\")); |
1367 r=TheFs.RmDir(_L("\\documents\\")); |
1379 test_Value(r, r == KErrInUse); |
1368 test(r==KErrInUse); |
1380 r=TheFs.RmDir(_L("\\Documents.\\")); |
1369 r=TheFs.RmDir(_L("\\Documents.\\")); |
1381 test_Value(r, r == KErrBadName); |
1370 test(r==KErrBadName); |
1382 r=TheFs.RmDir(_L("\\documents.\\")); |
1371 r=TheFs.RmDir(_L("\\documents.\\")); |
1383 test_Value(r, r == KErrBadName); |
1372 test(r==KErrBadName); |
1384 r=TheFs.RmDir(_L("\\Documents\\documents\\")); |
1373 r=TheFs.RmDir(_L("\\Documents\\documents\\")); |
1385 test_Value(r, r == KErrInUse); |
1374 test(r==KErrInUse); |
1386 r=TheFs.RmDir(_L("\\documents\\documents.\\")); |
1375 r=TheFs.RmDir(_L("\\documents\\documents.\\")); |
1387 test_Value(r, r == KErrBadName); |
1376 test(r==KErrBadName); |
1388 r=TheFs.RmDir(_L("\\Documents.\\Documents\\")); |
1377 r=TheFs.RmDir(_L("\\Documents.\\Documents\\")); |
1389 test_Value(r, r == KErrBadName); |
1378 test(r==KErrBadName); |
1390 r=TheFs.RmDir(_L("\\documents.\\Documents.\\")); |
1379 r=TheFs.RmDir(_L("\\documents.\\Documents.\\")); |
1391 test_Value(r, r == KErrBadName); |
1380 test(r==KErrBadName); |
1392 r=TheFs.RmDir(_L("\\Documents\\TestFile.TXT")); |
1381 r=TheFs.RmDir(_L("\\Documents\\TestFile.TXT")); |
1393 test_Value(r, r == KErrInUse); |
1382 test(r==KErrInUse); |
1394 r=TheFs.RmDir(_L("\\documents\\TestFile")); |
1383 r=TheFs.RmDir(_L("\\documents\\TestFile")); |
1395 test_Value(r, r == KErrInUse); |
1384 test(r==KErrInUse); |
1396 r=TheFs.RmDir(_L("\\Documents.\\Testfile.")); |
1385 r=TheFs.RmDir(_L("\\Documents.\\Testfile.")); |
1397 test_Value(r, r == KErrBadName); |
1386 test(r==KErrBadName); |
1398 r=TheFs.RmDir(_L("\\documents.\\t")); |
1387 r=TheFs.RmDir(_L("\\documents.\\t")); |
1399 test_Value(r, r == KErrBadName); |
1388 test(r==KErrBadName); |
1400 f.Close(); |
1389 f.Close(); |
1401 r=TheFs.Delete(_L("\\Documents\\documents\\TEstfile.TXT")); |
1390 r=TheFs.Delete(_L("\\Documents\\documents\\TEstfile.TXT")); |
1402 test_KErrNone(r); |
1391 test(r==KErrNone); |
1403 r=TheFs.RmDir(_L("\\Documents\\documents.\\")); |
1392 r=TheFs.RmDir(_L("\\Documents\\documents.\\")); |
1404 test_Value(r, r == KErrBadName); |
1393 test(r==KErrBadName); |
1405 r=TheFs.RmDir(_L("\\Documents.\\")); |
1394 r=TheFs.RmDir(_L("\\Documents.\\")); |
1406 test_Value(r, r == KErrBadName); |
1395 test(r==KErrBadName); |
1407 } |
1396 } |
1408 |
1397 |
1409 static void testFileSeek() |
1398 static void testFileSeek() |
1410 // |
1399 // |
1411 // Test seeking |
1400 // Test seeking |
1412 // |
1401 // |
1413 { |
1402 { |
1414 test.Next(_L("Test file seek")); |
1403 test.Next(_L("Test file seek")); |
1415 RFile f; |
1404 RFile f; |
1416 TInt r=f.Open(TheFs,_L("T_File.cpp"),EFileWrite); |
1405 TInt r=f.Open(TheFs,_L("T_File.cpp"),EFileWrite); |
1417 test_KErrNone(r); |
1406 test(r==KErrNone); |
1418 |
1407 |
1419 TBuf8<20> text1;TInt pos1=0; |
1408 TBuf8<20> text1;TInt pos1=0; |
1420 TBuf8<20> text2;TInt pos2=510; |
1409 TBuf8<20> text2;TInt pos2=510; |
1421 TBuf8<20> text3;TInt pos3=900; |
1410 TBuf8<20> text3;TInt pos3=900; |
1422 TBuf8<20> text4;TInt pos4=2010; |
1411 TBuf8<20> text4;TInt pos4=2010; |
1423 TBuf8<20> text5;TInt pos5=4999; |
1412 TBuf8<20> text5;TInt pos5=4999; |
1424 |
1413 |
1425 r=f.Read(pos1,text1); |
1414 r=f.Read(pos1,text1); |
1426 test_KErrNone(r); |
1415 test(r==KErrNone); |
1427 r=f.Read(pos2,text2); |
1416 r=f.Read(pos2,text2); |
1428 test_KErrNone(r); |
1417 test(r==KErrNone); |
1429 r=f.Read(pos3,text3); |
1418 r=f.Read(pos3,text3); |
1430 test_KErrNone(r); |
1419 test(r==KErrNone); |
1431 r=f.Read(pos4,text4); |
1420 r=f.Read(pos4,text4); |
1432 test_KErrNone(r); |
1421 test(r==KErrNone); |
1433 r=f.Read(pos5,text5); |
1422 r=f.Read(pos5,text5); |
1434 test_KErrNone(r); |
1423 test(r==KErrNone); |
1435 |
1424 |
1436 TBuf8<20> testBuf; |
1425 TBuf8<20> testBuf; |
1437 |
1426 |
1438 r=f.Read(pos3,testBuf); |
1427 r=f.Read(pos3,testBuf); |
1439 test_KErrNone(r); |
1428 test(r==KErrNone); |
1440 test(testBuf==text3); |
1429 test(testBuf==text3); |
1441 |
1430 |
1442 r=f.Read(pos1,testBuf); |
1431 r=f.Read(pos1,testBuf); |
1443 test_KErrNone(r); |
1432 test(r==KErrNone); |
1444 test(testBuf==text1); |
1433 test(testBuf==text1); |
1445 |
1434 |
1446 r=f.Read(pos4,testBuf); |
1435 r=f.Read(pos4,testBuf); |
1447 test_KErrNone(r); |
1436 test(r==KErrNone); |
1448 test(testBuf==text4); |
1437 test(testBuf==text4); |
1449 |
1438 |
1450 r=f.Read(pos2,testBuf); |
1439 r=f.Read(pos2,testBuf); |
1451 test_KErrNone(r); |
1440 test(r==KErrNone); |
1452 test(testBuf==text2); |
1441 test(testBuf==text2); |
1453 |
1442 |
1454 r=f.Read(pos5,testBuf); |
1443 r=f.Read(pos5,testBuf); |
1455 test_KErrNone(r); |
1444 test(r==KErrNone); |
1456 test(testBuf==text5); |
1445 test(testBuf==text5); |
1457 |
1446 |
1458 r=f.Read(pos2,testBuf); |
1447 r=f.Read(pos2,testBuf); |
1459 test_KErrNone(r); |
1448 test(r==KErrNone); |
1460 test(testBuf==text2); |
1449 test(testBuf==text2); |
1461 r=f.SetSize(1023); |
1450 r=f.SetSize(1023); |
1462 test_KErrNone(r); |
1451 test(r==KErrNone); |
1463 r=f.Read(pos2,testBuf); |
1452 r=f.Read(pos2,testBuf); |
1464 test_KErrNone(r); |
1453 test(r==KErrNone); |
1465 test(testBuf==text2); |
1454 test(testBuf==text2); |
1466 r=f.SetSize(1024); |
1455 r=f.SetSize(1024); |
1467 test_KErrNone(r); |
1456 test(r==KErrNone); |
1468 r=f.Read(pos1,testBuf); |
1457 r=f.Read(pos1,testBuf); |
1469 test_KErrNone(r); |
1458 test(r==KErrNone); |
1470 test(testBuf==text1); |
1459 test(testBuf==text1); |
1471 r=f.Read(pos2,testBuf); |
1460 r=f.Read(pos2,testBuf); |
1472 test_KErrNone(r); |
1461 test(r==KErrNone); |
1473 test(testBuf==text2); |
1462 test(testBuf==text2); |
1474 |
1463 |
1475 r=f.Read(pos1,testBuf); |
1464 r=f.Read(pos1,testBuf); |
1476 test_KErrNone(r); |
1465 test(r==KErrNone); |
1477 test(testBuf==text1); |
1466 test(testBuf==text1); |
1478 r=f.SetSize(511); |
1467 r=f.SetSize(511); |
1479 test_KErrNone(r); |
1468 test(r==KErrNone); |
1480 r=f.Read(pos1,testBuf); |
1469 r=f.Read(pos1,testBuf); |
1481 test_KErrNone(r); |
1470 test(r==KErrNone); |
1482 test(testBuf==text1); |
1471 test(testBuf==text1); |
1483 r=f.SetSize(512); |
1472 r=f.SetSize(512); |
1484 test_KErrNone(r); |
1473 test(r==KErrNone); |
1485 r=f.Read(pos1,testBuf); |
1474 r=f.Read(pos1,testBuf); |
1486 test_KErrNone(r); |
1475 test(r==KErrNone); |
1487 test(testBuf==text1); |
1476 test(testBuf==text1); |
1488 f.Close(); |
1477 f.Close(); |
1489 } |
1478 } |
1490 |
1479 |
1491 static void testMoreFileSeek() |
1480 static void testMoreFileSeek() |
1689 TInt r; |
1678 TInt r; |
1690 RFile f1; |
1679 RFile f1; |
1691 |
1680 |
1692 //-- test renaming a file to a non-existing directory |
1681 //-- test renaming a file to a non-existing directory |
1693 r = TheFs.MkDir(_L("\\temp\\")); |
1682 r = TheFs.MkDir(_L("\\temp\\")); |
1694 test_Value(r, r == KErrNone || r==KErrAlreadyExists); |
1683 test(r==KErrNone || r==KErrAlreadyExists); |
1695 |
1684 |
1696 r = f1.Replace(TheFs, _L("\\temp\\file1"), 0); |
1685 r = f1.Replace(TheFs, _L("\\temp\\file1"), 0); |
1697 test_KErrNone(r); |
1686 test(r==KErrNone); |
1698 |
1687 |
1699 r = f1.Rename(_L("\\temp\\temp\\file1")); |
1688 r = f1.Rename(_L("\\temp\\temp\\file1")); |
1700 test_Value(r, r == KErrPathNotFound); |
1689 test(r == KErrPathNotFound); |
1701 |
1690 |
1702 f1.Close(); |
1691 f1.Close(); |
1703 |
1692 |
1704 |
1693 |
1705 r=f1.Replace(TheFs,name2,EFileWrite); |
1694 r=f1.Replace(TheFs,name2,EFileWrite); |
1706 test_KErrNone(r); |
1695 test(r==KErrNone); |
1707 r=f1.Write(_L8("1234")); |
1696 r=f1.Write(_L8("1234")); |
1708 test_KErrNone(r); |
1697 test(r==KErrNone); |
1709 TInt len=CheckFileExists(name2,KErrNone); |
1698 TInt len=CheckFileExists(name2,KErrNone); |
1710 test(len==4); |
1699 test(len==4); |
1711 r=f1.Rename(name1); |
1700 r=f1.Rename(name1); |
1712 test_KErrNone(r); |
1701 test(r==KErrNone); |
1713 |
1702 |
1714 r=f1.Read(0,contents); |
1703 r=f1.Read(0,contents); |
1715 test_KErrNone(r); |
1704 test(r==KErrNone); |
1716 test(contents==_L8("1234")); |
1705 test(contents==_L8("1234")); |
1717 r=f1.Write(4,_L8("5678")); |
1706 r=f1.Write(4,_L8("5678")); |
1718 test_KErrNone(r); |
1707 test(r==KErrNone); |
1719 |
1708 |
1720 len=CheckFileExists(name1,KErrNone); |
1709 len=CheckFileExists(name1,KErrNone); |
1721 test(len==8); |
1710 test(len==8); |
1722 CheckFileExists(name2,KErrNotFound); |
1711 CheckFileExists(name2,KErrNotFound); |
1723 r=f1.Write(8,_L8("90")); |
1712 r=f1.Write(8,_L8("90")); |
1724 test_KErrNone(r); |
1713 test(r==KErrNone); |
1725 f1.Close(); |
1714 f1.Close(); |
1726 len=CheckFileExists(name1,KErrNone); |
1715 len=CheckFileExists(name1,KErrNone); |
1727 test(len==10); |
1716 test(len==10); |
1728 |
1717 |
1729 test.Next(_L("Test can change case using rename")); |
1718 test.Next(_L("Test can change case using rename")); |
1730 r=f1.Open(TheFs,name1,EFileRead|EFileWrite); |
1719 r=f1.Open(TheFs,name1,EFileRead|EFileWrite); |
1731 test_KErrNone(r); |
1720 test(r==KErrNone); |
1732 r=f1.Rename(name3); |
1721 r=f1.Rename(name3); |
1733 test_KErrNone(r); |
1722 test(r==KErrNone); |
1734 CheckFileExists(name1,KErrNone,EFalse); |
1723 CheckFileExists(name1,KErrNone,EFalse); |
1735 len=CheckFileExists(name3,KErrNone); |
1724 len=CheckFileExists(name3,KErrNone); |
1736 test(len==10); |
1725 test(len==10); |
1737 f1.Close(); |
1726 f1.Close(); |
1738 CheckFileExists(name1,KErrNone,EFalse); |
1727 CheckFileExists(name1,KErrNone,EFalse); |
1739 len=CheckFileExists(name3,KErrNone); |
1728 len=CheckFileExists(name3,KErrNone); |
1740 test(len==10); |
1729 test(len==10); |
1741 |
1730 |
1742 test.Next(_L("Test can rename to an identical filename")); |
1731 test.Next(_L("Test can rename to an identical filename")); |
1743 r=f1.Open(TheFs,name3,EFileRead|EFileWrite); |
1732 r=f1.Open(TheFs,name3,EFileRead|EFileWrite); |
1744 test_KErrNone(r); |
1733 test(r==KErrNone); |
1745 r=f1.Rename(name3); |
1734 r=f1.Rename(name3); |
1746 test_KErrNone(r); |
1735 test(r==KErrNone); |
1747 len=CheckFileExists(name3,KErrNone); |
1736 len=CheckFileExists(name3,KErrNone); |
1748 test(len==10); |
1737 test(len==10); |
1749 f1.Close(); |
1738 f1.Close(); |
1750 len=CheckFileExists(name3,KErrNone); |
1739 len=CheckFileExists(name3,KErrNone); |
1751 test(len==10); |
1740 test(len==10); |
1752 |
1741 |
1753 test.Next(_L("Test rename to a name containing a wildcard is rejected")); |
1742 test.Next(_L("Test rename to a name containing a wildcard is rejected")); |
1754 r=f1.Open(TheFs,name3,EFileRead|EFileWrite); |
1743 r=f1.Open(TheFs,name3,EFileRead|EFileWrite); |
1755 test_KErrNone(r); |
1744 test(r==KErrNone); |
1756 r=f1.Rename(_L("asdf*ASDF")); |
1745 r=f1.Rename(_L("asdf*ASDF")); |
1757 test_Value(r, r == KErrBadName); |
1746 test(r==KErrBadName); |
1758 r=f1.Rename(_L("asdf?AF")); |
1747 r=f1.Rename(_L("asdf?AF")); |
1759 test_Value(r, r == KErrBadName); |
1748 test(r==KErrBadName); |
1760 f1.Close(); |
1749 f1.Close(); |
1761 |
1750 |
1762 r=f1.Open(TheFs,name3,EFileRead); |
1751 r=f1.Open(TheFs,name3,EFileRead); |
1763 test_KErrNone(r); |
1752 test(r==KErrNone); |
1764 r=f1.Read(contents); |
1753 r=f1.Read(contents); |
1765 test_KErrNone(r); |
1754 test(r==KErrNone); |
1766 test(contents==_L8("1234567890")); |
1755 test(contents==_L8("1234567890")); |
1767 r=f1.Read(contents); |
1756 r=f1.Read(contents); |
1768 test_KErrNone(r); |
1757 test(r==KErrNone); |
1769 test(contents.Length()==0); |
1758 test(contents.Length()==0); |
1770 f1.Close(); |
1759 f1.Close(); |
1771 |
1760 |
1772 test.Next(_L("Check file date is retained")); |
1761 test.Next(_L("Check file date is retained")); |
1773 TDateTime dateTime(1995,(TMonth)10,19,23,0,0,0); |
1762 TDateTime dateTime(1995,(TMonth)10,19,23,0,0,0); |
1774 TTime oldTime(dateTime); |
1763 TTime oldTime(dateTime); |
1775 r=TheFs.SetEntry(name3,oldTime,0,0); |
1764 r=TheFs.SetEntry(name3,oldTime,0,0); |
1776 test_KErrNone(r); |
1765 test(r==KErrNone); |
1777 r=f1.Open(TheFs,name3,EFileRead|EFileWrite); |
1766 r=f1.Open(TheFs,name3,EFileRead|EFileWrite); |
1778 test_KErrNone(r); |
1767 test(r==KErrNone); |
1779 TTime check; |
1768 TTime check; |
1780 r=f1.Modified(check); |
1769 r=f1.Modified(check); |
1781 test_KErrNone(r); |
1770 test(r==KErrNone); |
1782 test(check==oldTime); |
1771 test(check==oldTime); |
1783 |
1772 |
1784 r=f1.Rename(_L("OldFile.Old")); |
1773 r=f1.Rename(_L("OldFile.Old")); |
1785 test_KErrNone(r); |
1774 test(r==KErrNone); |
1786 |
1775 |
1787 r=f1.Modified(check); |
1776 r=f1.Modified(check); |
1788 test_KErrNone(r); |
1777 test(r==KErrNone); |
1789 test(check==oldTime); |
1778 test(check==oldTime); |
1790 r=TheFs.Modified(_L("oldfile.old"),check); |
1779 r=TheFs.Modified(_L("oldfile.old"),check); |
1791 test_KErrNone(r); |
1780 test(r==KErrNone); |
1792 test(check==oldTime); |
1781 test(check==oldTime); |
1793 f1.Close(); |
1782 f1.Close(); |
1794 r=TheFs.Modified(_L("oldfile.old"),check); |
1783 r=TheFs.Modified(_L("oldfile.old"),check); |
1795 test_KErrNone(r); |
1784 test(r==KErrNone); |
1796 test(check==oldTime); |
1785 test(check==oldTime); |
1797 } |
1786 } |
1798 |
1787 |
1799 static void TestFileUids() |
1788 static void TestFileUids() |
1800 // |
1789 // |
1905 MakeFile(_L("TESTER")); |
1894 MakeFile(_L("TESTER")); |
1906 |
1895 |
1907 // Open a file in EFileShareReadersOnly mode |
1896 // Open a file in EFileShareReadersOnly mode |
1908 RFile f1; |
1897 RFile f1; |
1909 TInt r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
1898 TInt r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
1910 test_KErrNone(r); |
1899 test(r==KErrNone); |
1911 |
1900 |
1912 // Opening a share in EFileShareReadersOnly mode should succeed |
1901 // Opening a share in EFileShareReadersOnly mode should succeed |
1913 RFile f2; |
1902 RFile f2; |
1914 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
1903 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
1915 test_KErrNone(r); |
1904 test(r==KErrNone); |
1916 f2.Close(); |
1905 f2.Close(); |
1917 |
1906 |
1918 // Opening a share in EFileShareReadersOrWriters mode with EFileRead access should succeed |
1907 // Opening a share in EFileShareReadersOrWriters mode with EFileRead access should succeed |
1919 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead); |
1908 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead); |
1920 test_KErrNone(r); |
1909 test(r==KErrNone); |
1921 f2.Close(); |
1910 f2.Close(); |
1922 |
1911 |
1923 // Opening a share in EFileShareReadersOrWriters mode with EFileWrite access should succeed |
1912 // Opening a share in EFileShareReadersOrWriters mode with EFileWrite access should succeed |
1924 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite); |
1913 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite); |
1925 test_Value(r, r == KErrInUse); |
1914 test(r==KErrInUse); |
1926 |
1915 |
1927 // Opening a share in EFileShareReadersOrWriters mode with EFileRead|EFileWrite access should succeed |
1916 // Opening a share in EFileShareReadersOrWriters mode with EFileRead|EFileWrite access should succeed |
1928 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite); |
1917 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite); |
1929 test_Value(r, r == KErrInUse); |
1918 test(r==KErrInUse); |
1930 |
1919 |
1931 // Opening a share in EShareAny mode should fail |
1920 // Opening a share in EShareAny mode should fail |
1932 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny); |
1921 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny); |
1933 test_Value(r, r == KErrInUse); |
1922 test(r==KErrInUse); |
1934 |
1923 |
1935 f1.Close(); |
1924 f1.Close(); |
1936 |
1925 |
1937 ////////////////////// |
1926 ////////////////////// |
1938 |
1927 |
1939 // Open a file in EFileShareReadersOrWriters mode for reading |
1928 // Open a file in EFileShareReadersOrWriters mode for reading |
1940 r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead); |
1929 r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead); |
1941 test_KErrNone(r); |
1930 test(r==KErrNone); |
1942 |
1931 |
1943 // Opening a share in EFileShareExclusive mode should fail |
1932 // Opening a share in EFileShareExclusive mode should fail |
1944 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive); |
1933 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive); |
1945 test_Value(r, r == KErrInUse); |
1934 test(r==KErrInUse); |
1946 |
1935 |
1947 // Opening a share in EFileShareReadersOnly mode should succeed |
1936 // Opening a share in EFileShareReadersOnly mode should succeed |
1948 // (the share doesn't care if the file is opened for reading or writing) |
1937 // (the share doesn't care if the file is opened for reading or writing) |
1949 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
1938 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
1950 test_KErrNone(r); |
1939 test(r==KErrNone); |
1951 f2.Close(); |
1940 f2.Close(); |
1952 |
1941 |
1953 // Opening a share in EFileShareReadersOnly mode with EFileRead accesss should succeed |
1942 // Opening a share in EFileShareReadersOnly mode with EFileRead accesss should succeed |
1954 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead); |
1943 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead); |
1955 test_KErrNone(r); |
1944 test(r==KErrNone); |
1956 f2.Close(); |
1945 f2.Close(); |
1957 |
1946 |
1958 // Opening a share in EFileShareReadersOnly mode with EFileWrite accesss should succeed |
1947 // Opening a share in EFileShareReadersOnly mode with EFileWrite accesss should succeed |
1959 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite); |
1948 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite); |
1960 test_KErrNone(r); |
1949 test(r==KErrNone); |
1961 f2.Close(); |
1950 f2.Close(); |
1962 |
1951 |
1963 // Opening a share in EFileShareReadersOnly mode with EFileRead|EFileWrite accesss should succeed |
1952 // Opening a share in EFileShareReadersOnly mode with EFileRead|EFileWrite accesss should succeed |
1964 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite); |
1953 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite); |
1965 test_KErrNone(r); |
1954 test(r==KErrNone); |
1966 f2.Close(); |
1955 f2.Close(); |
1967 |
1956 |
1968 // Opening a share in EFileShareAny mode should succeed |
1957 // Opening a share in EFileShareAny mode should succeed |
1969 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny); |
1958 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny); |
1970 test_KErrNone(r); |
1959 test(r==KErrNone); |
1971 f2.Close(); |
1960 f2.Close(); |
1972 |
1961 |
1973 f1.Close(); |
1962 f1.Close(); |
1974 |
1963 |
1975 ////////////////////// |
1964 ////////////////////// |
1976 |
1965 |
1977 // Open a file in EFileShareReadersOrWriters mode for writing |
1966 // Open a file in EFileShareReadersOrWriters mode for writing |
1978 r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite); |
1967 r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite); |
1979 test_KErrNone(r); |
1968 test(r==KErrNone); |
1980 |
1969 |
1981 // Opening a share in EFileShareExclusive mode should fail |
1970 // Opening a share in EFileShareExclusive mode should fail |
1982 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive); |
1971 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive); |
1983 test_Value(r, r == KErrInUse); |
1972 test(r==KErrInUse); |
1984 |
1973 |
1985 // Opening a share in EFileShareReadersOnly mode should fail |
1974 // Opening a share in EFileShareReadersOnly mode should fail |
1986 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
1975 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
1987 test_Value(r, r == KErrInUse); |
1976 test(r==KErrInUse); |
1988 |
1977 |
1989 // Opening a share in EFileShareReadersOrWriters mode with EFileRead access should succeed |
1978 // Opening a share in EFileShareReadersOrWriters mode with EFileRead access should succeed |
1990 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead); |
1979 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead); |
1991 test_KErrNone(r); |
1980 test(r==KErrNone); |
1992 f2.Close(); |
1981 f2.Close(); |
1993 |
1982 |
1994 // Opening a share in EFileShareReadersOrWriters mode with EFileWrite access should succeed |
1983 // Opening a share in EFileShareReadersOrWriters mode with EFileWrite access should succeed |
1995 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite); |
1984 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite); |
1996 test_KErrNone(r); |
1985 test(r==KErrNone); |
1997 f2.Close(); |
1986 f2.Close(); |
1998 |
1987 |
1999 // Opening a share in EFileShareReadersOrWriters mode with EFileRead|EFileWrite access should succeed |
1988 // Opening a share in EFileShareReadersOrWriters mode with EFileRead|EFileWrite access should succeed |
2000 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite); |
1989 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite); |
2001 test_KErrNone(r); |
1990 test(r==KErrNone); |
2002 f2.Close(); |
1991 f2.Close(); |
2003 |
1992 |
2004 // Opening a share in EFileShareAny mode should succeed |
1993 // Opening a share in EFileShareAny mode should succeed |
2005 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny); |
1994 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny); |
2006 test_KErrNone(r); |
1995 test(r==KErrNone); |
2007 f2.Close(); |
1996 f2.Close(); |
2008 |
1997 |
2009 f1.Close(); |
1998 f1.Close(); |
2010 |
1999 |
2011 ////////////////////////// |
2000 ////////////////////////// |
2012 |
2001 |
2013 // Open a file in EFileShareAny mode |
2002 // Open a file in EFileShareAny mode |
2014 r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny); |
2003 r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny); |
2015 test_KErrNone(r); |
2004 test(r==KErrNone); |
2016 |
2005 |
2017 // Opening a share in EFileShareExclusive mode should fail |
2006 // Opening a share in EFileShareExclusive mode should fail |
2018 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive); |
2007 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareExclusive); |
2019 test_Value(r, r == KErrInUse); |
2008 test(r==KErrInUse); |
2020 |
2009 |
2021 // Opening a share in EFileShareReadersOnly mode should fail |
2010 // Opening a share in EFileShareReadersOnly mode should fail |
2022 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
2011 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
2023 test_Value(r, r == KErrInUse); |
2012 test(r==KErrInUse); |
2024 |
2013 |
2025 // Opening a share in EFileShareReadersOrWriters mode with EFileRead access should succeed |
2014 // Opening a share in EFileShareReadersOrWriters mode with EFileRead access should succeed |
2026 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead); |
2015 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead); |
2027 test_KErrNone(r); |
2016 test(r==KErrNone); |
2028 f2.Close(); |
2017 f2.Close(); |
2029 |
2018 |
2030 // Opening a share in EFileShareReadersOrWriters mode with EFileWrite access should succeed |
2019 // Opening a share in EFileShareReadersOrWriters mode with EFileWrite access should succeed |
2031 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite); |
2020 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite); |
2032 test_KErrNone(r); |
2021 test(r==KErrNone); |
2033 f2.Close(); |
2022 f2.Close(); |
2034 |
2023 |
2035 // Opening a share in EFileShareReadersOrWriters mode with EFileRead|EFileWrite access should succeed |
2024 // Opening a share in EFileShareReadersOrWriters mode with EFileRead|EFileWrite access should succeed |
2036 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite); |
2025 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite); |
2037 test_KErrNone(r); |
2026 test(r==KErrNone); |
2038 f2.Close(); |
2027 f2.Close(); |
2039 |
2028 |
2040 // Opening a share in EFileShareAny mode with should succeed |
2029 // Opening a share in EFileShareAny mode with should succeed |
2041 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny); |
2030 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny); |
2042 test_KErrNone(r); |
2031 test(r==KErrNone); |
2043 f2.Close(); |
2032 f2.Close(); |
2044 |
2033 |
2045 f1.Close(); |
2034 f1.Close(); |
2046 |
2035 |
2047 ////////////////////// |
2036 ////////////////////// |
2048 |
2037 |
2049 // Open a file in EFileShareReadersOrWriters mode for reading |
2038 // Open a file in EFileShareReadersOrWriters mode for reading |
2050 r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead); |
2039 r=f1.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead); |
2051 test_KErrNone(r); |
2040 test(r==KErrNone); |
2052 |
2041 |
2053 // Opening a share in EFileShareReadersOnly mode should succeed |
2042 // Opening a share in EFileShareReadersOnly mode should succeed |
2054 // - The share should now be promoted to EFileShareReadersOnly mode |
2043 // - The share should now be promoted to EFileShareReadersOnly mode |
2055 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
2044 r=f2.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOnly); |
2056 test_KErrNone(r); |
2045 test(r==KErrNone); |
2057 |
2046 |
2058 TInt pass = 2; |
2047 TInt pass = 2; |
2059 while(pass--) |
2048 while(pass--) |
2060 { |
2049 { |
2061 RFile f3; |
2050 RFile f3; |
2062 // Opening a share in EFileShareReadersOnly mode with EFileRead accesss should succeed |
2051 // Opening a share in EFileShareReadersOnly mode with EFileRead accesss should succeed |
2063 r=f3.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead); |
2052 r=f3.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead); |
2064 test_KErrNone(r); |
2053 test(r==KErrNone); |
2065 f3.Close(); |
2054 f3.Close(); |
2066 |
2055 |
2067 // Opening a share in EFileShareReadersOnly mode with EFileWrite accesss should fail |
2056 // Opening a share in EFileShareReadersOnly mode with EFileWrite accesss should fail |
2068 r=f3.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite); |
2057 r=f3.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileWrite); |
2069 if(pass == 1) |
2058 if(pass == 1) |
2070 { |
2059 { |
2071 // The share is promoted - should obey EFileShareReadersOnly rules |
2060 // The share is promoted - should obey EFileShareReadersOnly rules |
2072 test_Value(r, r == KErrInUse); |
2061 test(r==KErrInUse); |
2073 } |
2062 } |
2074 else |
2063 else |
2075 { |
2064 { |
2076 // The share is demoted - should obey EFileShareReadersOrWriters rules |
2065 // The share is demoted - should obey EFileShareReadersOrWriters rules |
2077 test_KErrNone(r); |
2066 test(r==KErrNone); |
2078 f3.Close(); |
2067 f3.Close(); |
2079 } |
2068 } |
2080 |
2069 |
2081 // Opening a share in EFileShareReadersOnly mode with EFileRead|EFileWrite accesss should fail |
2070 // Opening a share in EFileShareReadersOnly mode with EFileRead|EFileWrite accesss should fail |
2082 r=f3.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite); |
2071 r=f3.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareReadersOrWriters|EFileRead|EFileWrite); |
2083 if(pass == 1) |
2072 if(pass == 1) |
2084 { |
2073 { |
2085 // The share is promoted - should obey EFileShareReadersOnly rules |
2074 // The share is promoted - should obey EFileShareReadersOnly rules |
2086 test_Value(r, r == KErrInUse); |
2075 test(r==KErrInUse); |
2087 } |
2076 } |
2088 else |
2077 else |
2089 { |
2078 { |
2090 // The share is demoted - should obey EFileShareReadersOrWriters rules |
2079 // The share is demoted - should obey EFileShareReadersOrWriters rules |
2091 test_KErrNone(r); |
2080 test(r==KErrNone); |
2092 f3.Close(); |
2081 f3.Close(); |
2093 } |
2082 } |
2094 |
2083 |
2095 // Opening a share in EFileShareAny mode should fails |
2084 // Opening a share in EFileShareAny mode should fails |
2096 r=f3.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny); |
2085 r=f3.Open(TheFs,_L("T_FILE.CPP"),EFileStreamText|EFileShareAny); |
2097 if(pass == 1) |
2086 if(pass == 1) |
2098 { |
2087 { |
2099 // The share is promoted - should obey EFileShareReadersOnly rules |
2088 // The share is promoted - should obey EFileShareReadersOnly rules |
2100 test_Value(r, r == KErrInUse); |
2089 test(r==KErrInUse); |
2101 f2.Close(); |
2090 f2.Close(); |
2102 } |
2091 } |
2103 else |
2092 else |
2104 { |
2093 { |
2105 // The share is demoted - should obey EFileShareReadersOrWriters rules |
2094 // The share is demoted - should obey EFileShareReadersOrWriters rules |
2106 test_KErrNone(r); |
2095 test(r==KErrNone); |
2107 f3.Close(); |
2096 f3.Close(); |
2108 } |
2097 } |
2109 } |
2098 } |
2110 |
2099 |
2111 f1.Close(); |
2100 f1.Close(); |
2878 TEntry entry; |
2867 TEntry entry; |
2879 TheFs.Delete(KFile); |
2868 TheFs.Delete(KFile); |
2880 |
2869 |
2881 //-- 1. create test file |
2870 //-- 1. create test file |
2882 nRes = CreateEmptyFile(TheFs, KFile, 33); |
2871 nRes = CreateEmptyFile(TheFs, KFile, 33); |
2883 test_KErrNone(nRes); |
2872 test(nRes == KErrNone); |
2884 |
2873 |
2885 //-- 2. open it for write |
2874 //-- 2. open it for write |
2886 RFile file; |
2875 RFile file; |
2887 nRes = file.Open(TheFs, KFile, EFileWrite); |
2876 nRes = file.Open(TheFs, KFile, EFileWrite); |
2888 test_KErrNone(nRes); |
2877 test(nRes == KErrNone); |
2889 |
2878 |
2890 //-- 3. write a couple of bytes there. This must cause 'Archive' attribute set |
2879 //-- 3. write a couple of bytes there. This must cause 'Archive' attribute set |
2891 nRes = file.Write(0, _L8("a")); |
2880 nRes = file.Write(0, _L8("a")); |
2892 test_KErrNone(nRes); |
2881 test(nRes == KErrNone); |
2893 nRes = file.Write(10, _L8("b")); |
2882 nRes = file.Write(10, _L8("b")); |
2894 test_KErrNone(nRes); |
2883 test(nRes == KErrNone); |
2895 |
2884 |
2896 nRes = TheFs.Entry(KFile, entry); |
2885 nRes = TheFs.Entry(KFile, entry); |
2897 test_KErrNone(nRes); |
2886 test(nRes == KErrNone); |
2898 |
2887 |
2899 test(entry.IsArchive()); //-- 'A' attribute must be set. |
2888 test(entry.IsArchive()); //-- 'A' attribute must be set. |
2900 |
2889 |
2901 //-- the file cache (if present) is dirty now. Dirty data timer starts to tick. |
2890 //-- the file cache (if present) is dirty now. Dirty data timer starts to tick. |
2902 //-- 4. set new file attributes (w/o 'A') and creation time |
2891 //-- 4. set new file attributes (w/o 'A') and creation time |
2903 const TUint newAtt = KEntryAttSystem ; |
2892 const TUint newAtt = KEntryAttSystem ; |
2904 nRes = file.SetAtt(newAtt, ~newAtt & KEntryAttMaskSupported); |
2893 nRes = file.SetAtt(newAtt, ~newAtt & KEntryAttMaskSupported); |
2905 test_KErrNone(nRes); |
2894 test(nRes == KErrNone); |
2906 |
2895 |
2907 TTime newTime; |
2896 TTime newTime; |
2908 nRes = newTime.Set(_L("19970310:101809.000000")); |
2897 nRes = newTime.Set(_L("19970310:101809.000000")); |
2909 test_KErrNone(nRes); |
2898 test(nRes == KErrNone); |
2910 nRes = file.SetModified(newTime); |
2899 nRes = file.SetModified(newTime); |
2911 test_KErrNone(nRes); |
2900 test(nRes == KErrNone); |
2912 |
2901 |
2913 //-- 5. wait 5 seconds. file server shall flush dirty data during this period. |
2902 //-- 5. wait 5 seconds. file server shall flush dirty data during this period. |
2914 User::After(5*K1Sec); |
2903 User::After(5*K1Sec); |
2915 |
2904 |
2916 //-- 6. check that attributes haven't chanded because of flush |
2905 //-- 6. check that attributes haven't chanded because of flush |
2917 nRes = file.Flush(); //-- this will flush attributes to the media |
2906 nRes = file.Flush(); //-- this will flush attributes to the media |
2918 test_KErrNone(nRes); |
2907 test(nRes == KErrNone); |
2919 |
2908 |
2920 nRes = TheFs.Entry(KFile, entry); |
2909 nRes = TheFs.Entry(KFile, entry); |
2921 test_KErrNone(nRes); |
2910 test(nRes == KErrNone); |
2922 |
2911 |
2923 test(entry.iAtt == newAtt); |
2912 test(entry.iAtt == newAtt); |
2924 test(entry.iModified.DateTime().Year() == 1997); |
2913 test(entry.iModified.DateTime().Year() == 1997); |
2925 test(entry.iModified.DateTime().Month() == 3); |
2914 test(entry.iModified.DateTime().Month() == 3); |
2926 test(entry.iModified.DateTime().Day() == 10); |
2915 test(entry.iModified.DateTime().Day() == 10); |
2927 |
2916 |
2928 //-- 7. write some data and ensure that 'A' attribute is set now and 'modified' time updated |
2917 //-- 7. write some data and ensure that 'A' attribute is set now and 'modified' time updated |
2929 nRes = file.Write(12, _L8("c")); |
2918 nRes = file.Write(12, _L8("c")); |
2930 test_KErrNone(nRes); |
2919 test(nRes == KErrNone); |
2931 |
2920 |
2932 file.Close(); //-- this will flush attributes to the media |
2921 file.Close(); //-- this will flush attributes to the media |
2933 |
2922 |
2934 nRes = TheFs.Entry(KFile, entry); |
2923 nRes = TheFs.Entry(KFile, entry); |
2935 test_KErrNone(nRes); |
2924 test(nRes == KErrNone); |
2936 test(entry.iAtt == (newAtt | KEntryAttArchive)); |
2925 test(entry.iAtt == (newAtt | KEntryAttArchive)); |
2937 test(entry.iModified.DateTime().Year() != 1997); |
2926 test(entry.iModified.DateTime().Year() != 1997); |
2938 |
2927 |
2939 |
2928 |
2940 |
2929 |
2975 |
2966 |
2976 //-- 1. create 4GB-1 file |
2967 //-- 1. create 4GB-1 file |
2977 //-- this file has enabled write caching by default |
2968 //-- this file has enabled write caching by default |
2978 test.Printf(_L("creating maximal length file, size = 0x%x\n"),KMaxFAT32FileSize); |
2969 test.Printf(_L("creating maximal length file, size = 0x%x\n"),KMaxFAT32FileSize); |
2979 nRes = file64.Replace(TheFs, KFileName, EFileWrite); |
2970 nRes = file64.Replace(TheFs, KFileName, EFileWrite); |
2980 test_KErrNone(nRes); |
2971 test(nRes == KErrNone); |
2981 |
2972 |
2982 const TInt64 fileSize = KMaxFAT32FileSize; |
2973 const TInt64 fileSize = KMaxFAT32FileSize; |
2983 |
2974 |
2984 nRes = file64.SetSize(fileSize); |
2975 nRes = file64.SetSize(fileSize); |
2985 test_KErrNone(nRes); |
2976 test(nRes == KErrNone); |
2986 |
2977 |
2987 test.Printf(_L("seeking to the file end...\n")); |
2978 test.Printf(_L("seeking to the file end...\n")); |
2988 TInt64 filePos = 0; |
2979 TInt64 filePos = 0; |
2989 nRes = file64.Seek(ESeekEnd, filePos); |
2980 nRes = file64.Seek(ESeekEnd, filePos); |
2990 test_KErrNone(nRes); |
2981 test(nRes == KErrNone); |
2991 |
2982 |
2992 |
2983 |
2993 test.Printf(_L("test writing to the last bytes of the file (rel pos addressing) \n")); |
2984 test.Printf(_L("test writing to the last bytes of the file (rel pos addressing) \n")); |
2994 |
2985 |
2995 //-- 1. writing using relative position |
2986 //-- 1. writing using relative position |
2996 filePos = -1; |
2987 filePos = -1; |
2997 nRes = file64.Seek(ESeekEnd, filePos); |
2988 nRes = file64.Seek(ESeekEnd, filePos); |
2998 test_KErrNone(nRes); |
2989 test(nRes == KErrNone); |
2999 test(filePos == fileSize-1); |
2990 test(filePos == fileSize-1); |
3000 |
2991 |
3001 nRes = file64.Write(_L8("z")); //-- write 1 byte a pos 0xFFFFFFFE, this is the last allowed position of the FAT32 file |
2992 nRes = file64.Write(_L8("z")); //-- write 1 byte a pos 0xFFFFFFFE, this is the last allowed position of the FAT32 file |
3002 test_KErrNone(nRes); |
2993 test(nRes == KErrNone); |
3003 |
2994 |
3004 nRes = file64.Write(_L8("x")); //-- write 1 byte a pos 0xFFFFFFFF, beyond the max. allowed file size, this shall fail |
2995 nRes = file64.Write(_L8("x")); //-- write 1 byte a pos 0xFFFFFFFF, beyond the max. allowed file size, this shall fail |
3005 test_Value(nRes, nRes == KErrNotSupported); |
2996 test(nRes == KErrNotSupported); |
3006 |
2997 |
3007 nRes = file64.Flush(); |
2998 nRes = file64.Flush(); |
3008 test_KErrNone(nRes); |
2999 test(nRes == KErrNone); |
3009 |
3000 |
3010 //-- 1.1 check the result by reading data using rel. pos |
3001 //-- 1.1 check the result by reading data using rel. pos |
3011 filePos = -1; |
3002 filePos = -1; |
3012 nRes = file64.Seek(ESeekEnd, filePos); |
3003 nRes = file64.Seek(ESeekEnd, filePos); |
3013 test_KErrNone(nRes); |
3004 test(nRes == KErrNone); |
3014 test(filePos == fileSize-1); |
3005 test(filePos == fileSize-1); |
3015 |
3006 |
3016 test.Printf(_L("reading 1 byte at pos: 0x%x\n"), filePos); |
3007 test.Printf(_L("reading 1 byte at pos: 0x%x\n"), filePos); |
3017 nRes = file64.Read(buf, 1); //-- read 1 byte a pos 0xFFFFFFFE, this is the last allowed position of the FAT32 file |
3008 nRes = file64.Read(buf, 1); //-- read 1 byte a pos 0xFFFFFFFE, this is the last allowed position of the FAT32 file |
3018 test_KErrNone(nRes); |
3009 test(nRes == KErrNone); |
3019 test(buf.Length() == 1 && buf[0]=='z'); |
3010 test(buf.Length() == 1 && buf[0]=='z'); |
3020 |
3011 |
3021 nRes = file64.Read(buf, 1); //-- read 1 byte a pos 0xFFFFFFFF, beyond the max. allowed file size, this shall fail |
3012 nRes = file64.Read(buf, 1); //-- read 1 byte a pos 0xFFFFFFFF, beyond the max. allowed file size, this shall fail |
3022 test_KErrNone(nRes); |
3013 test(nRes == KErrNone); |
3023 test(buf.Length() == 0); |
3014 test(buf.Length() == 0); |
3024 |
3015 |
3025 file64.Close(); |
3016 file64.Close(); |
3026 |
3017 |
3027 test.Printf(_L("test writing to the last bytes of the file (absolute pos addressing) \n")); |
3018 test.Printf(_L("test writing to the last bytes of the file (absolute pos addressing) \n")); |
3028 //-- 2. writing using absolute position |
3019 //-- 2. writing using absolute position |
3029 nRes = file64.Open(TheFs, KFileName, EFileWrite); |
3020 nRes = file64.Open(TheFs, KFileName, EFileWrite); |
3030 test_KErrNone(nRes); |
3021 test(nRes == KErrNone); |
3031 |
3022 |
3032 filePos = fileSize-1; |
3023 filePos = fileSize-1; |
3033 |
3024 |
3034 nRes = file64.Write(filePos-2, _L8("0"), 1); //-- write 1 byte a pos 0xFFFFFFFC |
3025 nRes = file64.Write(filePos-2, _L8("0"), 1); //-- write 1 byte a pos 0xFFFFFFFC |
3035 test_KErrNone(nRes); |
3026 test(nRes == KErrNone); |
3036 |
3027 |
3037 nRes = file64.Write(filePos, _L8("a"), 1); //-- write 1 byte a pos 0xFFFFFFFE, this is the last allowed position of the FAT32 file |
3028 nRes = file64.Write(filePos, _L8("a"), 1); //-- write 1 byte a pos 0xFFFFFFFE, this is the last allowed position of the FAT32 file |
3038 test_KErrNone(nRes); |
3029 test(nRes == KErrNone); |
3039 |
3030 |
3040 nRes = file64.Write(filePos+1, _L8("b"), 1); //-- write 1 byte a pos 0xFFFFFFFF, beyond the max. allowed file size, this shall fail |
3031 nRes = file64.Write(filePos+1, _L8("b"), 1); //-- write 1 byte a pos 0xFFFFFFFF, beyond the max. allowed file size, this shall fail |
3041 test_Value(nRes, nRes == KErrNotSupported); |
3032 test(nRes == KErrNotSupported); |
3042 |
3033 |
3043 nRes = file64.Flush(); |
3034 nRes = file64.Flush(); |
3044 test_KErrNone(nRes); |
3035 test(nRes == KErrNone); |
3045 |
3036 |
3046 //-- 1.1 check the result by reading data absolute rel. position |
3037 //-- 1.1 check the result by reading data absolute rel. position |
3047 |
3038 |
3048 nRes = file64.Read(filePos-2, buf, 1); //-- read 1 byte a pos 0xFFFFFFFD |
3039 nRes = file64.Read(filePos-2, buf, 1); //-- read 1 byte a pos 0xFFFFFFFD |
3049 test_KErrNone(nRes); |
3040 test(nRes == KErrNone); |
3050 test(buf.Length() == 1 && buf[0]=='0'); |
3041 test(buf.Length() == 1 && buf[0]=='0'); |
3051 |
3042 |
3052 nRes = file64.Read(filePos, buf, 1); //-- read 1 byte a pos 0xFFFFFFFE, this is the last allowed position of the FAT32 file |
3043 nRes = file64.Read(filePos, buf, 1); //-- read 1 byte a pos 0xFFFFFFFE, this is the last allowed position of the FAT32 file |
3053 test_KErrNone(nRes); |
3044 test(nRes == KErrNone); |
3054 test(buf.Length() == 1 && buf[0]=='a'); |
3045 test(buf.Length() == 1 && buf[0]=='a'); |
3055 |
3046 |
3056 nRes = file64.Read(filePos+1, buf, 1); //-- read 1 byte a pos 0xFFFFFFFF, beyond the max. allowed file size |
3047 nRes = file64.Read(filePos+1, buf, 1); //-- read 1 byte a pos 0xFFFFFFFF, beyond the max. allowed file size |
3057 test_KErrNone(nRes); |
3048 test(nRes == KErrNone); |
3058 test(buf.Length() == 0); |
3049 test(buf.Length() == 0); |
3059 |
3050 |
3060 nRes = file64.Read(filePos+2, buf, 1); //buf.Len must be 0 |
3051 nRes = file64.Read(filePos+2, buf, 1); //buf.Len must be 0 |
3061 test_KErrNone(nRes); |
3052 test(nRes == KErrNone); |
3062 test(buf.Length() == 0); |
3053 test(buf.Length() == 0); |
3063 |
3054 |
3064 file64.Close(); |
3055 file64.Close(); |
3065 |
3056 |
3066 test.Printf(_L("deleting the huge file.\n")); |
3057 test.Printf(_L("deleting the huge file.\n")); |
3067 nRes = TheFs.Delete(KFileName); |
3058 nRes = TheFs.Delete(KFileName); |
3068 test_KErrNone(nRes); |
3059 test(nRes == KErrNone); |
|
3060 |
|
3061 #else |
3069 |
3062 |
3070 test.Printf(_L("RFile64 is not supported! Skipping.\n")); |
3063 test.Printf(_L("RFile64 is not supported! Skipping.\n")); |
3071 |
3064 |
|
3065 #endif //SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API |
3072 |
3066 |
3073 } |
3067 } |
3074 |
3068 |
3075 |
3069 |
3076 //-------------------------------------------------------------- |
3070 //-------------------------------------------------------------- |