113 iFileMan=aFileMan; |
112 iFileMan=aFileMan; |
114 } |
113 } |
115 |
114 |
116 MFileManObserver::TControl CFileManObserver::NotifyFileManStarted() |
115 MFileManObserver::TControl CFileManObserver::NotifyFileManStarted() |
117 { |
116 { |
118 (void)MFileManObserver::NotifyFileManStarted(); |
|
119 TInt lastError = iFileMan->GetLastError(); |
117 TInt lastError = iFileMan->GetLastError(); |
120 TFileName fileName = iFileMan->CurrentEntry().iName; |
118 TFileName fileName = iFileMan->CurrentEntry().iName; |
121 test.Printf(_L("NotifyFileManStarted(): Error %d File %S\n"),lastError, &fileName); |
119 test.Printf(_L("NotifyFileManStarted(): Error %d File %S\n"),lastError, &fileName); |
122 return(MFileManObserver::EContinue); |
120 return(MFileManObserver::EContinue); |
123 } |
121 } |
124 |
122 |
125 MFileManObserver::TControl CFileManObserver::NotifyFileManOperation() |
123 MFileManObserver::TControl CFileManObserver::NotifyFileManOperation() |
126 { |
124 { |
127 (void)MFileManObserver::NotifyFileManOperation(); |
|
128 TInt lastError = iFileMan->GetLastError(); |
125 TInt lastError = iFileMan->GetLastError(); |
129 TFileName fileName = iFileMan->CurrentEntry().iName; |
126 TFileName fileName = iFileMan->CurrentEntry().iName; |
130 test.Printf(_L("NotifyFileManOperation(): Error %d File %S\n"),lastError, &fileName); |
127 test.Printf(_L("NotifyFileManOperation(): Error %d File %S\n"),lastError, &fileName); |
131 return(MFileManObserver::EContinue); |
128 return(MFileManObserver::EContinue); |
132 } |
129 } |
169 const TFileName fname = KFile2GBMinusOne(); |
166 const TFileName fname = KFile2GBMinusOne(); |
170 |
167 |
171 test.Next(_L("2GBMinusOne File: Open")); |
168 test.Next(_L("2GBMinusOne File: Open")); |
172 |
169 |
173 r = f.Open(TheFs, fname, EFileRead); |
170 r = f.Open(TheFs, fname, EFileRead); |
174 test_KErrNone(r); |
171 test(r==KErrNone); |
175 |
172 |
176 testSize = K2GbMinusOne; |
173 testSize = K2GbMinusOne; |
177 |
174 |
178 test.Next(_L("2GBMinusOne File: Read")); |
175 test.Next(_L("2GBMinusOne File: Read")); |
179 |
176 |
180 r=f.Size((TInt&) size); |
177 r=f.Size((TInt&) size); |
181 test_KErrNone(r); |
178 test(r==KErrNone); |
182 test(size == testSize); |
179 test(size == testSize); |
183 |
180 |
184 r = TheFs.Entry(fname, entry); |
181 r = TheFs.Entry(fname, entry); |
185 test_KErrNone(r); |
182 test(r==KErrNone); |
186 test ((TUint) entry.iSize == testSize); |
183 test ((TUint) entry.iSize == testSize); |
187 |
184 |
188 // seek to just below 2GB |
185 // seek to just below 2GB |
189 testPos = (K2GbMinusOne - K1Kb) & KPosMask; |
186 testPos = (K2GbMinusOne - K1Kb) & KPosMask; |
190 r = f.Seek(ESeekStart, (TInt&) testPos); |
187 r = f.Seek(ESeekStart, (TInt&) testPos); |
191 test_KErrNone(r); |
188 test(r==KErrNone); |
192 |
189 |
193 r = f.Read(bufPtr); |
190 r = f.Read(bufPtr); |
194 test_KErrNone(r); |
191 test(r==KErrNone); |
195 |
192 |
196 TUint posRead = * ((TUint*) &bufPtr[0]); |
193 TUint posRead = * ((TUint*) &bufPtr[0]); |
197 test.Printf(_L("position read %08X, expected %08X\n"), posRead, testPos); |
194 test.Printf(_L("position read %08X, expected %08X\n"), posRead, testPos); |
198 test(posRead == testPos); |
195 test(posRead == testPos); |
199 |
196 |
222 const TFileName fname = KFile2GB(); |
219 const TFileName fname = KFile2GB(); |
223 testSize = K2Gb; |
220 testSize = K2Gb; |
224 |
221 |
225 test.Next(_L("2GB File: Test the size with RFs::Entry")); |
222 test.Next(_L("2GB File: Test the size with RFs::Entry")); |
226 r = TheFs.Entry(fname, entry); |
223 r = TheFs.Entry(fname, entry); |
227 test_KErrNone(r); |
224 test(r==KErrNone); |
228 test ((TUint) entry.iSize == testSize); |
225 test ((TUint) entry.iSize == testSize); |
229 |
226 |
230 test.Next(_L("2GB File: Attempt to open (should fail with KErrToBig)")); |
227 test.Next(_L("2GB File: Attempt to open (should fail with KErrToBig)")); |
231 |
228 |
232 r = f.Open(TheFs, fname, EFileRead); |
229 r = f.Open(TheFs, fname, EFileRead); |
233 test_Value(r, r == KErrTooBig); |
230 test(r==KErrTooBig); |
234 } |
231 } |
235 |
232 |
236 //---------------------------------------------------------------------------------------------- |
233 //---------------------------------------------------------------------------------------------- |
237 //! @SYMTestCaseID PBASE-T_BIGFILE-0003 |
234 //! @SYMTestCaseID PBASE-T_BIGFILE-0003 |
238 //! @SYMTestType CIT |
235 //! @SYMTestType CIT |
255 const TFileName fname = KFile3GB(); |
252 const TFileName fname = KFile3GB(); |
256 testSize = K3Gb; |
253 testSize = K3Gb; |
257 |
254 |
258 test.Next(_L("3GB File: Test the size with RFs::Entry")); |
255 test.Next(_L("3GB File: Test the size with RFs::Entry")); |
259 r = TheFs.Entry(fname, entry); |
256 r = TheFs.Entry(fname, entry); |
260 test_KErrNone(r); |
257 test(r==KErrNone); |
261 test ((TUint) entry.iSize == testSize); |
258 test ((TUint) entry.iSize == testSize); |
262 |
259 |
263 test.Next(_L("3GB File: Attempt to open (should fail with KErrToBig)")); |
260 test.Next(_L("3GB File: Attempt to open (should fail with KErrToBig)")); |
264 |
261 |
265 r = f.Open(TheFs, fname, EFileRead); |
262 r = f.Open(TheFs, fname, EFileRead); |
266 test_Value(r, r == KErrTooBig); |
263 test(r==KErrTooBig); |
267 } |
264 } |
268 |
265 |
269 //---------------------------------------------------------------------------------------------- |
266 //---------------------------------------------------------------------------------------------- |
270 //! @SYMTestCaseID PBASE-T_BIGFILE-0004 |
267 //! @SYMTestCaseID PBASE-T_BIGFILE-0004 |
271 //! @SYMTestType CIT |
268 //! @SYMTestType CIT |
325 testSize = K2GbMinusOne; |
322 testSize = K2GbMinusOne; |
326 |
323 |
327 test.Next(_L("2GBMinusOne File: Open")); |
324 test.Next(_L("2GBMinusOne File: Open")); |
328 |
325 |
329 r = f.Open(TheFs, fname, EFileRead | EFileWrite); |
326 r = f.Open(TheFs, fname, EFileRead | EFileWrite); |
330 test_KErrNone(r); |
327 test(r==KErrNone); |
331 |
328 |
332 |
329 |
333 test.Next(_L("2GBMinusOne File: Attempt to extend")); |
330 test.Next(_L("2GBMinusOne File: Attempt to extend")); |
334 |
331 |
335 r=f.Size((TInt&) size); |
332 r=f.Size((TInt&) size); |
336 test_KErrNone(r); |
333 test(r==KErrNone); |
337 test(size == testSize); |
334 test(size == testSize); |
338 |
335 |
339 r = TheFs.Entry(fname, entry); |
336 r = TheFs.Entry(fname, entry); |
340 test_KErrNone(r); |
337 test(r==KErrNone); |
341 test ((TUint) entry.iSize == testSize); |
338 test ((TUint) entry.iSize == testSize); |
342 |
339 |
343 // seek to end |
340 // seek to end |
344 testPos = 0; |
341 testPos = 0; |
345 r = f.Seek(ESeekEnd, (TInt&) testPos); |
342 r = f.Seek(ESeekEnd, (TInt&) testPos); |
346 test_KErrNone(r); |
343 test(r==KErrNone); |
347 |
344 |
348 bufPtr.SetLength(1); |
345 bufPtr.SetLength(1); |
349 r = f.Write(bufPtr); |
346 r = f.Write(bufPtr); |
350 test_Value(r, r == KErrTooBig); |
347 test(r==KErrTooBig); |
351 |
348 |
352 f.Close(); |
349 f.Close(); |
353 } |
350 } |
354 |
351 |
355 //---------------------------------------------------------------------------------------------- |
352 //---------------------------------------------------------------------------------------------- |
484 TPath filePathOld = gSessionPath; |
481 TPath filePathOld = gSessionPath; |
485 filePathOld+= _L("*.*"); |
482 filePathOld+= _L("*.*"); |
486 TPath filePathNew = _L("?:\\TEST\\"); |
483 TPath filePathNew = _L("?:\\TEST\\"); |
487 TChar driveLetter; |
484 TChar driveLetter; |
488 TInt r=TheFs.DriveToChar(gDrive,driveLetter); |
485 TInt r=TheFs.DriveToChar(gDrive,driveLetter); |
489 test_KErrNone(r); |
486 test(r==KErrNone); |
490 filePathNew[0] = (TText) driveLetter; |
487 filePathNew[0] = (TText) driveLetter; |
491 |
488 |
492 // move to new directory |
489 // move to new directory |
493 r = fileMan->Move(filePathOld, filePathNew, CFileMan::ERecurse | CFileMan::EOverWrite); |
490 r = fileMan->Move(filePathOld, filePathNew, CFileMan::ERecurse | CFileMan::EOverWrite); |
494 test_KErrNone(r); |
491 test(r == KErrNone); |
495 |
492 |
496 // then move back again |
493 // then move back again |
497 r = fileMan->Move(filePathNew, filePathOld); |
494 r = fileMan->Move(filePathNew, filePathOld); |
498 test_KErrNone(r); |
495 test(r == KErrNone); |
499 |
496 |
500 delete fileMan; |
497 delete fileMan; |
501 } |
498 } |
502 |
499 |
503 |
500 |
523 TPath filePathOld = gSessionPath; |
520 TPath filePathOld = gSessionPath; |
524 filePathOld+= _L("*.*"); |
521 filePathOld+= _L("*.*"); |
525 TPath filePathNew = _L("?:\\TEST\\"); |
522 TPath filePathNew = _L("?:\\TEST\\"); |
526 TChar driveLetter; |
523 TChar driveLetter; |
527 TInt r = TheFs.DriveToChar(gDrive,driveLetter); |
524 TInt r = TheFs.DriveToChar(gDrive,driveLetter); |
528 test_KErrNone(r); |
525 test(r == KErrNone); |
529 filePathNew[0] = (TText) driveLetter; |
526 filePathNew[0] = (TText) driveLetter; |
530 |
527 |
531 // create some small files in the source directory |
528 // create some small files in the source directory |
532 // so that there is a combination of small files and one large files |
529 // so that there is a combination of small files and one large files |
533 RFile file; |
530 RFile file; |
534 _LIT(KFileSmall1, "FileSmallOne.txt"); |
531 _LIT(KFileSmall1, "FileSmallOne.txt"); |
535 _LIT(KFileSmall2, "FileSmallTwo.txt"); |
532 _LIT(KFileSmall2, "FileSmallTwo.txt"); |
536 _LIT(KFileSmall3, "FileSmallThree.txt"); |
533 _LIT(KFileSmall3, "FileSmallThree.txt"); |
537 r = file.Create(TheFs, KFileSmall1(), EFileWrite | EFileShareAny); |
534 r = file.Create(TheFs, KFileSmall1(), EFileWrite | EFileShareAny); |
538 test_KErrNone(r); |
535 test(r == KErrNone); |
539 r = file.Write(_L8("1")); |
536 r = file.Write(_L8("1")); |
540 test_KErrNone(r); |
537 test(r == KErrNone); |
541 file.Close(); |
538 file.Close(); |
542 |
539 |
543 r = file.Create(TheFs, KFileSmall2(), EFileWrite | EFileShareAny); |
540 r = file.Create(TheFs, KFileSmall2(), EFileWrite | EFileShareAny); |
544 test_KErrNone(r); |
541 test(r == KErrNone); |
545 r = file.Write(_L8("12")); |
542 r = file.Write(_L8("12")); |
546 test_KErrNone(r); |
543 test(r == KErrNone); |
547 file.Close(); |
544 file.Close(); |
548 |
545 |
549 r = file.Create(TheFs, KFileSmall3(), EFileWrite | EFileShareAny); |
546 r = file.Create(TheFs, KFileSmall3(), EFileWrite | EFileShareAny); |
550 test_KErrNone(r); |
547 test(r == KErrNone); |
551 r = file.Write(_L8("123")); |
548 r = file.Write(_L8("123")); |
552 test_KErrNone(r); |
549 test(r == KErrNone); |
553 file.Close(); |
550 file.Close(); |
554 |
551 |
555 // copy to new directory |
552 // copy to new directory |
556 r = fileMan->Copy(filePathOld, filePathNew, CFileMan::ERecurse | CFileMan::EOverWrite); |
553 r = fileMan->Copy(filePathOld, filePathNew, CFileMan::ERecurse | CFileMan::EOverWrite); |
557 test_Value(r, r == KErrNone || r == KErrTooBig); |
554 test(r == KErrNone || r == KErrTooBig); |
558 |
555 |
559 |
556 |
560 // check SMALL files have been copied |
557 // check SMALL files have been copied |
561 RDir dir; |
558 RDir dir; |
562 r = dir.Open(TheFs, filePathNew, KEntryAttNormal); |
559 r = dir.Open(TheFs, filePathNew, KEntryAttNormal); |
563 test_KErrNone(r); |
560 test (r == KErrNone); |
564 TEntryArray entryArray; |
561 TEntryArray entryArray; |
565 r = dir.Read(entryArray); |
562 r = dir.Read(entryArray); |
566 test_Value(r, r == KErrEof); |
563 test (r == KErrEof); |
567 test(entryArray.Count() == 3); |
564 test(entryArray.Count() == 3); |
568 dir.Close(); |
565 dir.Close(); |
569 |
566 |
570 // then delete the new directory |
567 // then delete the new directory |
571 r = fileMan->Delete(filePathNew); |
568 r = fileMan->Delete(filePathNew); |
572 test_KErrNone(r); |
569 test(r == KErrNone); |
573 |
570 |
574 |
571 |
575 // attempt to copy to new directory again - this time with an observer |
572 // attempt to copy to new directory again - this time with an observer |
576 fileMan->SetObserver(observer); |
573 fileMan->SetObserver(observer); |
577 r = fileMan->Copy(filePathOld, filePathNew, CFileMan::ERecurse | CFileMan::EOverWrite); |
574 r = fileMan->Copy(filePathOld, filePathNew, CFileMan::ERecurse | CFileMan::EOverWrite); |
578 test_Value(r, r == KErrNone || r == KErrTooBig); |
575 test(r == KErrNone || r == KErrTooBig); |
579 |
576 |
580 // test that 3 small files were copied and 1 or 2 large files failed to copy |
577 // test that 3 small files were copied and 1 or 2 large files failed to copy |
581 // (For 8 GB disk, the 4GB file is missing) |
578 // (For 8 GB disk, the 4GB file is missing) |
582 test(observer->iNotifyEndedSuccesses == 3); |
579 test(observer->iNotifyEndedSuccesses == 3); |
583 test(observer->iNotifyEndedFailures == 1 || observer->iNotifyEndedFailures == 2); |
580 test(observer->iNotifyEndedFailures == 1 || observer->iNotifyEndedFailures == 2); |
584 |
581 |
585 // check SMALL files have been copied |
582 // check SMALL files have been copied |
586 r = dir.Open(TheFs, filePathNew, KEntryAttNormal); |
583 r = dir.Open(TheFs, filePathNew, KEntryAttNormal); |
587 test_KErrNone(r); |
584 test (r == KErrNone); |
588 r = dir.Read(entryArray); |
585 r = dir.Read(entryArray); |
589 test_Value(r, r == KErrEof); |
586 test (r == KErrEof); |
590 test(entryArray.Count() == 3); |
587 test(entryArray.Count() == 3); |
591 dir.Close(); |
588 dir.Close(); |
592 |
589 |
593 // then delete the new directory |
590 // then delete the new directory |
594 r = fileMan->Delete(filePathNew); |
591 r = fileMan->Delete(filePathNew); |
595 test_KErrNone(r); |
592 test(r == KErrNone); |
596 |
593 |
597 delete observer; |
594 delete observer; |
598 delete fileMan; |
595 delete fileMan; |
599 } |
596 } |
600 |
597 |
670 } |
667 } |
671 |
668 |
672 TInt r; |
669 TInt r; |
673 |
670 |
674 r = TheFs.CharToDrive(gDriveToTest, gDrive); |
671 r = TheFs.CharToDrive(gDriveToTest, gDrive); |
675 test_KErrNone(r); |
672 test(r==KErrNone); |
676 |
673 |
677 #ifdef __MOUNT_RAW_EXT__ |
674 #ifdef __MOUNT_RAW_EXT__ |
678 r=TheFs.FileSystemName(gOldFsName, gDrive); |
675 r=TheFs.FileSystemName(gOldFsName, gDrive); |
679 test_KErrNone(r); |
676 test(r==KErrNone); |
680 |
677 |
681 if (gOldFsName.CompareF(KFATName) != 0) |
678 if (gOldFsName.CompareF(KFATName) != 0) |
682 { |
679 { |
683 test.Printf(_L("Skipping test: Not a FAT drive\n")); |
680 test.Printf(_L("Skipping test: Not a FAT drive\n")); |
684 return; |
681 return; |
685 } |
682 } |
686 |
683 |
687 r = TheFs.AddExtension(KExtName); |
684 r = TheFs.AddExtension(KExtName); |
688 test_Value(r, r == KErrNone || r==KErrAlreadyExists); |
685 test(r==KErrNone || r==KErrAlreadyExists); |
689 r = TheFs.MountExtension(KExtName, gDrive); |
686 r = TheFs.MountExtension(KExtName, gDrive); |
690 test_Value(r, r == KErrNone || r==KErrAlreadyExists); |
687 test(r==KErrNone || r==KErrAlreadyExists); |
691 #endif |
688 #endif |
692 |
689 |
693 TVolumeInfo vi; |
690 TVolumeInfo vi; |
694 test((r = TheFs.Volume(vi, gDrive)) == KErrNone); |
691 test((r = TheFs.Volume(vi, gDrive)) == KErrNone); |
695 test.Printf(_L("vi.iSize = %ld\n"), vi.iSize); |
692 test.Printf(_L("vi.iSize = %ld\n"), vi.iSize); |