kerneltest/f32test/server/t_fman.cpp
changeset 281 13fbfa31d2ba
parent 259 57b9594f5772
--- a/kerneltest/f32test/server/t_fman.cpp	Fri Sep 17 08:37:04 2010 +0300
+++ b/kerneltest/f32test/server/t_fman.cpp	Mon Oct 04 02:35:35 2010 +0300
@@ -27,6 +27,8 @@
 LOCAL_D TBool gAsynch=EFalse;
 LOCAL_D TRequestStatus gStat;
 LOCAL_D TBool testingInvalidPathLengths;
+LOCAL_D TChar gSecDrive;        // a second drive for inter-drive tests
+LOCAL_D TBool gSecDriveReady;
 
 class CFileManObserver : public CBase, public MFileManObserver
 	{
@@ -66,6 +68,30 @@
 	return(MFileManObserver::EContinue);
 	}
 
+LOCAL_C TBool GetSecondDrive(TChar& aDrive) // Get the drive that is ready.
+    {
+    TDriveList list;
+    TheFs.DriveList(list);
+    if (list[EDriveD] != 0)
+        {
+        aDrive = 'D';
+        return ETrue;
+        }
+    
+    TInt drv;
+    // In minibsp rom(sirocco) there is no D drive
+    for(drv = EDriveE; drv < EDriveZ; drv++)
+        {
+        if (list[drv] != 0) 
+            {
+            aDrive = 'A' + drv;
+            return ETrue;
+            }
+        }
+    aDrive = '?';
+    return EFalse;
+    }
+
 LOCAL_C void WaitForSuccess()
 //
 // Wait for gStat to complete with KErrNone
@@ -175,6 +201,7 @@
 		{
 #if !defined(__WINS__)
 		*aDestOtherDrive = gSessionPath[0] == 'C' ? _L("D:\\F32-TST\\TFMAN\\dest\\") : _L("C:\\F32-TST\\TFMAN\\dest\\");
+        (*aDestOtherDrive)[0] = (TText) gSecDrive;
 #else
 		*aDestOtherDrive = gSessionPath[0] == 'C' ? _L("Y:\\F32-TST\\TFMAN\\dest\\") : _L("C:\\F32-TST\\TFMAN\\dest\\");
 #endif
@@ -2163,10 +2190,15 @@
    	
 	TFileName trgPath = _L("?:\\F32-TST\\");
 
-	if (gSessionPath[0]!='D'&& gSessionPath[0]!='Y')
+	if (gSessionPath[0]!='D'&& gSessionPath[0]!='Y' && gSessionPath[0]!='I')
 		{
 #if !defined(__WINS__)
-		trgPath[0] = 'D';
+        if (!gSecDriveReady)
+            {
+            test.Printf(_L("Second drive not available for test, skip..."));
+            return;
+            }
+		trgPath[0] = (TText) gSecDrive;
 #else
 		trgPath[0] = 'Y';
 #endif
@@ -2793,8 +2825,15 @@
 	if (gSessionPath[0]=='C')
 		{
 #if !defined(__WINS__)
-		trgDir	   = _L("D:\\F32-TST\\TFMAN\\RECMOVE2\\");
-		trgSpec	   = _L("D:\\F32-TST\\TFMAN\\RECMOVE2\\*");
+        if (!gSecDriveReady)
+            {
+            test.Printf(_L("Second drive not available for test, skip..."));
+            return;
+            }
+		trgDir	   = _L("?:\\F32-TST\\TFMAN\\RECMOVE2\\");
+		trgSpec	   = _L("?:\\F32-TST\\TFMAN\\RECMOVE2\\*");     
+        trgDir[0] = (TText) gSecDrive;;
+        trgSpec[0] = (TText) gSecDrive;;
 #else
 		trgDir     = _L("Y:\\F32-TST\\TFMAN\\RECMOVE2\\");
 		trgSpec    = _L("Y:\\F32-TST\\TFMAN\\RECMOVE2\\*");
@@ -2825,24 +2864,30 @@
 	RmDir(_L("C:\\F32-TST\\TFMAN\\AFTER\\"));
 	RmDir(_L("C:\\F32-TST\\TFMAN\\RECMOVE\\"));
 	
+    TFileName destOtherDrive;
 	//
 	// Test moving empty directories (DEF073924)
 	//
 	test.Next(_L("Test moving empty directories"));
-
-	TFileName destOtherDrive;
-	SetupDirectories(EFalse, &destOtherDrive);
-
-	err = gFileMan->Move(_L("\\F32-TST\\TFMAN\\source\\"), destOtherDrive, CFileMan::ERecurse);
-	test_Equal(KErrNotFound, err);	// Expected - directory is empty
-
-	// Test that all directories are still present
-	TEntry entry;
-	err = TheFs.Entry(_L("\\F32-TST\\TFMAN\\source\\"), entry);
-	test_KErrNone(err);
-	err = TheFs.Entry(destOtherDrive, entry);
-	test_KErrNone(err);
-
+	
+	if (gSecDriveReady)
+	    {
+        SetupDirectories(EFalse, &destOtherDrive);
+    
+        err = gFileMan->Move(_L("\\F32-TST\\TFMAN\\source\\"), destOtherDrive, CFileMan::ERecurse);
+        test_Equal(KErrNotFound, err);	// Expected - directory is empty
+    
+        // Test that all directories are still present
+        TEntry entry;
+        err = TheFs.Entry(_L("\\F32-TST\\TFMAN\\source\\"), entry);
+        test_KErrNone(err);
+        err = TheFs.Entry(destOtherDrive, entry);
+        test_KErrNone(err);
+	    }
+	else
+	    {
+        test.Printf(_L("Second drive not available for test, skip..."));
+	    }
 	//--------------------------------------------- 
 	//! @SYMTestCaseID			PBASE-T_FMAN-0571
 	//! @SYMTestType			UT
@@ -2882,13 +2927,19 @@
 	//
 	test.Next(_L("Test moving a directory containing subdirectories"));
 
-	SetupDirectories(ETrue, &destOtherDrive);
-	err = gFileMan->Move(_L("\\F32-TST\\TFMAN\\source\\"), destOtherDrive, CFileMan::ERecurse | CFileMan::EOverWrite);
-	test_KErrNone(err);
-
-	destOtherDrive.Append(_L("*"));
-	Compare(_L("\\F32-TST\\TFMAN\\compare\\*"), destOtherDrive);
-
+    if (gSecDriveReady)
+        {
+        SetupDirectories(ETrue, &destOtherDrive);
+        err = gFileMan->Move(_L("\\F32-TST\\TFMAN\\source\\"), destOtherDrive, CFileMan::ERecurse | CFileMan::EOverWrite);
+        test_KErrNone(err);
+        
+        destOtherDrive.Append(_L("*"));
+        Compare(_L("\\F32-TST\\TFMAN\\compare\\*"), destOtherDrive);
+        }
+    else
+        {
+        test.Printf(_L("Second drive not available for test, skip..."));
+        }
 	//--------------------------------------------- 
 	//! @SYMTestCaseID			PBASE-T_FMAN-0161
 	//! @SYMTestType			UT 
@@ -2900,41 +2951,48 @@
 	//! @SYMTestStatus			Implemented 
 	//--------------------------------------------- 	
 	test.Next(_L("Test moving when the target directory does not exist"));
-
-	SetupDirectories(ETrue, &destOtherDrive);
-	
-	RmDir(destOtherDrive);
-
-	err = gFileMan->Move(_L("\\F32-TST\\TFMAN\\source\\"), destOtherDrive, CFileMan::ERecurse);
-	test_KErrNone(err);
-
-	Compare(_L("\\F32-TST\\TFMAN\\compare\\*"), destOtherDrive);
-
-	SetupDirectories(ETrue, &destOtherDrive);
-	
-	RmDir(destOtherDrive);
-
-	err = gFileMan->Move(_L("\\F32-TST\\TFMAN\\source"), destOtherDrive, CFileMan::ERecurse);
-	test_KErrNone(err);
-
-	MakeDir(_L("\\F32-TST\\TFMAN\\compare\\subdir\\"));
-	destOtherDrive.Append(_L("source\\"));
-	Compare(_L("\\F32-TST\\TFMAN\\compare\\*"), destOtherDrive);
-	RmDir(_L("\\F32-TST\\TFMAN\\compare\\subdir\\"));
-
-	SetupDirectories(ETrue, &destOtherDrive);
-
-	RmDir(destOtherDrive);
-
-	err = gFileMan->Move(_L("\\F32-TST\\TFMAN\\source\\File1.TXT"), destOtherDrive, CFileMan::ERecurse);
-	test_KErrNone(err);
-
-	CheckFileExists(_L("\\F32-TST\\TFMAN\\source\\File1.TXT"), KErrNotFound, ETrue);
-	destOtherDrive.Append(_L("File1.TXT"));
-	CheckFileExists(destOtherDrive, KErrNone, ETrue);
-
-	RmDir(destOtherDrive);
-	RmDir(_L("\\F32-TST\\TFMAN\\source\\"));
+    
+	if (gSecDriveReady)
+        {
+        SetupDirectories(ETrue, &destOtherDrive);
+        
+        RmDir(destOtherDrive);
+    
+        err = gFileMan->Move(_L("\\F32-TST\\TFMAN\\source\\"), destOtherDrive, CFileMan::ERecurse);
+        test_KErrNone(err);
+    
+        Compare(_L("\\F32-TST\\TFMAN\\compare\\*"), destOtherDrive);
+    
+        SetupDirectories(ETrue, &destOtherDrive);
+        
+        RmDir(destOtherDrive);
+    
+        err = gFileMan->Move(_L("\\F32-TST\\TFMAN\\source"), destOtherDrive, CFileMan::ERecurse);
+        test_KErrNone(err);
+    
+        MakeDir(_L("\\F32-TST\\TFMAN\\compare\\subdir\\"));
+        destOtherDrive.Append(_L("source\\"));
+        Compare(_L("\\F32-TST\\TFMAN\\compare\\*"), destOtherDrive);
+        RmDir(_L("\\F32-TST\\TFMAN\\compare\\subdir\\"));
+    
+        SetupDirectories(ETrue, &destOtherDrive);
+    
+        RmDir(destOtherDrive);
+    
+        err = gFileMan->Move(_L("\\F32-TST\\TFMAN\\source\\File1.TXT"), destOtherDrive, CFileMan::ERecurse);
+        test_KErrNone(err);
+    
+        CheckFileExists(_L("\\F32-TST\\TFMAN\\source\\File1.TXT"), KErrNotFound, ETrue);
+        destOtherDrive.Append(_L("File1.TXT"));
+        CheckFileExists(destOtherDrive, KErrNone, ETrue);
+    
+        RmDir(destOtherDrive);
+        RmDir(_L("\\F32-TST\\TFMAN\\source\\"));
+        }
+    else
+        {
+        test.Printf(_L("Second drive not available for test, skip..."));
+        }
 
 	//
 	// Test recursive move of complex directory structure into itself (INC078759)
@@ -3777,10 +3835,19 @@
 	if (gSessionPath[0]=='C')
 		{
 #if !defined(__WINS__)
-		trgDrive   = _L("D:\\");
-		trgFile    = _L("D:\\Sketch");
-		trgDir     = _L("D:\\DRIVEMOVE\\");
-		trgDirFile = _L("D:\\DRIVEMOVE\\Sketch");
+        if (!gSecDriveReady)
+            {
+            test.Printf(_L("Second drive not available for test, skip..."));
+            return;
+            }
+		trgDrive   = _L("?:\\");
+		trgFile    = _L("?:\\Sketch");
+		trgDir     = _L("?:\\DRIVEMOVE\\");
+		trgDirFile = _L("?:\\DRIVEMOVE\\Sketch");
+		trgDrive[0] = (TText) gSecDrive;;
+        trgFile[0]  = (TText) gSecDrive;
+        trgDir[0]   = (TText) gSecDrive;
+        trgDirFile[0]  = (TText) gSecDrive;		
 #else
 		trgDrive   = _L("Y:\\");
 		trgFile    = _L("Y:\\Sketch");
@@ -3885,9 +3952,17 @@
 	if (gSessionPath[0]=='C')
 		{
 #if !defined(__WINS__)
-		trgDirRoot = _L("D:\\F32-TST\\TFMAN\\");
-		trgDirFull = _L("D:\\F32-TST\\TFMAN\\CANCELMOVE\\");
-        trgDirFile = _L("D:\\F32-TST\\TFMAN\\CANCELMOVE\\FILE");
+        if (!gSecDriveReady)
+            {
+            test.Printf(_L("Second drive not available for test, skip..."));
+            return;
+            }
+		trgDirRoot = _L("?:\\F32-TST\\TFMAN\\");
+		trgDirFull = _L("?:\\F32-TST\\TFMAN\\CANCELMOVE\\");
+        trgDirFile = _L("?:\\F32-TST\\TFMAN\\CANCELMOVE\\FILE");
+        trgDirRoot[0] = (TText) gSecDrive;
+        trgDirFull[0] = (TText) gSecDrive;
+        trgDirFile[0] = (TText) gSecDrive;
 #else
 		trgDirRoot = _L("Y:\\F32-TST\\TFMAN\\");
 		trgDirFull = _L("Y:\\F32-TST\\TFMAN\\CANCELMOVE\\");
@@ -3969,7 +4044,13 @@
 	test.Next(_L("Test move empty directory"));
 
 #if !defined(__WINS__)
-	TFileName trgDrive=_L("D:\\");
+    if (!gSecDriveReady)
+        {
+        test.Printf(_L("Second drive not available for test, skip..."));
+        return;
+        }
+	TFileName trgDrive=_L("?:\\");
+	trgDrive[0] = (TText) gSecDrive;
 #else
 	if (gSessionPath[0]!='C')
 		return;
@@ -4114,6 +4195,7 @@
 	gFileMan=CFileMan::NewL(TheFs);
 	gObserver=new(ELeave) CFileManObserver(gFileMan);
 	gFileMan->SetObserver(gObserver);
+	gSecDriveReady = GetSecondDrive(gSecDrive);
 	}
 
 LOCAL_C void Cleanup()