--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicstest/graphicstestharness/src/TTMSGraphicsStep.cpp Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,206 @@
+// TTMSGraphicsStep.cpp
+// 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 "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:
+//
+
+/**
+@file
+@test
+@internalComponent
+*/
+
+#include <bautils.h>
+#include <test/ttmsgraphicsstep.h>
+#include <f32file.h>
+#include <e32std.h>
+
+_LIT8(KLogPass,"PASS");
+_LIT8(KLogFail,"FAIL");
+
+
+void CTTMSGraphicsStep::CleanUpAndWriteResults()
+ {
+ TBuf<256> testID;
+ TBuf<8> unusableTestResult; //In graphicstestharness it is not known whether the test was started with
+ //!Result=Fail or !Error=KErrSomething given as paramenter to RUN_TEST_STEP
+
+ for (TInt iArrayIndex=0; iArrayIndex < iArrayTMSData.Count(); iArrayIndex++)
+ {
+ CTMSDataColumn columnData = iArrayTMSData[iArrayIndex];
+
+ testID.Copy(columnData.iTheID);
+ unusableTestResult.Copy(columnData.iTheResult); //unusable because we don't know if the test is expected to pass or fail
+
+ INFO_PRINTF2(_L("START_TESTCASE %S"),&testID);
+ INFO_PRINTF2(_L("Line = 1 Command = START_TESTCASE %S"),&testID);
+ INFO_PRINTF2(_L("END_TESTCASE %S"),&testID);
+ INFO_PRINTF2(_L("Line = 1 Command = END_TESTCASE %S"),&testID);
+ }
+
+ iArrayTMSData.Close();
+ }
+
+EXPORT_C CTTMSGraphicsStep::CTTMSGraphicsStep() : iStepPassFail(ETrue), iShowMultipleResults(EFalse)
+ {
+ iCurrentTestStepName.Copy(KUnknownSYMTestCaseIDName);
+ }
+
+EXPORT_C void CTTMSGraphicsStep::CloseTMSGraphicsStep()
+ {
+ CTTMSGraphicsStep::CleanUpAndWriteResults();
+ }
+
+EXPORT_C CTTMSGraphicsStep::~CTTMSGraphicsStep()
+ {
+ CTTMSGraphicsStep::CleanUpAndWriteResults();
+ }
+
+// writes out the results of a test that has just been executed to the log file(s)
+// the first time a test result is written it is also added to the iTestStepNames array.
+// This array is then checked on subsequent tests to see if the test has already been written to log
+// if it has and multiple test results are not wanted further logging of this test is omitted.
+
+
+void CTTMSGraphicsStep::DebugLogL(const TDesC8& aTestCaseID, const TDesC8& aResult)
+ {
+ TBool foundID = EFalse;
+ if(!iShowMultipleResults)
+ {
+ for (TInt iArrayIndex=0; iArrayIndex < iArrayTMSData.Count(); iArrayIndex++)
+ {
+ CTMSDataColumn columnData = iArrayTMSData[iArrayIndex];
+ if (columnData.iTheID.Compare(aTestCaseID)== 0)
+ {
+ if (columnData.iTheResult.Compare(KLogFail) != 0)
+ {
+ iArrayTMSData[iArrayIndex].iTheResult.Copy(aResult);
+ }
+ foundID = ETrue;
+ iArrayIndex = iArrayTMSData.Count();
+ }
+ }
+ }
+
+ if (!foundID || iShowMultipleResults)
+ {
+ CTMSDataColumn theData;
+ theData.iTheID.Copy(aTestCaseID);
+ theData.iTheResult.Copy(aResult);
+ iArrayTMSData.Append(theData);
+ }
+ }
+
+EXPORT_C void CTTMSGraphicsStep::RecordTestResultL()
+ {
+ TBuf<64> unknownTMSID(KUnknownSYMTestCaseIDName);
+ TBuf8<64> unknownID8;
+ unknownID8.Copy(unknownTMSID);
+
+ TBuf<64> undefinedTMSID(KUndefinedSYMTestCaseIDName);
+ TBuf8<64> undefinedID8;
+ undefinedID8.Copy(undefinedTMSID);
+
+ TBuf<64> notaTMSID(KNotATestSYMTestCaseIDName);
+ TBuf8<64> notaID8;
+ notaID8.Copy(notaTMSID);
+
+ TBuf<128> currentTSName;
+ currentTSName.Copy(iCurrentTestStepName);
+
+ if (iCurrentTestStepName.Compare(unknownID8) == 0) // unknown tests logged to warning file
+ {
+ INFO_PRINTF1(_L("ID NOT SET"));
+ }
+ else if (iCurrentTestStepName.Compare(undefinedID8) == 0) // undefined tests logged to warning file
+ {
+ INFO_PRINTF1(_L("ID UNDEFINED"));
+ }
+ else if (iCurrentTestStepName.Compare(notaID8) == 0)
+ {
+ }
+ else
+ {
+ if( iStepPassFail == EFalse)
+ {
+ INFO_PRINTF2(_L("%S FAILED"), ¤tTSName );
+ DebugLogL(iCurrentTestStepName, KLogFail);
+ }
+ else
+ {
+ DebugLogL(iCurrentTestStepName, KLogPass);
+ }
+ }
+ }
+
+// sets the name and pass/fail state of the individual test that is about to be executed
+EXPORT_C void CTTMSGraphicsStep::SetTestStepID(const TDesC& aStepName)
+ {
+ if(TestStepName() == KNullDesC)
+ {
+ SetTestStepName(aStepName);
+ }
+
+ iCurrentTestStepName.Copy(aStepName);
+ iStepPassFail = ETrue;
+ }
+
+EXPORT_C void CTTMSGraphicsStep::SetOverallTestStepID(const TDesC& aStepName)
+ {
+ iCurrentTestStepName.Copy(aStepName);
+ iStepPassFail = ETrue;
+ if (!TestStepResult() == EPass)
+ TEST(EFalse);
+ }
+
+// needed for the overide of CTGraphicsBase::testBooleanTrue to allow us to set
+// whether an individual test has passed or failed
+EXPORT_C void CTTMSGraphicsStep::MQCTest(TBool aCondition, const TText8* aFile, TInt aLine)
+ {
+ if(!aCondition)
+ {
+ iStepPassFail = EFalse;
+ }
+ testBooleanTrue( aCondition, aFile, aLine, ETrue);
+ }
+
+// needed for the overide of CTGraphicsBase::testBooleanTrue to allow us to set
+// whether an individual test has passed or failed
+EXPORT_C void CTTMSGraphicsStep::MQCTestL(TBool aCondition, const TText8* aFile, TInt aLine)
+ {
+ if(!aCondition)
+ {
+ iStepPassFail = EFalse;
+ }
+ testBooleanTrueL( aCondition, aFile, aLine, ETrue);
+ }
+
+// needed for the overide of CTGraphicsBase::testBooleanTrueWithErrorCode to allow us to set
+// whether an individual test has passed or failed. Also allows line and file of test failure
+// to be displayed.
+EXPORT_C void CTTMSGraphicsStep::MQCTestWithErrorCode(TBool aCondition, TInt aErrorCode, const TText8* aFile, TInt aLine)
+ {
+ if(!aCondition)
+ {
+ iStepPassFail = EFalse;
+ SetTestStepResult(EFail);
+ _LIT(KMessage,"Test Failed with error [%d]");
+ Logger().LogExtra(aFile, aLine, ESevrErr, KMessage, aErrorCode);
+ }
+ }
+
+// sets whether tests with the same @SYMTestCaseID xxxxxx name are printed multiple times in the log files
+EXPORT_C void CTTMSGraphicsStep::MultipleResultsForSameID(TBool aShowMultipleResults)
+ {
+ iShowMultipleResults = aShowMultipleResults;
+ }