diff -r 000000000000 -r 5d03bc08d59c graphicstest/graphicstestharness/src/TTMSGraphicsStep.cpp --- /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 +#include +#include +#include + +_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; + }