--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmtestenv/mmtestfwunittest/src/tsu_mmtsth22/TSU_MmTsth22.cpp Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,237 @@
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "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:
+// This file contains the test steps for Unit Test Suite 22 : LogFile.cpp
+//
+//
+
+// EPOC includes
+#include <e32base.h>
+
+// Test system includes
+#include <testframework.h>
+
+// Specific includes for this test suite
+#include "TSU_MmTsthSuite22.h"
+
+// Specific includes for these test steps
+#include "TSU_MmTsth22.h"
+#include "TestFrameworkServer/LogFile.h"
+
+// --------------------------------------------
+
+// Unit Test Suite 22 : LogFile.cpp
+// Depends on : None
+
+// Tests :-
+
+// Create a file log
+// Open an existing file log
+// Write to an open file log
+// Close a file log
+// Open and close a file server session
+
+
+RTestMmTsthU2201* RTestMmTsthU2201::NewL()
+ {
+ RTestMmTsthU2201* self = new(ELeave) RTestMmTsthU2201;
+ return self;
+ }
+
+// Each test step initialises its own name.
+RTestMmTsthU2201::RTestMmTsthU2201()
+ {
+ iTestStepName = _L("MM-TSTH-U-2201");
+ }
+
+// preamble
+TVerdict RTestMmTsthU2201::OpenL()
+ {
+ // ensure the directory for our test log exists
+
+ // parse the filenames
+ _LIT(KDefault,"C:\\");
+ _LIT(KLogPath, "C:\\Logs\\TestResults\\TestFrameworkTemp\\");
+ TParse fullFileName;
+ TInt returnCode = fullFileName.Set(KLogPath, &KDefault, NULL);
+ if (returnCode != KErrNone)
+ {
+ ERR_PRINTF3(_L("Preamble : failed to set file name %S, error %d"),
+ &fullFileName.FullName(), returnCode);
+ return iTestStepResult = EFail;
+ }
+
+ RFs fileSystem;
+ returnCode=fileSystem.Connect();
+ if (returnCode != KErrNone)
+ {
+ ERR_PRINTF2(_L("Preamble : failed to connect to file server, error %d"),
+ returnCode);
+ fileSystem.Close();
+ return iTestStepResult = EFail;
+ }
+
+ returnCode = fileSystem.MkDir(fullFileName.DriveAndPath());
+ if (returnCode != KErrNone && returnCode != KErrAlreadyExists)
+ {
+ ERR_PRINTF3(_L("Preamble : failed to make directory %S, error %d"),
+ &fullFileName.FullName(), returnCode);
+ fileSystem.Close();
+ return iTestStepResult = EFail;
+ }
+
+ fileSystem.Close();
+ return iTestStepResult = EPass;
+ }
+
+// postamble
+void RTestMmTsthU2201::Close()
+ {
+ // clean up the test directory we created in the preamble
+
+ // parse the filenames
+ _LIT(KDefault,"C:\\");
+ _LIT(KLogPath, "C:\\Logs\\TestResults\\TestFrameworkTemp\\");
+ TParse fullFileName;
+ TInt returnCode = fullFileName.Set(KLogPath, &KDefault, NULL);
+ if (returnCode != KErrNone)
+ {
+ ERR_PRINTF3(_L("RTestMmTsthU2201::Close() failed to set file name %S, error %d"),
+ &fullFileName.FullName(), returnCode);
+ return;
+ }
+
+ RFs fileSystem;
+ returnCode=fileSystem.Connect();
+ if (returnCode != KErrNone)
+ {
+ ERR_PRINTF2(_L("RTestMmTsthU2201::Close() failed to connect to file server, error %d"),
+ returnCode);
+ fileSystem.Close();
+ return;
+ }
+
+ returnCode = fileSystem.RmDir(fullFileName.DriveAndPath());
+ if (returnCode != KErrNone)
+ {
+ ERR_PRINTF3(_L("RTestMmTsthU2201::Close() failed to remove directory %S, error %d"),
+ &fullFileName.FullName(), returnCode);
+ }
+
+ fileSystem.Close();
+ }
+
+// do the test step
+TVerdict RTestMmTsthU2201::DoTestStepL()
+ {
+ INFO_PRINTF1(_L("Unit test for CFileLogger"));
+
+ TVerdict currentVerdict = EPass;
+
+ // create a CFileLogger
+ CFileLogger* theFileLogger = new CFileLogger();
+ if(!theFileLogger)
+ {
+ ERR_PRINTF1(_L("Failed to create a CFileLogger"));
+ return iTestStepResult = EFail;
+ }
+
+ // directory path as created in the Preamble
+ _LIT(KLogName, "CFileLoggerTest");
+ _LIT(KLogPath, "C:\\Logs\\TestResults\\TestFrameworkTemp");
+ _LIT(KDefault, "C:\\.htm");
+
+ // ensure the path exists
+ TParse parseLogName;
+ parseLogName.Set(KLogName, NULL, NULL);
+
+ TFileName logFilePath;
+ logFilePath = KLogPath;
+
+ if(parseLogName.PathPresent())
+ logFilePath.Append(parseLogName.Path());
+ else
+ logFilePath.Append(_L("\\"));
+
+ // overwrite extension if supplied with .htm
+ TParse logFileFullName;
+ TInt returnCode = logFileFullName.Set(KDefault, &logFilePath, &KLogName());
+ if (returnCode == KErrNone)
+ {
+ TInt ret = theFileLogger->Connect();
+ if (ret == KErrNone)
+ {
+ theFileLogger->CreateLog(logFilePath, logFileFullName.NameAndExt());
+ }
+ else
+ {
+ ERR_PRINTF1(_L("CFileLogger could not connect to file server"));
+ delete theFileLogger;
+ return iTestStepResult = EFail;
+ }
+ }
+
+ _LIT(KFileLogTestString, "CFileLoggerTest Verification");
+ _LIT8(KFileLogTestString8, "CFileLoggerTest Verification");
+
+ // write to it
+ theFileLogger->WriteLog(KFileLogTestString);
+
+ // now read it back
+ RFs fileSystem;
+ returnCode=fileSystem.Connect();
+ if (returnCode != KErrNone)
+ {
+ ERR_PRINTF2(_L("Failed to connect to file server, error %d"),
+ returnCode);
+ theFileLogger->Close();
+ delete theFileLogger;
+ return iTestStepResult = EFail;
+ }
+
+ TFileName logFile;
+ logFile.Format(_L("%S\\%S.htm"), &KLogPath(), &KLogName());
+ RFile theFile;
+ returnCode = theFile.Open(fileSystem, logFile, EFileRead | EFileStreamText | EFileShareAny);
+
+ // NB :- We're reading in 8-bit, so need to compare against an 8-bit string literal
+ TInt fileSize;
+ returnCode = theFile.Size(fileSize);
+ TPtr8 theString(REINTERPRET_CAST(TUint8*,User::AllocLC(fileSize)), 0, fileSize);
+ theFile.Read(theString, fileSize);
+
+ returnCode = theString.Find(KFileLogTestString8());
+
+ // see if our string is present. if it is, we've passed.
+ if(returnCode == KErrNotFound)
+ {
+ ERR_PRINTF1(_L("Test string not found in test log file!"));
+ currentVerdict = EFail;
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Read string %S found in test file"), &KFileLogTestString());
+ }
+
+ // close file logger session
+ theFileLogger->Close();
+ theFile.Close();
+ // clean up our file
+ fileSystem.Delete(logFile);
+ fileSystem.Close();
+ delete(theFileLogger);
+ CleanupStack::PopAndDestroy(); // theString
+
+ return iTestStepResult = currentVerdict; // should be EPass if we've got here
+ }
+