--- /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<num; i++)
+ {
+ entry=(*dirPtr)[i];
+ if (entry.iName == _L("ReadTestFile.txt"))
+ {
+ match = match + 1;
+ }
+ }
+ if (match > 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;
+ }
+