kerneltest/f32test/server/t_fatcharsetconv_SpecificCases.cpp
changeset 43 96e5fb8b040d
child 33 0173bcd7697c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/f32test/server/t_fatcharsetconv_SpecificCases.cpp	Thu Dec 17 09:24:54 2009 +0200
@@ -0,0 +1,610 @@
+/*
+* Copyright (c) 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:
+*
+*/
+#define __E32TEST_EXTENSION__
+
+#include "T_Fatcharsetconv_aux.h"
+#include <f32file.h>
+#include <e32test.h>
+#include <HAL.H>
+#include <f32fsys.h>
+#include <f32dbg.h>
+#include "..\server\t_server.h"
+
+//#include "fat_utils.h"
+
+extern RFile TheFile;
+
+#if defined(_DEBUG) || defined(_DEBUG_RELEASE)
+void TestIllegalCharsWithDll()
+	{
+	test.Next(_L("Test Illegal Character handling with DLL"));			
+	__UHEAP_MARK;
+	
+	// logging for failure
+	gTCType = ESymbianFATSpecific;
+	RBuf failedOnBuf;
+	failedOnBuf.CreateL(gLogFailureData.iFuncName);
+	gTCId = 0;
+	RBuf tcUniquePath;
+	tcUniquePath.CreateL(KNone());
+
+	QuickFormat();
+	CreateTestDirectory(_L("\\F32-TST\\T_FATCHARSETCONV\\"));
+	
+	TInt r = TheFs.ControlIo(CurrentDrive(), KControlIoEnableFatUtilityFunctions);
+	testAndLog(r==KErrNone);
+
+	r = UserSvr::ChangeLocale(KTestLocale);
+	testAndLog(r==KErrNone);
+
+	_LIT(KTestNormalUnicodeFileName, 				"\x65B0\x6587\x4EF6.TXT");
+	_LIT(KTestNormalUnicodeFileNameShortDefualt, 	"\x65B0\x6587\x4EF6.TXT");
+	_LIT(KTestFileNameWithIllegalChars, 			"\x222F\x2F3A\x3C3E\x7C00.TXT");
+	_LIT(KFileNameWithIllegalCharsShort, 			"___\x7C00.TXT");
+	_LIT(KTestFileNameWithWildChars, 				"\x235B\x245C\x255D\x265E.TXT");
+	_LIT(KTestFileNameWithWildCharsShort, 			"____.TXT");
+
+	TFileName shn;
+
+	MakeFile(KTestNormalUnicodeFileName);
+	r = TheFs.GetShortName(KTestNormalUnicodeFileName, shn);
+	testAndLog(r==KErrNone);
+	r = shn.Compare(KTestNormalUnicodeFileNameShortDefualt);
+	testAndLog(r==0);
+
+	TFileName lgn;
+	r = TheFs.GetLongName(KTestNormalUnicodeFileNameShortDefualt, lgn);
+	testAndLog(r==KErrNone);
+	r = lgn.Compare(KTestNormalUnicodeFileName);
+	testAndLog(r==0);
+
+	// Test illegal 8-bit ASCII chars in 16-bit Unicode chars.
+	MakeFile(KTestFileNameWithIllegalChars);
+	r = TheFs.GetShortName(KTestFileNameWithIllegalChars, shn);
+	testAndLog(r==KErrNone);
+	r = shn.Compare(KFileNameWithIllegalCharsShort);
+	testAndLog(r==0);
+	
+	// Test wildcards, 8-bit ASCII chars in 16-bit Unicode chars.
+	MakeFile(KTestFileNameWithWildChars);
+	r = TheFs.GetShortName(KTestFileNameWithWildChars, shn);
+	test_KErrNone(r);
+	r = shn.Compare(KTestFileNameWithWildCharsShort);
+	testAndLog(r==0);
+	
+	r=TheFs.Delete(KTestFileNameWithIllegalChars);
+	testAndLog(r==0);
+	r=TheFs.Delete(KTestNormalUnicodeFileName);
+	testAndLog(r==0);
+	r=TheFs.Delete(KTestFileNameWithWildChars);
+	testAndLog(r==0);
+	
+	r = TheFs.ControlIo(CurrentDrive(), KControlIoDisableFatUtilityFunctions);
+	testAndLog(r==KErrNone);
+	failedOnBuf.Close();
+	tcUniquePath.Close();
+	__UHEAP_MARKEND;
+	}
+
+void TestIllegalCharsWithoutDLL()
+	{
+	test.Next(_L("Test Illegal Character handling without DLL"));			
+	__UHEAP_MARK;
+	
+	// logging for failure
+	gTCType = ESymbianFATSpecific;
+	RBuf failedOnBuf;
+	failedOnBuf.CreateL(gLogFailureData.iFuncName);
+	gTCId = 0;
+	RBuf tcUniquePath;
+	tcUniquePath.CreateL(KNone());
+
+	QuickFormat();
+	CreateTestDirectory(_L("\\F32-TST\\T_FATCHARSETCONV\\"));
+
+	TInt r = TheFs.ControlIo(CurrentDrive(), KControlIoDisableFatUtilityFunctions);
+	testAndLog(r==KErrNone);	
+
+	_LIT(KTestNormalUnicodeFileName, 				"\x65B0\x6587\x4EF6.TXT");
+	_LIT(KTestNormalUnicodeFileNameShortDefualt, 	"___.TXT");
+	_LIT(KTestFileNameWithIllegalChars, 			"\x222F\x2F3A\x3C3E\x7C00.TXT");
+	_LIT(KFileNameWithIllegalCharsShort, 			"____.TXT");
+	_LIT(KTestFileNameWithWildChars, 				"\x235B\x245C\x255D\x265E.TXT");
+	_LIT(KTestFileNameWithWildCharsShort, 			"____~1.TXT");
+	
+	TFileName shn;
+		
+	MakeFile(KTestNormalUnicodeFileName);
+	r = TheFs.GetShortName(KTestNormalUnicodeFileName, shn);
+	testAndLog(r==KErrNone);
+	r = shn.Compare(KTestNormalUnicodeFileNameShortDefualt);
+	testAndLog(r==0);
+	
+	TFileName lgn;
+	r = TheFs.GetLongName(KTestNormalUnicodeFileNameShortDefualt, lgn);
+	testAndLog(r==KErrNone);
+	r = lgn.Compare(KTestNormalUnicodeFileName);
+	testAndLog(r==0);
+
+	// Test illegal 8-bit ASCII chars in 16-bit Unicode chars.
+	MakeFile(KTestFileNameWithIllegalChars);
+	r = TheFs.GetShortName(KTestFileNameWithIllegalChars, shn);
+	testAndLog(r==KErrNone);
+	r = shn.Compare(KFileNameWithIllegalCharsShort);
+	testAndLog(r==0);
+	
+	// Test illegal 8-bit ASCII chars in 16-bit Unicode chars.
+	MakeFile(KTestFileNameWithWildChars);
+	r = TheFs.GetShortName(KTestFileNameWithWildChars, shn);
+	testAndLog(r==KErrNone);
+	r = shn.Compare(KTestFileNameWithWildCharsShort);
+	testAndLog(r==0);
+	
+	r=TheFs.Delete(KTestFileNameWithIllegalChars);
+	testAndLog(r==0);
+	r=TheFs.Delete(KTestNormalUnicodeFileName);
+	testAndLog(r==0);
+	r=TheFs.Delete(KTestFileNameWithWildChars);
+	testAndLog(r==0);
+
+	failedOnBuf.Close();
+	tcUniquePath.Close();
+	__UHEAP_MARKEND;
+	}
+
+void TestFileLengthMax()
+	{
+	test.Next(_L("Test accesing a long file with filename length <250 characters"));
+	__UHEAP_MARK;
+	
+	// logging for failure
+	gTCType = ESymbianFATSpecific;
+	RBuf failedOnBuf;
+	failedOnBuf.CreateL(gLogFailureData.iFuncName);
+	gTCId = 0;
+	RBuf tcUniquePath;
+	tcUniquePath.CreateL(KNone());
+
+	QuickFormat();
+	CreateTestDirectory(_L("\\F32-TST\\T_FATCHARSETCONV\\"));
+
+
+	TBuf<KMaxFileName> longName;
+
+	_LIT(KTestDir1,	"\\TEST\\TESTLONGFILENAMELENGTH\\TESTMORETHAN250CHARACTERS\\") ;
+	_LIT(KTestDir2,  "\x65B0\x6587\x4EF6\x4EF6(ABCDEFGH)\\(\x65B0\x6587\x4EF6\x4EF6)PQRST\\");
+	_LIT(KTestDir3,  "MULTILEVEL-FOLDER1\\MULTILEVEL-FOLDER2\\MULTILEVEL-FOLDER3\\");
+	_LIT(KTestDir4,  "\x65B0\x65B0\x65B0\x65B0(x6587)\\(\x6587\x6587\x6587\x6587)PQRST\\");
+	_LIT(KTestDir5,  "\x4EF6\x4EF6\x4EF6\x4EF6(x4EF6)\\(\x6587\x6587\x6587\x6587)XYZ\\");	
+	_LIT(KTestDir6,  "TESTINGINPROGRESS\\");
+	_LIT(KTestLongFileLength,  "\x4EF6\x4EF6\x4EF6\x4EF6(x4EF6).TXT");
+	
+	longName += KTestDir1;
+	longName += KTestDir2;
+	longName += KTestDir3;
+	longName += KTestDir4;
+	longName += KTestDir5;
+	longName += KTestDir6;	
+
+	test.Printf(_L("longName count is  %d "), longName.Length());
+	TInt r=TheFs.MkDirAll(longName);
+	
+	longName += KTestLongFileLength;
+	test.Printf(_L("longName count is  %d "), longName.Length());
+
+	testAndLog(longName.Length()<256);
+
+	r=TheFile.Create(TheFs,longName ,EFileWrite);
+	testAndLog(r==KErrNone);
+	TheFile.Close();
+		
+	r=TheFile.Open(TheFs,longName ,EFileWrite);
+	testAndLog(r==KErrNone);
+	TheFile.Close();
+
+	TheFs.Delete(longName);
+
+	failedOnBuf.Close();
+	tcUniquePath.Close();
+	__UHEAP_MARKEND;
+	}
+	
+void TestFileLengthExceedMax()
+	{
+	test.Next(_L("Test accesing a long file with filename length >250 characters"));
+	__UHEAP_MARK;
+
+	// logging for failure
+	gTCType = ESymbianFATSpecific;
+	RBuf failedOnBuf;
+	failedOnBuf.CreateL(gLogFailureData.iFuncName);
+	gTCId = 0;
+	RBuf tcUniquePath;
+	tcUniquePath.CreateL(KNone());
+
+	QuickFormat();
+	CreateTestDirectory(_L("\\F32-TST\\T_FATCHARSETCONV\\"));
+
+	TInt r = TheFs.SessionPath(gSessionPath);
+	testAndLog(r==KErrNone);
+	
+	TBuf<350> longName;
+
+	_LIT(KTestDir1,	"\\TEST\\TESTLONGFILENAMELENGTH\\TESTMORETHAN260CHARACTERS\\") ;
+	_LIT(KTestDir2,  "\x65B0\x6587\x4EF6\x4EF6(ABCDEFGH)\\(\x65B0\x6587\x4EF6\x4EF6)PQRST\\");
+	_LIT(KTestDir3,  "MULTILEVEL-FOLDER1\\MULTILEVEL-FOLDER2\\MULTILEVEL-FOLDER3\\");
+	_LIT(KTestDir4,  "\x65B0\x65B0\x65B0\x65B0(x6587)\\(\x6587\x6587\x6587\x6587)PQRST\\");
+	_LIT(KTestDir5,  "\x4EF6\x4EF6\x4EF6\x4EF6(x4EF6)\\(\x6587\x6587\x6587\x6587)XYZ\\");	
+	_LIT(KTestDir6,  "TESTINGINPROGRESS(TESTLENGTH)>256\\");	
+	_LIT(KTestLongFileLength,  "\x4EF6\x4EF6\x4EF6\x4EF6(x4EF6).TXT");
+	
+	longName = gSessionPath;
+	longName += KTestDir1;
+	longName += KTestDir2;
+	longName += KTestDir3;
+	longName += KTestDir4;
+	longName += KTestDir5;
+	longName += KTestDir6;
+	
+	test.Printf(_L("longName length is  %d "), longName.Length());
+	r=TheFs.MkDirAll(longName);
+	
+	longName += KTestLongFileLength;
+	test.Printf(_L("longName count is  %d "), longName.Length());
+
+	testAndLog(longName.Length()>256);
+	
+	r=TheFile.Create(TheFs,longName ,EFileWrite);
+	testAndLog(r==KErrBadName);
+	// TheFile.Close();
+		
+	r=TheFile.Open(TheFs,longName ,EFileWrite);
+	testAndLog(r==KErrBadName);
+	// TheFile.Close();
+	
+	TheFs.Delete(longName);	
+	failedOnBuf.Close();
+	tcUniquePath.Close();
+	__UHEAP_MARKEND;		
+	}
+	
+void TestLeadingE5Handling()
+	{
+	test.Next(_L("Test Leading \'E5\' byte handling"));
+	__UHEAP_MARK;
+	
+	// logging for failure
+	gTCType = ESymbianFATSpecific;
+	RBuf failedOnBuf;
+	failedOnBuf.CreateL(gLogFailureData.iFuncName);
+	gTCId = 0;
+	RBuf tcUniquePath;
+	tcUniquePath.CreateL(KNone());
+
+	QuickFormat();
+	CreateTestDirectory(_L("\\F32-TST\\T_FATCHARSETCONV\\"));
+
+	// Enables codepage dll implementation of LocaleUtils functions for this test only
+	TInt r = TheFs.ControlIo(CurrentDrive(), KControlIoEnableFatUtilityFunctions);
+	testAndLog(r==KErrNone);
+	
+	r = UserSvr::ChangeLocale(KTestLocale);
+	testAndLog(r==KErrNone);
+
+	r=TheFs.SessionPath(gSessionPath);
+	testAndLog(r==KErrNone);
+
+	_LIT(KTestFilePathAndName,		"\\F32-TST\\T_FATCHARSETCONV\\\x88F9.TXT");
+	_LIT(KTestFileShortName, 		"\x88F9.TXT");
+	
+	MakeFile(KTestFilePathAndName);
+	TFileName sn;
+	r = TheFs.GetShortName(KTestFilePathAndName, sn);
+	testAndLog(r==KErrNone);
+	r = sn.Compare(KTestFileShortName);
+	testAndLog(r==KErrNone);
+	
+	r=TheFs.Delete(KTestFilePathAndName);
+	testAndLog(r==KErrNone);
+
+	// Disables codepage dll implementation of LocaleUtils functions for other base tests
+	r = TheFs.ControlIo(CurrentDrive(), KControlIoDisableFatUtilityFunctions);
+	testAndLog(r==KErrNone);
+	failedOnBuf.Close();
+	tcUniquePath.Close();
+	__UHEAP_MARKEND;
+	}
+	
+void TestVFATCase3()
+	{
+	test.Next(_L("Test With VFAT entry, and DOS entry using Non-CP932 Japanese file's access"));
+	__UHEAP_MARK;
+
+	// logging for failure
+	gTCType = ESymbianFATSpecific;
+	RBuf failedOnBuf;
+	failedOnBuf.CreateL(gLogFailureData.iFuncName);
+	gTCId = 0;
+	RBuf tcUniquePath;
+	tcUniquePath.CreateL(KNone());
+
+	QuickFormat();
+	CreateTestDirectory(_L("\\F32-TST\\T_FATCHARSETCONV\\"));
+
+	_LIT(KTestNormalFileName, 				"\x65B0\x6587\x4EF6.TXT");	
+	_LIT(KTestNormalFileNameWithUnicode, 	"___.TXT");
+	
+	
+	test.Printf(_L("Create a file without the DLL installed, and get the shortname"));
+	TInt r=TheFile.Create(TheFs,KTestNormalFileName,EFileRead|EFileWrite);
+	testAndLog(r==KErrNone);
+	TFileName sn;
+	r = TheFs.GetShortName(KTestNormalFileName, sn);
+	testAndLog(r==KErrNone);
+	r = sn.Compare(KTestNormalFileNameWithUnicode);
+	testAndLog(r==0);
+	TheFile.Close();
+	
+	test.Printf(_L("Access the file without the DLL installed"));
+	r=TheFile.Open(TheFs,KTestNormalFileName,EFileWrite);
+	testAndLog(r==KErrNone);
+	
+	TBuf<50> name;	
+	r=TheFile.FullName(name);
+	testAndLog(r==KErrNone);
+	TheFile.Close();
+	
+	r=TheFile.Open(TheFs,KTestNormalFileNameWithUnicode,EFileWrite);
+	testAndLog(r==KErrNone);
+	TheFile.Close();
+	
+	//load the dll
+	
+	r = TheFs.ControlIo(CurrentDrive(), KControlIoEnableFatUtilityFunctions);
+	testAndLog(r==KErrNone);
+		
+	r = UserSvr::ChangeLocale(KTestLocale);
+	testAndLog(r==KErrNone);
+	
+	test.Printf(_L("Access the file with the DLL installed"));
+	r=TheFile.Open(TheFs,KTestNormalFileName,EFileWrite);
+	testAndLog(r==KErrNone);
+
+	r=TheFile.FullName(name);
+	testAndLog(r==KErrNone);
+	TheFile.Close();
+	
+	r=TheFile.Open(TheFs,KTestNormalFileNameWithUnicode,EFileWrite);
+	testAndLog(r==KErrNone);
+	TheFile.Close();
+	
+	r=TheFs.Delete(KTestNormalFileName);
+			
+    r = TheFs.ControlIo(CurrentDrive(), KControlIoDisableFatUtilityFunctions);
+	testAndLog(r==KErrNone);
+	failedOnBuf.Close();
+	tcUniquePath.Close();
+	__UHEAP_MARKEND;
+	}
+
+void TestVFATCase2()
+	{
+	test.Next(_L("Test With VFAT entry, and DOS entry using CP932 Japanese file's access"));
+	__UHEAP_MARK;
+	
+	// logging for failure
+	gTCType = ESymbianFATSpecific;
+	RBuf failedOnBuf;
+	failedOnBuf.CreateL(gLogFailureData.iFuncName);
+	gTCId = 0;
+	RBuf tcUniquePath;
+	tcUniquePath.CreateL(KNone());
+
+	QuickFormat();
+	CreateTestDirectory(_L("\\F32-TST\\T_FATCHARSETCONV\\"));
+
+	TInt r = TheFs.ControlIo(CurrentDrive(), KControlIoEnableFatUtilityFunctions);
+	test_KErrNone(r);
+		
+	r = UserSvr::ChangeLocale(KTestLocale);
+	test_KErrNone(r);
+	r=TheFs.SetSessionPath(gSessionPath);
+	testAndLog(r==KErrNone);
+	
+	_LIT(KTestNormalFileName, 		"\x65B0\x6587\x4EF6.TXT");	
+	_LIT(KTestNormalFileShortName, 	"\x65B0\x6587\x4EF6.TXT");
+	
+	test.Printf(_L("Create a file with the DLL installed, and get the shortname"));
+	r=TheFile.Create(TheFs,KTestNormalFileName,EFileRead|EFileWrite);
+	testAndLog(r==KErrNone);
+	TFileName sn;
+	r = TheFs.GetShortName(KTestNormalFileName, sn);
+	testAndLog(r==KErrNone);
+	r = sn.Compare(KTestNormalFileShortName);
+	testAndLog(r==0);
+	TheFile.Close();
+	
+	test.Printf(_L("Access the file with the DLL installed"));
+	r=TheFile.Open(TheFs,KTestNormalFileName,EFileWrite);
+	testAndLog(r==KErrNone);
+	
+	TBuf<50> name;	
+	r=TheFile.FullName(name);
+	testAndLog(r==KErrNone);
+	TheFile.Close();
+	
+	r=TheFile.Open(TheFs,KTestNormalFileShortName,EFileWrite);
+	testAndLog(r==KErrNone);
+	TheFile.Close();
+	
+	r = TheFs.ControlIo(CurrentDrive(), KControlIoDisableFatUtilityFunctions);
+	testAndLog(r==KErrNone);
+	
+	test.Printf(_L("Access the file without the DLL installed"));
+	
+	r=TheFile.Open(TheFs,KTestNormalFileName,EFileWrite);
+	testAndLog(r==KErrNone);
+
+	r=TheFile.FullName(name);
+	testAndLog(r==KErrNone);
+	TheFile.Close();
+	
+	r=TheFile.Open(TheFs,KTestNormalFileShortName,EFileWrite);
+	testAndLog(r==KErrNone);
+	TheFile.Close();
+	
+	r=TheFs.Delete(KTestNormalFileName);
+	failedOnBuf.Close();
+	tcUniquePath.Close();
+	__UHEAP_MARKEND;
+	}
+	
+void TestVFATCase1()
+	{
+	test.Next(_L("Test Without VFAT entry, but DOS entry uses CP932 Japanese file's access"));
+	__UHEAP_MARK;
+	
+	// logging for failure
+	gTCType = ESymbianFATSpecific;
+	RBuf failedOnBuf;
+	failedOnBuf.CreateL(gLogFailureData.iFuncName);
+	gTCId = 0;
+	RBuf tcUniquePath;
+	tcUniquePath.CreateL(KNone());
+
+	QuickFormat();
+	CreateTestDirectory(_L("\\F32-TST\\T_FATCHARSETCONV\\"));
+
+	GetBootInfo();
+
+   	RFile file;
+  	TFileName fn = _L("\\ABCD");
+  	
+  	TInt r=file.Create(TheFs,fn,EFileRead);
+  	testAndLog(r==KErrNone);
+  	file.Close();
+  
+  	//	Assume this file is the first entry in the root directory
+  	r=TheDisk.Open(TheFs,CurrentDrive());
+  	testAndLog(r==KErrNone);
+
+    //-- read the 1st dir entry, it should be a DOS entry 
+    const TInt posEntry1=gBootSector.RootDirStartSector() << KDefaultSectorLog2; //-- dir entry1 position
+      
+    TFatDirEntry fatEntry1;
+ 	TPtr8 ptrEntry1((TUint8*)&fatEntry1,sizeof(TFatDirEntry));
+	testAndLog(TheDisk.Read(posEntry1, ptrEntry1)==KErrNone); 
+	testAndLog(!fatEntry1.IsVFatEntry());
+
+	// Manually modify the short name into unicode characters
+	// 	Unicode: 	0x(798F 5C71 96C5 6CBB)
+	//	Shift-JIS: 	0x(959F 8E52 89EB 8EA1)
+
+	TBuf8<8> unicodeSN = _L8("ABCD1234");
+	unicodeSN[0] = 0x95;
+	unicodeSN[1] = 0x9F;
+	unicodeSN[2] = 0x8E;
+	unicodeSN[3] = 0x52;
+	unicodeSN[4] = 0x89;
+	unicodeSN[5] = 0xEB;
+	unicodeSN[6] = 0x8E;
+	unicodeSN[7] = 0xA1;
+
+	fatEntry1.SetName(unicodeSN);
+	testAndLog(TheDisk.Write(posEntry1, ptrEntry1)==KErrNone);
+	TheDisk.Close();
+
+  	// The Unicode file name of the file that is created
+  	fn = _L("\\ABCD");
+  	fn[1] = 0x798F;
+  	fn[2] = 0x5C71;
+  	fn[3] = 0x96C5;
+  	fn[4] = 0x6CBB;
+  	
+  	// Access the file using its unicode file name without the DLL loaded.
+      r = TheFs.ControlIo(CurrentDrive(), KControlIoDisableFatUtilityFunctions);
+  	test_KErrNone(r);
+  	
+  	TEntry entry;
+  	TInt err = TheFs.Entry(fn, entry);
+  	testAndLog(err==KErrNotFound);
+  	
+      // Access the file using its unicode file name with the DLL loaded.
+      r = TheFs.ControlIo(CurrentDrive(), KControlIoEnableFatUtilityFunctions);  	
+	test_KErrNone(r);
+ 	r = UserSvr::ChangeLocale(KTestLocale);  	
+	test_KErrNone(r);
+  
+  	err = TheFs.Entry(fn, entry);
+  	testAndLog(err==KErrNone);
+  	
+  	//file is no more required,delete it.
+  	err = TheFs.Delete(fn);
+  	testAndLog(err==KErrNone);
+  	
+      r = TheFs.ControlIo(CurrentDrive(), KControlIoDisableFatUtilityFunctions);
+  	test_KErrNone(r);
+  	
+ 	r=TheFs.SessionPath(gSessionPath);
+  	test_KErrNone(r);
+	failedOnBuf.Close();
+	tcUniquePath.Close();
+	__UHEAP_MARKEND;
+	}
+
+void DoSymbianSpecificCases()
+	{
+	gLogFailureData.iTCTypeName = KSymbianFATSpecific;
+	gLogFailureData.iAPIName= KNone;
+
+	// Store current file name
+	TFileName fileName;
+	TInt i=0;
+	while(__FILE__[i]!='\0')
+		{
+		fileName.SetLength(i+1);
+		fileName[i] = __FILE__[i++];
+		}
+	gFileName = fileName;
+
+	gLogFailureData.iFuncName = KTestLeadingE5Handling;
+	TestLeadingE5Handling();
+
+	gLogFailureData.iFuncName = KTestIllegalCharsWithDll;
+	TestIllegalCharsWithDll();
+
+	gLogFailureData.iFuncName = KTestIllegalCharsWithoutDLL;
+	TestIllegalCharsWithoutDLL();
+
+	gLogFailureData.iFuncName = KTestFileLengthMax;
+	TestFileLengthMax();
+
+	gLogFailureData.iFuncName = KTestFileLengthExceedMax;
+	TestFileLengthExceedMax();
+	
+	gLogFailureData.iFuncName = KTestVFATCase2;
+	TestVFATCase2();
+
+	gLogFailureData.iFuncName = KTestVFATCase3;
+	TestVFATCase3();
+
+	gLogFailureData.iFuncName = KTestVFATCase1;
+	TestVFATCase1();
+		
+	}
+
+#endif //defined(_DEBUG) || defined(_DEBUG_RELEASE)