82 { |
81 { |
83 |
82 |
84 TBuf<128> fileName=aBaseName; |
83 TBuf<128> fileName=aBaseName; |
85 fileName.AppendNum(aX); |
84 fileName.AppendNum(aX); |
86 TInt r=TheFs.Delete(fileName); |
85 TInt r=TheFs.Delete(fileName); |
87 test_KErrNone(r); |
86 test(r==KErrNone); |
88 // r=TheFs.CheckDisk(fileName); |
87 // r=TheFs.CheckDisk(fileName); |
89 // if (r!=KErrNone && r!=KErrNotSupported) |
88 // if (r!=KErrNone && r!=KErrNotSupported) |
90 // { |
89 // { |
91 // test.Printf(_L("ERROR:: CheckDisk returned %d\n"),r); |
90 // test.Printf(_L("ERROR:: CheckDisk returned %d\n"),r); |
92 // test_KErrNone(r); |
91 // test(r==KErrNone); |
93 // } |
92 // } |
94 test.Printf(_L("Deleted File %d\n"),aX); |
93 test.Printf(_L("Deleted File %d\n"),aX); |
95 return(KErrNone); |
94 return(KErrNone); |
96 } |
95 } |
97 |
96 |
102 { |
101 { |
103 TUint8* bufPtr=(TUint8*)testBuf.Ptr(); |
102 TUint8* bufPtr=(TUint8*)testBuf.Ptr(); |
104 testBuf.SetLength(testBuf.MaxSize()); |
103 testBuf.SetLength(testBuf.MaxSize()); |
105 Mem::Fill(bufPtr,testBuf.MaxSize(),aCluster); |
104 Mem::Fill(bufPtr,testBuf.MaxSize(),aCluster); |
106 TInt r=aFile.Write(testBuf); |
105 TInt r=aFile.Write(testBuf); |
107 test_KErrNone(r); |
106 test(r==KErrNone); |
108 } |
107 } |
109 |
108 |
110 LOCAL_C void SeekToCluster(RFile& aFile,TInt aCluster) |
109 LOCAL_C void SeekToCluster(RFile& aFile,TInt aCluster) |
111 // |
110 // |
112 // Seek to aCluster and check it is found correctly |
111 // Seek to aCluster and check it is found correctly |
113 // |
112 // |
114 { |
113 { |
115 TBuf8<508> seekBuf(508); |
114 TBuf8<508> seekBuf(508); |
116 TInt r=aFile.Read(aCluster*testBuf.MaxSize(),seekBuf); |
115 TInt r=aFile.Read(aCluster*testBuf.MaxSize(),seekBuf); |
117 test_KErrNone(r); |
116 test(r==KErrNone); |
118 test(seekBuf[0]==(TUint8)aCluster && seekBuf[507]==(TUint8)aCluster); |
117 test(seekBuf[0]==(TUint8)aCluster && seekBuf[507]==(TUint8)aCluster); |
119 } |
118 } |
120 |
119 |
121 LOCAL_C void SeekToCluster(RFile& aFile,TInt aCluster1,TInt aCluster2) |
120 LOCAL_C void SeekToCluster(RFile& aFile,TInt aCluster1,TInt aCluster2) |
122 // |
121 // |
123 // Seek to aCluster and check it is found correctly |
122 // Seek to aCluster and check it is found correctly |
124 // |
123 // |
125 { |
124 { |
126 TBuf8<508> seekBuf(508); |
125 TBuf8<508> seekBuf(508); |
127 TInt r=aFile.Read(aCluster1*testBuf.MaxSize(),seekBuf); |
126 TInt r=aFile.Read(aCluster1*testBuf.MaxSize(),seekBuf); |
128 test_KErrNone(r); |
127 test(r==KErrNone); |
129 test(seekBuf[0]==(TUint8)aCluster1 && seekBuf[507]==(TUint8)aCluster1); |
128 test(seekBuf[0]==(TUint8)aCluster1 && seekBuf[507]==(TUint8)aCluster1); |
130 r=aFile.Read(aCluster2*testBuf.MaxSize(),seekBuf); |
129 r=aFile.Read(aCluster2*testBuf.MaxSize(),seekBuf); |
131 test_KErrNone(r); |
130 test(r==KErrNone); |
132 test(seekBuf[0]==(TUint8)aCluster2 && seekBuf[507]==(TUint8)aCluster2); |
131 test(seekBuf[0]==(TUint8)aCluster2 && seekBuf[507]==(TUint8)aCluster2); |
133 } |
132 } |
134 |
133 |
135 LOCAL_C void ExhaustiveTest(RFile& aFile,TInt aCount1) |
134 LOCAL_C void ExhaustiveTest(RFile& aFile,TInt aCount1) |
136 // |
135 // |
157 { |
156 { |
158 test.Next(_L("Create interleaved files")); |
157 test.Next(_L("Create interleaved files")); |
159 RFile f1,f2; |
158 RFile f1,f2; |
160 |
159 |
161 TInt r=f1.Replace(TheFs,_L("BIGFILE1.TST"),EFileWrite); |
160 TInt r=f1.Replace(TheFs,_L("BIGFILE1.TST"),EFileWrite); |
162 test_KErrNone(r); |
161 test(r==KErrNone); |
163 r=f2.Replace(TheFs,_L("BIGFILE2.TST"),EFileWrite); |
162 r=f2.Replace(TheFs,_L("BIGFILE2.TST"),EFileWrite); |
164 test_KErrNone(r); |
163 test(r==KErrNone); |
165 |
164 |
166 TInt maxListLength=4; |
165 TInt maxListLength=4; |
167 TInt i=0,k=0; |
166 TInt i=0,k=0; |
168 TInt countf1=0; |
167 TInt countf1=0; |
169 TInt countf2=0; |
168 TInt countf2=0; |
219 { |
218 { |
220 test.Next(_L("Regression Protection")); |
219 test.Next(_L("Regression Protection")); |
221 RFile f1,f2; |
220 RFile f1,f2; |
222 |
221 |
223 TInt r=f1.Replace(TheFs,_L("BIGFILE1.TST"),EFileWrite); |
222 TInt r=f1.Replace(TheFs,_L("BIGFILE1.TST"),EFileWrite); |
224 test_KErrNone(r); |
223 test(r==KErrNone); |
225 r=f2.Replace(TheFs,_L("BIGFILE2.TST"),EFileWrite); |
224 r=f2.Replace(TheFs,_L("BIGFILE2.TST"),EFileWrite); |
226 test_KErrNone(r); |
225 test(r==KErrNone); |
227 |
226 |
228 WriteCluster(f1,0); |
227 WriteCluster(f1,0); |
229 WriteCluster(f1,1); |
228 WriteCluster(f1,1); |
230 WriteCluster(f1,2); |
229 WriteCluster(f1,2); |
231 WriteCluster(f1,3); |
230 WriteCluster(f1,3); |
272 SeekToCluster(f1,cluster2,cluster1); |
271 SeekToCluster(f1,cluster2,cluster1); |
273 } |
272 } |
274 |
273 |
275 test.Next(_L("Increase Size")); |
274 test.Next(_L("Increase Size")); |
276 r=f1.SetSize(1048577); |
275 r=f1.SetSize(1048577); |
277 test_Value(r, r == KErrNone || r==KErrDiskFull); |
276 test(r==KErrNone || r==KErrDiskFull); |
278 if (r==KErrDiskFull) |
277 if (r==KErrDiskFull) |
279 { |
278 { |
280 test.Printf(_L("File too big\n")); |
279 test.Printf(_L("File too big\n")); |
281 f1.Close(); |
280 f1.Close(); |
282 return; |
281 return; |
306 SeekToCluster(f1,cluster2,cluster1); |
305 SeekToCluster(f1,cluster2,cluster1); |
307 } |
306 } |
308 |
307 |
309 test.Next(_L("Reduce file size")); |
308 test.Next(_L("Reduce file size")); |
310 r=f1.SetSize(135000); |
309 r=f1.SetSize(135000); |
311 test_KErrNone(r); |
310 test(r==KErrNone); |
312 |
311 |
313 test.Next(_L("Test data still present")); |
312 test.Next(_L("Test data still present")); |
314 for (j=0;j<200;j++) |
313 for (j=0;j<200;j++) |
315 { |
314 { |
316 TInt cluster1=Math::Rand(TheSeed)%31; |
315 TInt cluster1=Math::Rand(TheSeed)%31; |
339 // |
338 // |
340 : iFile(*aFile), iPos(0) |
339 : iFile(*aFile), iPos(0) |
341 { |
340 { |
342 |
341 |
343 TInt r=iFile.Read(0,iData); |
342 TInt r=iFile.Read(0,iData); |
344 test_KErrNone(r); |
343 test(r==KErrNone); |
345 } |
344 } |
346 |
345 |
347 void TFileReader::Next(TUint8& aVal,TInt& aLength) |
346 void TFileReader::Next(TUint8& aVal,TInt& aLength) |
348 // |
347 // |
349 // Read aLength contiguous bytes with aVal |
348 // Read aLength contiguous bytes with aVal |
475 |
474 |
476 RFile f[KMaxFiles]; |
475 RFile f[KMaxFiles]; |
477 HBufC8* dataBuf=HBufC8::NewL(KMaxBufferLength); |
476 HBufC8* dataBuf=HBufC8::NewL(KMaxBufferLength); |
478 |
477 |
479 TInt r=f[0].Replace(TheFs,_L("TEST1.DAT"),EFileWrite); |
478 TInt r=f[0].Replace(TheFs,_L("TEST1.DAT"),EFileWrite); |
480 test_KErrNone(r); |
479 test(r==KErrNone); |
481 r=f[1].Replace(TheFs,_L("TEST2.DAT"),EFileWrite); |
480 r=f[1].Replace(TheFs,_L("TEST2.DAT"),EFileWrite); |
482 test_KErrNone(r); |
481 test(r==KErrNone); |
483 r=f[2].Replace(TheFs,_L("TEST3.DAT"),EFileWrite); |
482 r=f[2].Replace(TheFs,_L("TEST3.DAT"),EFileWrite); |
484 test_KErrNone(r); |
483 test(r==KErrNone); |
485 r=f[3].Replace(TheFs,_L("TEST4.DAT"),EFileWrite); |
484 r=f[3].Replace(TheFs,_L("TEST4.DAT"),EFileWrite); |
486 test_KErrNone(r); |
485 test(r==KErrNone); |
487 |
486 |
488 TInt size=0; |
487 TInt size=0; |
489 TInt iteration=0; |
488 TInt iteration=0; |
490 |
489 |
491 FOREVER |
490 FOREVER |
506 { |
505 { |
507 TInt fileNum=(order+i)%KMaxFiles; |
506 TInt fileNum=(order+i)%KMaxFiles; |
508 TInt s=len*mult[fileNum]; |
507 TInt s=len*mult[fileNum]; |
509 TInt filePos=pos*mult[fileNum]; |
508 TInt filePos=pos*mult[fileNum]; |
510 r=f[fileNum].Seek(ESeekStart,filePos); |
509 r=f[fileNum].Seek(ESeekStart,filePos); |
511 test_KErrNone(r); |
510 test(r==KErrNone); |
512 |
511 |
513 while(s>0) |
512 while(s>0) |
514 { |
513 { |
515 TInt l=(s>KMaxBufferLength) ? KMaxBufferLength : s; |
514 TInt l=(s>KMaxBufferLength) ? KMaxBufferLength : s; |
516 dataBuf->Des().SetLength(l); |
515 dataBuf->Des().SetLength(l); |
517 r=f[fileNum].Write(*dataBuf); |
516 r=f[fileNum].Write(*dataBuf); |
518 if (r==KErrDiskFull) |
517 if (r==KErrDiskFull) |
519 goto End; |
518 goto End; |
520 test_KErrNone(r); |
519 test(r==KErrNone); |
521 s-=l; |
520 s-=l; |
522 } |
521 } |
523 |
522 |
524 } |
523 } |
525 |
524 |
536 test.Printf(_L("\nReduceSize newsize=%d\n"),size); |
535 test.Printf(_L("\nReduceSize newsize=%d\n"),size); |
537 for (TInt i=0;i<KMaxFiles;i++) |
536 for (TInt i=0;i<KMaxFiles;i++) |
538 { |
537 { |
539 TInt fileNum=(order+i)%KMaxFiles; |
538 TInt fileNum=(order+i)%KMaxFiles; |
540 r=f[fileNum].SetSize(size*mult[fileNum]); |
539 r=f[fileNum].SetSize(size*mult[fileNum]); |
541 test_KErrNone(r); |
540 test(r==KErrNone); |
542 } |
541 } |
543 CheckFileContents(&f[0]); |
542 CheckFileContents(&f[0]); |
544 } |
543 } |
545 } |
544 } |
546 End: |
545 End: |
555 // Test filling the disk with files, and various manipulations thereof |
554 // Test filling the disk with files, and various manipulations thereof |
556 // |
555 // |
557 { |
556 { |
558 test.Start(_L("Test multiple file creation, deletion and resize operations")); |
557 test.Start(_L("Test multiple file creation, deletion and resize operations")); |
559 TInt r=TheFs.MkDirAll(_L("\\F32-TST\\BIGDIRECTORY\\")); |
558 TInt r=TheFs.MkDirAll(_L("\\F32-TST\\BIGDIRECTORY\\")); |
560 test_Value(r, r == KErrNone || r==KErrAlreadyExists); |
559 test(r==KErrNone || r==KErrAlreadyExists); |
561 TFileName sessionPath; |
560 TFileName sessionPath; |
562 r=TheFs.SessionPath(sessionPath); |
561 r=TheFs.SessionPath(sessionPath); |
563 test_KErrNone(r); |
562 test(r==KErrNone); |
564 |
563 |
565 TInt index=0; |
564 TInt index=0; |
566 TBuf<128> fileName=_L("\\F32-TST\\BIGDIRECTORY\\FILE"); |
565 TBuf<128> fileName=_L("\\F32-TST\\BIGDIRECTORY\\FILE"); |
567 |
566 |
568 for (;index<numberOfFiles;index++) |
567 for (;index<numberOfFiles;index++) |
569 { |
568 { |
570 r=CreateFileEx(fileName,index,anInitialSize); |
569 r=CreateFileEx(fileName,index,anInitialSize); |
571 if (r!=KErrNone) |
570 if (r!=KErrNone) |
572 break; |
571 break; |
573 |
572 |
574 test_KErrNone(r); |
573 test(r==KErrNone); |
575 |
574 |
576 #if defined(__WINS__) |
575 #if defined(__WINS__) |
577 if (index==32 && sessionPath[0]=='C') |
576 if (index==32 && sessionPath[0]=='C') |
578 break; |
577 break; |
579 #endif |
578 #endif |
600 for (index=0; index<halfCount; index++) |
599 for (index=0; index<halfCount; index++) |
601 { |
600 { |
602 baseName=fileName; |
601 baseName=fileName; |
603 baseName.AppendNum(index); |
602 baseName.AppendNum(index); |
604 r=file.Open(TheFs,baseName,EFileRead|EFileWrite); |
603 r=file.Open(TheFs,baseName,EFileRead|EFileWrite); |
605 test_KErrNone(r); |
604 test(r==KErrNone); |
606 test.Printf(_L("Resized %S from %d to %d\n"),&baseName,anInitialSize,anInitialSize*2); |
605 test.Printf(_L("Resized %S from %d to %d\n"),&baseName,anInitialSize,anInitialSize*2); |
607 r=file.SetSize(2*anInitialSize); |
606 r=file.SetSize(2*anInitialSize); |
608 test((r==KErrNone)||(r==KErrDiskFull)); |
607 test((r==KErrNone)||(r==KErrDiskFull)); |
609 file.Close(); |
608 file.Close(); |
610 } |
609 } |