--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/f32test/server/t_locate.cpp Thu Dec 17 09:24:54 2009 +0200
@@ -0,0 +1,1055 @@
+// Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// f32test\server\t_locate.cpp
+//
+//
+#define __E32TEST_EXTENSION__
+#include <f32file.h>
+#include <e32test.h>
+#include "t_server.h"
+
+
+
+GLDEF_D RTest test(_L("T_LOCATE"));
+
+LOCAL_D TFileName gPath1;
+LOCAL_D TFileName gPath2;
+LOCAL_D TFileName gPath3;
+LOCAL_D TFileName gPath4;
+LOCAL_D TFileName gPath5;
+
+
+LOCAL_D TFileName gRemovableDriveFile;
+LOCAL_D TFileName gInternalDriveFile;
+LOCAL_D TFileName gInternalDriveFile2;
+
+
+LOCAL_D TChar removableDriveLetter;
+LOCAL_D TChar internalDriveLetter;
+
+
+LOCAL_D TInt removableFlag=0;
+LOCAL_D TInt internalFlag=0;
+
+
+
+LOCAL_C void Md(const TDesC& aDirName)
+//
+// Make a dir
+//
+ {
+
+ TInt r=TheFs.MkDirAll(aDirName);
+ if (r == KErrCorrupt)
+ test.Printf(_L("Media corruption; previous test may have aborted; else, check hardware\n"));
+ else if (r == KErrNotReady)
+ test.Printf(_L("No medium present / drive not ready, previous test may have hung; else, check hardware\n"));
+ test_Value(r, r == KErrNone || r == KErrAlreadyExists);
+ }
+
+LOCAL_C void Mf(const TDesC& aFileName)
+//
+// Make a file
+//
+ {
+
+ RFile file;
+ TInt r = file.Replace(TheFs,aFileName,0);
+ if (r == KErrPathNotFound)
+ {
+ test.Printf(_L("Mf: Path Not Found\n"));
+ Md(aFileName);
+ r=file.Replace(TheFs,aFileName,0);
+ }
+
+ if (r == KErrCorrupt)
+ test.Printf(_L("Media corruption; previous test may have aborted; else, check hardware\n"));
+ else if (r == KErrNotReady)
+ test.Printf(_L("No medium present / drive not ready, previous test may have hung; else, check hardware\n"));
+
+ test_Value(r, r == KErrNone || r == KErrAlreadyExists);
+ file.Close();
+ }
+
+LOCAL_C void MakeLocateTestDirectoryStructure()
+//
+// Create files for test
+//
+ {
+ test.Next(_L("Create LOCTEST directories"));
+ Md(_L("\\F32-TST\\LOCTEST\\BIN1\\"));
+ Md(_L("\\F32-TST\\LOCTEST\\BIN2\\"));
+ Md(_L("\\F32-TST\\LOCTEST\\BIN3\\"));
+ Md(_L("\\F32-TST\\LOCTEST\\BIN1\\BIN4\\"));
+
+
+
+#if defined(_DEBUG)
+ TheFs.SetErrorCondition(-47,5);
+ TDriveInfo drive;
+ for (TInt i=0;i<5;i++)
+ {
+ TInt r=TheFs.Drive(drive);
+ test(r==KErrNone);
+ }
+ TInt r=TheFs.MkDirAll(_L("alskdjfl"));
+ test(r==-47);
+ r=TheFs.MkDirAll(_L("alskdjfl"));
+ test(r==-47);
+ TheFs.SetErrorCondition(KErrNone);
+ r=TheFs.Drive(drive);
+ test(r==KErrNone);
+#endif
+//
+ test.Next(_L("Create LOCTEST files"));
+ Mf(_L("\\F32-TST\\LOCTEST\\FILE1.AAA"));
+ Mf(_L("\\F32-TST\\LOCTEST\\FILE2.BBB"));
+ Mf(_L("\\F32-TST\\LOCTEST\\FILE3.CCC"));
+ Mf(_L("\\F32-TST\\LOCTEST\\WORK.AAA"));
+ Mf(_L("\\F32-TST\\LOCTEST\\HOME.CCC"));
+ Mf(_L("\\F32-TST\\LOCTEST\\FILE.AAA"));
+ Mf(_L("C:\\F32-TST\\LOCTEST\\BIN1\\FILE1.AAA"));
+ Mf(_L("C:\\F32-TST\\LOCTEST\\BIN1\\WORK.AAA"));
+ Mf(_L("C:\\F32-TST\\LOCTEST\\BIN1\\WORK.BBB"));
+ Mf(_L("\\F32-TST\\LOCTEST\\BIN1\\FILE1.AAA"));
+ Mf(_L("\\F32-TST\\LOCTEST\\BIN1\\WORK.AAA"));
+ Mf(_L("\\F32-TST\\LOCTEST\\BIN1\\WORK.BBB"));
+ Mf(_L("\\F32-TST\\LOCTEST\\BIN1\\CONFUSED.DOG"));
+ Mf(_L("\\F32-TST\\LOCTEST\\BIN2\\FILE1.BBB"));
+ Mf(_L("\\F32-TST\\LOCTEST\\BIN2\\WORK.BBB"));
+ Mf(_L("\\F32-TST\\LOCTEST\\BIN2\\FILE2.BBB"));
+ Mf(_L("\\F32-TST\\LOCTEST\\BIN2\\FILE3.BBB"));
+ Mf(_L("\\F32-TST\\LOCTEST\\BIN3\\FILE3.CCC"));
+ Mf(_L("\\F32-TST\\LOCTEST\\BIN3\\WORK.CCC"));
+ Mf(_L("\\F32-TST\\LOCTEST\\BIN3\\PLAY.CCC"));
+ Mf(_L("\\F32-TST\\LOCTEST\\BIN1\\BIN4\\FILE1.AAA"));
+ Mf(_L("\\F32-TST\\LOCTEST\\BIN1\\BIN4\\FILE2.BBB"));
+ Mf(_L("\\F32-TST\\LOCTEST\\BIN1\\BIN4\\FILE3.CCC"));
+ Mf(_L("\\F32-TST\\LOCTEST\\BIN1\\BIN4\\FILE4.DDD"));
+
+
+
+ }
+
+
+LOCAL_C void CreateFilesInRemovableDrive()
+ {
+
+
+ TInt err;
+ TDriveList driveList;
+ TDriveInfo info;
+
+ err = TheFs.DriveList(driveList);
+ test( err == KErrNone );
+
+ for (TInt i = 0; i < KMaxDrives; i++)
+ {
+
+ if (driveList[i])
+ {
+ err = TheFs.Drive(info, i);
+ test( err == KErrNone );
+
+ if( info.iDriveAtt & KDriveAttRemovable )
+ {
+
+ if ( ( info.iType != EMediaNotPresent) && (info.iType != EMediaUnknown) && (info.iType != EMediaCdRom) )
+ {
+ TheFs.DriveToChar(i,removableDriveLetter) ;
+ gRemovableDriveFile.Append (removableDriveLetter);
+ gRemovableDriveFile.Append (_L(":\\F32-TST\\LOCTEST\\BIN\\FINDFILE.AAA") );
+
+ Mf(gRemovableDriveFile);
+ removableFlag=1;
+ break;
+ }
+ else
+ continue;
+
+
+ }
+
+
+ }
+
+ }
+
+ }
+
+
+
+LOCAL_C void CreateFilesInInternalDrive()
+ {
+
+ TInt err;
+ TDriveList driveList;
+ TDriveInfo info;
+
+ err = TheFs.DriveList(driveList);
+ test( err == KErrNone );
+
+ for (TInt i = 0; i < KMaxDrives; i++)
+ {
+
+ if (driveList[i])
+ {
+ err = TheFs.Drive(info, i);
+ test( err == KErrNone );
+
+ if( info.iDriveAtt & KDriveAttInternal )
+ {
+
+ TheFs.DriveToChar(i,internalDriveLetter) ;
+ gInternalDriveFile.Append (internalDriveLetter);
+ gInternalDriveFile.Append (_L(":\\F32-TST\\LOCTEST\\BIN\\INT\\FINDINTERNALFILE.AAA") );
+
+ gInternalDriveFile2.Append (internalDriveLetter);
+ gInternalDriveFile2.Append (_L(":\\F32-TST\\LOCTEST\\BIN\\INT\\FINDINTERNALFILE_B.AAA") );
+
+ Mf(gInternalDriveFile);
+ Mf(gInternalDriveFile2);
+ internalFlag=1;
+
+ break;
+ }
+
+ }
+
+ }
+
+
+ }
+
+
+
+
+LOCAL_C void DeleteRemovableDirectory()
+ {
+
+ //Delete the directory structure we created in the removalbe drive
+ if ( removableFlag == 1 )
+ {
+ CFileMan* fMan=CFileMan::NewL(TheFs);
+ test(fMan!=NULL);
+
+ TFileName gPathRem;
+ gPathRem.Append (removableDriveLetter);
+ gPathRem.Append (_L(":\\F32-TST\\") );
+ TInt r=fMan->RmDir(gPathRem);
+ test(r==KErrNone);
+
+ delete fMan;
+ }
+ }
+
+LOCAL_C void DeleteInternalDirectory()
+ {
+
+ //Delete the directory structure we created in the internal drive
+
+
+ if( internalFlag == 1 )
+ {
+ CFileMan* fMan=CFileMan::NewL(TheFs);
+ test(fMan!=NULL);
+
+ TFileName gPathInt;
+ gPathInt.Append (internalDriveLetter);
+ gPathInt.Append (_L(":\\F32-TST\\") );
+ TInt r=fMan->RmDir(gPathInt);
+ test(r==KErrNone);
+
+ delete fMan;
+ }
+ }
+
+
+LOCAL_C void MountRemoteFilesystem()
+ {
+
+ test.Next(_L("Mount Remote Drive simulator on Q:\n"));
+
+
+ TInt r=TheFs.AddFileSystem(_L("CFAFSDLY"));
+ test.Printf(_L("Add remote file system\n"));
+ test.Printf(_L("AddFileSystem returned %d\n"),r);
+ test (r==KErrNone || r==KErrAlreadyExists);
+
+
+ r=TheFs.MountFileSystem(_L("DELAYFS"),EDriveQ);
+
+
+ test.Printf(_L("Mount remote file system\n"));
+ test.Printf(_L("MountFileSystem returned %d\n"),r);
+ test(r==KErrNone || r==KErrCorrupt || r==KErrNotReady || r==KErrAlreadyExists);
+
+
+ Mf(_L("Q:\\F32-TST\\LOCTEST\\BIN\\FINDFILE.AAA"));
+
+ }
+
+
+
+LOCAL_C void DisMountRemoteFilesystem()
+ {
+
+ test.Printf(_L("Dismounting the remote Drives \n"));
+
+ TInt r=TheFs.DismountFileSystem(_L("DELAYFS"),EDriveQ);
+
+ test.Printf(_L("Dismounting the Remote Drive returned %d\n"),r);
+
+ test(r==KErrNone );
+ }
+
+
+
+
+LOCAL_C void Test1()
+//
+// Do simple tests
+//
+ {
+ test.Next(_L("Test FindByPath"));
+
+ TAutoClose<RFs> fs;
+ TInt r=fs.iObj.Connect();
+ test(r==KErrNone);
+ TFindFile finder(fs.iObj);
+ TPtrC path=gPath1;
+ r=finder.FindByPath(_L("file1.aaa"),&path);
+ test(r==KErrNone);
+ TParse fileParse;
+ fileParse.Set(finder.File(),NULL,NULL);
+ test(fileParse.Path()==_L("\\F32-TST\\LOCTEST\\BIN1\\"));
+ test(fileParse.NameAndExt()==_L("file1.aaa"));
+ r=finder.Find();
+ test(r==KErrNotFound);
+
+
+ path.Set(gPath2);
+ r=finder.FindByPath(_L("file1.aaa"),&path);
+ test(r==KErrNone);
+ fileParse.Set(finder.File(),NULL,NULL);
+ test(fileParse.Path()==_L("\\F32-TST\\LOCTEST\\BIN1\\"));
+ test(fileParse.NameAndExt()==_L("file1.aaa"));
+ r=finder.Find();
+ test(r==KErrNone);
+ fileParse.Set(finder.File(),NULL,NULL);
+ test(fileParse.Path()==_L("\\F32-TST\\LOCTEST\\BIN1\\BIN4\\"));
+ test(fileParse.NameAndExt()==_L("file1.aaa"));
+ r=finder.Find();
+ test(r==KErrNotFound);
+//
+ test.Next(_L("Test FindByDir"));
+ TPtrC dir=_L("\\F32-TST\\LOCTEST\\BIN2\\");
+ r=finder.FindByDir(_L("file2.bbb"),dir);
+ test(r==KErrNone);
+ TFileName defaultPath;
+ r=TheFs.SessionPath(defaultPath);
+ defaultPath.SetLength(2);
+ test(r==KErrNone);
+ fileParse.Set(finder.File(),NULL,NULL);
+ test(fileParse.Drive()==defaultPath);
+ test(fileParse.Path()==_L("\\F32-TST\\LOCTEST\\BIN2\\"));
+ test(_L("file2.bbb").MatchF(fileParse.NameAndExt())!=KErrNotFound); // MatchF only sees wildcards in its argument
+ r=finder.Find();
+ if (r==KErrNone)
+ {
+ fileParse.Set(finder.File(),NULL,NULL);
+ if (defaultPath==_L("C:"))
+ test(fileParse.Drive()==_L("Y:"));
+ else
+ test(fileParse.Drive()==_L("C:"));
+ test(fileParse.Path()==_L("\\F32-TST\\LOCTEST\\BIN2\\"));
+ test(_L("file2.bbb").MatchF(fileParse.NameAndExt())!=KErrNotFound);
+ r=finder.Find();
+ }
+ test(r==KErrNotFound);
+ }
+
+LOCAL_C void Test2()
+//
+// Test extremes
+//
+ {
+
+ test.Next(_L("Test extremes"));
+ TAutoClose<RFs> fs;
+ TInt r=fs.iObj.Connect();
+ test(r==KErrNone);
+ TBuf<4> temp=_L("");
+ TFindFile finder(fs.iObj);
+ r=finder.FindByPath(_L("file1.aaa"),&temp);
+ test(r==KErrNotFound);
+ r=finder.Find();
+ test(r==KErrNotFound);
+//
+ TPtrC path=_L("blarg.7");
+ r=finder.FindByPath(_L(""),&path);
+ test(r==KErrArgument);
+ r=finder.FindByPath(_L("*"),&path);
+ test(r==KErrNotFound);
+ r=finder.FindByPath(_L("xmvid"),&path);
+ test(r==KErrNotFound);
+ r=finder.Find();
+ test(r==KErrNotFound);
+//
+ path.Set(_L("C:\\F32-TST\\LOCTEST\\BIN1\\;\\F32-TST\\LOCTEST\\BIN2\\;Z:\\F32-TST\\LOCTEST\\BIN1\\BIN4\\;\\F32-TST\\LOCTEST\\BIN3\\;"));
+ r=finder.FindByPath(_L(""),&path);
+ test(r==KErrArgument);
+ r=finder.FindByPath(_L("xyz.abc"),&path);
+ test(r==KErrNotFound);
+ r=finder.Find();
+ test(r==KErrNotFound);
+
+ test.Next(_L("Test FindByDir with empty file spec"));
+ TPtrC dir2=_L("\\F32-TST\\LOCTEST\\");
+ r=finder.FindByDir(_L(""),dir2);
+ test(r==KErrArgument);
+
+ }
+
+LOCAL_C void Test3()
+//
+// Test FindByDrives in a path=_L("c:\xyz;z:\lmnop;\abc;\y:\help");
+//
+ {
+
+ test.Next(_L("Test FindInDrivesByPath"));
+ TPtrC path=_L("\\F32-TST\\LOCTEST\\BIN2\\");
+ TFileName defaultPath;
+ TInt r=TheFs.SessionPath(defaultPath);
+ defaultPath.SetLength(2);
+//
+ TAutoClose<RFs> fs;
+ r=fs.iObj.Connect();
+ test(r==KErrNone);
+ TFindFile finder(fs.iObj);
+ r=finder.FindByPath(_L("file1.aaa"),&path);
+ test(r==KErrNotFound);
+ r=finder.Find();
+ test(r==KErrNotFound);
+//
+ path.Set(_L("\\F32-TST\\LOCTEST\\BIN2\\"));
+ r=finder.FindByPath(_L("file2.bbb"),&path);
+ test(r==KErrNone);
+ TParse fileParse;
+ fileParse.Set(finder.File(),NULL,NULL);
+ test(fileParse.Drive()==defaultPath);
+ test(fileParse.Path()==_L("\\F32-TST\\LOCTEST\\BIN2\\"));
+ test(fileParse.NameAndExt()==_L("file2.bbb"));
+ r=finder.Find();
+ test(r==KErrNotFound || r==KErrNone);
+ if (r==KErrNone)
+ {
+ fileParse.Set(finder.File(),NULL,NULL);
+ test(fileParse.Drive()!=defaultPath);
+ test(fileParse.Path()==_L("\\F32-TST\\LOCTEST\\BIN2\\"));
+ test(fileParse.NameAndExt()==_L("file2.bbb"));
+ r=finder.Find();
+ test(r==KErrNotFound);
+ }
+//
+ path.Set(_L("C:\\F32-TST\\LOCTEST\\BIN1\\;;\\F32-TST\\LOCTEST\\BIN2\\;Z:\\F32-TST\\LOCTEST\\BIN1\\BIN4\\;\\F32-TST\\LOCTEST\\BIN3\\;"));
+ r=finder.FindByPath(_L("xyz.abc"),&path);
+ test(r==KErrNotFound);
+ r=finder.Find();
+ test(r==KErrNotFound);
+//
+ r=finder.FindByPath(_L("file2.bbb"),&path);
+ test(r==KErrNone);
+ fileParse.Set(finder.File(),NULL,NULL);
+ test(fileParse.Drive()==defaultPath);
+ test(fileParse.Path()==_L("\\F32-TST\\LOCTEST\\BIN2\\"));
+ test(fileParse.NameAndExt()==_L("file2.bbb"));
+ r=finder.Find();
+ test(r==KErrNotFound || r==KErrNone);
+ if (r==KErrNone)
+ {
+ fileParse.Set(finder.File(),NULL,NULL);
+ test(fileParse.Drive()!=defaultPath);
+ test(fileParse.Path()==_L("\\F32-TST\\LOCTEST\\BIN2\\"));
+ test(fileParse.NameAndExt()==_L("file2.bbb"));
+ r=finder.Find();
+ test(r==KErrNotFound);
+ }
+ }
+
+LOCAL_C void Test4()
+//
+// Test wildcard findbypath
+//
+ {
+
+ test.Next(_L("FindByPath with wild filenames"));
+ TFindFile finder(TheFs);
+ CDir* dir;
+ TInt count;
+ TEntry entry;
+ TFileName path;
+
+ TInt r=finder.FindWildByPath(_L("*.aaa"),&gPath3,dir);
+ test(r==KErrNone);
+ count=dir->Count();
+ test(count==3);
+ entry=(*dir)[0];
+ test(entry.iName.MatchF(_L("FILE.AAA"))!=KErrNotFound);
+ entry=(*dir)[1];
+ test(entry.iName.MatchF(_L("FILE1.AAA"))!=KErrNotFound);
+ entry=(*dir)[2];
+ test(entry.iName.MatchF(_L("WORK.AAA"))!=KErrNotFound);
+ TParse fileParse;
+ fileParse.Set(finder.File(),NULL,NULL);
+ path=fileParse.FullName();
+ test(path==_L("*.aaa"));
+ delete dir;
+
+ r=finder.FindWild(dir);
+ test(r==KErrNone);
+ count=dir->Count();
+ test(count==2);
+ entry=(*dir)[0];
+ test(entry.iName.MatchF(_L("FILE1.AAA"))!=KErrNotFound);
+ entry=(*dir)[1];
+ test(entry.iName.MatchF(_L("WORK.AAA"))!=KErrNotFound);
+ fileParse.Set(finder.File(),NULL,NULL);
+ path=fileParse.FullName();
+ test(path==_L("C:\\F32-TST\\LOCTEST\\BIN1\\*.aaa"));
+ delete dir;
+
+ r=finder.FindWild(dir);
+ test(r==KErrNotFound);
+ r=finder.FindWild(dir);
+ test(r==KErrNotFound);
+
+ r=finder.FindWildByPath(_L("*FILE.AAA*"), &gPath1, dir);
+ test(r==KErrNone);
+ test(dir->Count()==1);
+ entry=(*dir)[0];
+ test(entry.iName.MatchF(_L("FILE.AAA"))!=KErrNotFound);
+ delete dir;
+ r=finder.FindWildByPath(_L("*FILE.AAA"), &gPath1, dir);
+ test(r==KErrNone);
+ test(dir->Count()==1);
+ entry=(*dir)[0];
+ test(entry.iName.MatchF(_L("FILE.AAA"))!=KErrNotFound);
+ delete dir;
+ r=finder.FindWildByPath(_L("FILE.AAA*"), &gPath1, dir);
+ test(r==KErrNone);
+ test(dir->Count()==1);
+ entry=(*dir)[0];
+ test(entry.iName.MatchF(_L("FILE.AAA"))!=KErrNotFound);
+ delete dir;
+ r=finder.FindWildByPath(_L("CONFUSED.DOG"), &gPath1, dir);
+ test(r==KErrNone);
+ test(dir->Count()==1);
+ entry=(*dir)[0];
+ test(entry.iName.MatchF(_L("CONFUSED.DOG"))!=KErrNotFound);
+ delete dir;
+ r=finder.FindWildByPath(_L("*CONFUSED.DOG"), &gPath1, dir);
+ test(r==KErrNone);
+ test(dir->Count()==1);
+ entry=(*dir)[0];
+ test(entry.iName.MatchF(_L("CONFUSED.DOG"))!=KErrNotFound);
+ delete dir;
+ r=finder.FindWildByPath(_L("CONFUSED.DOG*"), &gPath1, dir);
+ test(r==KErrNone);
+ test(dir->Count()==1);
+ entry=(*dir)[0];
+ test(entry.iName.MatchF(_L("CONFUSED.DOG"))!=KErrNotFound);
+ delete dir;
+ r=finder.FindWildByPath(_L("*CONFUSED.DOG*"), &gPath1, dir);
+ test(r==KErrNone);
+ test(dir->Count()==1);
+ entry=(*dir)[0];
+ test(entry.iName.MatchF(_L("CONFUSED.DOG"))!=KErrNotFound);
+ delete dir;
+ }
+
+LOCAL_C void Test5()
+//
+// Test wildcard findbydir
+//
+ {
+
+ test.Next(_L("FindByDir with wild filenames"));
+ TFindFile finder(TheFs);
+ CDir* dir;
+ TInt count;
+ TEntry entry;
+ TFileName path;
+
+ TInt r=finder.FindWildByDir(_L("FILE*"),_L("\\F32-TST\\LOCTEST\\BIN3\\"),dir);
+ test(r==KErrNone);
+ count=dir->Count();
+ test(count==1);
+ entry=(*dir)[0];
+ test(entry.iName.MatchF(_L("FILE3.CCC"))!=KErrNotFound);
+ TParse fileParse;
+ fileParse.Set(finder.File(),NULL,NULL);
+ path=fileParse.FullName();
+ TFileName tpath=_L("?:\\F32-TST\\LOCTEST\\BIN3\\FILE*");
+ tpath[0]=gSessionPath[0];
+ test(path.CompareF(tpath)==0);
+ delete dir;
+
+ r=finder.FindWild(dir);
+ if (r==KErrNotFound)
+ return;
+ test(r==KErrNone);
+ entry=(*dir)[0];
+ test(entry.iName.MatchF(_L("FILE3.CCC"))!=KErrNotFound);
+ fileParse.Set(finder.File(),NULL,NULL);
+ path=fileParse.FullName();
+ test(path.CompareF(tpath)==0);
+ delete dir;
+
+ r=finder.FindWild(dir);
+ test(r==KErrNotFound);
+ r=finder.FindWild(dir);
+ test(r==KErrNotFound);
+ }
+
+LOCAL_C void Test6()
+//
+// Test file not found
+//
+ {
+
+ test.Next(_L("Test file not found"));
+ TFindFile ff(TheFs);
+ TInt r=ff.FindByDir(_L("NOEXIST.EXE"),_L("\\System\\Programs\\"));
+ test(r==KErrNotFound);
+ }
+
+
+
+
+// The following test has the requirement that the only remote drive is the one we mount
+// during the test(DELAYFS) and which doesn't have any other attributes set. If this is not the
+// case then test conditions must be changed, in order for the test to stop failing.
+// Even more if a removable drive is not present in the target platform then findfile.aaa
+// only exists in the remote one and this is why we have a distinction in the test results.
+//
+
+
+
+ //---------------------------------------------
+ //! @SYMTestCaseID PBASE-T_LOCATE-0553
+ //! @SYMTestType UT
+ //! @SYMREQ CR909
+ //! @SYMTestCaseDesc When using the various Find functions of class TFindFile,by default remote drives are
+ //! excluded from the list of drives that are searched. Using function
+ //! SetFindMask(TUint aMask) it is possible to specify a combination of attributes that
+ //! the drives to be searched must match.
+ //! @SYMTestActions Call function FindByPath/Find without specifying a mask. Check that remote drives are not
+ //! included. Then call SetFindMask(TUint aMask) using various combinations and verify
+ //! that FindByPath or Find return appopriate results.
+ //! @SYMTestExpectedResults Test that file findfile.aaa is found or not depending on the specified mask.
+ //! @SYMTestPriority High
+ //! @SYMTestStatus Implemented
+ //---------------------------------------------
+
+
+
+LOCAL_C void Test7()
+
+ {
+
+ TAutoClose<RFs> fs;
+ TInt r=fs.iObj.Connect();
+ test(r==KErrNone);
+ TFindFile finder(fs.iObj);
+ TPtrC path=gPath4;
+ r=finder.FindByPath(_L("findfile.aaa"),&path);
+
+ TParse fileParse;
+
+ test.Next(_L("Test FindByPath without specifying any mask"));
+
+ if (removableFlag == 1)
+ {
+ test(r==KErrNone);
+ fileParse.Set(finder.File(),NULL,NULL);
+ test(fileParse.Path()==_L("\\F32-TST\\LOCTEST\\BIN\\"));
+ test(fileParse.NameAndExt()==_L("findfile.aaa")); //The filename.aaa in the removable Drive
+ r=finder.Find();
+ test(r==KErrNotFound); //remote drives are excluded by default
+
+ }
+ else
+ test(r==KErrNotFound);
+
+
+
+ test.Next(_L("Search for the specified file in all Drives, including remotes ones \n"));
+
+
+ r=finder.SetFindMask( KDriveAttAll) ;
+ test(r==KErrNone);
+ r=finder.FindByPath(_L("findfile.aaa"),&path);
+ test(r==KErrNone);
+ fileParse.Set(finder.File(),NULL,NULL);
+ test(fileParse.Path()==_L("\\F32-TST\\LOCTEST\\BIN\\"));
+ test(fileParse.NameAndExt()==_L("findfile.aaa")); //either the remote or removable one.
+ r=finder.Find();
+
+
+ if (removableFlag == 1)
+ {
+ test(r==KErrNone);
+
+ fileParse.Set(finder.File(),NULL,NULL);
+
+ test(fileParse.Path()==_L("\\F32-TST\\LOCTEST\\BIN\\"));
+ test(fileParse.NameAndExt()==_L("findfile.aaa")); //either the remote or removable one.
+
+ r=finder.Find();
+ test(r==KErrNotFound);
+ }
+ else
+ {
+ test(r==KErrNotFound);
+
+ }
+
+
+ test.Next(_L("Search exclusively in remote drives \n"));
+
+ r=finder.SetFindMask( KDriveAttExclusive| KDriveAttRemote);
+ test(r==KErrNone);
+ r=finder.FindByPath(_L("findfile.aaa"),&path);
+ test(r==KErrNone);
+ fileParse.Set(finder.File(),NULL,NULL);
+ test(fileParse.Path()==_L("\\F32-TST\\LOCTEST\\BIN\\"));
+ test(fileParse.NameAndExt()==_L("findfile.aaa"));
+ r=finder.Find();
+ test(r==KErrNotFound);
+
+
+ test.Next(_L("Search excluding removables and remote \n"));
+
+ r=finder.SetFindMask( KDriveAttExclude | KDriveAttRemovable |KDriveAttRemote );
+ test(r==KErrNone);
+ r=finder.FindByPath(_L("findfile.aaa"),&path);
+ test(r==KErrNotFound); //filename.aaa exists in the remote drive and if present to the removable one
+
+
+ test.Next(_L("Search in Internal Drives \n"));
+
+ r=finder.SetFindMask(KDriveAttInternal ) ;
+ test(r==KErrNone);
+ r=finder.FindByPath(_L("findfile.aaa"),&path);
+ test(r==KErrNotFound); //filename.aaa exists only in the Removable drive and the remote one.
+
+
+ }
+
+
+ //---------------------------------------------
+ //! @SYMTestCaseID PBASE-T_LOCATE-0554
+ //! @SYMTestType UT
+ //! @SYMREQ CR909
+ //! @SYMTestCaseDesc Test that SetFindMask(TUint aMask) returns the correct value for all combinations of matching masks.
+ //!
+ //! @SYMTestActions Call SetFindMask for every combination of mask and check that the correct value is returned.
+ //! A structure is used to store the expected value for each combination.
+ //! @SYMTestExpectedResults For every combination either KErrNone or KErrArgument must be returned.
+ //! @SYMTestPriority High.
+ //! @SYMTestStatus Implemented
+ //---------------------------------------------
+
+
+
+
+LOCAL_C void Test8()
+
+ {
+
+ test.Next(_L("Test SetFindMask with all mask combinations \n"));
+
+
+ TAutoClose<RFs> fs;
+ TInt r=fs.iObj.Connect();
+ test(r==KErrNone);
+ TFindFile finder(fs.iObj);
+ TPtrC path=gPath4;
+ TParse fileParse;
+
+
+ r=finder.SetFindMask(KDriveAttAll) ;
+ test(r==KErrNone);
+ r=finder.FindByPath(_L("findfile.aaa"),&path);
+ test(r==KErrNone);
+ fileParse.Set(finder.File(),NULL,NULL);
+ test(fileParse.Path()==_L("\\F32-TST\\LOCTEST\\BIN\\"));
+ test(fileParse.NameAndExt()==_L("findfile.aaa"));
+
+
+ struct TCombinations
+ {
+ TUint iMatchMask; // The Match Mask to be combined with drive attributes
+ TInt iExpectedResultNoAtts; // Expected result when flag used on it's own
+ TInt iExpectedResultWithAtts; // Expected result when flag used in combination with drive flags
+ };
+
+ TCombinations testCombinations[] = {
+ { 0, KErrNone, KErrNone},
+ { KDriveAttAll, KErrNone, KErrArgument },
+ { KDriveAttExclude, KErrArgument, KErrNone },
+ { KDriveAttExclusive, KErrArgument, KErrNone },
+ { KDriveAttExclude | KDriveAttExclusive, KErrArgument, KErrNone },
+ { KDriveAttAll | KDriveAttExclude, KErrArgument, KErrArgument },
+ { KDriveAttAll | KDriveAttExclusive, KErrArgument, KErrArgument},
+ { KDriveAttAll | KDriveAttExclude | KDriveAttExclusive, KErrArgument, KErrArgument}};
+
+
+
+ for(TUint matchIdx = 0; matchIdx < sizeof(testCombinations) / sizeof(TCombinations); matchIdx++)
+ {
+ test.Printf(_L("\nTest mask : KDriveAttAll[%c] KDriveAttExclude[%c] KDriveAttExclusive[%c]\n"), testCombinations[matchIdx].iMatchMask & KDriveAttAll ? 'X' : ' ',
+ testCombinations[matchIdx].iMatchMask & KDriveAttExclude ? 'X' : ' ',
+ testCombinations[matchIdx].iMatchMask & KDriveAttExclusive ? 'X' : ' ');
+ for(TUint testAtt = 0; testAtt <= KMaxTUint8; testAtt++)
+ {
+ r= finder.SetFindMask( testCombinations[matchIdx].iMatchMask | testAtt ) ;
+
+ // test.Printf(_L(" ATT : 0x%08x \n"), testAtt);
+ // test.Printf(_L("Expected Result : %d \n"), testAtt == 0 ? testCombinations[matchIdx].iExpectedResultNoAtts : testCombinations[matchIdx].iExpectedResultWithAtts);
+ // test.Printf(_L(" Actual Result : 0x%08x \n"), err);
+
+ // test.Printf(_L("\nTest mask : %d \n"),testCombinations[matchIdx].iMatchMask | testAtt );
+
+ test( r == (testAtt == 0 ? testCombinations[matchIdx].iExpectedResultNoAtts : testCombinations[matchIdx].iExpectedResultWithAtts) );
+
+
+ if (r== KErrNone)
+ {
+ r = finder.FindByPath(_L("findfile.aaa"),&path);
+ test (r== KErrNone || r ==KErrNotFound);
+ }
+
+ }
+ }
+
+ }
+
+
+
+
+
+LOCAL_C void Test9()
+//
+// Test wildcard findbydir and FindByWildPath in Removable and Internal Drives
+//
+
+ //---------------------------------------------
+ //! @SYMTestCaseID PBASE-T_LOCATE-0555
+ //! @SYMTestType UT
+ //! @SYMREQ CR909
+ //! @SYMTestCaseDesc Check that FindWildByDir and FindByDir functions behave correctly when a mask has been specified
+ //! through SetFindMask.
+ //! @SYMTestActions Call FindWildByDir with a filename containing wildchars and a specific path. Then call SetFindMask
+ //! to exclude Removable drives and call FindWildByDir again.Even more call FindByDir for the file in
+ //! the removable drive and for the same directory as before.
+ //! @SYMTestExpectedResults The number of files found when excluding the removable drive(if a removable drive exists in the
+ //! target platform) must differ by one. The FinByDir must find the same results.
+ //! @SYMTestPriority High
+ //! @SYMTestStatus Implemented
+ //---------------------------------------------
+
+
+ {
+
+ TAutoClose<RFs> fs;
+ TInt r=fs.iObj.Connect();
+ test(r==KErrNone);
+
+ TFindFile finder(fs.iObj);
+
+ CDir* dir;
+ CDir* dir3;
+
+ TInt count;
+ TEntry entry;
+
+
+
+ if ( removableFlag == 1 )
+ {
+
+ test.Next(_L("FindByDir with wild filenames when a find mask is specified"));
+
+ TInt r=finder.SetFindMask(KDriveAttRemovable);
+ test(r==KErrNone);
+ r=finder.FindWildByDir(_L("FIND*"),_L("\\F32-TST\\LOCTEST\\BIN\\"),dir);
+ test(r==KErrNone);
+ count=dir->Count();
+ test(count==1);
+ entry=(*dir)[0];
+ test(entry.iName.MatchF(_L("FINDFILE.AAA"))!=KErrNotFound);
+ delete dir;
+
+ r=finder.FindWild(dir);
+ test(r==KErrNotFound);
+
+
+ r=finder.SetFindMask(KDriveAttExclude| KDriveAttRemovable);
+ test(r==KErrNone);
+ r=finder.FindWildByDir(_L("FIND*"),_L("\\F32-TST\\LOCTEST\\BIN\\"),dir);
+ test(r==KErrNotFound);
+
+
+ test.Next(_L("Test FindByDir when a find mask is specified"));
+
+
+ TPtrC dir2=_L("\\F32-TST\\LOCTEST\\BIN\\");
+
+ r=finder.SetFindMask(KDriveAttExclude | KDriveAttRemote );
+ test(r==KErrNone);
+ r=finder.FindByDir(_L("findfile.aaa"),dir2);
+ test(r==KErrNone);
+
+ r=finder.Find();
+ test(r==KErrNotFound);
+
+
+ }
+
+
+
+ //---------------------------------------------
+ //! @SYMTestCaseID PBASE-T_LOCATE-0556
+ //! @SYMTestType UT
+ //! @SYMREQ CR909
+ //! @SYMTestCaseDesc FindByWildPath and FindByPath functions when supplied with a path that also contains
+ //! a Drive letter, they will not need to check other Drives. Therefore calling SetFindMask
+ //! does not affect the drives returned.
+ //! @SYMTestActions Call FindWildByPath with an appropriate path in the internal drive. Then call SetFindMask
+ //! to exclude Internal drives and call FindWildByPath again.
+ //! @SYMTestExpectedResults The number of files found in both cases must be the same since no other drive is searched.
+ //! @SYMTestPriority High
+ //! @SYMTestStatus Implemented
+ //---------------------------------------------
+
+
+
+
+ if( internalFlag == 1 )
+ {
+
+
+ test.Next(_L("Test that SetFindMask does not affect Find functions that have a drive letter specified"));
+
+
+ gPath5.Append (internalDriveLetter);
+ gPath5.Append (_L(":\\F32-TST\\LOCTEST\\BIN\\INT\\") );
+
+
+ r=finder.FindWildByPath(_L("FIND*.AAA"), &gPath5, dir3);
+ test(r==KErrNone);
+ test(dir3->Count()==2);
+
+ entry=(*dir3)[0];
+ test( (entry.iName.MatchF(_L("FINDINTERNALFILE_B.AAA"))!=KErrNotFound) || (entry.iName.MatchF(_L("FINDINTERNALFILE.AAA"))!=KErrNotFound) );
+
+
+ entry=(*dir3)[1];
+ test( (entry.iName.MatchF(_L("FINDINTERNALFILE_B.AAA"))!=KErrNotFound ) || (entry.iName.MatchF(_L("FINDINTERNALFILE.AAA"))!=KErrNotFound) );
+
+
+ delete dir3;
+
+
+
+ r=finder.SetFindMask(KDriveAttExclude| KDriveAttInternal);
+ test(r==KErrNone);
+ r=finder.FindWildByPath(_L("FIND*.AAA"), &gPath5, dir3);
+ test(r==KErrNone);
+ test(dir3->Count()==2);
+
+ delete dir3;
+
+
+ r=finder.FindWild(dir3);
+ test(r==KErrNotFound);
+
+
+ }
+
+
+ }
+
+
+
+
+GLDEF_C void CallTestsL()
+//
+// Do all tests
+//
+ {
+
+
+ gPath3=_L("C:\\F32-TST\\LOCTEST\\BIN1\\;C:\\F32-TST\\LOCTEST\\BIN2\\");
+
+ gPath1=_L("");
+ gPath1.Append(gSessionPath[0]);
+ gPath1.Append(_L(":\\F32-TST\\LOCTEST\\BIN1\\;"));
+ gPath1.Append(gSessionPath[0]);
+ gPath1.Append(_L(":\\F32-TST\\LOCTEST\\BIN2\\"));
+
+ gPath2=gPath1;
+ gPath2.Append(';');
+ gPath2.Append(gSessionPath[0]);
+ gPath2.Append(_L(":\\F32-TST\\LOCTEST\\BIN1\\BIN4\\;"));
+ if (gSessionPath[0]!='C')
+ gPath2.Append(gSessionPath.Left(2));
+ gPath2.Append(_L("\\F32-TST\\LOCTEST\\BIN3\\;"));
+
+ gPath4=_L("");
+ gPath4.Append(_L("\\F32-TST\\LOCTEST\\BIN\\"));
+
+
+
+ CreateTestDirectory(_L("\\F32-TST\\LOCTEST\\"));
+ MakeLocateTestDirectoryStructure();
+ Test1();
+ Test2();
+ Test3();
+ Test4();
+ Test5();
+ Test6();
+
+ MountRemoteFilesystem();
+ CreateFilesInRemovableDrive(); //used in Test7/8/9
+
+ Test7();
+ Test8();
+
+ CreateFilesInInternalDrive(); //used in Test9
+ Test9();
+
+ DisMountRemoteFilesystem();
+
+ DeleteTestDirectory();
+
+ //Explicity delete the directories created
+ DeleteRemovableDirectory();
+ DeleteInternalDirectory();
+
+
+
+ }