diff -r 000000000000 -r a41df078684a baseintegtests/baseintegrationtest/testsuites/fat32/src/basetestfat32writefile.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/baseintegtests/baseintegrationtest/testsuites/fat32/src/basetestfat32writefile.cpp Mon Oct 19 15:55:17 2009 +0100 @@ -0,0 +1,474 @@ +// Copyright (c) 2006-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: +// Performs actions related to writing a file +// +// + +#include "basetestfat32writefile.h" + +static RRawDisk TheDisk; +static RFile TheFile; + +/** +Class Constructor +*/ +CBaseTestFat32WriteFile::CBaseTestFat32WriteFile() + { + SetTestStepName(KTestStepWriteFile); + } + +/** +Class Destructor +*/ +CBaseTestFat32WriteFile::~CBaseTestFat32WriteFile() + { + } + + +/** +The function performs the following actions +1. If there is a file specified in the ini file then + -> create a file with that filename + -> Else create a file name ReadTestFile.txt +2. Get the file action required from the ini file and carry out that action + +@return EPass if test passes and EFail if test fails +*/ +TVerdict CBaseTestFat32WriteFile::doTestStepL() + { + TInt r = 0; + TInt errcode; + SetTestStepResult(EFail); + _LIT(KAction,"Action"); + TBuf<10> actionAfterCreate; + TPtrC16 action = actionAfterCreate; + _LIT(KName,"SetFileName"); + _LIT(KPath,"%c:\\"); + TBuf<10> setFileName; + TPtrC16 name = setFileName; + TBuf<255> fileName; + _LIT(KCreatedFileName,"%c:\\ReadTestFile.txt"); + + TBool alright = GetStringFromConfig(ConfigSection(), KName, name); + if (alright) + { + fileName.Format(KPath, (TUint)iDriveToTest); + fileName.Append(name); + } + else + { + fileName.Format(KCreatedFileName, (TUint)iDriveToTest); + } + TInt res = TheFile.Replace(iTheFs,fileName,EFileWrite); + TheFile.Close(); + TBool alright2 = GetStringFromConfig(ConfigSection(), KAction, action); + if (alright2) + { + errcode = SetAttribs(fileName); + if (action == _L("Write")) + { + errcode = WriteFile(fileName); + } + if (action == _L("DirList")) + { + errcode = DirList(fileName); + } + if (action == _L("CheckAtt")) + { + errcode = SetAttribs(fileName); + } + if (action == _L("CheckCode")) + { + errcode = CheckErrCode(res); + } + if (action == _L("MakeDirectory")) + { + errcode = MakeDirectory(_L("TestDirectory\\")); + } + if (action == _L("MakeTwoDirectory")) + { + errcode = MakeDirectory(_L("TestDirectory\\")); + if (errcode == KErrNone) + { + errcode = MakeDirectory(_L("TestDirectory\\TestDirectory2\\")); + } + } + if (action == _L("SetLabel")) + { + errcode = SetLabel(_L("TestLabel")); + } + if (action == _L("SetTwoLabels")) + { + errcode = SetLabel(_L("TestLabel")); + if (errcode == KErrNone) + { + errcode = SetLabel(_L("TestSecondLabel")); + } + } + if (action == _L("SetFileSize")) + { + errcode = SetFileSize(fileName); + } + if (action == _L("DeleteFile")) + { + errcode = DeleteFile(fileName); + } + r = CheckErrCode(errcode); + if(r != KErrNone) + { + _LIT(KErrorWriteFile, "Error writing the file, Error Code = %d"); + INFO_PRINTF2(KErrorWriteFile, r); + SetTestStepResult(EFail); + } + else + { + SetTestStepResult(EPass); + _LIT(KReadPass, "Read Passed"); + INFO_PRINTF1(KReadPass); + } + } + else + { + r = CheckErrCode(res); + if(r != KErrNone) + { + _LIT(KErrorWriteFile, "Error writing the file, Error Code = %d"); + INFO_PRINTF2(KErrorWriteFile, r); + SetTestStepResult(EFail); + } + else + { + _LIT(KReadPass, "Read Passed"); + INFO_PRINTF1(KReadPass); + SetTestStepResult(EPass); + } + } + return TestStepResult(); + } + +/** +Open the file + +@param aFile The name of the file to write + +@return KErrNone if successful +*/ +TInt CBaseTestFat32WriteFile::WriteFile(const TDesC16& aFile) + { + TBuf8<255> temp; + temp.Copy(aFile); + TInt r = 0; + r = TheFile.Open(iTheFs,aFile,EFileWrite); + if(r != KErrNone) + { + _LIT(KErrorOpenFile, "Unable to open the file, Error Code = %d"); + INFO_PRINTF2(KErrorOpenFile, r); + return r; + } + TheFile.Close(); + return r; + } + +/** +Get the attribute to set from the ini file and set the attributes of the file + +@param aFile The name of the file whos attributes are to be set + +@return KErrNone if successful +*/ +TInt CBaseTestFat32WriteFile::SetAttribs(const TDesC16& aFile) + { + TBuf8<255> temp; + temp.Copy(aFile); + TInt r = 0; + TUint setMask = KEntryAttNormal; + _LIT(KAtt,"Attributes"); + TBuf<10> fileAttributes; + TPtrC16 attributes = fileAttributes; + + TBool alright3 = GetStringFromConfig(ConfigSection(), KAtt, attributes); + if (alright3) + { + if (attributes == _L("Normal")) + { + setMask = KEntryAttNormal; + } + else if (attributes == _L("ReadOnly")) + { + setMask = KEntryAttReadOnly; + } + else if (attributes == _L("Hidden")) + { + setMask = KEntryAttHidden; + } + else if (attributes == _L("System")) + { + + setMask = KEntryAttSystem; + } + else if (attributes == _L("Dir")) + { + setMask = KEntryAttDir; + } + + r = TheFile.Open(iTheFs,aFile,EFileWrite); + if (r != KErrNone) + { + _LIT(KOpenFail, "Cannot open the file, error = %d"); + INFO_PRINTF2(KOpenFail, r); + return r; + } + r = TheFile.SetAtt(setMask, 0); + if (r != KErrNone) + { + _LIT(KSetAttFail, "Cannot set the attributes, error = %d"); + INFO_PRINTF2(KSetAttFail, r); + return r; + } + + TheFile.Close(); + + r = CheckAtt(aFile, setMask); + if (r != KErrNone) + { + _LIT(KAttFail, "Cannot check the attributes, error = %d"); + INFO_PRINTF2(KAttFail, r); + return r; + } + } + else + { + _LIT(KNoAttribs, "No attributes specified in the ini file"); + INFO_PRINTF1(KNoAttribs); + return KErrNone; + } + return r; + } + +/** +Check the attributes of the file and compare them to the attributes expected + +@param aFile The name of the file whos attributes are to be checked + +@return KErrNone if successful +*/ +TInt CBaseTestFat32WriteFile::CheckAtt(const TDesC16& aFile, TUint setMask) + { + TInt r = 0; + TUint fileAttributes; + r = iTheFs.Att(aFile, fileAttributes); + if (r != KErrNone) + { + _LIT(KGetAttFail, "Failed to get the file attributes"); + INFO_PRINTF1(KGetAttFail); + return KErrGeneral; + } + else + { + if (fileAttributes&setMask) + { + _LIT(KAttChanged, "Attributes changed correctly"); + INFO_PRINTF1(KAttChanged); + return r; + } + else + { + _LIT(KAttNotChanged, "Attributes have not been changed"); + INFO_PRINTF1(KAttNotChanged); + return KErrGeneral; + } + } + } + +/** +Searching the directory to see if it contains the file who's attributes +were set as hidden. + +@param aFile The name of the file to search for + +@return KErrNone if successful +*/ +TInt CBaseTestFat32WriteFile::DirList(const TDesC16& aFile) + { + + TInt i; + CDir* dirPtr; + TBuf<10> dir1; + dir1 = iSessionPath; + dir1.Append(_L("*.*")); + TBuf<20> buf; + buf.Append(aFile); + buf.Delete(0,3); + TInt match = 0; + TInt r = iTheFs.GetDir(dir1,KEntryAttMatchExclude|(KEntryAttHidden|0x24),ESortNone,dirPtr); + TInt num = dirPtr->Count(); + TEntry entry; + for (i=0; i 0) + { + _LIT(KFileFound, "File found"); + INFO_PRINTF1(KFileFound); + return KErrNone; + } + else + { + _LIT(KFileNotFound, "File not found"); + INFO_PRINTF1(KFileNotFound); + return KErrNotFound; + } + } + +/** +Compare the error code that is expected to the one returned from the action + +@param aReturnCode The return value that is to be compared + +@return KErrNone if successful +*/ +TInt CBaseTestFat32WriteFile::CheckErrCode(TInt aReturnCode) + { + _LIT(KCheckCode,"CheckCode"); + TInt checkcode; + TBool alright4 = GetIntFromConfig(ConfigSection(), KCheckCode, checkcode); + if (alright4) + { + if (aReturnCode == checkcode) + { + _LIT(KCorrectCode, "Correct error code = %d"); + INFO_PRINTF2(KCorrectCode, aReturnCode); + return KErrNone; + } + else + { + _LIT(KBadCode, "Incorrect error code = %d"); + INFO_PRINTF2(KBadCode, aReturnCode); + return KErrGeneral; + } + } + else + { + _LIT(KNoIniCode, "CheckCode not specified in ini file"); + INFO_PRINTF1(KNoIniCode); + return KErrGeneral; + } + } + +/** +Creating a directory + +@param aDir The name of the directory to create + +@return KErrNone if successful +*/ +TInt CBaseTestFat32WriteFile::MakeDirectory(const TDesC16& aDir) + { + TInt r = 0; + TBuf<255> dirName; + dirName.Append(iSessionPath); + dirName.Append(aDir); + TUint setMask = KEntryAttDir; + r = iTheFs.MkDir(dirName); + if (r != KErrNone) + { + _LIT(KMkDirFail, "Failed make the directory"); + INFO_PRINTF1(KMkDirFail); + return r; + } + r = CheckAtt(dirName, setMask); + if (r != KErrNone) + { + _LIT(KChkAttFail, "Failed to check the attributes"); + INFO_PRINTF1(KChkAttFail); + return r; + } + return r; + } + +/** +Setting a volume label + +@param aLabel The name of the lable to set + +@return KErrNone if successful +*/ +TInt CBaseTestFat32WriteFile::SetLabel(const TDesC16& aLabel) + { + TInt r = 0; + r = iTheFs.SetVolumeLabel(aLabel, CurrentDrive()); + if (r != KErrNone) + { + _LIT(KSetLabelFail, "Failed to set volume label"); + INFO_PRINTF1(KSetLabelFail); + return r; + } + return r; + } + +/** +Setting the size of the file + +@param aFile The name of the file whos size to set + +@return KErrNone if successful +*/ +TInt CBaseTestFat32WriteFile::SetFileSize(const TDesC16& aFile) + { + TInt r = 0; + r = TheFile.Open(iTheFs,aFile,EFileWrite); + if (r != KErrNone) + { + _LIT(KOpenFail, "Failed to open the file"); + INFO_PRINTF1(KOpenFail); + return r; + } + TInt fileSize = (iBPB_SecPerClus/2) * 3 * 1024; // File accomodates 3 clusters + r = TheFile.SetSize(fileSize); + if (r != KErrNone) + { + _LIT(KSetSizeFail, "Failed set the size of the file"); + INFO_PRINTF1(KSetSizeFail); + return r; + } + TheFile.Close(); + r = iTheFs.FinaliseDrive(CurrentDrive(), RFs::EFinal_RW); + return r; + } + +/** +Delete the file + +@param aFile The name of the file to delete + +@return KErrNone if successful +*/ +TInt CBaseTestFat32WriteFile::DeleteFile(const TDesC16& aFile) + { + TInt r = 0; + r = iTheFs.Delete(aFile); + if (r != KErrNone) + { + _LIT(KDeleteFail, "Failed delete the file"); + INFO_PRINTF1(KDeleteFail); + return r; + } + return r; + } +