--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingtestenv/imagingtestfwunittest/src/tsu_mmtsth13/TSU_MmTsth13.cpp Wed Aug 25 12:29:52 2010 +0300
@@ -0,0 +1,580 @@
+// 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 13 : TestUtils.cpp
+//
+//
+
+// EPOC includes
+#include <e32base.h>
+
+// Test system includes
+#include <testframework.h>
+
+// Specific includes for this test suite
+#include "TSU_MmTsthStep13.h"
+#include "TSU_MmTsthSuite13.h"
+
+// Specific includes for these test steps
+#include "TSU_MmTsth13.h"
+
+// --------------------------------------------
+
+// Unit Test Suite 13 : TestUtils.cpp
+// Depends on : none
+
+// Tests :-
+// 1. NewL / Construct - create with a CLog;
+// RunUtils / RunUtilsL - script-line format testing :-
+// 2 Copy File
+// 3 Make Dir.
+// 4 Change Dir.
+// 5 Make Read/Write
+// 6 Delete File
+// 11 Syntax error (demonstrate no panic)
+
+// NB! Test Utils in themselves are not test steps, and do NOT run in their own thread
+
+// ------------------------
+// RTestMmTsthU1301
+
+RTestMmTsthU1301* RTestMmTsthU1301::NewL()
+ {
+ RTestMmTsthU1301* self = new(ELeave) RTestMmTsthU1301;
+ return self;
+ }
+
+// Each test step initialises its own name.
+RTestMmTsthU1301::RTestMmTsthU1301()
+ {
+ iTestStepName = _L("MM-TSTH-U-1301");
+ }
+
+// preamble
+TVerdict RTestMmTsthU1301::OpenL()
+ {
+ // stub - purpose is that for this test we do not run the parent preamble
+ // which initialises iTestUtils
+ return iTestStepResult = EPass;
+ }
+
+// postamble
+void RTestMmTsthU1301::Close()
+ {
+ }
+
+// do the test step
+TVerdict RTestMmTsthU1301::DoTestStepL()
+ {
+ // NB CTestUtils does not report errors, but it DOES log them.
+
+ // NB a single run of TestFrameworkMain can only have ONE log file open at the server.
+ // Hence we must use that one.
+
+ TVerdict currentVerdict = EPass;
+
+ INFO_PRINTF1(_L("Unit test for TestUtils : Construct"));
+
+ CLog* theLog = iSuite->LogSystem(); // use the current log
+ CTestUtils* theTestUtils = NULL;
+ TRAPD(err, theTestUtils = CTestUtils::NewL(theLog));
+ if(err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CTestUtils::NewL() failed with error code %d"), err);
+ return iTestStepResult = EFail;
+ }
+
+ delete theTestUtils;
+
+ return iTestStepResult = currentVerdict; // should be EPass if we've got here
+ }
+
+// ------------------------
+// RTestMmTsthU1302
+
+RTestMmTsthU1302* RTestMmTsthU1302::NewL()
+ {
+ RTestMmTsthU1302* self = new(ELeave) RTestMmTsthU1302;
+ return self;
+ }
+
+// Each test step initialises its own name.
+RTestMmTsthU1302::RTestMmTsthU1302()
+ {
+ iTestStepName = _L("MM-TSTH-U-1302");
+ }
+
+
+// preamble
+TVerdict RTestMmTsthU1302::OpenL()
+ {
+ // do the standard preamble
+ TVerdict currentVerdict = RTSUMmTsthStep13::OpenL();
+ if(currentVerdict != EPass)
+ return currentVerdict;
+
+ // do extra, to set up the files/directories we need, which are :-
+ // C:\\TFData1\\testfile1.txt must exist
+ // C:\\TFData2 must exist
+
+ RFs theFs;
+ theFs.Connect();
+ RFile theFile;
+
+ TFileName theDirName = _L("c:\\TFData1\\");
+ TFileName theFileName = _L("c:\\TFData1\\testfile1.txt");
+ TInt rc = theFs.MkDir(theDirName);
+ if (rc != KErrNone && rc != KErrAlreadyExists)
+ {
+ ERR_PRINTF2(_L("Preamble failed RFs::MkDir() error code %d"), rc);
+ theFs.Close();
+ return iTestStepResult = EFail;
+ }
+ rc = theFile.Replace(theFs, theFileName, EFileWrite | EFileStreamText);
+
+ // check if open fails
+ if (rc == KErrNone)
+ {
+ theFile.Write(_L8("This is a test file for MM_TSTH_U_1302\n"));
+ theFile.Close();
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Preamble failed RFile::Write() error code %d"), rc);
+ theFs.Close();
+ return iTestStepResult = EFail;
+ }
+
+ theDirName = _L("c:\\TFData2\\");
+ rc = theFs.MkDir(theDirName);
+ if (rc != KErrNone && rc != KErrAlreadyExists)
+ {
+ ERR_PRINTF2(_L("Preamble failed RFs::MkDir() error code %d"), rc);
+ theFs.Close();
+ return iTestStepResult = EFail;
+ }
+
+ theFs.Close();
+ return iTestStepResult = currentVerdict;
+ }
+
+// postamble
+void RTestMmTsthU1302::Close()
+ {
+ // clean up the extra files / directories we created
+ CleanupFileSystem();
+
+ // do the standard postamble
+ RTSUMmTsthStep13::Close();
+ }
+
+// do the test step
+TVerdict RTestMmTsthU1302::DoTestStepL()
+ {
+ INFO_PRINTF1(_L("Unit test for TestUtils : RunUtils - CopyFile"));
+
+ TVerdict currentVerdict = EPass;
+
+ iTestUtils->RunUtils(_L("run_utils copyfile c:\\TFData1\\testfile1.txt c:\\TFData2\\testfile2.txt"));
+
+ // check that testfile2.txt exists
+ TUint dummy;
+ RFs theFs;
+ theFs.Connect();
+ TInt rc = theFs.Att(_L("c:\\TFData2\\testfile2.txt"), dummy);
+ if(rc != KErrNone)
+ {
+ ERR_PRINTF2(_L("CTestUtils : run_utils copyfile failed, error %d"), rc);
+ theFs.Close();
+ return iTestStepResult = EFail;
+ }
+
+ // cleanup
+ theFs.Close();
+ return iTestStepResult = currentVerdict; // should be EPass if we've got here
+ }
+
+// --------------------
+// RTestMmTsthU1303
+
+RTestMmTsthU1303* RTestMmTsthU1303::NewL()
+ {
+ RTestMmTsthU1303* self = new(ELeave) RTestMmTsthU1303;
+ return self;
+ }
+
+// Each test step initialises its own name.
+RTestMmTsthU1303::RTestMmTsthU1303()
+ {
+ // store the name of this test case
+ // this is the name that is used by the script file
+ iTestStepName = _L("MM-TSTH-U-1303");
+ }
+
+// preamble
+TVerdict RTestMmTsthU1303::OpenL()
+ {
+ // do the standard preamble
+ TVerdict currentVerdict = RTSUMmTsthStep13::OpenL();
+ if(currentVerdict != EPass)
+ return currentVerdict;
+
+ // do extra, to set up the files/directories we need, which are :-
+ // C:\\TFData2 must not exist
+
+ RFs theFs;
+ CFileMan* theFm = NULL;
+ theFs.Connect();
+ TRAPD(err, theFm = CFileMan::NewL(theFs));
+ if(err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Cannot create CFileMan, error code %d"), err);
+ theFs.Close();
+ return iTestStepResult = EFail;
+ }
+
+ TInt rc = theFm->RmDir(_L("c:\\TFData2\\"));
+ if (rc != KErrNone && rc != KErrPathNotFound)
+ {
+ ERR_PRINTF2(_L("Preamble failed CFileMan::RmDir() error code %d"), rc);
+ currentVerdict = EFail;
+ }
+
+ theFs.Close();
+ delete theFm;
+ return iTestStepResult = currentVerdict;
+ }
+
+// postamble
+void RTestMmTsthU1303::Close()
+ {
+ // clean up the extra files / directories we created
+ CleanupFileSystem();
+
+ // do the standard postamble
+ RTSUMmTsthStep13::Close();
+ }
+
+// do the test step.
+TVerdict RTestMmTsthU1303::DoTestStepL()
+ {
+ INFO_PRINTF1(_L("Unit test for TestUtils : RunUtils - MkDir"));
+
+ TVerdict currentVerdict = EPass;
+
+ iTestUtils->RunUtils(_L("run_utils mkdir c:\\TFData2\\"));
+
+ // check that TFData2 exists
+ TUint dummy;
+ RFs theFs;
+ theFs.Connect();
+ TInt rc = theFs.Att(_L("c:\\TFData2\\"), dummy);
+ if(rc != KErrNone)
+ {
+ ERR_PRINTF2(_L("CTestUtils : run_utils mkdir failed, error %d"), rc);
+ theFs.Close();
+ return iTestStepResult = EFail;
+ }
+
+ theFs.Close();
+ return iTestStepResult = currentVerdict; // should be EPass if we've got here
+ }
+
+// --------------------
+// RTestMmTsthU1304
+RTestMmTsthU1304* RTestMmTsthU1304::NewL()
+ {
+ RTestMmTsthU1304* self = new(ELeave) RTestMmTsthU1304;
+ return self;
+ }
+
+// Each test step initialises its own name.
+RTestMmTsthU1304::RTestMmTsthU1304()
+ {
+ iTestStepName = _L("MM-TSTH-U-1304");
+ }
+
+// preamble
+TVerdict RTestMmTsthU1304::OpenL()
+ {
+ // do the standard preamble
+ TVerdict currentVerdict = RTSUMmTsthStep13::OpenL();
+ if(currentVerdict != EPass)
+ return currentVerdict;
+
+ // do extra, to set up the files/directories we need, which are :-
+ // C:\\TFData1\\testfile1.txt must exist and be read-only
+
+ RFs theFs;
+ theFs.Connect();
+ RFile theFile;
+
+ TFileName theDirName = _L("c:\\TFData1\\");
+ TFileName theFileName = _L("c:\\TFData1\\testfile1.txt");
+ TInt rc = theFs.MkDir(theDirName);
+ if (rc != KErrNone && rc != KErrAlreadyExists)
+ {
+ ERR_PRINTF2(_L("Preamble failed RFs::MkDir() error code %d"), rc);
+ theFs.Close();
+ return iTestStepResult = EFail;
+ }
+ rc = theFile.Replace(theFs, theFileName, EFileWrite | EFileStreamText);
+
+ // check if open fails
+ if (rc == KErrNone)
+ {
+ theFile.Write(_L8("This is a test file for MM_TSTH_U_1304\n"));
+ theFile.Close();
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Preamble failed RFile::Replace() error code %d"), rc);
+ theFs.Close();
+ return iTestStepResult = EFail;
+ }
+
+ // set read-only
+ rc = theFs.SetAtt(theFileName, KEntryAttReadOnly, 0);
+
+ theFs.Close();
+ return iTestStepResult = currentVerdict;
+ }
+
+// postamble
+void RTestMmTsthU1304::Close()
+ {
+ // set the file read-write for deletion
+ RFs theFs;
+ theFs.Connect();
+ TFileName theFileName = _L("c:\\TFData1\\testfile1.txt");
+ theFs.SetAtt(theFileName, 0, KEntryAttReadOnly);
+ theFs.Close();
+
+ // clean up the extra files / directories we created
+ CleanupFileSystem();
+
+ // do the standard postamble
+ RTSUMmTsthStep13::Close();
+ }
+
+// do the test step
+TVerdict RTestMmTsthU1304::DoTestStepL()
+ {
+ INFO_PRINTF1(_L("Unit test for TestUtils : RunUtils - MakeReadWrite"));
+
+ TVerdict currentVerdict = EPass;
+
+ iTestUtils->RunUtils(_L("run_utils makereadwrite c:\\TFData1\\testfile1.txt"));
+
+ // check that file exists and is read-only
+ TUint theAtts;
+ RFs theFs;
+ theFs.Connect();
+ theFs.Att(_L("c:\\TFData1\\testfile1.txt"), theAtts);
+ if(theAtts & KEntryAttReadOnly)
+ {
+ ERR_PRINTF1(_L("CTestUtils : run_utils makereadwrite failed, file is still read-only"));
+ theFs.Close();
+ return iTestStepResult = EFail;
+ }
+
+ theFs.Close();
+ return iTestStepResult = currentVerdict; // should be EPass if we've got here
+ }
+
+// --------------------
+// RTestMmTsthU1305
+RTestMmTsthU1305* RTestMmTsthU1305::NewL()
+ {
+ RTestMmTsthU1305* self = new(ELeave) RTestMmTsthU1305;
+ return self;
+ }
+
+// Each test step initialises its own name.
+RTestMmTsthU1305::RTestMmTsthU1305()
+ {
+ iTestStepName = _L("MM-TSTH-U-1305");
+ }
+
+// preamble
+TVerdict RTestMmTsthU1305::OpenL()
+ {
+ // do the standard preamble
+ TVerdict currentVerdict = RTSUMmTsthStep13::OpenL();
+ if(currentVerdict != EPass)
+ return currentVerdict;
+
+ // do extra, to set up the files/directories we need, which are :-
+ // C:\\TFData1\\testfile1.txt must exist and be read-write
+
+ RFs theFs;
+ theFs.Connect();
+ RFile theFile;
+
+ TFileName theDirName = _L("c:\\TFData1\\");
+ TFileName theFileName = _L("c:\\TFData1\\testfile1.txt");
+ TInt rc = theFs.MkDir(theDirName);
+ if (rc != KErrNone && rc != KErrAlreadyExists)
+ {
+ ERR_PRINTF2(_L("Preamble failed RFs::MkDir() error code %d"), rc);
+ theFs.Close();
+ return iTestStepResult = EFail;
+ }
+ rc = theFile.Replace(theFs, theFileName, EFileWrite | EFileStreamText);
+
+ // check if open fails
+ if (rc == KErrNone)
+ {
+ theFile.Write(_L8("This is a test file for MM_TSTH_U_1305\n"));
+ theFile.Close();
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Preamble failed RFile::Replace() error code %d"), rc);
+ theFs.Close();
+ return iTestStepResult = EFail;
+ }
+
+ // set read-write
+ rc = theFs.SetAtt(theFileName, 0, KEntryAttReadOnly);
+
+ theFs.Close();
+ return iTestStepResult = currentVerdict;
+ }
+
+// postamble
+void RTestMmTsthU1305::Close()
+ {
+ // clean up the extra files / directories we created
+ CleanupFileSystem();
+
+ // do the standard postamble
+ RTSUMmTsthStep13::Close();
+ }
+
+// do the test step
+TVerdict RTestMmTsthU1305::DoTestStepL()
+ {
+ INFO_PRINTF1(_L("Unit test for TestUtils : RunUtils - Delete"));
+
+ TVerdict currentVerdict = EPass;
+
+ iTestUtils->RunUtils(_L("run_utils delete c:\\TFData1\\testfile1.txt"));
+
+ // check that file does not exist
+ TUint dummy;
+ RFs theFs;
+ theFs.Connect();
+ TInt rc = theFs.Att(_L("c:\\TFData1\\testfile1.txt"), dummy);
+ if(rc != KErrNotFound)
+ {
+ ERR_PRINTF1(_L("CTestUtils : run_utils delete failed, file still exists"));
+ theFs.Close();
+ return iTestStepResult = EFail;
+ }
+
+ theFs.Close();
+ return iTestStepResult = currentVerdict; // should be EPass if we've got here
+ }
+
+// ----------------------
+// RTestMmTsthU1306
+
+RTestMmTsthU1306* RTestMmTsthU1306::NewL()
+ {
+ RTestMmTsthU1306* self = new(ELeave) RTestMmTsthU1306;
+ return self;
+ }
+
+// Each test step initialises its own name.
+RTestMmTsthU1306::RTestMmTsthU1306()
+ {
+ iTestStepName = _L("MM-TSTH-U-1306");
+ }
+
+// preamble
+TVerdict RTestMmTsthU1306::OpenL()
+ {
+ // do the standard preamble
+ TVerdict currentVerdict = RTSUMmTsthStep13::OpenL();
+ if(currentVerdict != EPass)
+ return currentVerdict;
+
+ // do extra, to set up the files/directories we need, which are :-
+ // C:\\TFData2 must exist
+
+ RFs theFs;
+ theFs.Connect();
+
+ TFileName theDirName = _L("c:\\TFData2\\");
+ TInt rc = theFs.MkDir(theDirName);
+ if (rc != KErrNone && rc != KErrAlreadyExists)
+ {
+ ERR_PRINTF2(_L("Preamble failed RFs::MkDir() error code %d"), rc);
+ theFs.Close();
+ return iTestStepResult = EFail;
+ }
+
+ theFs.Close();
+ return iTestStepResult = currentVerdict;
+ }
+
+// postamble
+void RTestMmTsthU1306::Close()
+ {
+ // clean up the extra files / directories we created
+ CleanupFileSystem();
+
+ // do the standard postamble
+ RTSUMmTsthStep13::Close();
+ }
+
+// do the test step.
+TVerdict RTestMmTsthU1306::DoTestStepL()
+ {
+
+ INFO_PRINTF1(_L("This test step is not available on EKA2 - Passing test!"));
+ return EPass;
+
+ }
+
+// --------------------
+// RTestMmTsthU1311
+
+RTestMmTsthU1311* RTestMmTsthU1311::NewL()
+ {
+ RTestMmTsthU1311* self = new(ELeave) RTestMmTsthU1311;
+ return self;
+ }
+
+// Each test step initialises its own name.
+RTestMmTsthU1311::RTestMmTsthU1311()
+ {
+ iTestStepName = _L("MM-TSTH-U-1311");
+ }
+
+// do the test step
+TVerdict RTestMmTsthU1311::DoTestStepL()
+ {
+ // to demonstrate that bad syntax does not panic
+ INFO_PRINTF1(_L("Unit test for TestUtils : RunUtils - bad syntax"));
+
+ TVerdict currentVerdict = EPass;
+
+ iTestUtils->RunUtils(_L("run_utils gobbledygook"));
+ INFO_PRINTF1(_L("RunUtils did not panic"));
+
+ return iTestStepResult = currentVerdict; // should be EPass if we've got here
+ }
+
+// --------------------